diff options
548 files changed, 10121 insertions, 4810 deletions
diff --git a/core/api/current.txt b/core/api/current.txt index 487e57d114c9..c451049cf591 100644 --- a/core/api/current.txt +++ b/core/api/current.txt @@ -30978,6 +30978,7 @@ package android.os { field public static final int S = 31; // 0x1f field public static final int S_V2 = 32; // 0x20 field public static final int TIRAMISU = 33; // 0x21 + field public static final int UPSIDE_DOWN_CAKE = 10000; // 0x2710 } public final class Bundle extends android.os.BaseBundle implements java.lang.Cloneable android.os.Parcelable { diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java index 3daee1fdd01b..809dc3c41188 100644 --- a/core/java/android/content/Intent.java +++ b/core/java/android/content/Intent.java @@ -5741,14 +5741,13 @@ public class Intent implements Parcelable, Cloneable { /** * Optional argument to be used with {@link #ACTION_CHOOSER}. - * A {@link android.app.PendingIntent} to be sent when the user wants to do payload reselection - * in the sharesheet. - * A reselection action allows the user to return to the source app to change the content being - * shared. + * A {@link android.app.PendingIntent} to be sent when the user wants to modify the content that + * they're sharing. This can be used to allow the user to return to the source app to, for + * example, select different media. * @hide */ - public static final String EXTRA_CHOOSER_PAYLOAD_RESELECTION_ACTION = - "android.intent.extra.CHOOSER_PAYLOAD_RESELECTION_ACTION"; + public static final String EXTRA_CHOOSER_MODIFY_SHARE_ACTION = + "android.intent.extra.CHOOSER_MODIFY_SHARE_ACTION"; /** * An {@code ArrayList} of {@code String} annotations describing content for diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java index 0b956f8bf9e0..dbd602f27c11 100755 --- a/core/java/android/os/Build.java +++ b/core/java/android/os/Build.java @@ -1167,6 +1167,11 @@ public class Build { * Tiramisu. */ public static final int TIRAMISU = 33; + + /** + * Upside Down Cake. + */ + public static final int UPSIDE_DOWN_CAKE = CUR_DEVELOPMENT; } /** The type of build, like "user" or "eng". */ diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java index ce29c731221f..10e1633b22d7 100644 --- a/core/java/android/provider/Settings.java +++ b/core/java/android/provider/Settings.java @@ -9922,7 +9922,7 @@ public final class Settings { /** * If active unlock triggers on unlock intents, then also request active unlock on - * these wake-up reasons. See PowerManager.WakeReason for value mappings. + * these wake-up reasons. See {@link PowerManager.WakeReason} for value mappings. * WakeReasons should be separated by a pipe. For example: "0|3" or "0". If this * setting should be disabled, then this should be set to an empty string. A null value * will use the system default value (WAKE_REASON_UNFOLD_DEVICE). @@ -9932,6 +9932,17 @@ public final class Settings { "active_unlock_wakeups_considered_unlock_intents"; /** + * If active unlock triggers and succeeds on these wakeups, force dismiss keyguard on + * these wake reasons. See {@link PowerManager#WakeReason} for value mappings. + * WakeReasons should be separated by a pipe. For example: "0|3" or "0". If this + * setting should be disabled, then this should be set to an empty string. A null value + * will use the system default value (WAKE_REASON_UNFOLD_DEVICE). + * @hide + */ + public static final String ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD = + "active_unlock_wakeups_to_force_dismiss_keyguard"; + + /** * Whether the assist gesture should be enabled. * * @hide diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml index fcfdd956ddb0..7372a7ecfef7 100644 --- a/core/res/res/values-af/strings.xml +++ b/core/res/res/values-af/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Kan gebare vasvang wat op die toestel se vingerafdruksensor uitgevoer word."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Neem skermkiekie"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Kan \'n skermkiekie neem."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"deaktiveer of verander statusbalk"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Laat die program toe om die statusbalk te deaktiveer en stelselikone by te voeg of te verwyder."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"wees die statusbalk"</string> diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml index a5619fd1e011..3310cec48579 100644 --- a/core/res/res/values-am/strings.xml +++ b/core/res/res/values-am/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"በመሣሪያው የጣት አሻራ ዳሳሽ ላይ የተከናወኑ የጣት ምልክቶችን መያዝ ይችላል።"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ቅጽበታዊ ገጽ እይታን ያነሳል"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"የማሳያው ቅጽበታዊ ገጽ እይታን ማንሳት ይችላል።"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"የሁኔቴ አሞሌ አቦዝን ወይም ቀይር"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"የስርዓት አዶዎችን ወደ ሁኔታ አሞሌ ላለማስቻል ወይም ለማከል እና ለማስወገድ ለመተግበሪያው ይፈቅዳሉ፡፡"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"የሁኔታ አሞሌ መሆን"</string> diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml index 1aba35a30e55..980986e976ba 100644 --- a/core/res/res/values-ar/strings.xml +++ b/core/res/res/values-ar/strings.xml @@ -346,6 +346,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"يمكن أن تلتقط الإيماءات من أداة استشعار بصمة الإصبع في الجهاز."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"أخذ لقطة شاشة"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"يمكن أخذ لقطة شاشة."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"إيقاف شريط الحالة أو تعديله"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"للسماح للتطبيق بإيقاف شريط الحالة أو إضافة رموز نظام وإزالتها."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"العمل كشريط للحالة"</string> diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml index 38ec792a6b8b..77f230505552 100644 --- a/core/res/res/values-as/strings.xml +++ b/core/res/res/values-as/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ডিভাইচটোৰ ফিংগাৰপ্ৰিণ্ট ছেন্সৰত দিয়া নিৰ্দেশ বুজিব পাৰে।"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"স্ক্ৰীনশ্বট লওক"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ডিছপ্লে’খনৰ এটা স্ক্ৰীনশ্বট ল\'ব পাৰে।"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"স্থিতি দণ্ড অক্ষম কৰক বা সলনি কৰক"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"স্থিতি দণ্ড অক্ষম কৰিবলৈ বা ছিষ্টেম আইকন আঁতৰাবলৈ এপ্টোক অনুমতি দিয়ে।"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"স্থিতি দণ্ড হ\'ব পাৰে"</string> diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml index d2359c742760..534f1a0e9feb 100644 --- a/core/res/res/values-az/strings.xml +++ b/core/res/res/values-az/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Cihazların barmaq izi sensorunda olan işarələri əldə edə bilər."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ekran şəkli çəkin"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Ekran şəkli çəkilə bilər."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"status panelini deaktivləşdir və ya dəyişdir"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Tətbiqə status panelini deaktiv etməyə və ya sistem ikonalarını əlavə etmək və ya silmək imkanı verir."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"status paneli edin"</string> diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml index 4a7a235c2fc6..ae8c663fecd6 100644 --- a/core/res/res/values-b+sr+Latn/strings.xml +++ b/core/res/res/values-b+sr+Latn/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Može da registruje pokrete na senzoru za otisak prsta na uređaju."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Napravi snimak ekrana"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Može da napravi snimak ekrana."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"onemogućavanje ili izmena statusne trake"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Dozvoljava aplikaciji da onemogući statusnu traku ili da dodaje i uklanja sistemske ikone."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"funkcionisanje kao statusna traka"</string> diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml index 24d799082777..85bd8f9c871f 100644 --- a/core/res/res/values-be/strings.xml +++ b/core/res/res/values-be/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Можа распазнаваць жэсты на сканеры адбіткаў пальцаў прылады."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Зрабіць здымак экрана"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Можна зрабіць здымак экрана."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"адключаць ці змяняць радок стану"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Дазваляе прыкладанням адключаць радок стану або дадаваць і выдаляць сістэмныя значкі."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"быць панэллю стану"</string> diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml index 164040f6ca38..424f2cfafe2b 100644 --- a/core/res/res/values-bg/strings.xml +++ b/core/res/res/values-bg/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Може да улавя жестовете, извършени върху сензора за отпечатъци на устройството."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Създаване на екранна снимка"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Може да създава екранни снимки."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"деактивиране или промяна на лентата на състоянието"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Разрешава на приложението да деактивира лентата на състоянието или да добавя и премахва системни икони."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"изпълняване на ролята на лента на състоянието"</string> diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml index b0a9467813d2..cc1e61618458 100644 --- a/core/res/res/values-bn/strings.xml +++ b/core/res/res/values-bn/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ডিভাইসের আঙ্গুলের ছাপের সেন্সরের উপরে ইঙ্গিত করলে বুঝতে পারে।"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"স্ক্রিনশট নিন"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ডিসপ্লের একটি স্ক্রিনশট নিতে পারেন।"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"স্ট্যাটাস বার নিষ্ক্রিয় অথবা সংশোধন করে"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"অ্যাপ্লিকেশনকে স্ট্যাটাস বার অক্ষম করতে এবং সিস্টেম আইকনগুলি সরাতে দেয়৷"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"স্থিতি দন্ডে থাকুন"</string> diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml index ec381a559dcb..34b20468383a 100644 --- a/core/res/res/values-bs/strings.xml +++ b/core/res/res/values-bs/strings.xml @@ -343,6 +343,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Može zabilježiti pokrete na senzoru za otisak prsta uređaja."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"praviti snimke ekrana"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Može napraviti snimak ekrana."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Pregled, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"onemogućavanje ili mijenjanje statusne trake"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Dozvoljava aplikaciji onemogućavanje statusne trake ili dodavanje i uklanjanje sistemskih ikona."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"funkcioniranje u vidu statusne trake"</string> diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml index 4cf938470ea0..4744f440ebb4 100644 --- a/core/res/res/values-ca/strings.xml +++ b/core/res/res/values-ca/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Pot capturar els gestos fets en el sensor d\'empremtes digitals del dispositiu."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Fer una captura de pantalla"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Pot fer una captura de la pantalla."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"desactivar o modificar la barra d\'estat"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permet que l\'aplicació desactivi la barra d\'estat o afegeixi i elimini icones del sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"aparèixer a la barra d\'estat"</string> diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml index a04b34aa206b..99686911539b 100644 --- a/core/res/res/values-cs/strings.xml +++ b/core/res/res/values-cs/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Dokáže rozpoznat gesta zadaná na snímači otisků prstů."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Pořídit snímek obrazovky"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Může pořídit snímek obrazovky."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"zakázání či změny stavového řádku"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Umožňuje aplikaci zakázat stavový řádek nebo přidat či odebrat systémové ikony."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"vydávání se za stavový řádek"</string> diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml index 0e17b9ab4831..7b04bc98120a 100644 --- a/core/res/res/values-da/strings.xml +++ b/core/res/res/values-da/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Kan registrere bevægelser, der foretages på enhedens fingeraftrykssensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Tag screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Kan tage et screenshot af skærmen."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"deaktivere eller redigere statuslinje"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Tillader, at appen kan deaktivere statusbjælken eller tilføje og fjerne systemikoner."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"vær statusbjælken"</string> diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml index 9b416bc2b886..7b78645fd4c1 100644 --- a/core/res/res/values-de/strings.xml +++ b/core/res/res/values-de/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Erfasst Touch-Gesten auf dem Fingerabdrucksensor des Geräts."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Screenshot erstellen"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Es kann ein Screenshot des Displays erstellt werden."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"Statusleiste deaktivieren oder ändern"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Ermöglicht der App, die Statusleiste zu deaktivieren oder Systemsymbole hinzuzufügen oder zu entfernen"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"Statusleiste darstellen"</string> diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml index 8ab0345233c1..93128aa9ad7c 100644 --- a/core/res/res/values-el/strings.xml +++ b/core/res/res/values-el/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Μπορεί να αναγνωρίσει κινήσεις που εκτελούνται στον αισθητήρα δακτυλικού αποτυπώματος της συσκευής."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Λήψη στιγμιότυπου οθόνης"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Μπορεί να τραβήξει στιγμιότυπο της οθόνης."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"απενεργοποιεί ή να τροποποιεί την γραμμή κατάστασης"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Επιτρέπει στην εφαρμογή να απενεργοποιεί τη γραμμή κατάστασης ή να προσθέτει και να αφαιρεί εικονίδια συστήματος."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ορίζεται ως γραμμή κατάστασης"</string> diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml index e96b543d248e..d1da0fb1cf78 100644 --- a/core/res/res/values-en-rAU/strings.xml +++ b/core/res/res/values-en-rAU/strings.xml @@ -342,6 +342,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Can capture gestures performed on the device\'s fingerprint sensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Take screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Can take a screenshot of the display."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Preview, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"disable or modify status bar"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Allows the app to disable the status bar or add and remove system icons."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"be the status bar"</string> diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml index 7d455c7a31e4..8c6285c5ca53 100644 --- a/core/res/res/values-en-rCA/strings.xml +++ b/core/res/res/values-en-rCA/strings.xml @@ -342,6 +342,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Can capture gestures performed on the device\'s fingerprint sensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Take screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Can take a screenshot of the display."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Preview, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"disable or modify status bar"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Allows the app to disable the status bar or add and remove system icons."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"be the status bar"</string> diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml index 0ee88ad9439a..861393f0d105 100644 --- a/core/res/res/values-en-rGB/strings.xml +++ b/core/res/res/values-en-rGB/strings.xml @@ -342,6 +342,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Can capture gestures performed on the device\'s fingerprint sensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Take screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Can take a screenshot of the display."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Preview, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"disable or modify status bar"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Allows the app to disable the status bar or add and remove system icons."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"be the status bar"</string> diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml index 68cbfa8499d4..a0a9436c86db 100644 --- a/core/res/res/values-en-rIN/strings.xml +++ b/core/res/res/values-en-rIN/strings.xml @@ -342,6 +342,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Can capture gestures performed on the device\'s fingerprint sensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Take screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Can take a screenshot of the display."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Preview, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"disable or modify status bar"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Allows the app to disable the status bar or add and remove system icons."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"be the status bar"</string> diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml index b8767b7bcca3..b3551cfa8cc9 100644 --- a/core/res/res/values-en-rXC/strings.xml +++ b/core/res/res/values-en-rXC/strings.xml @@ -342,6 +342,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Can capture gestures performed on the device\'s fingerprint sensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Take screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Can take a screenshot of the display."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Preview, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"disable or modify status bar"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Allows the app to disable the status bar or add and remove system icons."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"be the status bar"</string> diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml index 2f510555e883..817f00ea41ec 100644 --- a/core/res/res/values-es-rUS/strings.xml +++ b/core/res/res/values-es-rUS/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Capturará los gestos que se hacen en el sensor de huellas dactilares del dispositivo."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Tomar captura de pantalla"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Puede tomar capturas de pantalla."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"desactivar o modificar la barra de estado"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite que la aplicación inhabilite la barra de estado o que agregue y elimine íconos del sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"aparecer en la barra de estado"</string> diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml index 29e8abf44a6b..ba30d42619e8 100644 --- a/core/res/res/values-es/strings.xml +++ b/core/res/res/values-es/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Puede capturar los gestos realizados en el sensor de huellas digitales del dispositivo."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Hacer captura"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Puede hacer capturas de la pantalla."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"inhabilitar o modificar la barra de estado"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite que la aplicación inhabilite la barra de estado o añada y elimine iconos del sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"aparecer en la barra de estado"</string> diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml index 9178aff1d6b6..18539dfd2eb1 100644 --- a/core/res/res/values-et/strings.xml +++ b/core/res/res/values-et/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Teil on võimalik jäädvustada seadme sõrmejäljeanduril tehtud liigutused."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Jäädvusta ekraanipilt"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Saab jäädvustada ekraanipildi."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"keela või muuda olekuriba"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Võimaldab rakendusel keelata olekuriba või lisada ja eemaldada süsteemiikoone."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"olekuribana kuvamine"</string> diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml index fc7a86e21f20..858b656d930c 100644 --- a/core/res/res/values-eu/strings.xml +++ b/core/res/res/values-eu/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Gailuaren hatz-marken sentsorean egindako keinuak atzeman ditzake."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Pantaila-argazkiak atera."</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Pantaila-argazkiak atera ditzake."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"desgaitu edo aldatu egoera-barra"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Egoera-barra desgaitzea edo sistema-ikonoak gehitzea edo kentzea baimentzen die aplikazioei."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"bihurtu egoera-barra"</string> diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml index 26d1d4bbb366..5b5d5e4b57b1 100644 --- a/core/res/res/values-fa/strings.xml +++ b/core/res/res/values-fa/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"میتواند اشارههای اجراشده روی حسگر اثرانگشت دستگاه را ثبت کند."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"گرفتن نماگرفت"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"میتواند از نمایشگر نماگرفت بگیرد."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"غیرفعال کردن یا تغییر نوار وضعیت"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"به برنامه اجازه میدهد تا نوار وضعیت را غیرفعال کند یا نمادهای سیستم را اضافه یا حذف کند."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"نوار وضعیت باشد"</string> diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml index 5f27e36d7e18..e2b8fcc8dde7 100644 --- a/core/res/res/values-fi/strings.xml +++ b/core/res/res/values-fi/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Voi tallentaa laitteen sormenjälkitunnistimelle tehtyjä eleitä."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ota kuvakaappaus"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Voi ottaa kuvakaappauksen näytöstä."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"poista tilapalkki käytöstä tai muokkaa tilapalkkia"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Antaa sovelluksen poistaa tilapalkin käytöstä ja lisätä tai poistaa järjestelmäkuvakkeita."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"sijaita tilapalkissa"</string> diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml index 6ca95b3281e5..3e29326d91eb 100644 --- a/core/res/res/values-fr-rCA/strings.xml +++ b/core/res/res/values-fr-rCA/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Peut capturer des gestes effectués sur le capteur d\'empreintes digitales de l\'appareil."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Prendre une capture d\'écran"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Peut prendre une capture de l\'écran."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"désactiver ou modifier la barre d\'état"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permet à l\'application de désactiver la barre d\'état, ou d\'ajouter et de supprimer des icônes système."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"servir de barre d\'état"</string> diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml index 815ae1be8dc1..c5bf6a945775 100644 --- a/core/res/res/values-fr/strings.xml +++ b/core/res/res/values-fr/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Peut enregistrer des gestes effectués sur le lecteur d\'empreinte digitale de l\'appareil."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Prendre une capture d\'écran"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Peut prendre des captures d\'écran."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"Désactivation ou modification de la barre d\'état"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permet à l\'application de désactiver la barre d\'état, ou d\'ajouter et de supprimer des icônes système."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"remplacer la barre d\'état"</string> diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml index 5576f42cda4c..b89bd3f0c40e 100644 --- a/core/res/res/values-gl/strings.xml +++ b/core/res/res/values-gl/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Pode rexistrar os xestos realizados no sensor de impresión dixital do dispositivo."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Facer captura de pantalla"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Pode facer capturas de pantalla."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"desactivar ou modificar a barra de estado"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite á aplicación desactivar a barra de estado ou engadir e quitar as iconas do sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"actuar como a barra de estado"</string> diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml index 2665731059e6..c77502178ac7 100644 --- a/core/res/res/values-gu/strings.xml +++ b/core/res/res/values-gu/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ડિવાઇસના ફિંગરપ્રિન્ટ સેન્સર પર કરવામાં આવેલા સંકેતો કૅપ્ચર કરી શકે છે."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"સ્ક્રીનશૉટ લો"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ડિસ્પ્લેનો સ્ક્રીનશૉટ લઈ શકે છે."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"સ્ટેટસ બારને અક્ષમ કરો અથવા તેમાં ફેરફાર કરો"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ઍપ્લિકેશનને સ્ટેટસ બાર અક્ષમ કરવાની અથવા સિસ્ટમ આયકન્સ ઉમેરવા અને દૂર કરવાની મંજૂરી આપે છે."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"સ્ટેટસ બારમાં બતાવો"</string> diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml index b17eb42371ae..1951a38804e9 100644 --- a/core/res/res/values-hi/strings.xml +++ b/core/res/res/values-hi/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"डिवाइस के फ़िंगरप्रिंट सेंसर पर किए गए हाथ के जेस्चर कैप्चर किए जा सकते हैं."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"स्क्रीनशॉट लें"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"डिसप्ले का स्क्रीनशॉट लिया जा सकता है."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"स्टेटस बार को अक्षम करें या बदलें"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ऐप को, स्टेटस बार को बंद करने या सिस्टम आइकॉन को जोड़ने और निकालने की अनुमति देता है."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"स्टेटस बार को रहने दें"</string> diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml index 0b0b8fe43917..f380cb49dcbb 100644 --- a/core/res/res/values-hr/strings.xml +++ b/core/res/res/values-hr/strings.xml @@ -343,6 +343,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Može snimati pokrete izvršene na senzoru otiska prsta na uređaju."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Snimi zaslon"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Možete napraviti snimku zaslona."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Pregled, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"onemogućavanje ili izmjena trake statusa"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Aplikaciji omogućuje onemogućavanje trake statusa ili dodavanje i uklanjanje sistemskih ikona."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"biti traka statusa"</string> diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml index d797230895d8..3d98bb4d79f0 100644 --- a/core/res/res/values-hu/strings.xml +++ b/core/res/res/values-hu/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Érzékeli az eszköz ujjlenyomat-érzékelőjén végzett kézmozdulatokat."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Képernyőkép készítése"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Készíthet képernyőképet a kijelzőről."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"állapotsor kikapcsolása vagy módosítása"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Lehetővé teszi az alkalmazás számára az állapotsor kikapcsolását, illetve rendszerikonok hozzáadását és eltávolítását."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"az állapotsor szerepének átvétele"</string> diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml index 5937faf3d6f8..5d60c5dd1d35 100644 --- a/core/res/res/values-hy/strings.xml +++ b/core/res/res/values-hy/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Կարող է արձանագրել մատնահետքերի սկաների վրա կատարվող ժեստերը"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Սքրինշոթի ստեղծում"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Կարող է ստեղծել էկրանի սքրինշոթ։"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"անջատել կամ փոփոխել կարգավիճակի գոտին"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Թույլ է տալիս հավելվածին անջատել կարգավիճակի գոտին կամ ավելացնել ու հեռացնել համակարգի պատկերակները:"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"լինել կարգավիճակի գոտի"</string> diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml index 93b8a15b6d7a..2173eb9364e0 100644 --- a/core/res/res/values-in/strings.xml +++ b/core/res/res/values-in/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Dapat merekam gestur yang dilakukan di sensor sidik jari perangkat."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ambil screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Dapat mengambil screenshot tampilan."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"nonaktifkan atau ubah bilah status"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Mengizinkan apl menonaktifkan bilah status atau menambah dan menghapus ikon sistem."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"jadikan bilah status"</string> diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml index 29c1a2ae3cc9..d9df6203143c 100644 --- a/core/res/res/values-is/strings.xml +++ b/core/res/res/values-is/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Getur fangað bendingar sem eru gerðar á fingrafaralesara tækisins."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Taka skjámynd"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Getur tekið skjámynd af skjánum."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"slökkva á eða breyta stöðustiku"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Leyfir forriti að slökkva á stöðustikunni eða bæta við og fjarlægja kerfistákn."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"vera stöðustikan"</string> diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml index 304d21226de6..dd1b8defba37 100644 --- a/core/res/res/values-it/strings.xml +++ b/core/res/res/values-it/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"È in grado di rilevare i gesti compiuti con il sensore di impronte dei dispositivi."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Acquisire screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Può acquisire uno screenshot del display."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"disattivazione o modifica della barra di stato"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Consente all\'applicazione di disattivare la barra di stato o di aggiungere e rimuovere icone di sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ruolo di barra di stato"</string> diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml index 963d473e3bd9..a6c46a21f585 100644 --- a/core/res/res/values-iw/strings.xml +++ b/core/res/res/values-iw/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"אפשרות לזהות תנועות בזמן נגיעה בחיישן טביעות האצבע של המכשיר."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"צילום המסך"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ניתן לצלם צילום מסך של התצוגה."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"השבתה או שינוי של שורת הסטטוס"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"מאפשרת לאפליקציה להשבית את שורת הסטטוס או להוסיף ולהסיר סמלי מערכת."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"להיות שורת הסטטוס"</string> diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml index f2bc9a975afc..1879cc62088b 100644 --- a/core/res/res/values-ja/strings.xml +++ b/core/res/res/values-ja/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"デバイスの指紋認証センサーで行われた操作をキャプチャできます。"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"スクリーンショットの撮影"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ディスプレイのスクリーンショットを撮影できます。"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"ステータスバーの無効化や変更"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ステータスバーの無効化、システムアイコンの追加や削除をアプリに許可します。"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ステータスバーへの表示"</string> diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml index 3803a26f2b9d..8343198bc157 100644 --- a/core/res/res/values-ka/strings.xml +++ b/core/res/res/values-ka/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"შეუძლია აღბეჭდოს მოწყობილობის თითის ანაბეჭდის სენსორზე განხორციელებული ჟესტები."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ეკრანის ანაბეჭდის გადაღება"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"შეუძლია ეკრანის ანაბეჭდის გადაღება."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"სტატუსის ზოლის გათიშვა ან ცვლილება"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"აპს შეეძლება სტატუსების ზოლის გათიშვა და სისტემის ხატულების დამატება/წაშლა."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"სტატუსის ზოლის ჩანაცვლება"</string> diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml index 2b113467a4f5..c863cd8d2cae 100644 --- a/core/res/res/values-kk/strings.xml +++ b/core/res/res/values-kk/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Құрылғының саусақ ізі сенсорында орындалған қимылдарды сақтайды."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Скриншот жасау"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Дисплейдің скриншотын жасай аласыз."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"күйін көрсету тақтасын өшіру немесе өзгерту"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Қолданбаға күй жолағын өшіруге немесе жүйелік белгішелерді қосуға және жоюға рұқсат береді."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"күй жолағы болу"</string> diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml index 9cf498dcae4e..35b59bef94a3 100644 --- a/core/res/res/values-km/strings.xml +++ b/core/res/res/values-km/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"អាចចាប់យកចលនាដែលធ្វើនៅលើនៅលើឧបករណ៍ចាប់ស្នាមម្រាមដៃរបស់ឧបករណ៍បាន។"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ថតអេក្រង់"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"អាចថតអេក្រង់នៃផ្ទាំងអេក្រង់បាន។"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"បិទ ឬកែរបារស្ថានភាព"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ឲ្យកម្មវិធីបិទរបារស្ថានភាព ឬបន្ថែម និងលុបរូបតំណាងប្រព័ន្ធ។"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ធ្វើជារបារស្ថានភាព"</string> diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml index 879f9e85fe63..d0decdf7d983 100644 --- a/core/res/res/values-kn/strings.xml +++ b/core/res/res/values-kn/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ಸಾಧನದ ಫಿಂಗರ್ಪ್ರಿಂಟ್ ಸೆನ್ಸರ್ನಲ್ಲಿ ನಡೆಸಿದ ಗೆಶ್ಚರ್ಗಳನ್ನು ಕ್ಯಾಪ್ಚರ್ ಮಾಡಿ."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ಸ್ಕ್ರೀನ್ಶಾಟ್ ತೆಗೆದುಕೊಳ್ಳಿ"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ಪ್ರದರ್ಶನದ ಸ್ಕ್ರೀನ್ಶಾಟ್ ಅನ್ನು ತೆಗೆದುಕೊಳ್ಳಬಲ್ಲದು."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"ಸ್ಥಿತಿ ಪಟ್ಟಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿ ಇಲ್ಲವೇ ಮಾರ್ಪಡಿಸಿ"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ಸ್ಥಿತಿ ಪಟ್ಟಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲು ಅಥವಾ ಸೇರಿಸಲು ಮತ್ತು ಸಿಸ್ಟಂ ಐಕಾನ್ಗಳನ್ನು ತೆಗೆದುಹಾಕಲು ಅಪ್ಲಿಕೇಶನ್ಗೆ ಅವಕಾಶ ನೀಡುತ್ತದೆ."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ಸ್ಥಿತಿ ಪಟ್ಟಿಯಾಗಿರಲು"</string> diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml index 7504943ddf48..04dc86a6c9a7 100644 --- a/core/res/res/values-ko/strings.xml +++ b/core/res/res/values-ko/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"기기 지문 센서에서 동작을 캡처합니다."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"스크린샷 촬영"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"디스플레이 스크린샷을 촬영할 수 있습니다."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"상태 표시줄 사용 중지 또는 수정"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"앱이 상태 표시줄을 사용중지하거나 시스템 아이콘을 추가 및 제거할 수 있도록 허용합니다."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"상태 표시줄에 위치"</string> diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml index de2cdb7007c0..bdb8fe1576a1 100644 --- a/core/res/res/values-ky/strings.xml +++ b/core/res/res/values-ky/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Түзмөктөгү манжа изинин сенсорунда жасалган жаңсоолорду жаздырып алат."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Скриншот тартып алуу"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Дисплейдин скриншотун тартып алсаңыз болот."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"абал тилкесин өчүрүү же өзгөртүү"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Колдонмого абал тилкесин өчүрүү же тутум сүрөтчөлөрүн кошуу же алып салуу мүмкүнчүлүгүн берет."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"абал тилкесинин милдетин аткаруу"</string> diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml index 366881b4d56e..b7a4c05a2f61 100644 --- a/core/res/res/values-lo/strings.xml +++ b/core/res/res/values-lo/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ສາມາດບັນທຶກທ່າທາງທີ່ເກີດຂຶ້ນໃນອຸປະກອນເຊັນເຊີລາຍນິ້ວມືໄດ້."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ຖ່າຍຮູບໜ້າຈໍ"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ສາມາດຖ່າຍຮູບໜ້າຈໍໄດ້."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"ປິດການນນຳໃຊ້ ຫຼື ແກ້ໄຂແຖບສະຖານະ"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ອະນຸຍາດໃຫ້ແອັບຯປິດການເຮັດວຽກຂອງແຖບສະຖານະ ຫຼືເພີ່ມ ແລະລຶບໄອຄອນລະບົບອອກໄດ້."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ເປັນແຖບສະຖານະ"</string> diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml index 8f5e7fba720a..cdfa1ac3cc5e 100644 --- a/core/res/res/values-lt/strings.xml +++ b/core/res/res/values-lt/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Gali užfiksuoti gestus, atliktus naudojant įrenginio piršto antspaudo jutiklį."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ekrano kopijos kūrimas"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Galima sukurti vaizdo ekrano kopiją."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"išjungti ar keisti būsenos juostą"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Leidžiama programai neleisti būsenos juostos arba pridėti ir pašalinti sistemos piktogramas."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"būti būsenos juosta"</string> diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml index cf858b778b64..66826c9fa605 100644 --- a/core/res/res/values-lv/strings.xml +++ b/core/res/res/values-lv/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Var uztvert žestus ierīces pirksta nospieduma sensorā."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ekrānuzņēmuma izveide"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Var izveidot displeja ekrānuzņēmumu."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"atspējot vai pārveidot statusa joslu"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Ļauj lietotnei atspējot statusa joslu vai pievienot un noņemt sistēmas ikonas."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"Būt par statusa joslu"</string> diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml index beed8e6ddd7f..dd5e44ed3709 100644 --- a/core/res/res/values-mk/strings.xml +++ b/core/res/res/values-mk/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Може да сними движења што се направени на сензорот за отпечатоци на уредот."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Зачувување слика од екранот"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Може да зачува слика од екранот."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"оневозможи или измени статусна лента"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Дозволува апликацијата да ја оневозможи статусната лента или да додава или отстранува системски икони."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"да стане статусна лента"</string> diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml index 4ab4c073d83b..4ed058dfb073 100644 --- a/core/res/res/values-ml/strings.xml +++ b/core/res/res/values-ml/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ഉപകരണത്തിന്റെ ഫിംഗർപ്രിന്റ് സെൻസറിൽ ചെയ്ത ജെസ്റ്ററുകൾ ക്യാപ്ചർ ചെയ്യാനാകും."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"സ്ക്രീന്ഷോട്ട് എടുക്കുക"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ഡിസ്പ്ലേയുടെ സ്ക്രീൻഷോട്ട് എടുക്കാൻ കഴിയും."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"സ്റ്റാറ്റസ് ബാർ പ്രവർത്തനരഹിതമാക്കുക അല്ലെങ്കിൽ പരിഷ്ക്കരിക്കുക"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"നില ബാർ പ്രവർത്തരഹിതമാക്കുന്നതിന് അല്ലെങ്കിൽ സിസ്റ്റം ഐക്കണുകൾ ചേർക്കുന്നതിനും നീക്കംചെയ്യുന്നതിനും അപ്ലിക്കേഷനെ അനുവദിക്കുന്നു."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"സ്റ്റാറ്റസ് ബാർ ആയിരിക്കുക"</string> diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml index 5e98d53e9c69..5b8209ba92f2 100644 --- a/core/res/res/values-mn/strings.xml +++ b/core/res/res/values-mn/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Төхөөрөмжийн хурууны хээ мэдрэгчид зангасан зангааг танина."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Дэлгэцийн зургийг дарах"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Дэлгэцийн зургийг дарах боломжтой."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"статус самбарыг идэвхгүй болгох болон өөрчлөх"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Апп нь статус самбарыг идэвхгүй болгох эсвэл систем дүрсийг нэмэх, хасах боломжтой."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"статусын хэсэг болох"</string> diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml index 9b2f1be42a95..ee6e2eedffd5 100644 --- a/core/res/res/values-mr/strings.xml +++ b/core/res/res/values-mr/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"डिव्हाइसच्या फिंगरप्रिंट सेंन्सरवरील जेश्चर कॅप्चर करू शकते."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"स्क्रीनशॉट घ्या"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"डिस्प्लेचा स्क्रीनशॉट घेऊ शकतो."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"स्टेटस बार अक्षम करा किंवा सुधारित करा"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"स्टेटस बार अक्षम करण्यासाठी किंवा सिस्टम चिन्हे जोडण्यासाठी आणि काढण्यासाठी अॅप ला अनुमती देते."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"स्टेटस बार होऊ द्या"</string> diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml index fefa9f5ea030..8f5476281f09 100644 --- a/core/res/res/values-ms/strings.xml +++ b/core/res/res/values-ms/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Boleh menangkap gerak isyarat yang dilakukan pada penderia cap jari peranti."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ambil tangkapan skrin"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Boleh mengambil tangkapan skrin paparan."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"lumpuhkan atau ubah suai bar status"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Membenarkan apl melumpuhkan bar status atau menambah dan mengalih keluar ikon sistem."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"jadi bar status"</string> diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml index fa13d38dead7..939df8038677 100644 --- a/core/res/res/values-my/strings.xml +++ b/core/res/res/values-my/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"စက်ပစ္စည်း၏ လက်ဗွေအာရုံခံကိရိယာတွင် လုပ်ဆောင်ထားသည့် လက်ဟန်များကို မှတ်သားထားနိုင်သည်။"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ဖန်သားပြင်ဓာတ်ပုံ ရိုက်ရန်"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ဖန်သားပြင်ပြသမှုကို ဓာတ်ပုံရိုက်နိုင်ပါသည်။"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"အခြေအနေပြဘားအား အလုပ်မလုပ်ခိုင်းရန်သို့မဟုတ် မွမ်းမံရန်"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"အက်ပ်အား အခြေအနေပြ ဘားကို ပိတ်ခွင့် သို့မဟတ် စနစ် အိုင်ကွန်များကို ထည့်ခြင်း ဖယ်ရှားခြင်း ပြုလုပ်ခွင့် ပြုသည်။"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"အခြေအနေပြ ဘားဖြစ်ပါစေ"</string> diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml index aec00894a1e6..f0f4439c57aa 100644 --- a/core/res/res/values-nb/strings.xml +++ b/core/res/res/values-nb/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Kan fange inn bevegelser som utføres på enhetens fingeravtrykkssensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ta skjermdump"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Kan ikke ta en skjermdump av skjermen."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"deaktivere eller endre statusfeltet"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Lar appen deaktivere statusfeltet eller legge til og fjerne systemikoner."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"vise appen i statusfeltet"</string> diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml index 5fa9b6c36831..94551e5daad4 100644 --- a/core/res/res/values-ne/strings.xml +++ b/core/res/res/values-ne/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"यसले यन्त्रको फिंगरप्रिन्टसम्बन्धी सेन्सरमा गरिएका इसाराहरूलाई खिच्न सक्छ।"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"स्क्रिनसट लिनुहोस्"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"डिस्प्लेको स्क्रिनसट लिन सकिन्छ।"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"स्थिति पट्टिलाई अक्षम वा संशोधित गर्नुहोस्"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"स्थिति पट्टि असक्षम पार्न वा प्रणाली आइकनहरू थप्न र हटाउन एपलाई अनुमति दिन्छ।"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"स्टाटस बार हुन दिनुहोस्"</string> diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml index c2639db2b42c..0f7d35f3fb48 100644 --- a/core/res/res/values-nl/strings.xml +++ b/core/res/res/values-nl/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Kan gebaren registreren die op de vingerafdruksensor van het apparaat worden getekend."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Screenshot maken"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Kan een screenshot van het scherm maken."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"statusbalk uitzetten of wijzigen"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Hiermee kan de app de statusbalk uitzetten of systeemiconen toevoegen en verwijderen."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"de statusbalk zijn"</string> diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml index 8619511085d7..26821da497b7 100644 --- a/core/res/res/values-or/strings.xml +++ b/core/res/res/values-or/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ଡିଭାଇସ୍ର ଟିପଚିହ୍ନ ସେନସର୍ ଉପରେ ଜେଶ୍ଚର୍ କ୍ୟାପଚର୍ କାର୍ଯ୍ୟ କରାଯାଇପାରିବ।"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ସ୍କ୍ରିନସଟ୍ ନିଅନ୍ତୁ"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ଡିସପ୍ଲେର ଏକ ସ୍କ୍ରିନସଟ୍ ନିଆଯାଇପାରେ।"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"ଷ୍ଟାଟସ୍ ବାର୍କୁ ଅକ୍ଷମ କିମ୍ୱା ସଂଶୋଧନ କରନ୍ତୁ"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ଆପ୍କୁ, ସ୍ଥିତି ବାର୍ ଅକ୍ଷମ କରିବାକୁ କିମ୍ବା ସିଷ୍ଟମ୍ ଆଇକନ୍ ଯୋଡ଼ିବା କିମ୍ବା ବାହାର କରିବାକୁ ଦେଇଥାଏ।"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ଷ୍ଟାଟସ୍ ବାର୍ ରହିବାକୁ ଦିଅନ୍ତୁ"</string> diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml index 57e187b0926d..c8c382b1a289 100644 --- a/core/res/res/values-pa/strings.xml +++ b/core/res/res/values-pa/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"ਡੀਵਾਈਸਾਂ ਦੇ ਫਿੰਗਰਪ੍ਰਿੰਟ ਸੈਂਸਰ \'ਤੇ ਕੀਤੇ ਗਏ ਸੰਕੇਤਾਂ ਨੂੰ ਕੈਪਚਰ ਕਰ ਸਕਦੇ ਹਨ।"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ਸਕ੍ਰੀਨਸ਼ਾਟ ਲਓ"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ਡਿਸਪਲੇ ਦਾ ਸਕ੍ਰੀਨਸ਼ਾਟ ਲੈ ਸਕਦੀ ਹੈ।"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"ਸਥਿਤੀ ਪੱਟੀ ਬੰਦ ਕਰੋ ਜਾਂ ਸੰਸ਼ੋਧਿਤ ਕਰੋ"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ਐਪ ਨੂੰ ਸਥਿਤੀ ਪੱਟੀ ਨੂੰ ਚਾਲੂ ਕਰਨ ਜਾਂ ਸਿਸਟਮ ਪ੍ਰਤੀਕਾਂ ਨੂੰ ਜੋੜਨ ਅਤੇ ਹਟਾਉਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ਸਥਿਤੀ ਪੱਟੀ ਬਣਨ ਦਿਓ"</string> diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml index ae83e688ab3c..8425a7a8a816 100644 --- a/core/res/res/values-pl/strings.xml +++ b/core/res/res/values-pl/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Może przechwytywać gesty wykonywane na czytniku linii papilarnych w urządzeniu."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Robienie zrzutu ekranu"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Może robić zrzuty ekranu wyświetlacza."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"wyłączanie lub zmienianie paska stanu"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Pozwala aplikacji na wyłączanie paska stanu oraz dodawanie i usuwanie ikon systemowych."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"działanie jako pasek stanu"</string> diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml index 7886d2b471b2..4fe36de666b9 100644 --- a/core/res/res/values-pt-rBR/strings.xml +++ b/core/res/res/values-pt-rBR/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Pode captar gestos realizados no sensor de impressão digital do dispositivo."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Fazer uma captura de tela"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Pode fazer uma captura de tela."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"desativar ou modificar a barra de status"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite que o app desative a barra de status ou adicione e remova ícones do sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ser a barra de status"</string> diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml index 561e47eb5cfa..b6fbbea10084 100644 --- a/core/res/res/values-pt-rPT/strings.xml +++ b/core/res/res/values-pt-rPT/strings.xml @@ -343,6 +343,7 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Pode capturar gestos realizados no sensor de impressões digitais do dispositivo."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Fazer captura de ecrã"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"É possível tirar uma captura de ecrã."</string> + <string name="dream_preview_title" msgid="5570751491996100804">"Pré-visualização, <xliff:g id="DREAM_NAME">%1$s</xliff:g>"</string> <string name="permlab_statusBar" msgid="8798267849526214017">"desativar ou modificar barra de estado"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite à app desativar a barra de estado ou adicionar e remover ícones do sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ser apresentada na barra de estado"</string> @@ -1235,7 +1236,7 @@ <string name="unsupported_display_size_show" msgid="980129850974919375">"Mostrar sempre"</string> <string name="unsupported_compile_sdk_message" msgid="7326293500707890537">"A app <xliff:g id="APP_NAME">%1$s</xliff:g> foi concebida para uma versão incompatível do SO Android e pode ter um comportamento inesperado. Pode estar disponível uma versão atualizada da app."</string> <string name="unsupported_compile_sdk_show" msgid="1601210057960312248">"Mostrar sempre"</string> - <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"Verificar atualizações"</string> + <string name="unsupported_compile_sdk_check_update" msgid="1103639989147664456">"Rever atualizações"</string> <string name="smv_application" msgid="3775183542777792638">"A app <xliff:g id="APPLICATION">%1$s</xliff:g> (processo <xliff:g id="PROCESS">%2$s</xliff:g>) violou a política StrictMode auto-imposta."</string> <string name="smv_process" msgid="1398801497130695446">"O processo <xliff:g id="PROCESS">%1$s</xliff:g> violou a política StrictMode auto-imposta."</string> <string name="android_upgrading_title" product="default" msgid="7279077384220829683">"O telemóvel está a atualizar…"</string> @@ -1963,7 +1964,7 @@ <string name="app_streaming_blocked_message_for_settings_dialog" product="tablet" msgid="3286849551133045896">"Não é possível aceder a esta app no seu dispositivo <xliff:g id="DEVICE">%1$s</xliff:g>. Em alternativa, experimente no tablet."</string> <string name="app_streaming_blocked_message_for_settings_dialog" product="default" msgid="6264287556598916295">"Não é possível aceder a esta app no seu dispositivo <xliff:g id="DEVICE">%1$s</xliff:g>. Em alternativa, experimente no telemóvel."</string> <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Esta app foi concebida para uma versão mais antiga do Android e pode não funcionar corretamente. Experimente verificar se existem atualizações ou contacte o programador."</string> - <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Verificar atualizações"</string> + <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Rever atualizações"</string> <string name="new_sms_notification_title" msgid="6528758221319927107">"Tem mensagens novas"</string> <string name="new_sms_notification_content" msgid="3197949934153460639">"Abra a app de SMS para ver"</string> <string name="profile_encrypted_title" msgid="9001208667521266472">"Algumas funcionalidades limitadas"</string> @@ -2293,7 +2294,7 @@ <string name="notification_title_long_running_fgs" msgid="8170284286477131587">"Uma app ainda está ativa"</string> <string name="notification_content_abusive_bg_apps" msgid="5296898075922695259">"A app <xliff:g id="APP">%1$s</xliff:g> está a ser executada em segundo plano Toque para gerir a utilização da bateria."</string> <string name="notification_content_long_running_fgs" msgid="8258193410039977101">"A app <xliff:g id="APP">%1$s</xliff:g> pode afetar a autonomia da bateria. Toque para rever as apps ativas."</string> - <string name="notification_action_check_bg_apps" msgid="4758877443365362532">"Verificar apps ativas"</string> + <string name="notification_action_check_bg_apps" msgid="4758877443365362532">"Rever apps ativas"</string> <string name="vdm_camera_access_denied" product="default" msgid="6102378580971542473">"Não é possível aceder à câmara do telemóvel a partir do dispositivo <xliff:g id="DEVICE">%1$s</xliff:g>"</string> <string name="vdm_camera_access_denied" product="tablet" msgid="6895968310395249076">"Não é possível aceder à câmara do tablet a partir do dispositivo <xliff:g id="DEVICE">%1$s</xliff:g>"</string> <string name="vdm_secure_window" msgid="161700398158812314">"Não é possível aceder a isto durante o streaming. Em alternativa, experimente no telemóvel."</string> diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml index 7886d2b471b2..4fe36de666b9 100644 --- a/core/res/res/values-pt/strings.xml +++ b/core/res/res/values-pt/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Pode captar gestos realizados no sensor de impressão digital do dispositivo."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Fazer uma captura de tela"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Pode fazer uma captura de tela."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"desativar ou modificar a barra de status"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite que o app desative a barra de status ou adicione e remova ícones do sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"ser a barra de status"</string> diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml index 301d14cdea0c..a3be67382471 100644 --- a/core/res/res/values-ro/strings.xml +++ b/core/res/res/values-ro/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Poate reda gesturile făcute pe senzorul de amprentă al dispozitivului."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Fă o captură de ecran"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Poate face o captură de ecran."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"dezactivare sau modificare bare de stare"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Permite aplicației să dezactiveze bara de stare sau să adauge și să elimine pictograme de sistem."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"să fie bara de stare"</string> diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml index c7658177e2ca..d5067ae4e035 100644 --- a/core/res/res/values-ru/strings.xml +++ b/core/res/res/values-ru/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Использовать сканер отпечатков пальцев для дополнительных жестов."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Создавать скриншоты"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Создавать снимки экрана."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"Отключение/изменение строки состояния"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Приложение сможет отключать строку состояния, а также добавлять и удалять системные значки."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"Замена строки состояния"</string> diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml index 69d806a58b27..66b0cd6fff3b 100644 --- a/core/res/res/values-si/strings.xml +++ b/core/res/res/values-si/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"උපාංගයෙහි ඇඟිලි සලකුණු සංවේදකය මත සිදු කරන ඉංගිත ග්රහණය කළ හැකිය."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"තිර රුව ගන්න"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"සංදර්ශකයේ තිර රුවක් ගැනීමට හැකිය."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"තත්ව තීරුව අබල කරන්න හෝ වෙනස් කරන්න"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"තත්ව තීරුව අක්රිය කිරීමට හෝ පද්ධති නිරූපක එකතු හෝ ඉවත් කිරීමට යෙදුමට අවසර දේ."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"තත්ත්ව තීරුව බවට පත්වීම"</string> diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml index 6bbfe0ab7fd3..816feefb8b7a 100644 --- a/core/res/res/values-sk/strings.xml +++ b/core/res/res/values-sk/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Dokáže zaznamenať gestá na senzore odtlačkov prstov zariadenia."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Vytvoriť snímku obrazovky"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Je možné vytvoriť snímku obrazovky."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"zakázanie alebo zmeny stavového riadka"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Umožňuje aplikácii vypnúť stavový riadok alebo pridať a odstrániť systémové ikony."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"vydávanie sa za stavový riadok"</string> diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml index 1accd18949d7..61f2b51f3d85 100644 --- a/core/res/res/values-sl/strings.xml +++ b/core/res/res/values-sl/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Prepoznava poteze, narejene po tipalu prstnih odtisov naprave."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ustvarjanje posnetka zaslona"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Lahko naredi posnetek zaslona."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"onemogočanje ali spreminjanje vrstice stanja"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Aplikacijam omogoča onemogočenje vrstice stanja ali dodajanje in odstranjevanje ikon sistema."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"postane vrstica stanja"</string> diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml index a8fc00eb4c3c..1708904e40e5 100644 --- a/core/res/res/values-sq/strings.xml +++ b/core/res/res/values-sq/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Mund të regjistrojë gjestet e kryera në sensorin e gjurmës së gishtit të pajisjes."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Nxirr një pamje të ekranit"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Mund të nxjerrë një pamje e ekranit."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"çaktivizo ose modifiko shiritin e statusit"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Lejon aplikacionin të çaktivizojë shiritin e statusit dhe të heqë ikonat e sistemit."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"të bëhet shiriti i statusit"</string> diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml index bf8c0f76d5ee..fb36169d3e33 100644 --- a/core/res/res/values-sr/strings.xml +++ b/core/res/res/values-sr/strings.xml @@ -343,6 +343,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Може да региструје покрете на сензору за отисак прста на уређају."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Направи снимак екрана"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Може да направи снимак екрана."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"онемогућавање или измена статусне траке"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Дозвољава апликацији да онемогући статусну траку или да додаје и уклања системске иконе."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"функционисање као статусна трака"</string> diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml index 177615d89574..6c593df1ff34 100644 --- a/core/res/res/values-sv/strings.xml +++ b/core/res/res/values-sv/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Kan registrera rörelser som utförs med hjälp av enhetens fingeravtryckssensor."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ta skärmbild"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Kan ta en skärmbild av skärmen."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"inaktivera eller ändra statusfält"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Tillåter att appen inaktiverar statusfältet eller lägger till och tar bort systemikoner."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"visas i statusfältet"</string> diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml index 1319d1b0b6da..715c1c4f1b34 100644 --- a/core/res/res/values-sw/strings.xml +++ b/core/res/res/values-sw/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Inaweza kurekodi ishara zinazotekelezwa kwenye kitambua alama ya kidole."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Piga picha ya skrini"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Inaweza kupiga picha ya skrini ya onyesho."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"zima au rekebisha mwambaa hali"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Inaruhusu programu kulemaza upau wa hali au kuongeza na kutoa aikoni za mfumo."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"kuwa sehemu ya arifa"</string> diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml index 6b53c8e2cdf4..2c8c532fefeb 100644 --- a/core/res/res/values-ta/strings.xml +++ b/core/res/res/values-ta/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"சாதனத்தின் கைரேகை சென்சார்மேல் செய்யப்படும் சைகைகளைக் கேப்ட்சர் செய்ய முடியும்."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ஸ்கிரீன்ஷாட்டை எடுக்கும்"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"டிஸ்ப்ளேவை ஸ்கிரீன்ஷாட் எடுக்க முடியும்."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"நிலைப் பட்டியை முடக்குதல் அல்லது மாற்றுதல்"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"நிலைப் பட்டியை முடக்க அல்லது முறைமையில் ஐகான்களைச் சேர்க்க மற்றும் அகற்ற ஆப்ஸை அனுமதிக்கிறது."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"நிலைப் பட்டியில் இருக்கும்"</string> diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml index cff6773b7c57..bc5380279ca3 100644 --- a/core/res/res/values-te/strings.xml +++ b/core/res/res/values-te/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"పరికర వేలిముద్ర సెన్సార్లో ఉపయోగించిన సంజ్ఞలను క్యాప్చర్ చేయవచ్చు."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"స్క్రీన్షాట్ను తీయండి"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"డిస్ప్లే యొక్క స్క్రీన్షాట్ తీసుకోవచ్చు."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"స్టేటస్ బార్ను డిజేబుల్ చేయడం లేదా మార్చడం"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"స్టేటస్ బార్ను డిజేబుల్ చేయడానికి లేదా సిస్టమ్ చిహ్నాలను జోడించడానికి మరియు తీసివేయడానికి యాప్ను అనుమతిస్తుంది."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"స్టేటస్ పట్టీగా ఉండటం"</string> diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml index 10ee52014745..d12b209e3d5e 100644 --- a/core/res/res/values-th/strings.xml +++ b/core/res/res/values-th/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"สามารถจับท่าทางสัมผัสที่เกิดขึ้นบนเซ็นเซอร์ลายนิ้วมือของอุปกรณ์"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"ถ่ายภาพหน้าจอ"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ถ่ายภาพหน้าจอได้"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"ปิดการใช้งานหรือแก้ไขแถบสถานะ"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"อนุญาตให้แอปพลิเคชันปิดใช้งานแถบสถานะหรือเพิ่มและนำไอคอนระบบออก"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"เป็นแถบสถานะ"</string> diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml index f4658cf8b339..4c9e38847f1f 100644 --- a/core/res/res/values-tl/strings.xml +++ b/core/res/res/values-tl/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Makukunan ang mga galaw na ginawa sa sensor para sa fingerprint ng device."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Kumuha ng screenshot"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Puwedeng kumuha ng screenshot ng display."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"i-disable o baguhin ang status bar"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Pinapayagan ang app na i-disable ang status bar o magdagdag at mag-alis ng mga icon ng system."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"maging status bar"</string> diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml index 0573fcd89f0b..4e6c6c78234f 100644 --- a/core/res/res/values-tr/strings.xml +++ b/core/res/res/values-tr/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Cihazın parmak izi sensörlerinde gerçekleştirilen hareketleri yakalayabilir."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Ekran görüntüsü al"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Ekran görüntüsü alınabilir."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"durum çubuğunu devre dışı bırak veya değiştir"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Uygulamaya, durum çubuğunu devre dışı bırakma ve sistem simgelerini ekleyip kaldırma izni verir."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"durum çubuğunda olma"</string> diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml index ad03757a970e..28828e713be4 100644 --- a/core/res/res/values-uk/strings.xml +++ b/core/res/res/values-uk/strings.xml @@ -344,6 +344,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Може фіксувати жести на сканері відбитків пальців."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Робити знімки екрана"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Може робити знімки екрана."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"вимикати чи змін. рядок стану"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Дозволяє програмі вимикати рядок стану чи додавати та видаляти піктограми системи."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"відображатися як рядок стану"</string> diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml index 4e03774d644f..d94ccc133442 100644 --- a/core/res/res/values-ur/strings.xml +++ b/core/res/res/values-ur/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"آلہ کے فنگر پرنٹ سینسر پر کیے گئے اشاروں کو کیپچر کر سکتا ہے۔"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"اسکرین شاٹ لیں"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"ڈسپلے کا اسکرین شاٹ لیا جا سکتا ہے۔"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"اسٹیٹس بار کو غیر فعال یا اس میں ترمیم کریں"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"ایپ کو اسٹیٹس بار غیر فعال کرنے یا سسٹم آئیکنز شامل کرنے اور ہٹانے کی اجازت دیتا ہے۔"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"بطور اسٹیٹس بار کام لیں"</string> diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml index 8d3bedf9e860..8db468bb8181 100644 --- a/core/res/res/values-uz/strings.xml +++ b/core/res/res/values-uz/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Barmoq izi skanerida kiritilgan ishoralarni taniy oladi."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Skrinshot olish"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Ekrandan skrinshot olishi mumkin."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"holat panelini o‘zgartirish yoki o‘chirish"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Ilova holat panelini o‘chirib qo‘yishi hamda tizim ikonkalarini qo‘shishi yoki olib tashlashi mumkin."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"holat qatorida ko‘rinishi"</string> diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml index f30df3b67da8..30cab1ae2c11 100644 --- a/core/res/res/values-vi/strings.xml +++ b/core/res/res/values-vi/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Có thể ghi lại các cử chỉ được thực hiện trên cảm biến vân tay của thiết bị."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Chụp ảnh màn hình"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Có thể chụp ảnh màn hình."</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"vô hiệu hóa hoặc sửa đổi thanh trạng thái"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Cho phép ứng dụng vô hiệu hóa thanh trạng thái hoặc thêm và xóa biểu tượng hệ thống."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"trở thành thanh trạng thái"</string> diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml index 2f3951f2f3f5..3a8ab3cab7fa 100644 --- a/core/res/res/values-zh-rCN/strings.xml +++ b/core/res/res/values-zh-rCN/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"可以捕捉在设备指纹传感器上执行的手势。"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"截取屏幕截图"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"可截取显示画面的屏幕截图。"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"停用或修改状态栏"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"允许应用停用状态栏或者增删系统图标。"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"用作状态栏"</string> diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml index ed5e9899922c..0e65d66f7dd7 100644 --- a/core/res/res/values-zh-rHK/strings.xml +++ b/core/res/res/values-zh-rHK/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"可以擷取在裝置指紋感應器上執行的手勢。"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"擷取螢幕擷圖"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"可以擷取螢幕截圖。"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"停用或修改狀態列"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"允許應用程式停用狀態列,並可新增或移除系統圖示。"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"成為狀態列"</string> diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml index 08b597a6c675..bd37579fb6f1 100644 --- a/core/res/res/values-zh-rTW/strings.xml +++ b/core/res/res/values-zh-rTW/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"可以擷取使用者對裝置的指紋感應器執行的手勢。"</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"擷取螢幕畫面"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"可以擷取螢幕畫面。"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"停用或變更狀態列"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"允許應用程式停用狀態列,並可新增或移除系統圖示。"</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"以狀態列顯示"</string> diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml index a8cdb4e6f287..abc673bfb3b9 100644 --- a/core/res/res/values-zu/strings.xml +++ b/core/res/res/values-zu/strings.xml @@ -342,6 +342,8 @@ <string name="capability_desc_canCaptureFingerprintGestures" msgid="6861869337457461274">"Ingathatha ukuthinta okwenziwe kunzwa yezigxivizo zeminwe zedivayisi."</string> <string name="capability_title_canTakeScreenshot" msgid="3895812893130071930">"Thatha isithombe-skrini"</string> <string name="capability_desc_canTakeScreenshot" msgid="7762297374317934052">"Ingathatha isithombe-skrini sesiboniso"</string> + <!-- no translation found for dream_preview_title (5570751491996100804) --> + <skip /> <string name="permlab_statusBar" msgid="8798267849526214017">"khubaza noma guqula ibha yomumo"</string> <string name="permdesc_statusBar" msgid="5809162768651019642">"Ivumela uhlelo lokusebenza ukuthi yenze umudwa ochaza ngesimo ukuthi ungasebenzi noma ukufaka noma ukukhipha izithonjana zohlelo."</string> <string name="permlab_statusBarService" msgid="2523421018081437981">"yiba yibha yesimo"</string> diff --git a/libs/WindowManager/Shell/res/values-af/strings.xml b/libs/WindowManager/Shell/res/values-af/strings.xml index 26246fcee52b..22d921960174 100644 --- a/libs/WindowManager/Shell/res/values-af/strings.xml +++ b/libs/WindowManager/Shell/res/values-af/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bo 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Bo 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Volskerm onder"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Verdeel links"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Verdeel regs"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Verdeel bo"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Verdeel onder"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Gebruik eenhandmodus"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Swiep van die onderkant van die skerm af op of tik enige plek bo die program om uit te gaan"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Begin eenhandmodus"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Maak toe"</string> <string name="back_button_text" msgid="1469718707134137085">"Terug"</string> <string name="handle_text" msgid="1766582106752184456">"Handvatsel"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Volskerm"</string> <string name="desktop_text" msgid="1077633567027630454">"Rekenaarmodus"</string> <string name="split_screen_text" msgid="1396336058129570886">"Verdeelde skerm"</string> <string name="more_button_text" msgid="3655388105592893530">"Meer"</string> <string name="float_button_text" msgid="9221657008391364581">"Sweef"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-am/strings.xml b/libs/WindowManager/Shell/res/values-am/strings.xml index 7f0a3ab2c070..17ea0530de52 100644 --- a/libs/WindowManager/Shell/res/values-am/strings.xml +++ b/libs/WindowManager/Shell/res/values-am/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ከላይ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ከላይ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"የታች ሙሉ ማያ ገጽ"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ወደ ግራ ከፋፍል"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"ወደ ቀኝ ከፋፍል"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ወደ ላይ ከፋፍል"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"ወደ ታች ከፋፍል"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ባለአንድ እጅ ሁነታን በመጠቀም ላይ"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"ለመውጣት ከማያው ግርጌ ወደ ላይ ይጥረጉ ወይም ከመተግበሪያው በላይ ማንኛውም ቦታ ላይ መታ ያድርጉ"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ባለአንድ እጅ ሁነታ ጀምር"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"ዝጋ"</string> <string name="back_button_text" msgid="1469718707134137085">"ተመለስ"</string> <string name="handle_text" msgid="1766582106752184456">"መያዣ"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ሙሉ ማያ"</string> <string name="desktop_text" msgid="1077633567027630454">"የዴስክቶፕ ሁነታ"</string> <string name="split_screen_text" msgid="1396336058129570886">"የተከፈለ ማያ ገጽ"</string> <string name="more_button_text" msgid="3655388105592893530">"ተጨማሪ"</string> <string name="float_button_text" msgid="9221657008391364581">"ተንሳፋፊ"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ar/strings.xml b/libs/WindowManager/Shell/res/values-ar/strings.xml index 7f81e50e72fa..2e4c8ef29862 100644 --- a/libs/WindowManager/Shell/res/values-ar/strings.xml +++ b/libs/WindowManager/Shell/res/values-ar/strings.xml @@ -100,9 +100,19 @@ <string name="close_button_text" msgid="2913281996024033299">"إغلاق"</string> <string name="back_button_text" msgid="1469718707134137085">"رجوع"</string> <string name="handle_text" msgid="1766582106752184456">"مقبض"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ملء الشاشة"</string> <string name="desktop_text" msgid="1077633567027630454">"وضع سطح المكتب"</string> <string name="split_screen_text" msgid="1396336058129570886">"تقسيم الشاشة"</string> <string name="more_button_text" msgid="3655388105592893530">"المزيد"</string> <string name="float_button_text" msgid="9221657008391364581">"نافذة عائمة"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-as/strings.xml b/libs/WindowManager/Shell/res/values-as/strings.xml index 505ca96a3c73..c88519736ad6 100644 --- a/libs/WindowManager/Shell/res/values-as/strings.xml +++ b/libs/WindowManager/Shell/res/values-as/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"শীর্ষ স্ক্ৰীনখন ৫০% কৰক"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"শীর্ষ স্ক্ৰীনখন ৩০% কৰক"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"তলৰ স্ক্ৰীনখন সম্পূৰ্ণ স্ক্ৰীন কৰক"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"বাওঁফালে বিভাজন কৰক"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"সোঁফালে বিভাজন কৰক"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"একেবাৰে ওপৰৰফালে বিভাজন কৰক"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"একেবাৰে তলৰফালে বিভাজন কৰক"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"এখন হাতেৰে ব্যৱহাৰ কৰা ম’ড ব্যৱহাৰ কৰা"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"বাহিৰ হ’বলৈ স্ক্ৰীনখনৰ একেবাৰে তলৰ পৰা ওপৰলৈ ছোৱাইপ কৰক অথবা এপ্টোৰ ওপৰত যিকোনো ঠাইত টিপক"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"এখন হাতেৰে ব্যৱহাৰ কৰা ম\'ডটো আৰম্ভ কৰক"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"বন্ধ কৰক"</string> <string name="back_button_text" msgid="1469718707134137085">"উভতি যাওক"</string> <string name="handle_text" msgid="1766582106752184456">"হেণ্ডেল"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"সম্পূৰ্ণ স্ক্ৰীন"</string> <string name="desktop_text" msgid="1077633567027630454">"ডেস্কটপ ম’ড"</string> <string name="split_screen_text" msgid="1396336058129570886">"বিভাজিত স্ক্ৰীন"</string> <string name="more_button_text" msgid="3655388105592893530">"অধিক"</string> <string name="float_button_text" msgid="9221657008391364581">"ওপঙা"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-az/strings.xml b/libs/WindowManager/Shell/res/values-az/strings.xml index 0d754bae12fc..4427fa94c8fc 100644 --- a/libs/WindowManager/Shell/res/values-az/strings.xml +++ b/libs/WindowManager/Shell/res/values-az/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yuxarı 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Yuxarı 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Aşağı tam ekran"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Sola ayırın"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Sağa ayırın"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Yuxarı ayırın"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Aşağı ayırın"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Birəlli rejim istifadəsi"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Çıxmaq üçün ekranın aşağısından yuxarıya doğru sürüşdürün və ya tətbiqin yuxarısında istənilən yerə toxunun"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Birəlli rejim başlasın"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Bağlayın"</string> <string name="back_button_text" msgid="1469718707134137085">"Geriyə"</string> <string name="handle_text" msgid="1766582106752184456">"Hər kəsə açıq istifadəçi adı"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Tam Ekran"</string> <string name="desktop_text" msgid="1077633567027630454">"Masaüstü Rejimi"</string> <string name="split_screen_text" msgid="1396336058129570886">"Bölünmüş Ekran"</string> <string name="more_button_text" msgid="3655388105592893530">"Ardı"</string> <string name="float_button_text" msgid="9221657008391364581">"Üzən pəncərə"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml index 46d9f2b028d7..a67ba393180e 100644 --- a/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml +++ b/libs/WindowManager/Shell/res/values-b+sr+Latn/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji ekran 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Gornji ekran 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Režim celog ekrana za donji ekran"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Podelite levo"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Podelite desno"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Podelite u vrhu"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Podelite u dnu"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Korišćenje režima jednom rukom"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Da biste izašli, prevucite nagore od dna ekrana ili dodirnite bilo gde iznad aplikacije"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Pokrenite režim jednom rukom"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Zatvorite"</string> <string name="back_button_text" msgid="1469718707134137085">"Nazad"</string> <string name="handle_text" msgid="1766582106752184456">"Identifikator"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Preko celog ekrana"</string> <string name="desktop_text" msgid="1077633567027630454">"Režim za računare"</string> <string name="split_screen_text" msgid="1396336058129570886">"Podeljeni ekran"</string> <string name="more_button_text" msgid="3655388105592893530">"Još"</string> <string name="float_button_text" msgid="9221657008391364581">"Plutajuće"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-be/strings.xml b/libs/WindowManager/Shell/res/values-be/strings.xml index 31d0484476cd..5adb2ecec112 100644 --- a/libs/WindowManager/Shell/res/values-be/strings.xml +++ b/libs/WindowManager/Shell/res/values-be/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхні экран – 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Верхні экран – 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Ніжні экран – поўнаэкранны рэжым"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Падзяліць злева"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Падзяліць справа"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Падзяліць уверсе"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Падзяліць унізе"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Выкарыстоўваецца рэжым кіравання адной рукой"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Каб выйсці, правядзіце па экране пальцам знізу ўверх або націсніце ў любым месцы над праграмай"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Запусціць рэжым кіравання адной рукой"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Закрыць"</string> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="1766582106752184456">"Маркер"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"На ўвесь экран"</string> <string name="desktop_text" msgid="1077633567027630454">"Рэжым працоўнага стала"</string> <string name="split_screen_text" msgid="1396336058129570886">"Падзяліць экран"</string> <string name="more_button_text" msgid="3655388105592893530">"Яшчэ"</string> <string name="float_button_text" msgid="9221657008391364581">"Зрабіць рухомым акном"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-bg/strings.xml b/libs/WindowManager/Shell/res/values-bg/strings.xml index 08fe3656891c..8c82d1a7c94f 100644 --- a/libs/WindowManager/Shell/res/values-bg/strings.xml +++ b/libs/WindowManager/Shell/res/values-bg/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горен екран: 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Горен екран: 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Долен екран: Показване на цял екран"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Разделяне в лявата част"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Разделяне в дясната част"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Разделяне в горната част"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Разделяне в долната част"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Използване на режима за работа с една ръка"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"За изход прекарайте пръст нагоре от долната част на екрана или докоснете произволно място над приложението"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Стартиране на режима за работа с една ръка"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Затваряне"</string> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="1766582106752184456">"Манипулатор"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Цял екран"</string> <string name="desktop_text" msgid="1077633567027630454">"Режим за настолни компютри"</string> <string name="split_screen_text" msgid="1396336058129570886">"Разделяне на екрана"</string> <string name="more_button_text" msgid="3655388105592893530">"Още"</string> <string name="float_button_text" msgid="9221657008391364581">"Плаващо"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-bn/strings.xml b/libs/WindowManager/Shell/res/values-bn/strings.xml index ac0daa0f97cb..11a4175c0bb0 100644 --- a/libs/WindowManager/Shell/res/values-bn/strings.xml +++ b/libs/WindowManager/Shell/res/values-bn/strings.xml @@ -100,9 +100,19 @@ <string name="close_button_text" msgid="2913281996024033299">"বন্ধ করুন"</string> <string name="back_button_text" msgid="1469718707134137085">"ফিরে যান"</string> <string name="handle_text" msgid="1766582106752184456">"হাতল"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ফুলস্ক্রিন"</string> <string name="desktop_text" msgid="1077633567027630454">"ডেস্কটপ মোড"</string> <string name="split_screen_text" msgid="1396336058129570886">"স্প্লিট স্ক্রিন"</string> <string name="more_button_text" msgid="3655388105592893530">"আরও"</string> <string name="float_button_text" msgid="9221657008391364581">"ফ্লোট"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-bs/strings.xml b/libs/WindowManager/Shell/res/values-bs/strings.xml index 745e6fc06b9b..c65ce0842db7 100644 --- a/libs/WindowManager/Shell/res/values-bs/strings.xml +++ b/libs/WindowManager/Shell/res/values-bs/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gore 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Gore 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Donji ekran kao cijeli ekran"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Podjela ulijevo"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Podjela udesno"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Podjela nagore"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Podjela nadolje"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Korištenje načina rada jednom rukom"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Da izađete, prevucite s dna ekrana prema gore ili dodirnite bilo gdje iznad aplikacije"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Započinjanje načina rada jednom rukom"</string> @@ -100,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Zatvaranje"</string> <string name="back_button_text" msgid="1469718707134137085">"Nazad"</string> <string name="handle_text" msgid="1766582106752184456">"Identifikator"</string> + <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Cijeli ekran"</string> <string name="desktop_text" msgid="1077633567027630454">"Način rada radne površine"</string> <string name="split_screen_text" msgid="1396336058129570886">"Podijeljeni ekran"</string> <string name="more_button_text" msgid="3655388105592893530">"Više"</string> <string name="float_button_text" msgid="9221657008391364581">"Lebdeći"</string> + <string name="select_text" msgid="5139083974039906583">"Odaberite"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Snimka zaslona"</string> + <string name="close_text" msgid="4986518933445178928">"Zatvorite"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Zatvorite izbornik"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-ca/strings.xml b/libs/WindowManager/Shell/res/values-ca/strings.xml index 727c31913516..f50b8f295a32 100644 --- a/libs/WindowManager/Shell/res/values-ca/strings.xml +++ b/libs/WindowManager/Shell/res/values-ca/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Pantalla superior al 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Pantalla superior al 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Pantalla inferior completa"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Divideix a l\'esquerra"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Divideix a la dreta"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Divideix a la part superior"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Divideix a la part inferior"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"S\'està utilitzant el mode d\'una mà"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Per sortir, llisca cap amunt des de la part inferior de la pantalla o toca qualsevol lloc a sobre de l\'aplicació"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Inicia el mode d\'una mà"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Tanca"</string> <string name="back_button_text" msgid="1469718707134137085">"Enrere"</string> <string name="handle_text" msgid="1766582106752184456">"Ansa"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string> <string name="desktop_text" msgid="1077633567027630454">"Mode d\'escriptori"</string> <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string> <string name="more_button_text" msgid="3655388105592893530">"Més"</string> <string name="float_button_text" msgid="9221657008391364581">"Flotant"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-cs/strings.xml b/libs/WindowManager/Shell/res/values-cs/strings.xml index 395e12caf6e1..ac36edbb2f6e 100644 --- a/libs/WindowManager/Shell/res/values-cs/strings.xml +++ b/libs/WindowManager/Shell/res/values-cs/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % nahoře"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30 % nahoře"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Dolní část na celou obrazovku"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Rozdělit vlevo"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Rozdělit vpravo"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Rozdělit nahoře"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Rozdělit dole"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Používání režimu jedné ruky"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Režim ukončíte, když přejedete prstem z dolní části obrazovky nahoru nebo klepnete kamkoli nad aplikaci"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Spustit režim jedné ruky"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Zavřít"</string> <string name="back_button_text" msgid="1469718707134137085">"Zpět"</string> <string name="handle_text" msgid="1766582106752184456">"Úchyt"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Celá obrazovka"</string> <string name="desktop_text" msgid="1077633567027630454">"Režim počítače"</string> <string name="split_screen_text" msgid="1396336058129570886">"Rozdělená obrazovka"</string> <string name="more_button_text" msgid="3655388105592893530">"Více"</string> <string name="float_button_text" msgid="9221657008391364581">"Plovoucí"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-da/strings.xml b/libs/WindowManager/Shell/res/values-da/strings.xml index 5087c13be462..8635cc5d4632 100644 --- a/libs/WindowManager/Shell/res/values-da/strings.xml +++ b/libs/WindowManager/Shell/res/values-da/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Øverste 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Øverste 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Vis nederste del i fuld skærm"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Vis i venstre side"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Vis i højre side"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Vis øverst"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Vis nederst"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Brug af enhåndstilstand"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Du kan afslutte ved at stryge opad fra bunden af skærmen eller trykke et vilkårligt sted over appen"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Start enhåndstilstand"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Luk"</string> <string name="back_button_text" msgid="1469718707134137085">"Tilbage"</string> <string name="handle_text" msgid="1766582106752184456">"Håndtag"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Fuld skærm"</string> <string name="desktop_text" msgid="1077633567027630454">"Computertilstand"</string> <string name="split_screen_text" msgid="1396336058129570886">"Opdelt skærm"</string> <string name="more_button_text" msgid="3655388105592893530">"Mere"</string> <string name="float_button_text" msgid="9221657008391364581">"Svævende"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-de/strings.xml b/libs/WindowManager/Shell/res/values-de/strings.xml index e97f0687ca3d..059a4da313fe 100644 --- a/libs/WindowManager/Shell/res/values-de/strings.xml +++ b/libs/WindowManager/Shell/res/values-de/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % oben"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30 % oben"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Vollbild unten"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Links teilen"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Rechts teilen"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Oben teilen"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Unten teilen"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Einhandmodus wird verwendet"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Wenn du die App schließen möchtest, wische vom unteren Rand des Displays nach oben oder tippe auf eine beliebige Stelle oberhalb der App"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Einhandmodus starten"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Schließen"</string> <string name="back_button_text" msgid="1469718707134137085">"Zurück"</string> <string name="handle_text" msgid="1766582106752184456">"Ziehpunkt"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Vollbild"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktopmodus"</string> <string name="split_screen_text" msgid="1396336058129570886">"Geteilter Bildschirm"</string> <string name="more_button_text" msgid="3655388105592893530">"Mehr"</string> <string name="float_button_text" msgid="9221657008391364581">"Frei schwebend"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-el/strings.xml b/libs/WindowManager/Shell/res/values-el/strings.xml index df82625674f1..5800cc826ef2 100644 --- a/libs/WindowManager/Shell/res/values-el/strings.xml +++ b/libs/WindowManager/Shell/res/values-el/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Πάνω 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Πάνω 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Κάτω πλήρης οθόνη"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Διαχωρισμός αριστερά"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Διαχωρισμός δεξιά"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Διαχωρισμός επάνω"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Διαχωρισμός κάτω"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Χρήση λειτουργίας ενός χεριού"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Για έξοδο, σύρετε προς τα πάνω από το κάτω μέρος της οθόνης ή πατήστε οπουδήποτε πάνω από την εφαρμογή."</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Έναρξη λειτουργίας ενός χεριού"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Κλείσιμο"</string> <string name="back_button_text" msgid="1469718707134137085">"Πίσω"</string> <string name="handle_text" msgid="1766582106752184456">"Λαβή"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Πλήρης οθόνη"</string> <string name="desktop_text" msgid="1077633567027630454">"Λειτουργία επιφάνειας εργασίας"</string> <string name="split_screen_text" msgid="1396336058129570886">"Διαχωρισμός οθόνης"</string> <string name="more_button_text" msgid="3655388105592893530">"Περισσότερα"</string> <string name="float_button_text" msgid="9221657008391364581">"Κινούμενο"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml index b1c9ba8203ee..4d18f5ebb5ac 100644 --- a/libs/WindowManager/Shell/res/values-en-rAU/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rAU/strings.xml @@ -96,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Close"</string> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="1766582106752184456">"Handle"</string> + <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktop mode"</string> <string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string> <string name="more_button_text" msgid="3655388105592893530">"More"</string> <string name="float_button_text" msgid="9221657008391364581">"Float"</string> + <string name="select_text" msgid="5139083974039906583">"Select"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string> + <string name="close_text" msgid="4986518933445178928">"Close"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml index 4aa22116b256..40b9d959e734 100644 --- a/libs/WindowManager/Shell/res/values-en-rCA/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rCA/strings.xml @@ -96,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Close"</string> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="1766582106752184456">"Handle"</string> + <string name="app_icon_text" msgid="2823268023931811747">"App Icon"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Fullscreen"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktop Mode"</string> <string name="split_screen_text" msgid="1396336058129570886">"Split Screen"</string> <string name="more_button_text" msgid="3655388105592893530">"More"</string> <string name="float_button_text" msgid="9221657008391364581">"Float"</string> + <string name="select_text" msgid="5139083974039906583">"Select"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string> + <string name="close_text" msgid="4986518933445178928">"Close"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Close Menu"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml index b1c9ba8203ee..4d18f5ebb5ac 100644 --- a/libs/WindowManager/Shell/res/values-en-rGB/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rGB/strings.xml @@ -96,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Close"</string> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="1766582106752184456">"Handle"</string> + <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktop mode"</string> <string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string> <string name="more_button_text" msgid="3655388105592893530">"More"</string> <string name="float_button_text" msgid="9221657008391364581">"Float"</string> + <string name="select_text" msgid="5139083974039906583">"Select"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string> + <string name="close_text" msgid="4986518933445178928">"Close"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml index b1c9ba8203ee..4d18f5ebb5ac 100644 --- a/libs/WindowManager/Shell/res/values-en-rIN/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rIN/strings.xml @@ -96,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Close"</string> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="1766582106752184456">"Handle"</string> + <string name="app_icon_text" msgid="2823268023931811747">"App icon"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Full screen"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktop mode"</string> <string name="split_screen_text" msgid="1396336058129570886">"Split screen"</string> <string name="more_button_text" msgid="3655388105592893530">"More"</string> <string name="float_button_text" msgid="9221657008391364581">"Float"</string> + <string name="select_text" msgid="5139083974039906583">"Select"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string> + <string name="close_text" msgid="4986518933445178928">"Close"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Close menu"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-en-rXC/strings.xml b/libs/WindowManager/Shell/res/values-en-rXC/strings.xml index 265849cd4978..e0fbfbb6ef09 100644 --- a/libs/WindowManager/Shell/res/values-en-rXC/strings.xml +++ b/libs/WindowManager/Shell/res/values-en-rXC/strings.xml @@ -96,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Close"</string> <string name="back_button_text" msgid="1469718707134137085">"Back"</string> <string name="handle_text" msgid="1766582106752184456">"Handle"</string> + <string name="app_icon_text" msgid="2823268023931811747">"App Icon"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Fullscreen"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktop Mode"</string> <string name="split_screen_text" msgid="1396336058129570886">"Split Screen"</string> <string name="more_button_text" msgid="3655388105592893530">"More"</string> <string name="float_button_text" msgid="9221657008391364581">"Float"</string> + <string name="select_text" msgid="5139083974039906583">"Select"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Screenshot"</string> + <string name="close_text" msgid="4986518933445178928">"Close"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Close Menu"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml index 1196aaf8ffb9..d30653759f2f 100644 --- a/libs/WindowManager/Shell/res/values-es-rUS/strings.xml +++ b/libs/WindowManager/Shell/res/values-es-rUS/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior: 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Superior: 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Pantalla inferior completa"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Dividir a la izquierda"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Dividir a la derecha"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Dividir en la parte superior"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Dividir en la parte inferior"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Cómo usar el modo de una mano"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para salir, desliza el dedo hacia arriba desde la parte inferior de la pantalla o presiona cualquier parte arriba de la app"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar el modo de una mano"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Cerrar"</string> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="1766582106752184456">"Controlador"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string> <string name="desktop_text" msgid="1077633567027630454">"Modo de escritorio"</string> <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string> <string name="more_button_text" msgid="3655388105592893530">"Más"</string> <string name="float_button_text" msgid="9221657008391364581">"Flotante"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-es/strings.xml b/libs/WindowManager/Shell/res/values-es/strings.xml index c3c832b4943f..ab1ced4f6d1e 100644 --- a/libs/WindowManager/Shell/res/values-es/strings.xml +++ b/libs/WindowManager/Shell/res/values-es/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Superior 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Superior 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Pantalla inferior completa"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Dividir en la parte izquierda"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Dividir en la parte derecha"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Dividir en la parte superior"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Dividir en la parte inferior"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Usar modo Una mano"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para salir, desliza el dedo hacia arriba desde la parte inferior de la pantalla o toca cualquier zona que haya encima de la aplicación"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar modo Una mano"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Cerrar"</string> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="1766582106752184456">"Controlador"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string> <string name="desktop_text" msgid="1077633567027630454">"Modo Escritorio"</string> <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string> <string name="more_button_text" msgid="3655388105592893530">"Más"</string> <string name="float_button_text" msgid="9221657008391364581">"Flotante"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-et/strings.xml b/libs/WindowManager/Shell/res/values-et/strings.xml index 4722c074deb9..4c4d87ebf574 100644 --- a/libs/WindowManager/Shell/res/values-et/strings.xml +++ b/libs/WindowManager/Shell/res/values-et/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ülemine: 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Ülemine: 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Alumine täisekraan"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Jaga vasakule"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Jaga paremale"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Jaga üles"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Jaga alla"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Ühekäerežiimi kasutamine"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Väljumiseks pühkige ekraani alaosast üles või puudutage rakenduse kohal olevat ala"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Ühekäerežiimi käivitamine"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Sule"</string> <string name="back_button_text" msgid="1469718707134137085">"Tagasi"</string> <string name="handle_text" msgid="1766582106752184456">"Käepide"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Täisekraan"</string> <string name="desktop_text" msgid="1077633567027630454">"Lauaarvuti režiim"</string> <string name="split_screen_text" msgid="1396336058129570886">"Jagatud ekraanikuva"</string> <string name="more_button_text" msgid="3655388105592893530">"Rohkem"</string> <string name="float_button_text" msgid="9221657008391364581">"Hõljuv"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-eu/strings.xml b/libs/WindowManager/Shell/res/values-eu/strings.xml index e1c2a0d25ee6..5642a5f33115 100644 --- a/libs/WindowManager/Shell/res/values-eu/strings.xml +++ b/libs/WindowManager/Shell/res/values-eu/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Ezarri goialdea % 50en"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Ezarri goialdea % 30en"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Ezarri behealdea pantaila osoan"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Zatitu ezkerraldean"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Zatitu eskuinaldean"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Zatitu goialdean"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Zatitu behealdean"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Esku bakarreko modua erabiltzea"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Irteteko, pasatu hatza pantailaren behealdetik gora edo sakatu aplikazioaren gainaldea"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Abiarazi esku bakarreko modua"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Itxi"</string> <string name="back_button_text" msgid="1469718707134137085">"Atzera"</string> <string name="handle_text" msgid="1766582106752184456">"Kontu-izena"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Pantaila osoa"</string> <string name="desktop_text" msgid="1077633567027630454">"Ordenagailuetarako modua"</string> <string name="split_screen_text" msgid="1396336058129570886">"Pantaila zatitua"</string> <string name="more_button_text" msgid="3655388105592893530">"Gehiago"</string> <string name="float_button_text" msgid="9221657008391364581">"Leiho gainerakorra"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-fa/strings.xml b/libs/WindowManager/Shell/res/values-fa/strings.xml index 5a4871d7c6cc..a15d7a4e1c1f 100644 --- a/libs/WindowManager/Shell/res/values-fa/strings.xml +++ b/libs/WindowManager/Shell/res/values-fa/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"٪۵۰ بالا"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"٪۳۰ بالا"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"تمامصفحه پایین"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"تقسیم از چپ"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"تقسیم از راست"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"تقسیم از بالا"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"تقسیم از پایین"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"استفاده از حالت یکدستی"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"برای خارج شدن، از پایین صفحهنمایش تند بهطرف بالا بکشید یا در هر جایی از بالای برنامه که میخواهید ضربه بزنید"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"آغاز «حالت یکدستی»"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"بستن"</string> <string name="back_button_text" msgid="1469718707134137085">"برگشتن"</string> <string name="handle_text" msgid="1766582106752184456">"دستگیره"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"تمامصفحه"</string> <string name="desktop_text" msgid="1077633567027630454">"حالت رایانه"</string> <string name="split_screen_text" msgid="1396336058129570886">"صفحهٔ دونیمه"</string> <string name="more_button_text" msgid="3655388105592893530">"بیشتر"</string> <string name="float_button_text" msgid="9221657008391364581">"شناور"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-fi/strings.xml b/libs/WindowManager/Shell/res/values-fi/strings.xml index 56f444e4e9a2..8c679b6b6ff7 100644 --- a/libs/WindowManager/Shell/res/values-fi/strings.xml +++ b/libs/WindowManager/Shell/res/values-fi/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Yläosa 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Yläosa 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Alaosa koko näytölle"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Vasemmalla"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Oikealla"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Ylhäällä"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Alhaalla"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Yhden käden moodin käyttö"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Poistu pyyhkäisemällä ylös näytön alareunasta tai napauttamalla sovelluksen yllä"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Käynnistä yhden käden moodi"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Sulje"</string> <string name="back_button_text" msgid="1469718707134137085">"Takaisin"</string> <string name="handle_text" msgid="1766582106752184456">"Kahva"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Koko näyttö"</string> <string name="desktop_text" msgid="1077633567027630454">"Työpöytätila"</string> <string name="split_screen_text" msgid="1396336058129570886">"Jaettu näyttö"</string> <string name="more_button_text" msgid="3655388105592893530">"Lisää"</string> <string name="float_button_text" msgid="9221657008391364581">"Kelluva ikkuna"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml index e48d794b3ac3..d43aea5849d1 100644 --- a/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml +++ b/libs/WindowManager/Shell/res/values-fr-rCA/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % dans le haut"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30 % dans le haut"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Plein écran dans le bas"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Diviser à gauche"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Diviser à droite"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Diviser dans la partie supérieure"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Diviser dans la partie inférieure"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Utiliser le mode Une main"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Pour quitter, balayez l\'écran du bas vers le haut, ou touchez n\'importe où sur l\'écran en haut de l\'application"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Démarrer le mode Une main"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Fermer"</string> <string name="back_button_text" msgid="1469718707134137085">"Retour"</string> <string name="handle_text" msgid="1766582106752184456">"Identifiant"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Plein écran"</string> <string name="desktop_text" msgid="1077633567027630454">"Mode Bureau"</string> <string name="split_screen_text" msgid="1396336058129570886">"Écran partagé"</string> <string name="more_button_text" msgid="3655388105592893530">"Plus"</string> <string name="float_button_text" msgid="9221657008391364581">"Flottant"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-fr/strings.xml b/libs/WindowManager/Shell/res/values-fr/strings.xml index 301bca6434c3..15e89f81682e 100644 --- a/libs/WindowManager/Shell/res/values-fr/strings.xml +++ b/libs/WindowManager/Shell/res/values-fr/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Écran du haut à 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Écran du haut à 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Écran du bas en plein écran"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Affichée à gauche"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Affichée à droite"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Affichée en haut"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Affichée en haut"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Utiliser le mode une main"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Pour quitter, balayez l\'écran de bas en haut ou appuyez n\'importe où au-dessus de l\'application"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Démarrer le mode une main"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Fermer"</string> <string name="back_button_text" msgid="1469718707134137085">"Retour"</string> <string name="handle_text" msgid="1766582106752184456">"Poignée"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Plein écran"</string> <string name="desktop_text" msgid="1077633567027630454">"Mode ordinateur"</string> <string name="split_screen_text" msgid="1396336058129570886">"Écran partagé"</string> <string name="more_button_text" msgid="3655388105592893530">"Plus"</string> <string name="float_button_text" msgid="9221657008391364581">"Flottante"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-gl/strings.xml b/libs/WindowManager/Shell/res/values-gl/strings.xml index 967945ce64b8..f83564d05f44 100644 --- a/libs/WindowManager/Shell/res/values-gl/strings.xml +++ b/libs/WindowManager/Shell/res/values-gl/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50 % arriba"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30 % arriba"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Pantalla completa abaixo"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Dividir (esquerda)"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Dividir (dereita)"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Dividir (arriba)"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Dividir (abaixo)"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Como se usa o modo dunha soa man?"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para saír, pasa o dedo cara arriba desde a parte inferior da pantalla ou toca calquera lugar da zona situada encima da aplicación"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar modo dunha soa man"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Pechar"</string> <string name="back_button_text" msgid="1469718707134137085">"Atrás"</string> <string name="handle_text" msgid="1766582106752184456">"Controlador"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Pantalla completa"</string> <string name="desktop_text" msgid="1077633567027630454">"Modo de escritorio"</string> <string name="split_screen_text" msgid="1396336058129570886">"Pantalla dividida"</string> <string name="more_button_text" msgid="3655388105592893530">"Máis"</string> <string name="float_button_text" msgid="9221657008391364581">"Flotante"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-gu/strings.xml b/libs/WindowManager/Shell/res/values-gu/strings.xml index 653e1a69e698..bd3620591cf7 100644 --- a/libs/WindowManager/Shell/res/values-gu/strings.xml +++ b/libs/WindowManager/Shell/res/values-gu/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"શીર્ષ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"શીર્ષ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"તળિયાની પૂર્ણ સ્ક્રીન"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ડાબે વિભાજિત કરો"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"જમણે વિભાજિત કરો"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ઉપર વિભાજિત કરો"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"નીચે વિભાજિત કરો"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"એક-હાથે વાપરો મોડનો ઉપયોગ કરી રહ્યાં છીએ"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"બહાર નીકળવા માટે, સ્ક્રીનની નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરો અથવા ઍપના આઇકન પર ગમે ત્યાં ટૅપ કરો"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"એક-હાથે વાપરો મોડ શરૂ કરો"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"બંધ કરો"</string> <string name="back_button_text" msgid="1469718707134137085">"પાછળ"</string> <string name="handle_text" msgid="1766582106752184456">"હૅન્ડલ"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"પૂર્ણસ્ક્રીન"</string> <string name="desktop_text" msgid="1077633567027630454">"ડેસ્કટૉપ મોડ"</string> <string name="split_screen_text" msgid="1396336058129570886">"સ્ક્રીનને વિભાજિત કરો"</string> <string name="more_button_text" msgid="3655388105592893530">"વધુ"</string> <string name="float_button_text" msgid="9221657008391364581">"ફ્લોટિંગ વિન્ડો"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-hi/strings.xml b/libs/WindowManager/Shell/res/values-hi/strings.xml index 25b658adf05f..e56ad17d2680 100644 --- a/libs/WindowManager/Shell/res/values-hi/strings.xml +++ b/libs/WindowManager/Shell/res/values-hi/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ऊपर की स्क्रीन को 50% बनाएं"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ऊपर की स्क्रीन को 30% बनाएं"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"नीचे की स्क्रीन को फ़ुल स्क्रीन बनाएं"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"स्क्रीन को बाएं हिस्से में स्प्लिट करें"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"स्क्रीन को दाएं हिस्से में स्प्लिट करें"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"स्क्रीन को ऊपर के हिस्से में स्प्लिट करें"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"स्क्रीन को सबसे नीचे वाले हिस्से में स्प्लिट करें"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"वन-हैंडेड मोड का इस्तेमाल करना"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"इस मोड से बाहर निकलने के लिए, स्क्रीन के सबसे निचले हिस्से से ऊपर की ओर स्वाइप करें या ऐप्लिकेशन के बाहर कहीं भी टैप करें"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"वन-हैंडेड मोड चालू करें"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"बंद करें"</string> <string name="back_button_text" msgid="1469718707134137085">"वापस जाएं"</string> <string name="handle_text" msgid="1766582106752184456">"हैंडल"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"फ़ुलस्क्रीन"</string> <string name="desktop_text" msgid="1077633567027630454">"डेस्कटॉप मोड"</string> <string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रीन मोड"</string> <string name="more_button_text" msgid="3655388105592893530">"ज़्यादा देखें"</string> <string name="float_button_text" msgid="9221657008391364581">"फ़्लोट"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-hr/strings.xml b/libs/WindowManager/Shell/res/values-hr/strings.xml index 57fd2fa3c937..cde33c7e3725 100644 --- a/libs/WindowManager/Shell/res/values-hr/strings.xml +++ b/libs/WindowManager/Shell/res/values-hr/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gornji zaslon na 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Gornji zaslon na 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Donji zaslon u cijeli zaslon"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Podijeli lijevo"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Podijeli desno"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Podijeli gore"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Podijeli dolje"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Korištenje načina rada jednom rukom"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Za izlaz prijeđite prstom od dna zaslona prema gore ili dodirnite bio gdje iznad aplikacije"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Pokretanje načina rada jednom rukom"</string> @@ -100,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Zatvori"</string> <string name="back_button_text" msgid="1469718707134137085">"Natrag"</string> <string name="handle_text" msgid="1766582106752184456">"Pokazivač"</string> + <string name="app_icon_text" msgid="2823268023931811747">"Ikona aplikacije"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Puni zaslon"</string> <string name="desktop_text" msgid="1077633567027630454">"Stolni način rada"</string> <string name="split_screen_text" msgid="1396336058129570886">"Razdvojeni zaslon"</string> <string name="more_button_text" msgid="3655388105592893530">"Više"</string> <string name="float_button_text" msgid="9221657008391364581">"Plutajući"</string> + <string name="select_text" msgid="5139083974039906583">"Odaberite"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Snimka zaslona"</string> + <string name="close_text" msgid="4986518933445178928">"Zatvorite"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Zatvorite izbornik"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-hu/strings.xml b/libs/WindowManager/Shell/res/values-hu/strings.xml index ee7ff866e79d..28536e67952f 100644 --- a/libs/WindowManager/Shell/res/values-hu/strings.xml +++ b/libs/WindowManager/Shell/res/values-hu/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Felső 50%-ra"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Felső 30%-ra"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Alsó teljes képernyőre"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Osztás a képernyő bal oldalán"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Osztás a képernyő jobb oldalán"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Osztás a képernyő tetején"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Osztás alul"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Egykezes mód használata"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"A kilépéshez csúsztasson felfelé a képernyő aljáról, vagy koppintson az alkalmazás felett a képernyő bármelyik részére"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Egykezes mód indítása"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Bezárás"</string> <string name="back_button_text" msgid="1469718707134137085">"Vissza"</string> <string name="handle_text" msgid="1766582106752184456">"Fogópont"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Teljes képernyő"</string> <string name="desktop_text" msgid="1077633567027630454">"Asztali üzemmód"</string> <string name="split_screen_text" msgid="1396336058129570886">"Osztott képernyő"</string> <string name="more_button_text" msgid="3655388105592893530">"Továbbiak"</string> <string name="float_button_text" msgid="9221657008391364581">"Lebegő"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-hy/strings.xml b/libs/WindowManager/Shell/res/values-hy/strings.xml index 4538cec37ec1..bd3508482f7c 100644 --- a/libs/WindowManager/Shell/res/values-hy/strings.xml +++ b/libs/WindowManager/Shell/res/values-hy/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Վերևի էկրանը՝ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Վերևի էկրանը՝ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Ներքևի էկրանը՝ լիաէկրան"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Հավելվածը ձախ կողմում"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Հավելվածը աջ կողմում"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Հավելվածը վերևում"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Հավելվածը ներքևում"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Ինչպես օգտվել մեկ ձեռքի ռեժիմից"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Դուրս գալու համար մատը սահեցրեք էկրանի ներքևից վերև կամ հպեք հավելվածի վերևում որևէ տեղ։"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Գործարկել մեկ ձեռքի ռեժիմը"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Փակել"</string> <string name="back_button_text" msgid="1469718707134137085">"Հետ"</string> <string name="handle_text" msgid="1766582106752184456">"Նշիչ"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Լիաէկրան"</string> <string name="desktop_text" msgid="1077633567027630454">"Համակարգչի ռեժիմ"</string> <string name="split_screen_text" msgid="1396336058129570886">"Տրոհված էկրան"</string> <string name="more_button_text" msgid="3655388105592893530">"Ավելին"</string> <string name="float_button_text" msgid="9221657008391364581">"Լողացող պատուհան"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-in/strings.xml b/libs/WindowManager/Shell/res/values-in/strings.xml index 6880d53a0bd7..6f859ed8ef29 100644 --- a/libs/WindowManager/Shell/res/values-in/strings.xml +++ b/libs/WindowManager/Shell/res/values-in/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Atas 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Layar penuh di bawah"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Pisahkan ke kiri"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Pisahkan ke kanan"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Pisahkan ke atas"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Pisahkan ke bawah"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Menggunakan mode satu tangan"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Untuk keluar, geser layar dari bawah ke atas atau ketuk di mana saja di atas aplikasi"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Mulai mode satu tangan"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Tutup"</string> <string name="back_button_text" msgid="1469718707134137085">"Kembali"</string> <string name="handle_text" msgid="1766582106752184456">"Tuas"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Layar Penuh"</string> <string name="desktop_text" msgid="1077633567027630454">"Mode Desktop"</string> <string name="split_screen_text" msgid="1396336058129570886">"Layar Terpisah"</string> <string name="more_button_text" msgid="3655388105592893530">"Lainnya"</string> <string name="float_button_text" msgid="9221657008391364581">"Mengambang"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-is/strings.xml b/libs/WindowManager/Shell/res/values-is/strings.xml index 23c93a3faa43..b17abf593cd7 100644 --- a/libs/WindowManager/Shell/res/values-is/strings.xml +++ b/libs/WindowManager/Shell/res/values-is/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Efri 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Efri 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Neðri á öllum skjánum"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Skipta vinstra megin"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Skipta hægra megin"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Skipta efst"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Skipta neðst"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Notkun einhentrar stillingar"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Til að loka skaltu strjúka upp frá neðri hluta skjásins eða ýta hvar sem er fyrir ofan forritið"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Ræsa einhenta stillingu"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Loka"</string> <string name="back_button_text" msgid="1469718707134137085">"Til baka"</string> <string name="handle_text" msgid="1766582106752184456">"Handfang"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Allur skjárinn"</string> <string name="desktop_text" msgid="1077633567027630454">"Skjáborðsstilling"</string> <string name="split_screen_text" msgid="1396336058129570886">"Skjáskipting"</string> <string name="more_button_text" msgid="3655388105592893530">"Meira"</string> <string name="float_button_text" msgid="9221657008391364581">"Reikult"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-it/strings.xml b/libs/WindowManager/Shell/res/values-it/strings.xml index ece92cf9c922..28e274bce7d6 100644 --- a/libs/WindowManager/Shell/res/values-it/strings.xml +++ b/libs/WindowManager/Shell/res/values-it/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Schermata superiore al 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Schermata superiore al 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Schermata inferiore a schermo intero"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Dividi a sinistra"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Dividi a destra"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Dividi in alto"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Dividi in basso"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Usare la modalità a una mano"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Per uscire, scorri verso l\'alto dalla parte inferiore dello schermo oppure tocca un punto qualsiasi sopra l\'app"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Avvia la modalità a una mano"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Chiudi"</string> <string name="back_button_text" msgid="1469718707134137085">"Indietro"</string> <string name="handle_text" msgid="1766582106752184456">"Handle"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Schermo intero"</string> <string name="desktop_text" msgid="1077633567027630454">"Modalità desktop"</string> <string name="split_screen_text" msgid="1396336058129570886">"Schermo diviso"</string> <string name="more_button_text" msgid="3655388105592893530">"Altro"</string> <string name="float_button_text" msgid="9221657008391364581">"Mobile"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-iw/strings.xml b/libs/WindowManager/Shell/res/values-iw/strings.xml index 948137f770f6..497e0b0c7884 100644 --- a/libs/WindowManager/Shell/res/values-iw/strings.xml +++ b/libs/WindowManager/Shell/res/values-iw/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"עליון 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"למעלה 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"מסך תחתון מלא"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"פיצול שמאלה"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"פיצול ימינה"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"פיצול למעלה"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"פיצול למטה"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"איך להשתמש בתכונה \'מצב שימוש ביד אחת\'"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"כדי לצאת, יש להחליק למעלה מתחתית המסך או להקיש במקום כלשהו במסך מעל האפליקציה"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"הפעלה של מצב שימוש ביד אחת"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"סגירה"</string> <string name="back_button_text" msgid="1469718707134137085">"חזרה"</string> <string name="handle_text" msgid="1766582106752184456">"נקודת אחיזה"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"מסך מלא"</string> <string name="desktop_text" msgid="1077633567027630454">"ממשק המחשב"</string> <string name="split_screen_text" msgid="1396336058129570886">"מסך מפוצל"</string> <string name="more_button_text" msgid="3655388105592893530">"עוד"</string> <string name="float_button_text" msgid="9221657008391364581">"בלונים"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ja/strings.xml b/libs/WindowManager/Shell/res/values-ja/strings.xml index 9fdb86100b2e..7f7cd940619d 100644 --- a/libs/WindowManager/Shell/res/values-ja/strings.xml +++ b/libs/WindowManager/Shell/res/values-ja/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"上 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"上 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"下部全画面"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"左に分割"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"右に分割"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"上に分割"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"下に分割"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"片手モードの使用"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"終了するには、画面を下から上にスワイプするか、アプリの任意の場所をタップします"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"片手モードを開始します"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"閉じる"</string> <string name="back_button_text" msgid="1469718707134137085">"戻る"</string> <string name="handle_text" msgid="1766582106752184456">"ハンドル"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"全画面表示"</string> <string name="desktop_text" msgid="1077633567027630454">"デスクトップ モード"</string> <string name="split_screen_text" msgid="1396336058129570886">"分割画面"</string> <string name="more_button_text" msgid="3655388105592893530">"その他"</string> <string name="float_button_text" msgid="9221657008391364581">"フローティング"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ka/strings.xml b/libs/WindowManager/Shell/res/values-ka/strings.xml index d827f1967458..deec26db2a8d 100644 --- a/libs/WindowManager/Shell/res/values-ka/strings.xml +++ b/libs/WindowManager/Shell/res/values-ka/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ზედა ეკრანი — 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ზედა ეკრანი — 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"ქვედა ნაწილის სრულ ეკრანზე გაშლა"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"გაყოფა მარცხნივ"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"გაყოფა მარჯვნივ"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"გაყოფა ზემოთ"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"გაყოფა ქვემოთ"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ცალი ხელის რეჟიმის გამოყენება"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"გასასვლელად გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ ან შეეხეთ ნებისმიერ ადგილას აპის ზემოთ"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ცალი ხელის რეჟიმის დაწყება"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"დახურვა"</string> <string name="back_button_text" msgid="1469718707134137085">"უკან"</string> <string name="handle_text" msgid="1766582106752184456">"იდენტიფიკატორი"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"სრულ ეკრანზე"</string> <string name="desktop_text" msgid="1077633567027630454">"დესკტოპის რეჟიმი"</string> <string name="split_screen_text" msgid="1396336058129570886">"ეკრანის გაყოფა"</string> <string name="more_button_text" msgid="3655388105592893530">"სხვა"</string> <string name="float_button_text" msgid="9221657008391364581">"ფარფატი"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-kk/strings.xml b/libs/WindowManager/Shell/res/values-kk/strings.xml index b0b03755c7ca..d429ba95df18 100644 --- a/libs/WindowManager/Shell/res/values-kk/strings.xml +++ b/libs/WindowManager/Shell/res/values-kk/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% жоғарғы жақта"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30% жоғарғы жақта"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Төменгісін толық экранға шығару"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Сол жақтан шығару"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Оң жақтан шығару"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Жоғарыдан шығару"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Астынан шығару"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Бір қолмен енгізу режимін пайдалану"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Шығу үшін экранның төменгі жағынан жоғары қарай сырғытыңыз немесе қолданбаның үстінен кез келген жерден түртіңіз."</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Бір қолмен енгізу режимін іске қосу"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Жабу"</string> <string name="back_button_text" msgid="1469718707134137085">"Артқа"</string> <string name="handle_text" msgid="1766582106752184456">"Идентификатор"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Толық экран"</string> <string name="desktop_text" msgid="1077633567027630454">"Компьютер режимі"</string> <string name="split_screen_text" msgid="1396336058129570886">"Экранды бөлу"</string> <string name="more_button_text" msgid="3655388105592893530">"Қосымша"</string> <string name="float_button_text" msgid="9221657008391364581">"Қалқыма"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-km/strings.xml b/libs/WindowManager/Shell/res/values-km/strings.xml index 3783067d1dd5..bfcf40bad5ef 100644 --- a/libs/WindowManager/Shell/res/values-km/strings.xml +++ b/libs/WindowManager/Shell/res/values-km/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ខាងលើ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ខាងលើ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"អេក្រង់ពេញខាងក្រោម"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"បំបែកខាងឆ្វេង"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"បំបែកខាងស្ដាំ"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"បំបែកខាងលើ"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"បំបែកខាងក្រោម"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"កំពុងប្រើមុខងារប្រើដៃម្ខាង"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"ដើម្បីចាកចេញ សូមអូសឡើងលើពីផ្នែកខាងក្រោមអេក្រង់ ឬចុចផ្នែកណាមួយនៅខាងលើកម្មវិធី"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ចាប់ផ្ដើមមុខងារប្រើដៃម្ខាង"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"បិទ"</string> <string name="back_button_text" msgid="1469718707134137085">"ថយក្រោយ"</string> <string name="handle_text" msgid="1766582106752184456">"ឈ្មោះអ្នកប្រើប្រាស់"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"អេក្រង់ពេញ"</string> <string name="desktop_text" msgid="1077633567027630454">"មុខងារកុំព្យូទ័រ"</string> <string name="split_screen_text" msgid="1396336058129570886">"មុខងារបំបែកអេក្រង់"</string> <string name="more_button_text" msgid="3655388105592893530">"ច្រើនទៀត"</string> <string name="float_button_text" msgid="9221657008391364581">"អណ្ដែត"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-kn/strings.xml b/libs/WindowManager/Shell/res/values-kn/strings.xml index 45fd76fdaa44..9d2515c396eb 100644 --- a/libs/WindowManager/Shell/res/values-kn/strings.xml +++ b/libs/WindowManager/Shell/res/values-kn/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% ಮೇಲಕ್ಕೆ"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30% ಮೇಲಕ್ಕೆ"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"ಕೆಳಗಿನ ಪೂರ್ಣ ಪರದೆ"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ಎಡಕ್ಕೆ ವಿಭಜಿಸಿ"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"ಬಲಕ್ಕೆ ವಿಭಜಿಸಿ"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ಮೇಲಕ್ಕೆ ವಿಭಜಿಸಿ"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"ಕೆಳಕ್ಕೆ ವಿಭಜಿಸಿ"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ಒಂದು ಕೈ ಮೋಡ್ ಬಳಸುವುದರ ಬಗ್ಗೆ"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"ನಿರ್ಗಮಿಸಲು, ಸ್ಕ್ರೀನ್ನ ಕೆಳಗಿನಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ ಅಥವಾ ಆ್ಯಪ್ನ ಮೇಲೆ ಎಲ್ಲಿಯಾದರೂ ಟ್ಯಾಪ್ ಮಾಡಿ"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ಒಂದು ಕೈ ಮೋಡ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"ಮುಚ್ಚಿರಿ"</string> <string name="back_button_text" msgid="1469718707134137085">"ಹಿಂದಕ್ಕೆ"</string> <string name="handle_text" msgid="1766582106752184456">"ಹ್ಯಾಂಡಲ್"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ಫುಲ್ಸ್ಕ್ರೀನ್"</string> <string name="desktop_text" msgid="1077633567027630454">"ಡೆಸ್ಕ್ಟಾಪ್ ಮೋಡ್"</string> <string name="split_screen_text" msgid="1396336058129570886">"ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್"</string> <string name="more_button_text" msgid="3655388105592893530">"ಇನ್ನಷ್ಟು"</string> <string name="float_button_text" msgid="9221657008391364581">"ಫ್ಲೋಟ್"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ko/strings.xml b/libs/WindowManager/Shell/res/values-ko/strings.xml index 0ee1feb979e5..55007fc3de0a 100644 --- a/libs/WindowManager/Shell/res/values-ko/strings.xml +++ b/libs/WindowManager/Shell/res/values-ko/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"위쪽 화면 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"위쪽 화면 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"아래쪽 화면 전체화면"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"왼쪽으로 분할"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"오른쪽으로 분할"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"위쪽으로 분할"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"아래쪽으로 분할"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"한 손 사용 모드 사용하기"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"화면 하단에서 위로 스와이프하거나 앱 상단을 탭하여 종료합니다."</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"한 손 사용 모드 시작"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"닫기"</string> <string name="back_button_text" msgid="1469718707134137085">"뒤로"</string> <string name="handle_text" msgid="1766582106752184456">"핸들"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"전체 화면"</string> <string name="desktop_text" msgid="1077633567027630454">"데스크톱 모드"</string> <string name="split_screen_text" msgid="1396336058129570886">"화면 분할"</string> <string name="more_button_text" msgid="3655388105592893530">"더보기"</string> <string name="float_button_text" msgid="9221657008391364581">"플로팅"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ky/strings.xml b/libs/WindowManager/Shell/res/values-ky/strings.xml index 6798f498c579..9691dbae4bbc 100644 --- a/libs/WindowManager/Shell/res/values-ky/strings.xml +++ b/libs/WindowManager/Shell/res/values-ky/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Үстүнкү экранды 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Үстүнкү экранды 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Ылдыйкы экранды толук экран режимине өткөрүү"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Солго бөлүү"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Оңго бөлүү"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Өйдө бөлүү"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Ылдый бөлүү"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Бир кол режимин колдонуу"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Чыгуу үчүн экранды ылдый жагынан өйдө сүрүңүз же колдонмонун өйдө жагын басыңыз"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Бир кол режимин баштоо"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Жабуу"</string> <string name="back_button_text" msgid="1469718707134137085">"Артка"</string> <string name="handle_text" msgid="1766582106752184456">"Маркер"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Толук экран"</string> <string name="desktop_text" msgid="1077633567027630454">"Компьютер режими"</string> <string name="split_screen_text" msgid="1396336058129570886">"Экранды бөлүү"</string> <string name="more_button_text" msgid="3655388105592893530">"Дагы"</string> <string name="float_button_text" msgid="9221657008391364581">"Калкыма"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-lo/strings.xml b/libs/WindowManager/Shell/res/values-lo/strings.xml index b758c0cb7c8a..678e0859272a 100644 --- a/libs/WindowManager/Shell/res/values-lo/strings.xml +++ b/libs/WindowManager/Shell/res/values-lo/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ເທິງສຸດ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ເທິງສຸດ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"ເຕັມໜ້າຈໍລຸ່ມສຸດ"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ແຍກຊ້າຍ"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"ແຍກຂວາ"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ແຍກເທິງ"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"ແຍກລຸ່ມ"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ກຳລັງໃຊ້ໂໝດມືດຽວ"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"ເພື່ອອອກ, ໃຫ້ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍ ຫຼື ແຕະບ່ອນໃດກໍໄດ້ຢູ່ເໜືອແອັບ"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ເລີ່ມໂໝດມືດຽວ"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"ປິດ"</string> <string name="back_button_text" msgid="1469718707134137085">"ກັບຄືນ"</string> <string name="handle_text" msgid="1766582106752184456">"ມືບັງຄັບ"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ເຕັມຈໍ"</string> <string name="desktop_text" msgid="1077633567027630454">"ໂໝດເດັສທັອບ"</string> <string name="split_screen_text" msgid="1396336058129570886">"ແບ່ງໜ້າຈໍ"</string> <string name="more_button_text" msgid="3655388105592893530">"ເພີ່ມເຕີມ"</string> <string name="float_button_text" msgid="9221657008391364581">"ລອຍ"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-lt/strings.xml b/libs/WindowManager/Shell/res/values-lt/strings.xml index 84f42640b185..f8a2a0fc0671 100644 --- a/libs/WindowManager/Shell/res/values-lt/strings.xml +++ b/libs/WindowManager/Shell/res/values-lt/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Viršutinis ekranas 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Viršutinis ekranas 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Apatinis ekranas viso ekrano režimu"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Išskaidyti kairėn"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Išskaidyti dešinėn"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Išskaidyti viršuje"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Išskaidyti apačioje"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Vienos rankos režimo naudojimas"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Jei norite išeiti, perbraukite aukštyn nuo ekrano apačios arba palieskite bet kur virš programos"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Pradėti vienos rankos režimą"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Uždaryti"</string> <string name="back_button_text" msgid="1469718707134137085">"Atgal"</string> <string name="handle_text" msgid="1766582106752184456">"Rankenėlė"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Visas ekranas"</string> <string name="desktop_text" msgid="1077633567027630454">"Stalinio kompiuterio režimas"</string> <string name="split_screen_text" msgid="1396336058129570886">"Išskaidyto ekrano režimas"</string> <string name="more_button_text" msgid="3655388105592893530">"Daugiau"</string> <string name="float_button_text" msgid="9221657008391364581">"Slankusis langas"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-lv/strings.xml b/libs/WindowManager/Shell/res/values-lv/strings.xml index bac75e3a5141..d14bb67936d3 100644 --- a/libs/WindowManager/Shell/res/values-lv/strings.xml +++ b/libs/WindowManager/Shell/res/values-lv/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Augšdaļa 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Augšdaļa 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Apakšdaļu pa visu ekrānu"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Sadalījums pa kreisi"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Sadalījums pa labi"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Sadalījums augšdaļā"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Sadalījums apakšdaļā"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Vienas rokas režīma izmantošana"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Lai izietu, velciet augšup no ekrāna apakšdaļas vai pieskarieties jebkurā vietā virs lietotnes"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Pāriet vienas rokas režīmā"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Aizvērt"</string> <string name="back_button_text" msgid="1469718707134137085">"Atpakaļ"</string> <string name="handle_text" msgid="1766582106752184456">"Turis"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Pilnekrāna režīms"</string> <string name="desktop_text" msgid="1077633567027630454">"Darbvirsmas režīms"</string> <string name="split_screen_text" msgid="1396336058129570886">"Sadalīt ekrānu"</string> <string name="more_button_text" msgid="3655388105592893530">"Vairāk"</string> <string name="float_button_text" msgid="9221657008391364581">"Peldošs"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-mk/strings.xml b/libs/WindowManager/Shell/res/values-mk/strings.xml index b96f8a1a5e5c..45aeb7f332b0 100644 --- a/libs/WindowManager/Shell/res/values-mk/strings.xml +++ b/libs/WindowManager/Shell/res/values-mk/strings.xml @@ -100,9 +100,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Затвори"</string> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="1766582106752184456">"Прекар"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Цел екран"</string> <string name="desktop_text" msgid="1077633567027630454">"Режим за компјутер"</string> <string name="split_screen_text" msgid="1396336058129570886">"Поделен екран"</string> <string name="more_button_text" msgid="3655388105592893530">"Повеќе"</string> <string name="float_button_text" msgid="9221657008391364581">"Лебдечко"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ml/strings.xml b/libs/WindowManager/Shell/res/values-ml/strings.xml index f67e7abe5b63..ca5f0f7c4941 100644 --- a/libs/WindowManager/Shell/res/values-ml/strings.xml +++ b/libs/WindowManager/Shell/res/values-ml/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"മുകളിൽ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"മുകളിൽ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"താഴെ പൂർണ്ണ സ്ക്രീൻ"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ഇടത് ഭാഗത്തേക്ക് വിഭജിക്കുക"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"വലത് ഭാഗത്തേക്ക് വിഭജിക്കുക"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"മുകളിലേക്ക് വിഭജിക്കുക"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"താഴേക്ക് വിഭജിക്കുക"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ഒറ്റക്കൈ മോഡ് എങ്ങനെ ഉപയോഗിക്കാം"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"പുറത്ത് കടക്കാൻ, സ്ക്രീനിന്റെ ചുവടെ നിന്ന് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്യുക അല്ലെങ്കിൽ ആപ്പിന് മുകളിലായി എവിടെയെങ്കിലും ടാപ്പ് ചെയ്യുക"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ഒറ്റക്കൈ മോഡ് ആരംഭിച്ചു"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"അടയ്ക്കുക"</string> <string name="back_button_text" msgid="1469718707134137085">"മടങ്ങുക"</string> <string name="handle_text" msgid="1766582106752184456">"ഹാൻഡിൽ"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"പൂർണ്ണസ്ക്രീൻ"</string> <string name="desktop_text" msgid="1077633567027630454">"ഡെസ്ക്ടോപ്പ് മോഡ്"</string> <string name="split_screen_text" msgid="1396336058129570886">"സ്ക്രീൻ വിഭജനം"</string> <string name="more_button_text" msgid="3655388105592893530">"കൂടുതൽ"</string> <string name="float_button_text" msgid="9221657008391364581">"ഫ്ലോട്ട്"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-mn/strings.xml b/libs/WindowManager/Shell/res/values-mn/strings.xml index 00846ef749cd..9678c5c7190e 100644 --- a/libs/WindowManager/Shell/res/values-mn/strings.xml +++ b/libs/WindowManager/Shell/res/values-mn/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Дээд 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Дээд 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Доод бүтэн дэлгэц"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Зүүн талд хуваах"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Баруун талд хуваах"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Дээд талд хуваах"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Доод талд хуваах"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Нэг гарын горимыг ашиглаж байна"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Гарахын тулд дэлгэцийн доод хэсгээс дээш шударч эсвэл апп дээр хүссэн газраа товшино уу"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Нэг гарын горимыг эхлүүлэх"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Хаах"</string> <string name="back_button_text" msgid="1469718707134137085">"Буцах"</string> <string name="handle_text" msgid="1766582106752184456">"Бариул"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Бүтэн дэлгэц"</string> <string name="desktop_text" msgid="1077633567027630454">"Дэлгэцийн горим"</string> <string name="split_screen_text" msgid="1396336058129570886">"Дэлгэцийг хуваах"</string> <string name="more_button_text" msgid="3655388105592893530">"Бусад"</string> <string name="float_button_text" msgid="9221657008391364581">"Хөвөгч"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-mr/strings.xml b/libs/WindowManager/Shell/res/values-mr/strings.xml index 888e8ddcd0c9..ea728e844cb7 100644 --- a/libs/WindowManager/Shell/res/values-mr/strings.xml +++ b/libs/WindowManager/Shell/res/values-mr/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"शीर्ष 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"शीर्ष 10"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"तळाशी फुल स्क्रीन"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"डावीकडे स्प्लिट करा"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"उजवीकडे स्प्लिट करा"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"सर्वात वरती स्प्लिट करा"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"खालती स्प्लिट करा"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"एकहाती मोड वापरणे"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"बाहेर पडण्यासाठी स्क्रीनच्या खालून वरच्या दिशेने स्वाइप करा किंवा ॲपवर कोठेही टॅप करा"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"एकहाती मोड सुरू करा"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"बंद करा"</string> <string name="back_button_text" msgid="1469718707134137085">"मागे जा"</string> <string name="handle_text" msgid="1766582106752184456">"हँडल"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"फुलस्क्रीन"</string> <string name="desktop_text" msgid="1077633567027630454">"डेस्कटॉप मोड"</string> <string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रीन"</string> <string name="more_button_text" msgid="3655388105592893530">"आणखी"</string> <string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ms/strings.xml b/libs/WindowManager/Shell/res/values-ms/strings.xml index d4a659ba9ae9..8a9b81c9e333 100644 --- a/libs/WindowManager/Shell/res/values-ms/strings.xml +++ b/libs/WindowManager/Shell/res/values-ms/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Atas 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Atas 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Skrin penuh bawah"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Pisah kiri"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Pisah kanan"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Pisah atas"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Pisah bawah"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Menggunakan mod sebelah tangan"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Untuk keluar, leret ke atas daripada bahagian bawah skrin atau ketik pada mana-mana di bahagian atas apl"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Mulakan mod sebelah tangan"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Tutup"</string> <string name="back_button_text" msgid="1469718707134137085">"Kembali"</string> <string name="handle_text" msgid="1766582106752184456">"Pemegang"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Skrin penuh"</string> <string name="desktop_text" msgid="1077633567027630454">"Mod Desktop"</string> <string name="split_screen_text" msgid="1396336058129570886">"Skrin Pisah"</string> <string name="more_button_text" msgid="3655388105592893530">"Lagi"</string> <string name="float_button_text" msgid="9221657008391364581">"Terapung"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-my/strings.xml b/libs/WindowManager/Shell/res/values-my/strings.xml index 6f8b3c7c54a8..b37bfa7fcaf6 100644 --- a/libs/WindowManager/Shell/res/values-my/strings.xml +++ b/libs/WindowManager/Shell/res/values-my/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"အပေါ်ဘက် မျက်နှာပြင် ၅၀%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"အပေါ်ဘက် မျက်နှာပြင် ၃၀%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"အောက်ခြေ မျက်နှာပြင်အပြည့်"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ဘယ်ဘက်ကို ခွဲရန်"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"ညာဘက်ကို ခွဲရန်"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ထိပ်ပိုင်းကို ခွဲရန်"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"အောက်ခြေကို ခွဲရန်"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"လက်တစ်ဖက်သုံးမုဒ် အသုံးပြုခြင်း"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"ထွက်ရန် ဖန်သားပြင်၏အောက်ခြေမှ အပေါ်သို့ပွတ်ဆွဲပါ သို့မဟုတ် အက်ပ်အပေါ်ဘက် မည်သည့်နေရာတွင်မဆို တို့ပါ"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"လက်တစ်ဖက်သုံးမုဒ်ကို စတင်လိုက်သည်"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"ပိတ်ရန်"</string> <string name="back_button_text" msgid="1469718707134137085">"နောက်သို့"</string> <string name="handle_text" msgid="1766582106752184456">"သုံးသူအမည်"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ဖန်သားပြင်အပြည့်"</string> <string name="desktop_text" msgid="1077633567027630454">"ဒက်စ်တော့မုဒ်"</string> <string name="split_screen_text" msgid="1396336058129570886">"မျက်နှာပြင် ခွဲ၍ပြသရန်"</string> <string name="more_button_text" msgid="3655388105592893530">"ပိုပြပါ"</string> <string name="float_button_text" msgid="9221657008391364581">"မျှောရန်"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-nb/strings.xml b/libs/WindowManager/Shell/res/values-nb/strings.xml index 1ea390757b6c..7c96f0d681a8 100644 --- a/libs/WindowManager/Shell/res/values-nb/strings.xml +++ b/libs/WindowManager/Shell/res/values-nb/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Sett størrelsen på den øverste delen av skjermen til 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Sett størrelsen på den øverste delen av skjermen til 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Utvid den nederste delen av skjermen til hele skjermen"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Del opp til venstre"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Del opp til høyre"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Del opp øverst"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Del opp nederst"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Bruk av enhåndsmodus"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"For å avslutte, sveip opp fra bunnen av skjermen eller trykk hvor som helst over appen"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Start enhåndsmodus"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Lukk"</string> <string name="back_button_text" msgid="1469718707134137085">"Tilbake"</string> <string name="handle_text" msgid="1766582106752184456">"Håndtak"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Fullskjerm"</string> <string name="desktop_text" msgid="1077633567027630454">"Skrivebordmodus"</string> <string name="split_screen_text" msgid="1396336058129570886">"Delt skjerm"</string> <string name="more_button_text" msgid="3655388105592893530">"Mer"</string> <string name="float_button_text" msgid="9221657008391364581">"Svevende"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ne/strings.xml b/libs/WindowManager/Shell/res/values-ne/strings.xml index fd3485c8396a..8a89d4c2c05f 100644 --- a/libs/WindowManager/Shell/res/values-ne/strings.xml +++ b/libs/WindowManager/Shell/res/values-ne/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"माथिल्लो भाग ५०%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"माथिल्लो भाग ३०%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"तल्लो भाग फुल स्क्रिन"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"बायाँतिर स्प्लिट गर्नुहोस्"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"दायाँतिर स्प्लिट गर्नुहोस्"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"सिरानतिर स्प्लिट गर्नुहोस्"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"पुछारतिर स्प्लिट गर्नुहोस्"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"एक हाते मोड प्रयोग गरिँदै छ"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"बाहिर निस्कन, स्क्रिनको पुछारबाट माथितिर स्वाइप गर्नुहोस् वा एपभन्दा माथि जुनसुकै ठाउँमा ट्याप गर्नुहोस्"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"एक हाते मोड सुरु गर्नुहोस्"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"बन्द गर्नुहोस्"</string> <string name="back_button_text" msgid="1469718707134137085">"पछाडि"</string> <string name="handle_text" msgid="1766582106752184456">"ह्यान्डल"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"फुल स्क्रिन"</string> <string name="desktop_text" msgid="1077633567027630454">"डेस्कटप मोड"</string> <string name="split_screen_text" msgid="1396336058129570886">"स्प्लिट स्क्रिन"</string> <string name="more_button_text" msgid="3655388105592893530">"थप"</string> <string name="float_button_text" msgid="9221657008391364581">"फ्लोट"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-nl/strings.xml b/libs/WindowManager/Shell/res/values-nl/strings.xml index c3ab297c899d..1f0b6d233dcd 100644 --- a/libs/WindowManager/Shell/res/values-nl/strings.xml +++ b/libs/WindowManager/Shell/res/values-nl/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Bovenste scherm 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Bovenste scherm 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Onderste scherm op volledig scherm"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Gesplitst scherm links"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Gesplitst scherm rechts"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Gesplitst scherm boven"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Gesplitst scherm onder"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Bediening met 1 hand gebruiken"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Als je wilt afsluiten, swipe je omhoog vanaf de onderkant van het scherm of tik je ergens boven de app"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Bediening met 1 hand starten"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Sluiten"</string> <string name="back_button_text" msgid="1469718707134137085">"Terug"</string> <string name="handle_text" msgid="1766582106752184456">"Gebruikersnaam"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Volledig scherm"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktopmodus"</string> <string name="split_screen_text" msgid="1396336058129570886">"Gesplitst scherm"</string> <string name="more_button_text" msgid="3655388105592893530">"Meer"</string> <string name="float_button_text" msgid="9221657008391364581">"Zwevend"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-or/strings.xml b/libs/WindowManager/Shell/res/values-or/strings.xml index 90c90d316c78..edfe3f01e6bc 100644 --- a/libs/WindowManager/Shell/res/values-or/strings.xml +++ b/libs/WindowManager/Shell/res/values-or/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ଉପର ଆଡ଼କୁ 50% କରନ୍ତୁ"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ଉପର ଆଡ଼କୁ 30% କରନ୍ତୁ"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"ତଳ ଅଂଶର ପୂର୍ଣ୍ଣ ସ୍କ୍ରୀନ୍"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ବାମପଟକୁ ସ୍ପ୍ଲିଟ କରନ୍ତୁ"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"ଡାହାଣପଟକୁ ସ୍ପ୍ଲିଟ କରନ୍ତୁ"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ଶୀର୍ଷକୁ ସ୍ପ୍ଲିଟ କରନ୍ତୁ"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"ନିମ୍ନକୁ ସ୍ଲିଟ କରନ୍ତୁ"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ଏକ-ହାତ ମୋଡ୍ ବ୍ୟବହାର କରି"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"ବାହାରି ଯିବା ପାଇଁ, ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ କିମ୍ବା ଆପରେ ଯେ କୌଣସି ସ୍ଥାନରେ ଟାପ୍ କରନ୍ତୁ"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ଏକ-ହାତ ମୋଡ୍ ଆରମ୍ଭ କରନ୍ତୁ"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"ବନ୍ଦ କରନ୍ତୁ"</string> <string name="back_button_text" msgid="1469718707134137085">"ପଛକୁ ଫେରନ୍ତୁ"</string> <string name="handle_text" msgid="1766582106752184456">"ହେଣ୍ଡେଲ"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ପୂର୍ଣ୍ଣସ୍କ୍ରିନ"</string> <string name="desktop_text" msgid="1077633567027630454">"ଡେସ୍କଟପ ମୋଡ"</string> <string name="split_screen_text" msgid="1396336058129570886">"ସ୍ପ୍ଲିଟ ସ୍କ୍ରିନ"</string> <string name="more_button_text" msgid="3655388105592893530">"ଅଧିକ"</string> <string name="float_button_text" msgid="9221657008391364581">"ଫ୍ଲୋଟ"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-pa/strings.xml b/libs/WindowManager/Shell/res/values-pa/strings.xml index b27e034fd655..8c2ad2231d19 100644 --- a/libs/WindowManager/Shell/res/values-pa/strings.xml +++ b/libs/WindowManager/Shell/res/values-pa/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ਉੱਪਰ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ਉੱਪਰ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"ਹੇਠਾਂ ਪੂਰੀ ਸਕ੍ਰੀਨ"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ਖੱਬੇ ਪਾਸੇ ਵੰਡੋ"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"ਸੱਜੇ ਪਾਸੇ ਵੰਡੋ"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ਸਿਖਰ \'ਤੇ ਵੰਡੋ"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"ਹੇਠਾਂ ਵੰਡੋ"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ਇੱਕ ਹੱਥ ਮੋਡ ਵਰਤਣਾ"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"ਬਾਹਰ ਜਾਣ ਲਈ, ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ ਜਾਂ ਐਪ \'ਤੇ ਕਿਤੇ ਵੀ ਟੈਪ ਕਰੋ"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ਇੱਕ ਹੱਥ ਮੋਡ ਸ਼ੁਰੂ ਕਰੋ"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"ਬੰਦ ਕਰੋ"</string> <string name="back_button_text" msgid="1469718707134137085">"ਪਿੱਛੇ"</string> <string name="handle_text" msgid="1766582106752184456">"ਹੈਂਡਲ"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ਪੂਰੀ-ਸਕ੍ਰੀਨ"</string> <string name="desktop_text" msgid="1077633567027630454">"ਡੈਸਕਟਾਪ ਮੋਡ"</string> <string name="split_screen_text" msgid="1396336058129570886">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ"</string> <string name="more_button_text" msgid="3655388105592893530">"ਹੋਰ"</string> <string name="float_button_text" msgid="9221657008391364581">"ਫ਼ਲੋਟ"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-pl/strings.xml b/libs/WindowManager/Shell/res/values-pl/strings.xml index 6d00aaa1f17e..191f6decebad 100644 --- a/libs/WindowManager/Shell/res/values-pl/strings.xml +++ b/libs/WindowManager/Shell/res/values-pl/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% górnej części ekranu"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30% górnej części ekranu"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Dolna część ekranu na pełnym ekranie"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Podziel po lewej"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Podziel po prawej"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Podziel u góry"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Podziel u dołu"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Korzystanie z trybu jednej ręki"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Aby zamknąć, przesuń palcem z dołu ekranu w górę lub kliknij dowolne miejsce nad aplikacją"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Uruchom tryb jednej ręki"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Zamknij"</string> <string name="back_button_text" msgid="1469718707134137085">"Wstecz"</string> <string name="handle_text" msgid="1766582106752184456">"Uchwyt"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Pełny ekran"</string> <string name="desktop_text" msgid="1077633567027630454">"Tryb pulpitu"</string> <string name="split_screen_text" msgid="1396336058129570886">"Podzielony ekran"</string> <string name="more_button_text" msgid="3655388105592893530">"Więcej"</string> <string name="float_button_text" msgid="9221657008391364581">"Pływające"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml index b2f3121fd98b..82409f40f8cf 100644 --- a/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rBR/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Parte superior a 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Parte inferior em tela cheia"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Dividir para a esquerda"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Dividir para a direita"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Dividir para cima"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Dividir para baixo"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Como usar o modo para uma mão"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para sair, deslize de baixo para cima na tela ou toque em qualquer lugar acima do app"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar o modo para uma mão"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> <string name="back_button_text" msgid="1469718707134137085">"Voltar"</string> <string name="handle_text" msgid="1766582106752184456">"Alça"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Tela cheia"</string> <string name="desktop_text" msgid="1077633567027630454">"Modo área de trabalho"</string> <string name="split_screen_text" msgid="1396336058129570886">"Tela dividida"</string> <string name="more_button_text" msgid="3655388105592893530">"Mais"</string> <string name="float_button_text" msgid="9221657008391364581">"Ponto flutuante"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml index 3f3be4bc8943..f33a0ecedcaa 100644 --- a/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt-rPT/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"50% no ecrã superior"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"30% no ecrã superior"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Ecrã inferior inteiro"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Divisão à esquerda"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Divisão à direita"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Divisão na parte superior"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Divisão na parte inferior"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Utilize o modo para uma mão"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para sair, deslize rapidamente para cima a partir da parte inferior do ecrã ou toque em qualquer ponto acima da app."</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar o modo para uma mão"</string> @@ -100,9 +96,14 @@ <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> <string name="back_button_text" msgid="1469718707134137085">"Anterior"</string> <string name="handle_text" msgid="1766582106752184456">"Indicador"</string> + <string name="app_icon_text" msgid="2823268023931811747">"Ícone da app"</string> <string name="fullscreen_text" msgid="1162316685217676079">"Ecrã inteiro"</string> <string name="desktop_text" msgid="1077633567027630454">"Modo de ambiente de trabalho"</string> <string name="split_screen_text" msgid="1396336058129570886">"Ecrã dividido"</string> <string name="more_button_text" msgid="3655388105592893530">"Mais"</string> <string name="float_button_text" msgid="9221657008391364581">"Flutuar"</string> + <string name="select_text" msgid="5139083974039906583">"Selecionar"</string> + <string name="screenshot_text" msgid="1477704010087786671">"Captura de ecrã"</string> + <string name="close_text" msgid="4986518933445178928">"Fechar"</string> + <string name="collapse_menu_text" msgid="7515008122450342029">"Fechar menu"</string> </resources> diff --git a/libs/WindowManager/Shell/res/values-pt/strings.xml b/libs/WindowManager/Shell/res/values-pt/strings.xml index b2f3121fd98b..82409f40f8cf 100644 --- a/libs/WindowManager/Shell/res/values-pt/strings.xml +++ b/libs/WindowManager/Shell/res/values-pt/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Parte superior a 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Parte superior a 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Parte inferior em tela cheia"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Dividir para a esquerda"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Dividir para a direita"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Dividir para cima"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Dividir para baixo"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Como usar o modo para uma mão"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para sair, deslize de baixo para cima na tela ou toque em qualquer lugar acima do app"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Iniciar o modo para uma mão"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Fechar"</string> <string name="back_button_text" msgid="1469718707134137085">"Voltar"</string> <string name="handle_text" msgid="1766582106752184456">"Alça"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Tela cheia"</string> <string name="desktop_text" msgid="1077633567027630454">"Modo área de trabalho"</string> <string name="split_screen_text" msgid="1396336058129570886">"Tela dividida"</string> <string name="more_button_text" msgid="3655388105592893530">"Mais"</string> <string name="float_button_text" msgid="9221657008391364581">"Ponto flutuante"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ro/strings.xml b/libs/WindowManager/Shell/res/values-ro/strings.xml index 402ef6b1834c..29297f4b55bd 100644 --- a/libs/WindowManager/Shell/res/values-ro/strings.xml +++ b/libs/WindowManager/Shell/res/values-ro/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Partea de sus: 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Partea de sus: 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Partea de jos pe ecran complet"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Împarte în stânga"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Împarte în dreapta"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Împarte în sus"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Împarte în jos"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Folosirea modului cu o mână"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Pentru a ieși, glisează în sus din partea de jos a ecranului sau atinge oriunde deasupra ferestrei aplicației"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Activează modul cu o mână"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Închide"</string> <string name="back_button_text" msgid="1469718707134137085">"Înapoi"</string> <string name="handle_text" msgid="1766582106752184456">"Ghidaj"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Ecran complet"</string> <string name="desktop_text" msgid="1077633567027630454">"Modul desktop"</string> <string name="split_screen_text" msgid="1396336058129570886">"Ecran împărțit"</string> <string name="more_button_text" msgid="3655388105592893530">"Mai multe"</string> <string name="float_button_text" msgid="9221657008391364581">"Flotantă"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ru/strings.xml b/libs/WindowManager/Shell/res/values-ru/strings.xml index dd595455963b..de0bcf4da82a 100644 --- a/libs/WindowManager/Shell/res/values-ru/strings.xml +++ b/libs/WindowManager/Shell/res/values-ru/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхний на 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Верхний на 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Нижний во весь экран"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Приложение слева"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Приложение справа"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Приложение сверху"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Приложение снизу"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Использование режима управления одной рукой"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Чтобы выйти, проведите по экрану снизу вверх или коснитесь области за пределами приложения."</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Запустить режим управления одной рукой"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Закрыть"</string> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="1766582106752184456">"Маркер"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Полноэкранный режим"</string> <string name="desktop_text" msgid="1077633567027630454">"Режим компьютера"</string> <string name="split_screen_text" msgid="1396336058129570886">"Разделить экран"</string> <string name="more_button_text" msgid="3655388105592893530">"Ещё"</string> <string name="float_button_text" msgid="9221657008391364581">"Плавающее окно"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-si/strings.xml b/libs/WindowManager/Shell/res/values-si/strings.xml index 91342c483a5d..849dbac4c485 100644 --- a/libs/WindowManager/Shell/res/values-si/strings.xml +++ b/libs/WindowManager/Shell/res/values-si/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ඉහළම 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ඉහළම 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"පහළ පූර්ණ තිරය"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"වම බෙදන්න"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"දකුණ බෙදන්න"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ඉහළ බෙදන්න"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"පහළ බෙදන්න"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"තනි-අත් ප්රකාරය භාවිත කරමින්"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"පිටවීමට, තිරයේ පහළ සිට ඉහළට ස්වයිප් කරන්න හෝ යෙදුමට ඉහළින් ඕනෑම තැනක තට්ටු කරන්න"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"තනි අත් ප්රකාරය ආරම්භ කරන්න"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"වසන්න"</string> <string name="back_button_text" msgid="1469718707134137085">"ආපසු"</string> <string name="handle_text" msgid="1766582106752184456">"හැඬලය"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"පූර්ණ තිරය"</string> <string name="desktop_text" msgid="1077633567027630454">"ඩෙස්ක්ටොප් ප්රකාරය"</string> <string name="split_screen_text" msgid="1396336058129570886">"බෙදුම් තිරය"</string> <string name="more_button_text" msgid="3655388105592893530">"තව"</string> <string name="float_button_text" msgid="9221657008391364581">"පාවෙන"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sk/strings.xml b/libs/WindowManager/Shell/res/values-sk/strings.xml index b9199c2631fd..e86ecded8502 100644 --- a/libs/WindowManager/Shell/res/values-sk/strings.xml +++ b/libs/WindowManager/Shell/res/values-sk/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Horná – 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Horná – 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Dolná – na celú obrazovku"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Rozdeliť vľavo"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Rozdeliť vpravo"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Rozdeliť hore"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Rozdeliť dole"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Používanie režimu jednej ruky"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Ukončíte potiahnutím z dolnej časti obrazovky nahor alebo klepnutím kdekoľvek nad aplikáciu"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Spustiť režim jednej ruky"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Zavrieť"</string> <string name="back_button_text" msgid="1469718707134137085">"Späť"</string> <string name="handle_text" msgid="1766582106752184456">"Rukoväť"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Celá obrazovka"</string> <string name="desktop_text" msgid="1077633567027630454">"Režim počítača"</string> <string name="split_screen_text" msgid="1396336058129570886">"Rozdelená obrazovka"</string> <string name="more_button_text" msgid="3655388105592893530">"Viac"</string> <string name="float_button_text" msgid="9221657008391364581">"Plávajúce"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sl/strings.xml b/libs/WindowManager/Shell/res/values-sl/strings.xml index 0fd44f086029..954e7290163b 100644 --- a/libs/WindowManager/Shell/res/values-sl/strings.xml +++ b/libs/WindowManager/Shell/res/values-sl/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Zgornji 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Zgornji 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Spodnji v celozaslonski način"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Delitev levo"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Delitev desno"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Delitev zgoraj"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Delitev spodaj"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Uporaba enoročnega načina"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Za izhod povlecite z dna zaslona navzgor ali se dotaknite na poljubnem mestu nad aplikacijo"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Zagon enoročnega načina"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Zapri"</string> <string name="back_button_text" msgid="1469718707134137085">"Nazaj"</string> <string name="handle_text" msgid="1766582106752184456">"Ročica"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Celozaslonsko"</string> <string name="desktop_text" msgid="1077633567027630454">"Namizni način"</string> <string name="split_screen_text" msgid="1396336058129570886">"Razdeljen zaslon"</string> <string name="more_button_text" msgid="3655388105592893530">"Več"</string> <string name="float_button_text" msgid="9221657008391364581">"Lebdeče"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sq/strings.xml b/libs/WindowManager/Shell/res/values-sq/strings.xml index 00e63d2e5027..6209ff912cde 100644 --- a/libs/WindowManager/Shell/res/values-sq/strings.xml +++ b/libs/WindowManager/Shell/res/values-sq/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Lart 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Lart 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Ekrani i plotë poshtë"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Ndaj majtas"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Ndaj djathtas"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Ndaj lart"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Ndaj në fund"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Po përdor modalitetin e përdorimit me një dorë"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Për të dalë, rrëshqit lart nga fundi i ekranit ose trokit diku mbi aplikacion"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Modaliteti i përdorimit me një dorë"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Mbyll"</string> <string name="back_button_text" msgid="1469718707134137085">"Pas"</string> <string name="handle_text" msgid="1766582106752184456">"Emërtimi"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Ekrani i plotë"</string> <string name="desktop_text" msgid="1077633567027630454">"Modaliteti i desktopit"</string> <string name="split_screen_text" msgid="1396336058129570886">"Ekrani i ndarë"</string> <string name="more_button_text" msgid="3655388105592893530">"Më shumë"</string> <string name="float_button_text" msgid="9221657008391364581">"Pluskuese"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sr/strings.xml b/libs/WindowManager/Shell/res/values-sr/strings.xml index d0f689c3236d..f810d3d9890e 100644 --- a/libs/WindowManager/Shell/res/values-sr/strings.xml +++ b/libs/WindowManager/Shell/res/values-sr/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Горњи екран 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Горњи екран 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Режим целог екрана за доњи екран"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Поделите лево"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Поделите десно"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Поделите у врху"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Поделите у дну"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Коришћење режима једном руком"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Да бисте изашли, превуците нагоре од дна екрана или додирните било где изнад апликације"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Покрените режим једном руком"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Затворите"</string> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="1766582106752184456">"Идентификатор"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Преко целог екрана"</string> <string name="desktop_text" msgid="1077633567027630454">"Режим за рачунаре"</string> <string name="split_screen_text" msgid="1396336058129570886">"Подељени екран"</string> <string name="more_button_text" msgid="3655388105592893530">"Још"</string> <string name="float_button_text" msgid="9221657008391364581">"Плутајуће"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sv/strings.xml b/libs/WindowManager/Shell/res/values-sv/strings.xml index e3827d6b8278..0e4487102f68 100644 --- a/libs/WindowManager/Shell/res/values-sv/strings.xml +++ b/libs/WindowManager/Shell/res/values-sv/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Övre 50 %"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Övre 30 %"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Helskärm på nedre skärm"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Till vänster på delad skärm"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Till höger på delad skärm"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Upptill på delad skärm"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Nedtill på delad skärm"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Använda enhandsläge"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Avsluta genom att svepa uppåt från skärmens nederkant eller trycka ovanför appen"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Starta enhandsläge"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Stäng"</string> <string name="back_button_text" msgid="1469718707134137085">"Tillbaka"</string> <string name="handle_text" msgid="1766582106752184456">"Handtag"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Helskärm"</string> <string name="desktop_text" msgid="1077633567027630454">"Datorläge"</string> <string name="split_screen_text" msgid="1396336058129570886">"Delad skärm"</string> <string name="more_button_text" msgid="3655388105592893530">"Mer"</string> <string name="float_button_text" msgid="9221657008391364581">"Svävande"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-sw/strings.xml b/libs/WindowManager/Shell/res/values-sw/strings.xml index 8c2f2ad9e6fe..e167bcab1cdb 100644 --- a/libs/WindowManager/Shell/res/values-sw/strings.xml +++ b/libs/WindowManager/Shell/res/values-sw/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Juu 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Juu 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Skrini nzima ya chini"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Gawanya sehemu ya kushoto"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Gawanya sehemu ya kulia"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Gawanya sehemu ya juu"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Gawanya sehemu ya chini"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Kutumia hali ya kutumia kwa mkono mmoja"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Ili ufunge, telezesha kidole juu kutoka sehemu ya chini ya skrini au uguse mahali popote juu ya programu"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Anzisha hali ya kutumia kwa mkono mmoja"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Funga"</string> <string name="back_button_text" msgid="1469718707134137085">"Rudi nyuma"</string> <string name="handle_text" msgid="1766582106752184456">"Ncha"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Skrini nzima"</string> <string name="desktop_text" msgid="1077633567027630454">"Hali ya Kompyuta ya mezani"</string> <string name="split_screen_text" msgid="1396336058129570886">"Gawa Skrini"</string> <string name="more_button_text" msgid="3655388105592893530">"Zaidi"</string> <string name="float_button_text" msgid="9221657008391364581">"Inayoelea"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ta/strings.xml b/libs/WindowManager/Shell/res/values-ta/strings.xml index 4732e391cd56..286d60832db1 100644 --- a/libs/WindowManager/Shell/res/values-ta/strings.xml +++ b/libs/WindowManager/Shell/res/values-ta/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"மேலே 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"மேலே 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"கீழ்ப்புறம் முழுத் திரை"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"இடதுபுறமாகப் பிரிக்கும்"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"வலதுபுறமாகப் பிரிக்கும்"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"மேற்புறமாகப் பிரிக்கும்"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"கீழ்புறமாகப் பிரிக்கும்"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ஒற்றைக் கைப் பயன்முறையைப் பயன்படுத்துதல்"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"வெளியேற, திரையின் கீழிருந்து மேல்நோக்கி ஸ்வைப் செய்யவும் அல்லது ஆப்ஸுக்கு மேலே ஏதேனும் ஓர் இடத்தில் தட்டவும்"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ஒற்றைக் கைப் பயன்முறையைத் தொடங்கும்"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"மூடும்"</string> <string name="back_button_text" msgid="1469718707134137085">"பின்செல்லும்"</string> <string name="handle_text" msgid="1766582106752184456">"ஹேண்டில்"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"முழுத்திரை"</string> <string name="desktop_text" msgid="1077633567027630454">"டெஸ்க்டாப் பயன்முறை"</string> <string name="split_screen_text" msgid="1396336058129570886">"திரையைப் பிரிக்கும்"</string> <string name="more_button_text" msgid="3655388105592893530">"கூடுதல் விருப்பத்தேர்வுகள்"</string> <string name="float_button_text" msgid="9221657008391364581">"மிதக்கும் சாளரம்"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-te/strings.xml b/libs/WindowManager/Shell/res/values-te/strings.xml index 093a8487b3e4..ec3ca78cf747 100644 --- a/libs/WindowManager/Shell/res/values-te/strings.xml +++ b/libs/WindowManager/Shell/res/values-te/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ఎగువ 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ఎగువ 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"దిగువ ఫుల్-స్క్రీన్"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"ఎడమ వైపున్న భాగంలో విభజించండి"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"కుడి వైపున్న భాగంలో విభజించండి"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"ఎగువ భాగంలో విభజించండి"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"దిగువ భాగంలో విభజించండి"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"వన్-హ్యాండెడ్ మోడ్ను ఉపయోగించడం"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"నిష్క్రమించడానికి, స్క్రీన్ కింది భాగం నుండి పైకి స్వైప్ చేయండి లేదా యాప్ పైన ఎక్కడైనా ట్యాప్ చేయండి"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"వన్-హ్యాండెడ్ మోడ్ను ప్రారంభిస్తుంది"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"మూసివేయండి"</string> <string name="back_button_text" msgid="1469718707134137085">"వెనుకకు"</string> <string name="handle_text" msgid="1766582106752184456">"హ్యాండిల్"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"ఫుల్-స్క్రీన్"</string> <string name="desktop_text" msgid="1077633567027630454">"డెస్క్టాప్ మోడ్"</string> <string name="split_screen_text" msgid="1396336058129570886">"స్ప్లిట్ స్క్రీన్"</string> <string name="more_button_text" msgid="3655388105592893530">"మరిన్ని"</string> <string name="float_button_text" msgid="9221657008391364581">"ఫ్లోట్"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-th/strings.xml b/libs/WindowManager/Shell/res/values-th/strings.xml index f7c810b02561..1a9fa1828cf5 100644 --- a/libs/WindowManager/Shell/res/values-th/strings.xml +++ b/libs/WindowManager/Shell/res/values-th/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"ด้านบน 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"ด้านบน 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"เต็มหน้าจอด้านล่าง"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"แยกไปทางซ้าย"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"แยกไปทางขวา"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"แยกไปด้านบน"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"แยกไปด้านล่าง"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"การใช้โหมดมือเดียว"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"หากต้องการออก ให้เลื่อนขึ้นจากด้านล่างของหน้าจอหรือแตะที่ใดก็ได้เหนือแอป"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"เริ่มโหมดมือเดียว"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"ปิด"</string> <string name="back_button_text" msgid="1469718707134137085">"กลับ"</string> <string name="handle_text" msgid="1766582106752184456">"แฮนเดิล"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"เต็มหน้าจอ"</string> <string name="desktop_text" msgid="1077633567027630454">"โหมดเดสก์ท็อป"</string> <string name="split_screen_text" msgid="1396336058129570886">"แยกหน้าจอ"</string> <string name="more_button_text" msgid="3655388105592893530">"เพิ่มเติม"</string> <string name="float_button_text" msgid="9221657008391364581">"ล่องลอย"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-tl/strings.xml b/libs/WindowManager/Shell/res/values-tl/strings.xml index 4660d6d0c9ee..27c4363eb630 100644 --- a/libs/WindowManager/Shell/res/values-tl/strings.xml +++ b/libs/WindowManager/Shell/res/values-tl/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Gawing 50% ang nasa itaas"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Gawing 30% ang nasa itaas"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"I-full screen ang nasa ibaba"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Hatiin sa kaliwa"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Hatiin sa kanan"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Hatiin sa itaas"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Hatiin sa ilalim"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Paggamit ng one-hand mode"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Para lumabas, mag-swipe pataas mula sa ibaba ng screen o mag-tap kahit saan sa itaas ng app"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Simulan ang one-hand mode"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Isara"</string> <string name="back_button_text" msgid="1469718707134137085">"Bumalik"</string> <string name="handle_text" msgid="1766582106752184456">"Handle"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Fullscreen"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktop Mode"</string> <string name="split_screen_text" msgid="1396336058129570886">"Split Screen"</string> <string name="more_button_text" msgid="3655388105592893530">"Higit pa"</string> <string name="float_button_text" msgid="9221657008391364581">"Float"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-tr/strings.xml b/libs/WindowManager/Shell/res/values-tr/strings.xml index 6fdfe56c2b36..a9ad92d39ec9 100644 --- a/libs/WindowManager/Shell/res/values-tr/strings.xml +++ b/libs/WindowManager/Shell/res/values-tr/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Üstte %50"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Üstte %30"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Altta tam ekran"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Sol tarafta böl"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Sağ tarafta böl"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Üst tarafta böl"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Alt tarafta böl"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Tek el modunu kullanma"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Çıkmak için ekranın alt kısmından yukarı kaydırın veya uygulamanın üzerinde herhangi bir yere dokunun"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Tek el modunu başlat"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Kapat"</string> <string name="back_button_text" msgid="1469718707134137085">"Geri"</string> <string name="handle_text" msgid="1766582106752184456">"Herkese açık kullanıcı adı"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Tam Ekran"</string> <string name="desktop_text" msgid="1077633567027630454">"Masaüstü Modu"</string> <string name="split_screen_text" msgid="1396336058129570886">"Bölünmüş Ekran"</string> <string name="more_button_text" msgid="3655388105592893530">"Daha Fazla"</string> <string name="float_button_text" msgid="9221657008391364581">"Havada Süzülen"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-uk/strings.xml b/libs/WindowManager/Shell/res/values-uk/strings.xml index c5cfd02eec6c..a9b05d513ec8 100644 --- a/libs/WindowManager/Shell/res/values-uk/strings.xml +++ b/libs/WindowManager/Shell/res/values-uk/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Верхнє вікно на 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Верхнє вікно на 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Нижнє вікно на весь екран"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Розділити зліва"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Розділити справа"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Розділити вгорі"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Розділити внизу"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Як користуватися режимом керування однією рукою"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Щоб вийти, проведіть пальцем по екрану знизу вгору або торкніться екрана над додатком"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Увімкнути режим керування однією рукою"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Закрити"</string> <string name="back_button_text" msgid="1469718707134137085">"Назад"</string> <string name="handle_text" msgid="1766582106752184456">"Маркер"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"На весь екран"</string> <string name="desktop_text" msgid="1077633567027630454">"Режим комп’ютера"</string> <string name="split_screen_text" msgid="1396336058129570886">"Розділити екран"</string> <string name="more_button_text" msgid="3655388105592893530">"Більше"</string> <string name="float_button_text" msgid="9221657008391364581">"Плаваюче вікно"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-ur/strings.xml b/libs/WindowManager/Shell/res/values-ur/strings.xml index 9c138d9164b9..1c31a3dbbbe3 100644 --- a/libs/WindowManager/Shell/res/values-ur/strings.xml +++ b/libs/WindowManager/Shell/res/values-ur/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"اوپر %50"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"اوپر %30"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"نچلی فل اسکرین"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"دائیں طرف تقسیم کریں"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"بائیں طرف تقسیم کریں"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"اوپر کی طرف تقسیم کریں"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"نیچے کی طرف تقسیم کریں"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"ایک ہاتھ کی وضع کا استعمال کرنا"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"باہر نکلنے کیلئے، اسکرین کے نیچے سے اوپر کی طرف سوائپ کریں یا ایپ کے اوپر کہیں بھی تھپتھپائیں"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"ایک ہاتھ کی وضع شروع کریں"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"بند کریں"</string> <string name="back_button_text" msgid="1469718707134137085">"پیچھے"</string> <string name="handle_text" msgid="1766582106752184456">"ہینڈل"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"مکمل اسکرین"</string> <string name="desktop_text" msgid="1077633567027630454">"ڈیسک ٹاپ موڈ"</string> <string name="split_screen_text" msgid="1396336058129570886">"اسپلٹ اسکرین"</string> <string name="more_button_text" msgid="3655388105592893530">"مزید"</string> <string name="float_button_text" msgid="9221657008391364581">"فلوٹ"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-uz/strings.xml b/libs/WindowManager/Shell/res/values-uz/strings.xml index 907c5bdc2753..3ce167293d39 100644 --- a/libs/WindowManager/Shell/res/values-uz/strings.xml +++ b/libs/WindowManager/Shell/res/values-uz/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Tepada 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Tepada 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Pastda to‘liq ekran"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Chapga ajratish"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Oʻngga ajratish"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Yuqoriga ajratish"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Pastga ajratish"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Ixcham rejimdan foydalanish"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Chiqish uchun ekran pastidan tepaga suring yoki ilovaning tepasidagi istalgan joyga bosing."</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Ixcham rejimni ishga tushirish"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Yopish"</string> <string name="back_button_text" msgid="1469718707134137085">"Orqaga"</string> <string name="handle_text" msgid="1766582106752184456">"Identifikator"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Butun ekran"</string> <string name="desktop_text" msgid="1077633567027630454">"Desktop rejimi"</string> <string name="split_screen_text" msgid="1396336058129570886">"Ekranni ikkiga ajratish"</string> <string name="more_button_text" msgid="3655388105592893530">"Yana"</string> <string name="float_button_text" msgid="9221657008391364581">"Pufakli"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-vi/strings.xml b/libs/WindowManager/Shell/res/values-vi/strings.xml index 211e231943b4..1bf967a69eae 100644 --- a/libs/WindowManager/Shell/res/values-vi/strings.xml +++ b/libs/WindowManager/Shell/res/values-vi/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Trên 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Trên 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Toàn màn hình phía dưới"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Chia đôi màn hình về bên trái"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Chia đôi màn hình về bên phải"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Chia đôi màn hình lên trên cùng"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Chia đôi màn hình xuống dưới cùng"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Cách dùng chế độ một tay"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Để thoát, hãy vuốt lên từ cuối màn hình hoặc nhấn vào vị trí bất kỳ phía trên ứng dụng"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Bắt đầu chế độ một tay"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Đóng"</string> <string name="back_button_text" msgid="1469718707134137085">"Quay lại"</string> <string name="handle_text" msgid="1766582106752184456">"Xử lý"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Toàn màn hình"</string> <string name="desktop_text" msgid="1077633567027630454">"Chế độ máy tính"</string> <string name="split_screen_text" msgid="1396336058129570886">"Chia đôi màn hình"</string> <string name="more_button_text" msgid="3655388105592893530">"Tuỳ chọn khác"</string> <string name="float_button_text" msgid="9221657008391364581">"Nổi"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml index 3d0637a37173..3a8dd242246b 100644 --- a/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rCN/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"顶部 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"顶部 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"底部全屏"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"左分屏"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"右分屏"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"上分屏"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"下分屏"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"使用单手模式"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"如需退出,请从屏幕底部向上滑动,或点按应用上方的任意位置"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"启动单手模式"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"关闭"</string> <string name="back_button_text" msgid="1469718707134137085">"返回"</string> <string name="handle_text" msgid="1766582106752184456">"处理"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"全屏"</string> <string name="desktop_text" msgid="1077633567027630454">"桌面模式"</string> <string name="split_screen_text" msgid="1396336058129570886">"分屏"</string> <string name="more_button_text" msgid="3655388105592893530">"更多"</string> <string name="float_button_text" msgid="9221657008391364581">"悬浮"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml index c4df0864004d..112bd41c4f15 100644 --- a/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rHK/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"頂部 50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"頂部 30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"底部全螢幕"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"分割左側區域"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"分割右側區域"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"分割上方區域"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"分割下方區域"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"使用單手模式"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"如要退出,請從螢幕底部向上滑動,或輕按應用程式上方的任何位置"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"開始單手模式"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"關閉"</string> <string name="back_button_text" msgid="1469718707134137085">"返去"</string> <string name="handle_text" msgid="1766582106752184456">"控點"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"全螢幕"</string> <string name="desktop_text" msgid="1077633567027630454">"桌面模式"</string> <string name="split_screen_text" msgid="1396336058129570886">"分割螢幕"</string> <string name="more_button_text" msgid="3655388105592893530">"更多"</string> <string name="float_button_text" msgid="9221657008391364581">"浮動"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml index 2d9e7f3a4f43..edb0c7e8aa88 100644 --- a/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml +++ b/libs/WindowManager/Shell/res/values-zh-rTW/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"以 50% 的螢幕空間顯示頂端畫面"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"以 30% 的螢幕空間顯示頂端畫面"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"以全螢幕顯示底部畫面"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"分割左側區域"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"分割右側區域"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"分割上方區域"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"分割下方區域"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"使用單手模式"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"如要退出,請從螢幕底部向上滑動,或輕觸應用程式上方的任何位置"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"啟動單手模式"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"關閉"</string> <string name="back_button_text" msgid="1469718707134137085">"返回"</string> <string name="handle_text" msgid="1766582106752184456">"控點"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"全螢幕"</string> <string name="desktop_text" msgid="1077633567027630454">"電腦模式"</string> <string name="split_screen_text" msgid="1396336058129570886">"分割畫面"</string> <string name="more_button_text" msgid="3655388105592893530">"更多"</string> <string name="float_button_text" msgid="9221657008391364581">"浮動"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values-zu/strings.xml b/libs/WindowManager/Shell/res/values-zu/strings.xml index 5c600560dca4..749b223993db 100644 --- a/libs/WindowManager/Shell/res/values-zu/strings.xml +++ b/libs/WindowManager/Shell/res/values-zu/strings.xml @@ -47,14 +47,10 @@ <string name="accessibility_action_divider_top_50" msgid="8649582798829048946">"Okuphezulu okungu-50%"</string> <string name="accessibility_action_divider_top_30" msgid="3572788224908570257">"Okuphezulu okungu-30%"</string> <string name="accessibility_action_divider_bottom_full" msgid="2831868345092314060">"Ngaphansi kwesikrini esigcwele"</string> - <!-- no translation found for accessibility_split_left (1713683765575562458) --> - <skip /> - <!-- no translation found for accessibility_split_right (8441001008181296837) --> - <skip /> - <!-- no translation found for accessibility_split_top (2789329702027147146) --> - <skip /> - <!-- no translation found for accessibility_split_bottom (8694551025220868191) --> - <skip /> + <string name="accessibility_split_left" msgid="1713683765575562458">"Hlukanisa ngakwesobunxele"</string> + <string name="accessibility_split_right" msgid="8441001008181296837">"Hlukanisa ngakwesokudla"</string> + <string name="accessibility_split_top" msgid="2789329702027147146">"Hlukanisa phezulu"</string> + <string name="accessibility_split_bottom" msgid="8694551025220868191">"Hlukanisa phansi"</string> <string name="one_handed_tutorial_title" msgid="4583241688067426350">"Ukusebenzisa imodi yesandla esisodwa"</string> <string name="one_handed_tutorial_description" msgid="3486582858591353067">"Ukuze uphume, swayipha ngaphezulu kusuka ngezansi kwesikrini noma thepha noma kuphi ngenhla kohlelo lokusebenza"</string> <string name="accessibility_action_start_one_handed" msgid="5070337354072861426">"Qalisa imodi yesandla esisodwa"</string> @@ -100,9 +96,19 @@ <string name="close_button_text" msgid="2913281996024033299">"Vala"</string> <string name="back_button_text" msgid="1469718707134137085">"Emuva"</string> <string name="handle_text" msgid="1766582106752184456">"Isibambo"</string> + <!-- no translation found for app_icon_text (2823268023931811747) --> + <skip /> <string name="fullscreen_text" msgid="1162316685217676079">"Isikrini esigcwele"</string> <string name="desktop_text" msgid="1077633567027630454">"Imodi Yedeskithophu"</string> <string name="split_screen_text" msgid="1396336058129570886">"Hlukanisa isikrini"</string> <string name="more_button_text" msgid="3655388105592893530">"Okwengeziwe"</string> <string name="float_button_text" msgid="9221657008391364581">"Iflowuthi"</string> + <!-- no translation found for select_text (5139083974039906583) --> + <skip /> + <!-- no translation found for screenshot_text (1477704010087786671) --> + <skip /> + <!-- no translation found for close_text (4986518933445178928) --> + <skip /> + <!-- no translation found for collapse_menu_text (7515008122450342029) --> + <skip /> </resources> diff --git a/libs/WindowManager/Shell/res/values/dimen.xml b/libs/WindowManager/Shell/res/values/dimen.xml index 6f31d0674246..1f9b6cf6c64f 100644 --- a/libs/WindowManager/Shell/res/values/dimen.xml +++ b/libs/WindowManager/Shell/res/values/dimen.xml @@ -331,30 +331,6 @@ --> <dimen name="overridable_minimal_size_pip_resizable_task">48dp</dimen> - <!-- The size of the drag handle / menu shown along with a floating task. --> - <dimen name="floating_task_menu_size">32dp</dimen> - - <!-- The size of menu items in the floating task menu. --> - <dimen name="floating_task_menu_item_size">24dp</dimen> - - <!-- The horizontal margin of menu items in the floating task menu. --> - <dimen name="floating_task_menu_item_padding">5dp</dimen> - - <!-- The width of visible floating view region when stashed. --> - <dimen name="floating_task_stash_offset">32dp</dimen> - - <!-- The amount of elevation for a floating task. --> - <dimen name="floating_task_elevation">8dp</dimen> - - <!-- The amount of padding around the bottom and top of the task. --> - <dimen name="floating_task_vertical_padding">8dp</dimen> - - <!-- The normal size of the dismiss target. --> - <dimen name="floating_task_dismiss_circle_size">150dp</dimen> - - <!-- The smaller size of the dismiss target (shrinks when something is in the target). --> - <dimen name="floating_dismiss_circle_small">120dp</dimen> - <!-- The thickness of shadows of a window that has focus in DIP. --> <dimen name="freeform_decor_shadow_focused_thickness">20dp</dimen> diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 0c3eaf0b904f..2a6fbd2cee8c 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -499,6 +499,11 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, break; } } + } else if (mSideStage.getChildCount() != 0) { + // There are chances the entering app transition got canceled by performing + // rotation transition. Checks if there is any child task existed in split + // screen before fallback to cancel entering flow. + openingToSide = true; } if (isEnteringSplit && !openingToSide) { @@ -515,7 +520,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } } - if (!isEnteringSplit && openingToSide) { + if (!isEnteringSplit && apps != null) { final WindowContainerTransaction evictWct = new WindowContainerTransaction(); prepareEvictNonOpeningChildTasks(position, apps, evictWct); mSyncQueue.queue(evictWct); @@ -598,6 +603,11 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, break; } } + } else if (mSideStage.getChildCount() != 0) { + // There are chances the entering app transition got canceled by performing + // rotation transition. Checks if there is any child task existed in split + // screen before fallback to cancel entering flow. + openingToSide = true; } if (isEnteringSplit && !openingToSide && apps != null) { @@ -624,7 +634,7 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, } - if (!isEnteringSplit && openingToSide) { + if (!isEnteringSplit && apps != null) { final WindowContainerTransaction evictWct = new WindowContainerTransaction(); prepareEvictNonOpeningChildTasks(position, apps, evictWct); mSyncQueue.queue(evictWct); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java index 44e4a31c36f0..de5f2f467e99 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DesktopModeWindowDecorViewModel.java @@ -250,25 +250,30 @@ public class DesktopModeWindowDecorViewModel implements WindowDecorViewModel { @Override public boolean onTouch(View v, MotionEvent e) { - boolean isDrag = false; final int id = v.getId(); if (id != R.id.caption_handle && id != R.id.desktop_mode_caption) { return false; } - if (id == R.id.caption_handle) { - isDrag = mDragDetector.onMotionEvent(e); - } - if (e.getAction() != MotionEvent.ACTION_DOWN) { - return isDrag; - } - final RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); - if (taskInfo.isFocused) { - return isDrag; + switch (e.getAction()) { + case MotionEvent.ACTION_DOWN: + mDragDetector.onMotionEvent(e); + final RunningTaskInfo taskInfo = mTaskOrganizer.getRunningTaskInfo(mTaskId); + if (taskInfo.isFocused) { + return mDragDetector.isDragEvent(); + } + final WindowContainerTransaction wct = new WindowContainerTransaction(); + wct.reorder(mTaskToken, true /* onTop */); + mSyncQueue.queue(wct); + return false; + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + boolean res = mDragDetector.isDragEvent(); + mDragDetector.onMotionEvent(e); + return res; + default: + mDragDetector.onMotionEvent(e); + return mDragDetector.isDragEvent(); } - final WindowContainerTransaction wct = new WindowContainerTransaction(); - wct.reorder(mTaskToken, true /* onTop */); - mSyncQueue.queue(wct); - return true; } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragDetector.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragDetector.java index 4fac843b05db..cf1850b92373 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragDetector.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragDetector.java @@ -94,6 +94,10 @@ class DragDetector { mTouchSlop = touchSlop; } + boolean isDragEvent() { + return mIsDragEvent; + } + private void resetState() { mIsDragEvent = false; mInputDownPoint.set(0, 0); diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java index 7d954ad92285..81c4176b0f39 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/windowdecor/DragResizeInputListener.java @@ -215,6 +215,7 @@ class DragResizeInputListener implements AutoCloseable { @Override public void close() { + mInputEventReceiver.dispose(); mInputChannel.dispose(); try { mWindowSession.remove(mFakeWindow); diff --git a/media/tests/MediaFrameworkTest/AndroidManifest.xml b/media/tests/MediaFrameworkTest/AndroidManifest.xml index 33872ed63b89..0da5de75548c 100644 --- a/media/tests/MediaFrameworkTest/AndroidManifest.xml +++ b/media/tests/MediaFrameworkTest/AndroidManifest.xml @@ -37,7 +37,6 @@ </activity> <activity android:label="Camera2CtsActivity" android:name="Camera2SurfaceViewActivity" - android:screenOrientation="landscape" android:configChanges="keyboardHidden|orientation|screenSize"> </activity> </application> diff --git a/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java b/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java index 2db0a8f4f911..33fc37ea0e6d 100644 --- a/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java +++ b/packages/SettingsLib/ActivityEmbedding/src/com/android/settingslib/activityembedding/ActivityEmbeddingUtils.java @@ -25,7 +25,7 @@ import android.text.TextUtils; import android.util.Log; import androidx.core.os.BuildCompat; -import androidx.window.embedding.SplitController; +import androidx.window.embedding.ActivityEmbeddingController; import com.android.settingslib.utils.BuildCompatUtils; @@ -86,7 +86,7 @@ public final class ActivityEmbeddingUtils { * @param activity Activity that needs the check */ public static boolean isActivityEmbedded(Activity activity) { - return SplitController.getInstance().isActivityEmbedded(activity); + return ActivityEmbeddingController.getInstance(activity).isActivityEmbedded(activity); } /** diff --git a/packages/SettingsLib/res/values-af/arrays.xml b/packages/SettingsLib/res/values-af/arrays.xml index a7e44d3f33f5..a28340e168fc 100644 --- a/packages/SettingsLib/res/values-af/arrays.xml +++ b/packages/SettingsLib/res/values-af/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-am/arrays.xml b/packages/SettingsLib/res/values-am/arrays.xml index 7bef7fae5cdf..a201ab093ebe 100644 --- a/packages/SettingsLib/res/values-am/arrays.xml +++ b/packages/SettingsLib/res/values-am/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml index 0720cf58f523..7852b0429775 100644 --- a/packages/SettingsLib/res/values-ar/arrays.xml +++ b/packages/SettingsLib/res/values-ar/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-as/arrays.xml b/packages/SettingsLib/res/values-as/arrays.xml index cbacce8becba..b273d8ea8276 100644 --- a/packages/SettingsLib/res/values-as/arrays.xml +++ b/packages/SettingsLib/res/values-as/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-az/arrays.xml b/packages/SettingsLib/res/values-az/arrays.xml index d1f157af8194..dc8be1d550b1 100644 --- a/packages/SettingsLib/res/values-az/arrays.xml +++ b/packages/SettingsLib/res/values-az/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml index 63b08fa92963..2fc7afbb3e2f 100644 --- a/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml +++ b/packages/SettingsLib/res/values-b+sr+Latn/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-be/arrays.xml b/packages/SettingsLib/res/values-be/arrays.xml index f16e1c50f0fa..e180b44c5c53 100644 --- a/packages/SettingsLib/res/values-be/arrays.xml +++ b/packages/SettingsLib/res/values-be/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-bg/arrays.xml b/packages/SettingsLib/res/values-bg/arrays.xml index 849e6942100a..cdad4ace231c 100644 --- a/packages/SettingsLib/res/values-bg/arrays.xml +++ b/packages/SettingsLib/res/values-bg/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-bn/arrays.xml b/packages/SettingsLib/res/values-bn/arrays.xml index a3bc4fd61465..0d79aa7dc52a 100644 --- a/packages/SettingsLib/res/values-bn/arrays.xml +++ b/packages/SettingsLib/res/values-bn/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-bs/arrays.xml b/packages/SettingsLib/res/values-bs/arrays.xml index 926ad8464ccf..4ef0981a245c 100644 --- a/packages/SettingsLib/res/values-bs/arrays.xml +++ b/packages/SettingsLib/res/values-bs/arrays.xml @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Malo"</item> + <item msgid="1484561228522634915">"Zadano"</item> + <item msgid="4014311587094503943">"Veliko"</item> + <item msgid="2904569270831156685">"Najveće"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-ca/arrays.xml b/packages/SettingsLib/res/values-ca/arrays.xml index 3062e7dd44a4..e0bfec50d1c3 100644 --- a/packages/SettingsLib/res/values-ca/arrays.xml +++ b/packages/SettingsLib/res/values-ca/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-cs/arrays.xml b/packages/SettingsLib/res/values-cs/arrays.xml index e1d033cd289b..f8cdb6817ec4 100644 --- a/packages/SettingsLib/res/values-cs/arrays.xml +++ b/packages/SettingsLib/res/values-cs/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-da/arrays.xml b/packages/SettingsLib/res/values-da/arrays.xml index 48a33f61a427..4d656cadefd3 100644 --- a/packages/SettingsLib/res/values-da/arrays.xml +++ b/packages/SettingsLib/res/values-da/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-de/arrays.xml b/packages/SettingsLib/res/values-de/arrays.xml index ca999db843b5..250f0e4e6ad7 100644 --- a/packages/SettingsLib/res/values-de/arrays.xml +++ b/packages/SettingsLib/res/values-de/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-el/arrays.xml b/packages/SettingsLib/res/values-el/arrays.xml index b95f6fc903a7..cb6e2e9e011f 100644 --- a/packages/SettingsLib/res/values-el/arrays.xml +++ b/packages/SettingsLib/res/values-el/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-en-rAU/arrays.xml b/packages/SettingsLib/res/values-en-rAU/arrays.xml index 327e4e9990d1..a75f05c75cc2 100644 --- a/packages/SettingsLib/res/values-en-rAU/arrays.xml +++ b/packages/SettingsLib/res/values-en-rAU/arrays.xml @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Small"</item> + <item msgid="1484561228522634915">"Default"</item> + <item msgid="4014311587094503943">"Large"</item> + <item msgid="2904569270831156685">"Largest"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-en-rCA/arrays.xml b/packages/SettingsLib/res/values-en-rCA/arrays.xml index 8a5723231526..698245a89011 100644 --- a/packages/SettingsLib/res/values-en-rCA/arrays.xml +++ b/packages/SettingsLib/res/values-en-rCA/arrays.xml @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Small"</item> + <item msgid="1484561228522634915">"Default"</item> + <item msgid="4014311587094503943">"Large"</item> + <item msgid="2904569270831156685">"Largest"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-en-rGB/arrays.xml b/packages/SettingsLib/res/values-en-rGB/arrays.xml index 327e4e9990d1..a75f05c75cc2 100644 --- a/packages/SettingsLib/res/values-en-rGB/arrays.xml +++ b/packages/SettingsLib/res/values-en-rGB/arrays.xml @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Small"</item> + <item msgid="1484561228522634915">"Default"</item> + <item msgid="4014311587094503943">"Large"</item> + <item msgid="2904569270831156685">"Largest"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-en-rIN/arrays.xml b/packages/SettingsLib/res/values-en-rIN/arrays.xml index 327e4e9990d1..a75f05c75cc2 100644 --- a/packages/SettingsLib/res/values-en-rIN/arrays.xml +++ b/packages/SettingsLib/res/values-en-rIN/arrays.xml @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Small"</item> + <item msgid="1484561228522634915">"Default"</item> + <item msgid="4014311587094503943">"Large"</item> + <item msgid="2904569270831156685">"Largest"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-en-rXC/arrays.xml b/packages/SettingsLib/res/values-en-rXC/arrays.xml index 8af0a4ab5903..7b987959e532 100644 --- a/packages/SettingsLib/res/values-en-rXC/arrays.xml +++ b/packages/SettingsLib/res/values-en-rXC/arrays.xml @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Small"</item> + <item msgid="1484561228522634915">"Default"</item> + <item msgid="4014311587094503943">"Large"</item> + <item msgid="2904569270831156685">"Largest"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-es-rUS/arrays.xml b/packages/SettingsLib/res/values-es-rUS/arrays.xml index 381380800e97..5769c8dc98dd 100644 --- a/packages/SettingsLib/res/values-es-rUS/arrays.xml +++ b/packages/SettingsLib/res/values-es-rUS/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml index b23f883836ee..0792f7f3ab3d 100644 --- a/packages/SettingsLib/res/values-es-rUS/strings.xml +++ b/packages/SettingsLib/res/values-es-rUS/strings.xml @@ -582,7 +582,7 @@ <string name="user_add_user_type_title" msgid="551279664052914497">"Agregar"</string> <string name="user_new_user_name" msgid="60979820612818840">"Usuario nuevo"</string> <string name="user_new_profile_name" msgid="2405500423304678841">"Perfil nuevo"</string> - <string name="user_info_settings_title" msgid="6351390762733279907">"Datos de usuario"</string> + <string name="user_info_settings_title" msgid="6351390762733279907">"Datos del usuario"</string> <string name="profile_info_settings_title" msgid="105699672534365099">"Datos del perfil"</string> <string name="user_need_lock_message" msgid="4311424336209509301">"Para poder crear un perfil restringido, debes configurar un bloqueo de pantalla que proteja tus aplicaciones y datos personales."</string> <string name="user_set_lock_button" msgid="1427128184982594856">"Configurar bloqueo"</string> diff --git a/packages/SettingsLib/res/values-es/arrays.xml b/packages/SettingsLib/res/values-es/arrays.xml index 49244078105e..e2d9d331a15b 100644 --- a/packages/SettingsLib/res/values-es/arrays.xml +++ b/packages/SettingsLib/res/values-es/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-et/arrays.xml b/packages/SettingsLib/res/values-et/arrays.xml index 0402ac2f5719..cd07db1980fb 100644 --- a/packages/SettingsLib/res/values-et/arrays.xml +++ b/packages/SettingsLib/res/values-et/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-eu/arrays.xml b/packages/SettingsLib/res/values-eu/arrays.xml index d15712afa1a2..35424c042507 100644 --- a/packages/SettingsLib/res/values-eu/arrays.xml +++ b/packages/SettingsLib/res/values-eu/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-fa/arrays.xml b/packages/SettingsLib/res/values-fa/arrays.xml index 41410cbc3288..a3a6e48e0c97 100644 --- a/packages/SettingsLib/res/values-fa/arrays.xml +++ b/packages/SettingsLib/res/values-fa/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-fi/arrays.xml b/packages/SettingsLib/res/values-fi/arrays.xml index 842fb8fed9a7..c7862e3ef961 100644 --- a/packages/SettingsLib/res/values-fi/arrays.xml +++ b/packages/SettingsLib/res/values-fi/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-fr-rCA/arrays.xml b/packages/SettingsLib/res/values-fr-rCA/arrays.xml index dfa6db333688..70481476bb5b 100644 --- a/packages/SettingsLib/res/values-fr-rCA/arrays.xml +++ b/packages/SettingsLib/res/values-fr-rCA/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-fr/arrays.xml b/packages/SettingsLib/res/values-fr/arrays.xml index 92546da3f56d..43274bb9fa86 100644 --- a/packages/SettingsLib/res/values-fr/arrays.xml +++ b/packages/SettingsLib/res/values-fr/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-gl/arrays.xml b/packages/SettingsLib/res/values-gl/arrays.xml index fb8e5f29806c..e8c5463b20be 100644 --- a/packages/SettingsLib/res/values-gl/arrays.xml +++ b/packages/SettingsLib/res/values-gl/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-gu/arrays.xml b/packages/SettingsLib/res/values-gu/arrays.xml index e527d81fbd12..ac485e11573a 100644 --- a/packages/SettingsLib/res/values-gu/arrays.xml +++ b/packages/SettingsLib/res/values-gu/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-hi/arrays.xml b/packages/SettingsLib/res/values-hi/arrays.xml index 9b8d83e67e2e..e7f68d99d509 100644 --- a/packages/SettingsLib/res/values-hi/arrays.xml +++ b/packages/SettingsLib/res/values-hi/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-hr/arrays.xml b/packages/SettingsLib/res/values-hr/arrays.xml index 559383ad875f..119ec6b66771 100644 --- a/packages/SettingsLib/res/values-hr/arrays.xml +++ b/packages/SettingsLib/res/values-hr/arrays.xml @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Malo"</item> + <item msgid="1484561228522634915">"Zadano"</item> + <item msgid="4014311587094503943">"Veliko"</item> + <item msgid="2904569270831156685">"Najveće"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-hu/arrays.xml b/packages/SettingsLib/res/values-hu/arrays.xml index 409d600562f5..28ae1b681010 100644 --- a/packages/SettingsLib/res/values-hu/arrays.xml +++ b/packages/SettingsLib/res/values-hu/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-hy/arrays.xml b/packages/SettingsLib/res/values-hy/arrays.xml index 009875d2ba5c..5787215418dc 100644 --- a/packages/SettingsLib/res/values-hy/arrays.xml +++ b/packages/SettingsLib/res/values-hy/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-in/arrays.xml b/packages/SettingsLib/res/values-in/arrays.xml index 95274177e888..6bb7e5d243b9 100644 --- a/packages/SettingsLib/res/values-in/arrays.xml +++ b/packages/SettingsLib/res/values-in/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml index abdbf06442c6..6dc9b40ce3e5 100644 --- a/packages/SettingsLib/res/values-in/strings.xml +++ b/packages/SettingsLib/res/values-in/strings.xml @@ -345,7 +345,7 @@ <string name="enable_terminal_summary" msgid="2481074834856064500">"Aktifkan aplikasi terminal yang menawarkan akses kerangka lokal"</string> <string name="hdcp_checking_title" msgid="3155692785074095986">"Pemeriksaan HDCP"</string> <string name="hdcp_checking_dialog_title" msgid="7691060297616217781">"Setel perilaku pemeriksaan HDCP"</string> - <string name="debug_debugging_category" msgid="535341063709248842">"Debugging"</string> + <string name="debug_debugging_category" msgid="535341063709248842">"Proses debug"</string> <string name="debug_app" msgid="8903350241392391766">"Pilih aplikasi debug"</string> <string name="debug_app_not_set" msgid="1934083001283807188">"Tidak ada aplikasi debug yang disetel"</string> <string name="debug_app_set" msgid="6599535090477753651">"Aplikasi debug: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string> diff --git a/packages/SettingsLib/res/values-is/arrays.xml b/packages/SettingsLib/res/values-is/arrays.xml index 0b5b9788f96c..87433b712e7d 100644 --- a/packages/SettingsLib/res/values-is/arrays.xml +++ b/packages/SettingsLib/res/values-is/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-it/arrays.xml b/packages/SettingsLib/res/values-it/arrays.xml index ae1e515ed573..e68adb9e79d1 100644 --- a/packages/SettingsLib/res/values-it/arrays.xml +++ b/packages/SettingsLib/res/values-it/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-iw/arrays.xml b/packages/SettingsLib/res/values-iw/arrays.xml index 5d72aff0c04c..6dd176574b79 100644 --- a/packages/SettingsLib/res/values-iw/arrays.xml +++ b/packages/SettingsLib/res/values-iw/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ja/arrays.xml b/packages/SettingsLib/res/values-ja/arrays.xml index 775e31c11278..385cfc904daf 100644 --- a/packages/SettingsLib/res/values-ja/arrays.xml +++ b/packages/SettingsLib/res/values-ja/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ka/arrays.xml b/packages/SettingsLib/res/values-ka/arrays.xml index f3545b6f95d8..e800d458b228 100644 --- a/packages/SettingsLib/res/values-ka/arrays.xml +++ b/packages/SettingsLib/res/values-ka/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-kk/arrays.xml b/packages/SettingsLib/res/values-kk/arrays.xml index 3fd1b50b970e..fa828525276b 100644 --- a/packages/SettingsLib/res/values-kk/arrays.xml +++ b/packages/SettingsLib/res/values-kk/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-km/arrays.xml b/packages/SettingsLib/res/values-km/arrays.xml index 2269df193c23..52d82072d132 100644 --- a/packages/SettingsLib/res/values-km/arrays.xml +++ b/packages/SettingsLib/res/values-km/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-kn/arrays.xml b/packages/SettingsLib/res/values-kn/arrays.xml index 975f60f3c5d5..1ad0948924c0 100644 --- a/packages/SettingsLib/res/values-kn/arrays.xml +++ b/packages/SettingsLib/res/values-kn/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ko/arrays.xml b/packages/SettingsLib/res/values-ko/arrays.xml index 16b840bd9f5f..6e00b10820a4 100644 --- a/packages/SettingsLib/res/values-ko/arrays.xml +++ b/packages/SettingsLib/res/values-ko/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ky/arrays.xml b/packages/SettingsLib/res/values-ky/arrays.xml index 700aae13822e..ec37e64758c6 100644 --- a/packages/SettingsLib/res/values-ky/arrays.xml +++ b/packages/SettingsLib/res/values-ky/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-lo/arrays.xml b/packages/SettingsLib/res/values-lo/arrays.xml index f116e6f4f311..3fe8330e05a6 100644 --- a/packages/SettingsLib/res/values-lo/arrays.xml +++ b/packages/SettingsLib/res/values-lo/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-lt/arrays.xml b/packages/SettingsLib/res/values-lt/arrays.xml index c0aafdcd4da3..6b34af34866f 100644 --- a/packages/SettingsLib/res/values-lt/arrays.xml +++ b/packages/SettingsLib/res/values-lt/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-lv/arrays.xml b/packages/SettingsLib/res/values-lv/arrays.xml index 0f9ee52c3fac..16f107081f7a 100644 --- a/packages/SettingsLib/res/values-lv/arrays.xml +++ b/packages/SettingsLib/res/values-lv/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-mk/arrays.xml b/packages/SettingsLib/res/values-mk/arrays.xml index 41427c1fc871..d8b86be11b73 100644 --- a/packages/SettingsLib/res/values-mk/arrays.xml +++ b/packages/SettingsLib/res/values-mk/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ml/arrays.xml b/packages/SettingsLib/res/values-ml/arrays.xml index 98e3bd6ed75b..bf6c67a8eb0d 100644 --- a/packages/SettingsLib/res/values-ml/arrays.xml +++ b/packages/SettingsLib/res/values-ml/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-mn/arrays.xml b/packages/SettingsLib/res/values-mn/arrays.xml index f3c10d7af4a4..776c5c3f111e 100644 --- a/packages/SettingsLib/res/values-mn/arrays.xml +++ b/packages/SettingsLib/res/values-mn/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-mr/arrays.xml b/packages/SettingsLib/res/values-mr/arrays.xml index c37baaa2d0a7..8b36c73f4f81 100644 --- a/packages/SettingsLib/res/values-mr/arrays.xml +++ b/packages/SettingsLib/res/values-mr/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ms/arrays.xml b/packages/SettingsLib/res/values-ms/arrays.xml index b19f0380a618..2a1303bf5b6f 100644 --- a/packages/SettingsLib/res/values-ms/arrays.xml +++ b/packages/SettingsLib/res/values-ms/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-my/arrays.xml b/packages/SettingsLib/res/values-my/arrays.xml index 3398c5bc0e75..332dba045a43 100644 --- a/packages/SettingsLib/res/values-my/arrays.xml +++ b/packages/SettingsLib/res/values-my/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-nb/arrays.xml b/packages/SettingsLib/res/values-nb/arrays.xml index 928ebc3b413e..80916e373acd 100644 --- a/packages/SettingsLib/res/values-nb/arrays.xml +++ b/packages/SettingsLib/res/values-nb/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ne/arrays.xml b/packages/SettingsLib/res/values-ne/arrays.xml index ac1f187f12fd..decf4f5b8212 100644 --- a/packages/SettingsLib/res/values-ne/arrays.xml +++ b/packages/SettingsLib/res/values-ne/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-nl/arrays.xml b/packages/SettingsLib/res/values-nl/arrays.xml index 7c90eabb1123..e827be16bcd4 100644 --- a/packages/SettingsLib/res/values-nl/arrays.xml +++ b/packages/SettingsLib/res/values-nl/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-or/arrays.xml b/packages/SettingsLib/res/values-or/arrays.xml index a6c40b07941c..fc783f037b71 100644 --- a/packages/SettingsLib/res/values-or/arrays.xml +++ b/packages/SettingsLib/res/values-or/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-pa/arrays.xml b/packages/SettingsLib/res/values-pa/arrays.xml index 0fd5c56a4e7d..f0e839683054 100644 --- a/packages/SettingsLib/res/values-pa/arrays.xml +++ b/packages/SettingsLib/res/values-pa/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-pl/arrays.xml b/packages/SettingsLib/res/values-pl/arrays.xml index 71ecd4642742..c2be21d93e64 100644 --- a/packages/SettingsLib/res/values-pl/arrays.xml +++ b/packages/SettingsLib/res/values-pl/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-pt-rBR/arrays.xml b/packages/SettingsLib/res/values-pt-rBR/arrays.xml index f218fab6508b..658b15307f47 100644 --- a/packages/SettingsLib/res/values-pt-rBR/arrays.xml +++ b/packages/SettingsLib/res/values-pt-rBR/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-pt-rPT/arrays.xml b/packages/SettingsLib/res/values-pt-rPT/arrays.xml index e323455b9ce2..8b63f7f73b1b 100644 --- a/packages/SettingsLib/res/values-pt-rPT/arrays.xml +++ b/packages/SettingsLib/res/values-pt-rPT/arrays.xml @@ -50,8 +50,8 @@ </string-array> <string-array name="hdcp_checking_titles"> <item msgid="2377230797542526134">"Nunca verificar"</item> - <item msgid="3919638466823112484">"Verificar apenas conteúdo DRM"</item> - <item msgid="9048424957228926377">"Verificar sempre"</item> + <item msgid="3919638466823112484">"Rever apenas conteúdo DRM"</item> + <item msgid="9048424957228926377">"Rever sempre"</item> </string-array> <string-array name="hdcp_checking_summaries"> <item msgid="4045840870658484038">"Nunca utilizar a verificação HDCP"</item> @@ -273,4 +273,10 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <string-array name="entries_font_size"> + <item msgid="9181293769180886675">"Pequeno"</item> + <item msgid="1484561228522634915">"Predefinição"</item> + <item msgid="4014311587094503943">"Grande"</item> + <item msgid="2904569270831156685">"O maior"</item> + </string-array> </resources> diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml index d241f3842cf2..758bc327d09a 100644 --- a/packages/SettingsLib/res/values-pt-rPT/strings.xml +++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml @@ -335,8 +335,8 @@ <string name="adb_keys_warning_message" msgid="2968555274488101220">"Revogar acesso à depuração USB de todos os computadores anteriormente autorizados?"</string> <string name="dev_settings_warning_title" msgid="8251234890169074553">"Permitir definições de programação?"</string> <string name="dev_settings_warning_message" msgid="37741686486073668">"Estas definições destinam-se apenas a programação. Podem fazer com que o seu aparelho e as aplicações nele existentes falhem ou funcionem mal."</string> - <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Verificar apps por USB"</string> - <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Verificar as aplicações instaladas via ADB/ADT para detetar comportamento perigoso"</string> + <string name="verify_apps_over_usb_title" msgid="6031809675604442636">"Rever apps por USB"</string> + <string name="verify_apps_over_usb_summary" msgid="1317933737581167839">"Rever as aplicações instaladas via ADB/ADT para detetar comportamento perigoso"</string> <string name="bluetooth_show_devices_without_names_summary" msgid="780964354377854507">"São apresentados os dispositivos Bluetooth sem nomes (apenas endereços MAC)"</string> <string name="bluetooth_disable_absolute_volume_summary" msgid="2006309932135547681">"Desativa a funcionalidade de volume absoluto do Bluetooth caso existam problemas de volume com dispositivos remotos, como um volume insuportavelmente alto ou a ausência de controlo"</string> <string name="bluetooth_enable_gabeldorsche_summary" msgid="2054730331770712629">"Ativa a pilha de funcionalidades Bluetooth Gabeldorche."</string> diff --git a/packages/SettingsLib/res/values-pt/arrays.xml b/packages/SettingsLib/res/values-pt/arrays.xml index f218fab6508b..658b15307f47 100644 --- a/packages/SettingsLib/res/values-pt/arrays.xml +++ b/packages/SettingsLib/res/values-pt/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ro/arrays.xml b/packages/SettingsLib/res/values-ro/arrays.xml index faa15c253fb4..b839c12a3825 100644 --- a/packages/SettingsLib/res/values-ro/arrays.xml +++ b/packages/SettingsLib/res/values-ro/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ru/arrays.xml b/packages/SettingsLib/res/values-ru/arrays.xml index 4b6e69288af2..707a34a27d50 100644 --- a/packages/SettingsLib/res/values-ru/arrays.xml +++ b/packages/SettingsLib/res/values-ru/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-si/arrays.xml b/packages/SettingsLib/res/values-si/arrays.xml index eaacfb835de5..7a8e9ee8e3da 100644 --- a/packages/SettingsLib/res/values-si/arrays.xml +++ b/packages/SettingsLib/res/values-si/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-sk/arrays.xml b/packages/SettingsLib/res/values-sk/arrays.xml index bbfe9696e698..5ff15e7c1e1f 100644 --- a/packages/SettingsLib/res/values-sk/arrays.xml +++ b/packages/SettingsLib/res/values-sk/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-sl/arrays.xml b/packages/SettingsLib/res/values-sl/arrays.xml index b2003e5efbc6..f1e59e725cf5 100644 --- a/packages/SettingsLib/res/values-sl/arrays.xml +++ b/packages/SettingsLib/res/values-sl/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-sq/arrays.xml b/packages/SettingsLib/res/values-sq/arrays.xml index ed8638016c34..7bceea714e82 100644 --- a/packages/SettingsLib/res/values-sq/arrays.xml +++ b/packages/SettingsLib/res/values-sq/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-sr/arrays.xml b/packages/SettingsLib/res/values-sr/arrays.xml index a95e47b6b2b0..36882c2fe2aa 100644 --- a/packages/SettingsLib/res/values-sr/arrays.xml +++ b/packages/SettingsLib/res/values-sr/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-sv/arrays.xml b/packages/SettingsLib/res/values-sv/arrays.xml index c63465c65d83..8061e9cb6237 100644 --- a/packages/SettingsLib/res/values-sv/arrays.xml +++ b/packages/SettingsLib/res/values-sv/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-sw/arrays.xml b/packages/SettingsLib/res/values-sw/arrays.xml index 6ed4d5ae1e22..862fe38f468d 100644 --- a/packages/SettingsLib/res/values-sw/arrays.xml +++ b/packages/SettingsLib/res/values-sw/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ta/arrays.xml b/packages/SettingsLib/res/values-ta/arrays.xml index 236f8998c508..2f18e0765276 100644 --- a/packages/SettingsLib/res/values-ta/arrays.xml +++ b/packages/SettingsLib/res/values-ta/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-te/arrays.xml b/packages/SettingsLib/res/values-te/arrays.xml index fb4cff12116e..ed5a6a6537b2 100644 --- a/packages/SettingsLib/res/values-te/arrays.xml +++ b/packages/SettingsLib/res/values-te/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-th/arrays.xml b/packages/SettingsLib/res/values-th/arrays.xml index 782e95e91cfe..e0046fc074e1 100644 --- a/packages/SettingsLib/res/values-th/arrays.xml +++ b/packages/SettingsLib/res/values-th/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-tl/arrays.xml b/packages/SettingsLib/res/values-tl/arrays.xml index 19d3423a7b48..622587d7f83f 100644 --- a/packages/SettingsLib/res/values-tl/arrays.xml +++ b/packages/SettingsLib/res/values-tl/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-tr/arrays.xml b/packages/SettingsLib/res/values-tr/arrays.xml index 37891ae5cf3b..99dca9e027fc 100644 --- a/packages/SettingsLib/res/values-tr/arrays.xml +++ b/packages/SettingsLib/res/values-tr/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-uk/arrays.xml b/packages/SettingsLib/res/values-uk/arrays.xml index c32da85ceab3..976a48757a32 100644 --- a/packages/SettingsLib/res/values-uk/arrays.xml +++ b/packages/SettingsLib/res/values-uk/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-ur/arrays.xml b/packages/SettingsLib/res/values-ur/arrays.xml index db9941e7d436..39b7394b8ff3 100644 --- a/packages/SettingsLib/res/values-ur/arrays.xml +++ b/packages/SettingsLib/res/values-ur/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-uz/arrays.xml b/packages/SettingsLib/res/values-uz/arrays.xml index edbd1805b756..7605bdcb094b 100644 --- a/packages/SettingsLib/res/values-uz/arrays.xml +++ b/packages/SettingsLib/res/values-uz/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-vi/arrays.xml b/packages/SettingsLib/res/values-vi/arrays.xml index ee599d64bd39..5306574d6406 100644 --- a/packages/SettingsLib/res/values-vi/arrays.xml +++ b/packages/SettingsLib/res/values-vi/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-zh-rCN/arrays.xml b/packages/SettingsLib/res/values-zh-rCN/arrays.xml index 2a85d311a5c4..ff3bac668bd6 100644 --- a/packages/SettingsLib/res/values-zh-rCN/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rCN/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-zh-rHK/arrays.xml b/packages/SettingsLib/res/values-zh-rHK/arrays.xml index a84f0e2fa88c..baf6662b2f93 100644 --- a/packages/SettingsLib/res/values-zh-rHK/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rHK/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-zh-rTW/arrays.xml b/packages/SettingsLib/res/values-zh-rTW/arrays.xml index b69fd5370e3b..1669e806a341 100644 --- a/packages/SettingsLib/res/values-zh-rTW/arrays.xml +++ b/packages/SettingsLib/res/values-zh-rTW/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsLib/res/values-zu/arrays.xml b/packages/SettingsLib/res/values-zu/arrays.xml index 0494f1c0b6df..d62e519c2225 100644 --- a/packages/SettingsLib/res/values-zu/arrays.xml +++ b/packages/SettingsLib/res/values-zu/arrays.xml @@ -273,4 +273,12 @@ </string-array> <string-array name="avatar_image_descriptions"> </string-array> + <!-- no translation found for entries_font_size:0 (9181293769180886675) --> + <!-- no translation found for entries_font_size:0 (6490061470416867723) --> + <!-- no translation found for entries_font_size:1 (1484561228522634915) --> + <!-- no translation found for entries_font_size:1 (3579015730662088893) --> + <!-- no translation found for entries_font_size:2 (4014311587094503943) --> + <!-- no translation found for entries_font_size:2 (1678068858001018666) --> + <!-- no translation found for entries_font_size:3 (2904569270831156685) --> + <!-- no translation found for entries_font_size:3 (490158884605093126) --> </resources> diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java index 2afcf7173171..b5eaa4b776b8 100644 --- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java +++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java @@ -131,6 +131,7 @@ public class SecureSettings { Settings.Secure.ACTIVE_UNLOCK_ON_FACE_ACQUIRE_INFO, Settings.Secure.ACTIVE_UNLOCK_ON_UNLOCK_INTENT_WHEN_BIOMETRIC_ENROLLED, Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS, + Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD, Settings.Secure.VR_DISPLAY_MODE, Settings.Secure.NOTIFICATION_BADGING, Settings.Secure.NOTIFICATION_DISMISS_RTL, diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java index 53ae9268f49e..534e31ae42ee 100644 --- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java +++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java @@ -191,6 +191,8 @@ public class SecureSettingsValidators { ANY_STRING_VALIDATOR); VALIDATORS.put(Secure.ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS, ANY_STRING_VALIDATOR); + VALIDATORS.put(Secure.ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD, + ANY_STRING_VALIDATOR); VALIDATORS.put(Secure.ASSIST_GESTURE_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.ASSIST_GESTURE_SILENCE_ALERTS_ENABLED, BOOLEAN_VALIDATOR); VALIDATORS.put(Secure.ASSIST_GESTURE_WAKE_ENABLED, BOOLEAN_VALIDATOR); diff --git a/packages/SystemUI/docs/device-entry/quickaffordance.md b/packages/SystemUI/docs/device-entry/quickaffordance.md index 79d5718efe0d..d662649ac419 100644 --- a/packages/SystemUI/docs/device-entry/quickaffordance.md +++ b/packages/SystemUI/docs/device-entry/quickaffordance.md @@ -52,6 +52,11 @@ A picker experience may: * Unselect an already-selected quick affordance from a slot * Unselect all already-selected quick affordances from a slot +## Device Policy +Returning `DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_ALL` or +`DevicePolicyManager.KEYGUARD_DISABLE_SHORTCUTS_ALL` from +`DevicePolicyManager#getKeyguardDisabledFeatures` will disable the keyguard quick affordance feature on the device. + ## Testing * Add a unit test for your implementation of `KeyguardQuickAffordanceConfig` * Manually verify that your implementation works in multi-user environments from both the main user and a secondary user diff --git a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java index e0cc8f4a7596..e0d01845562f 100644 --- a/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java +++ b/packages/SystemUI/plugin/bcsmartspace/src/com/android/systemui/plugins/BcSmartspaceDataPlugin.java @@ -118,12 +118,6 @@ public interface BcSmartspaceDataPlugin extends Plugin { void setPrimaryTextColor(int color); /** - * When the view is displayed on Dream, set the flag to true, immediately after the view is - * created. - */ - void setIsDreaming(boolean isDreaming); - - /** * Set the UI surface for the cards. Should be called immediately after the view is created. */ void setUiSurface(String uiSurface); diff --git a/packages/SystemUI/res-keyguard/layout/keyguard_host_view.xml b/packages/SystemUI/res-keyguard/layout/keyguard_security_container_view.xml index 8497ff094c03..426cfafb190e 100644 --- a/packages/SystemUI/res-keyguard/layout/keyguard_host_view.xml +++ b/packages/SystemUI/res-keyguard/layout/keyguard_security_container_view.xml @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="utf-8"?> <!-- ** -** Copyright 2012, The Android Open Source Project +** Copyright 2023, 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. @@ -17,12 +17,10 @@ */ --> -<!-- This is the host view that generally contains two sub views: the widget view - and the security view. --> -<com.android.keyguard.KeyguardHostView +<com.android.keyguard.KeyguardSecurityContainer xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/res-auto" - android:id="@+id/keyguard_host_view" + android:id="@+id/keyguard_security_container" android:layout_width="match_parent" android:layout_height="match_parent" android:clipChildren="false" @@ -30,27 +28,15 @@ android:paddingTop="@dimen/keyguard_lock_padding" android:importantForAccessibility="yes"> <!-- Needed because TYPE_WINDOW_STATE_CHANGED is sent from this view when bouncer is shown --> - - <com.android.keyguard.KeyguardSecurityContainer - android:id="@+id/keyguard_security_container" - android:layout_width="match_parent" + <com.android.keyguard.KeyguardSecurityViewFlipper + android:id="@+id/view_flipper" + android:layout_width="wrap_content" android:layout_height="match_parent" android:clipChildren="false" android:clipToPadding="false" - android:padding="0dp" - android:fitsSystemWindows="true" - android:layout_gravity="center"> - <com.android.keyguard.KeyguardSecurityViewFlipper - android:id="@+id/view_flipper" - android:layout_width="wrap_content" - android:layout_height="match_parent" - android:clipChildren="false" - android:clipToPadding="false" - android:paddingTop="@dimen/keyguard_security_view_top_margin" - android:layout_gravity="center" - android:gravity="center"> - </com.android.keyguard.KeyguardSecurityViewFlipper> - </com.android.keyguard.KeyguardSecurityContainer> - -</com.android.keyguard.KeyguardHostView> + android:paddingTop="@dimen/keyguard_security_view_top_margin" + android:layout_gravity="center" + android:gravity="center"> + </com.android.keyguard.KeyguardSecurityViewFlipper> +</com.android.keyguard.KeyguardSecurityContainer> diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml index 65c2417102b4..a2fa52c91f4d 100644 --- a/packages/SystemUI/res/values-af/strings.xml +++ b/packages/SystemUI/res/values-af/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Helderheid"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Kleuromkering"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Kleurregstelling"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Bestuur gebruikers"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Klaar"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Maak toe"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"skermopname"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Titelloos"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Bystandmodus"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Vergrotingvenster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Vergrotingvensterkontroles"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoem in"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Kan nie uitsaai nie"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Kan nie stoor nie. Probeer weer."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Kan nie stoor nie."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Gebruik minstens 4 karakters"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Gebruik minder as 16 karakters"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Bounommer"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Bounommer is na knipbord gekopieer."</string> <string name="basic_status" msgid="2315371112182658176">"Maak gesprek oop"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Minstens een toestel beskikbaar is"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Raak en hou kortpad"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Kanselleer"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Draai nou om"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Vou foon oop vir ’n beter selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Draai om na voorste skerm vir ’n beter selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Gebruik die agterste kamera vir ’n breër foto met ’n hoër resolusie."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Hierdie skerm sal afskakel"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Voubare toestel word ontvou"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Voubare toestel word omgekeer"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batterykrag oor"</string> diff --git a/packages/SystemUI/res/values-af/tiles_states_strings.xml b/packages/SystemUI/res/values-af/tiles_states_strings.xml index e60f23329212..da24a79759f7 100644 --- a/packages/SystemUI/res/values-af/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-af/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Af"</item> <item msgid="5966994759929723339">"Aan"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml index d2d7e64b34ae..7f2ccac9058c 100644 --- a/packages/SystemUI/res/values-am/strings.xml +++ b/packages/SystemUI/res/values-am/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ብሩህነት"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ተቃራኒ ቀለም"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"የቀለም ማስተካከያ"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ተጠቃሚዎችን ያስተዳድሩ"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ተከናውኗል"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ዝጋ"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ማያን መቅረጽ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ርዕስ የለም"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ተጠባባቂ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"የማጉያ መስኮት"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"የማጉያ መስኮት መቆጣጠሪያዎች"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"አጉላ"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"መሰራጨት አይችልም"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"ማስቀመጥ አልተቻለም። እንደገና ይሞክሩ።"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"ማስቀመጥ አልተቻለም።"</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"የግንብ ቁጥር"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"የገንባ ቁጥር ወደ ቅንጥብ ሰሌዳ ተቀድቷል።"</string> <string name="basic_status" msgid="2315371112182658176">"ውይይት ይክፈቱ"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ቢያንስ አንድ መሣሪያ ይገኛል"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"የይንኩ እና ይያዙ አቋራጭ"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ይቅር"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"አሁን ገልበጥ"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"ለተሻለ የራስ ፎቶ ስልክን ይዘርጉ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ለተሻለ የራስ ፎቶ ወደፊት ማሳያ ይገልበጥ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ከፍተኛ ጥራት ላለው ሰፊ ፎቶ የኋለኛውን ካሜራ ይጠቀሙ።"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ይህ ማያ ገጽ ይጠፋል"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"መታጠፍ የሚችል መሣሪያ እየተዘረጋ ነው"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"መታጠፍ የሚችል መሣሪያ እየተገለበጠ ነው"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ባትሪ ይቀራል"</string> diff --git a/packages/SystemUI/res/values-am/tiles_states_strings.xml b/packages/SystemUI/res/values-am/tiles_states_strings.xml index bbf2d2385f05..26ef52d996ac 100644 --- a/packages/SystemUI/res/values-am/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-am/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ጠፍቷል"</item> <item msgid="5966994759929723339">"በርቷል"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml index 66279d3c942f..50165d4cd1f2 100644 --- a/packages/SystemUI/res/values-ar/strings.xml +++ b/packages/SystemUI/res/values-ar/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"السطوع"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"قلب الألوان"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"تصحيح الألوان"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"إدارة المستخدمين"</string> <string name="quick_settings_done" msgid="2163641301648855793">"تم"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"إغلاق"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"تسجيل محتوى الشاشة"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"بلا عنوان"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"وضع الاستعداد"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"نافذة التكبير"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"عناصر التحكم في نافذة التكبير"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"تكبير"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"حدث خطأ. يُرجى إعادة المحاولة."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"جارٍ التحميل"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"جهاز لوحي"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"بثّ الوسائط"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"جارٍ بثّ \"<xliff:g id="APP_LABEL">%1$s</xliff:g>\""</string> <string name="controls_error_timeout" msgid="794197289772728958">"غير نشط، تحقّق من التطبيق."</string> <string name="controls_error_removed" msgid="6675638069846014366">"لم يتم العثور عليه."</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"عنصر التحكّم غير متوفّر"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"يتعذّر البث"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"لا يمكن إجراء الحفظ. يُرجى إعادة المحاولة."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"لا يمكن إجراء الحفظ."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"رقم الإصدار"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"تم نسخ رقم الإصدار إلى الحافظة."</string> <string name="basic_status" msgid="2315371112182658176">"محادثة مفتوحة"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• توفُّر جهاز واحد على الأقل"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"انقر مع الاستمرار على الاختصار."</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"إلغاء"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"قلب الجهاز الآن"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"عليك فتح الهاتف لالتقاط صورة ذاتية بشكل أفضل."</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"أتريد استخدام الكاميرا الأمامية لصورة ذاتية أفضل؟"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"استخدِم الكاميرا الخلفية لالتقاط صورة أعرض وبدرجة دقة أعلى."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"* سيتم إطفاء هذه الشاشة."</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"جهاز قابل للطي يجري فتحه"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"جهاز قابل للطي يجري قلبه"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"النسبة المئوية المتبقية من شحن البطارية: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ar/tiles_states_strings.xml b/packages/SystemUI/res/values-ar/tiles_states_strings.xml index 44b58f964ce9..b88d09706595 100644 --- a/packages/SystemUI/res/values-ar/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ar/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"غير مفعّلة"</item> <item msgid="5966994759929723339">"مفعَّلة"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml index 688025bcb652..2f868ec0009e 100644 --- a/packages/SystemUI/res/values-as/strings.xml +++ b/packages/SystemUI/res/values-as/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"উজ্জ্বলতা"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ৰং বিপৰীতকৰণ"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ৰং শুধৰণী"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ব্যৱহাৰকাৰী পৰিচালনা কৰক"</string> <string name="quick_settings_done" msgid="2163641301648855793">"সম্পন্ন কৰা হ’ল"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"বন্ধ কৰক"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"স্ক্ৰীন ৰেকৰ্ডিং"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"কোনো শিৰোনাম নাই"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ষ্টেণ্ডবাই"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"বিবৰ্ধন ৱিণ্ড’"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"বিবৰ্ধন ৱিণ্ড’ৰ নিয়ন্ত্ৰণসমূহ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"জুম ইন কৰক"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"কিবা ভুল হ’ল। পুনৰ চেষ্টা কৰক।"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"ল’ড হৈ আছে"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"টেবলেট"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"আপোনাৰ মিডিয়া কাষ্ট কৰি থকা হৈছে"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> কাষ্ট কৰি থকা হৈছে"</string> <string name="controls_error_timeout" msgid="794197289772728958">"সক্ৰিয় নহয়, এপ্টো পৰীক্ষা কৰক"</string> <string name="controls_error_removed" msgid="6675638069846014366">"বিচাৰি পোৱা নগ’ল"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"নিয়ন্ত্ৰণটো উপলব্ধ নহয়"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"সম্প্ৰচাৰ কৰিব নোৱাৰি"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"ছেভ কৰিব নোৱাৰি। পুনৰ চেষ্টা কৰক।"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"ছেভ কৰিব নোৱাৰি।"</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"বিল্ডৰ নম্বৰ"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"ক্লিপব’ৰ্ডলৈ বিল্ডৰ নম্বৰ প্ৰতিলিপি কৰা হ’ল।"</string> <string name="basic_status" msgid="2315371112182658176">"বাৰ্তালাপ খোলক"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• অতি কমেও এটা ডিভাইচ উপলব্ধ"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"শ্বৰ্টকাটটোত স্পৰ্শ কৰি ধৰি ৰাখক"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"বাতিল কৰক"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"এতিয়াই ফ্লিপ কৰক"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"উন্নত ছেল্ফিৰ বাবে ফ’নটো আনফ’ল্ড কৰক"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"উন্নত ছেল্ফিৰ বাবে সন্মুখৰ ডিছপ্লে’ ফ্লিপ কৰিবনে?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"অধিক ৰিজ’লিউশ্বনৰ বহল ফট’ৰ বাবে পিছফালে থকা কেমেৰাটো ব্যৱহাৰ কৰক।"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ এই স্ক্ৰীনখন অফ হ’ব"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"জপাব পৰা ডিভাইচৰ জাপ খুলি থকা হৈছে"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"জপাব পৰা ডিভাইচৰ ওলোটাই থকা হৈছে"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> বেটাৰী বাকী আছে"</string> diff --git a/packages/SystemUI/res/values-as/tiles_states_strings.xml b/packages/SystemUI/res/values-as/tiles_states_strings.xml index 3145341cabe4..e7dc9b4e180a 100644 --- a/packages/SystemUI/res/values-as/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-as/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"অফ আছে"</item> <item msgid="5966994759929723339">"অন আছে"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml index 77bf65bd5819..db801251a51a 100644 --- a/packages/SystemUI/res/values-az/strings.xml +++ b/packages/SystemUI/res/values-az/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Parlaqlıq"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Rəng inversiyası"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Rəng korreksiyası"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"İstifadəçiləri idarə edin"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Hazır"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Bağlayın"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ekran çəkimi"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Başlıq yoxdur"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Gözləmə rejimi"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Böyütmə Pəncərəsi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Böyütmə Pəncərəsi Kontrolları"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Yaxınlaşdırın"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Xəta oldu. Yenə cəhd edin."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Yüklənir"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"planşet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Medianız yayımlanır"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> yayımlanır"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Aktiv deyil, tətbiqi yoxlayın"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Tapılmadı"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Nəzarət əlçatan deyil"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Yayımlamaq mümkün deyil"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Yadda saxlamaq mümkün deyil. Yenə cəhd edin."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Yadda saxlamaq mümkün deyil."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Montaj nömrəsi"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Versiya nömrəsi mübadilə buferinə kopyalandı."</string> <string name="basic_status" msgid="2315371112182658176">"Açıq söhbət"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ən azı bir cihaz əlçatandır"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Qısayola toxunub saxlayın"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Ləğv edin"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"İndi fırladın"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Daha yaxşı selfi üçün telefonu açın"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Daha yaxşı selfi üçün ön displeyə çevrilsin?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Daha yüksək ayırdetmə dəqiqliyi ilə daha geniş şəkil üçün arxaya baxan kameradan istifadə edin."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Bu ekran deaktiv ediləcək"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Qatlana bilən cihaz açılır"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Qatlana bilən cihaz fırladılır"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> enerji qalıb"</string> diff --git a/packages/SystemUI/res/values-az/tiles_states_strings.xml b/packages/SystemUI/res/values-az/tiles_states_strings.xml index fb745b251bc9..e0fcf890a505 100644 --- a/packages/SystemUI/res/values-az/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-az/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Deaktiv"</item> <item msgid="5966994759929723339">"Aktiv"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml index 78812ae855af..494bcbe42aa6 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Osvetljenost"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzija boja"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Korekcija boja"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Upravljajte korisnicima"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Gotovo"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zatvori"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"snimanje ekrana"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Bez naslova"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje pripravnosti"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za uvećanje"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za uvećanje"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Uvećajte"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Došlo je do greške. Probajte ponovo."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Učitava se"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Prebacivanje medija"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Prebacuje se <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno. Vidite aplikaciju"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nije pronađeno"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrola nije dostupna"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Emitovanje nije uspelo"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Čuvanje nije uspelo. Probajte ponovo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Čuvanje nije uspelo."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Koristite bar 4 znaka"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Koristite manje od 16 znakova"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Broj verzije"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Broj verzije je kopiran u privremenu memoriju."</string> <string name="basic_status" msgid="2315371112182658176">"Otvorite konverzaciju"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• da je dostupan barem jedan uređaj"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Dodirnite i zadržite prečicu"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Otkaži"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Obrni"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Otvorite telefon za bolji selfi"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Želite da obrnete na prednji ekran za bolji selfi?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Koristite zadnju kameru da biste snimili širu sliku sa višom rezolucijom."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ovaj ekran će se isključiti"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Uređaj na preklop se otvara"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Uređaj na preklop se obrće"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostalo je još<xliff:g id="PERCENTAGE">%s</xliff:g> baterije"</string> diff --git a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml index b69b06419281..fd604b5f079f 100644 --- a/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-b+sr+Latn/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Isključeno"</item> <item msgid="5966994759929723339">"Uključeno"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml index b539e992bdf1..62faafbf04bf 100644 --- a/packages/SystemUI/res/values-be/strings.xml +++ b/packages/SystemUI/res/values-be/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Яркасць"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Інверсія колераў"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Карэкцыя колераў"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Кіраваць карыстальнікамі"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Гатова"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Закрыць"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"запіс экрана"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Без назвы"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Рэжым чакання"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Акно павелічэння"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Налады акна павелічэння"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Павялічыць маштаб"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Нешта пайшло не так. Паўтарыце спробу."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Ідзе загрузка"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"планшэт"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Трансляцыя мультымедыйнага змесціва"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Трансляцыя праграмы \"<xliff:g id="APP_LABEL">%1$s</xliff:g>\""</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактыўна, праверце праграму"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не знойдзена"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Кіраванне недаступнае"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Не ўдалося запусціць трансляцыю"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Не ўдалося захаваць. Паўтарыце спробу."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Не ўдалося захаваць."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Нумар зборкі"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Нумар зборкі скапіраваны ў буфер абмену."</string> <string name="basic_status" msgid="2315371112182658176">"Адкрытая размова"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Даступная хаця б адна прылада."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Дакраніцеся і ўтрымлівайце ярлык"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Скасаваць"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Пераключыць"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Каб атрымаць лепшае сэлфі, раскрыйце тэлефон"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Пераключыць на пярэдні дысплэй для лепшага сэлфі?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Каб зрабіць шырэйшае фота з больш высокай раздзяляльнасцю, скарыстайце заднюю камеру."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Гэты экран будзе выключаны"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Складная прылада ў раскладзеным выглядзе"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Перавернутая складная прылада"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Засталося зараду: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-be/tiles_states_strings.xml b/packages/SystemUI/res/values-be/tiles_states_strings.xml index 8fb2da26edc2..4050129df5c4 100644 --- a/packages/SystemUI/res/values-be/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-be/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Выключана"</item> <item msgid="5966994759929723339">"Уключана"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml index a45ca4c44a0f..ad34919c17d1 100644 --- a/packages/SystemUI/res/values-bg/strings.xml +++ b/packages/SystemUI/res/values-bg/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Яркост"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Цветове: инверт."</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Корекция на цветове"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Управление на потребителите"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Готово"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Затваряне"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"записване на екрана"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Няма заглавие"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Режим на готовност"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Прозорец за увеличение"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Контроли за прозореца за увеличение"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Увеличаване на мащаба"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Нещо се обърка. Опитайте отново."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Зарежда се"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"таблет"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Мултимедията се предава"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> се предава"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактивно, проверете прилож."</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не е намерено"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Контролата не е налице"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Предаването не е възможно"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Не може да се запази. Опитайте отново."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Не може да се запази."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Номер на компилацията"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Номерът на компилацията е копиран в буферната памет."</string> <string name="basic_status" msgid="2315371112182658176">"Отворен разговор"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Налице е поне едно устройство."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Докоснете и задръжте прекия път"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Отказ"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Обръщане сега"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Отворете телефона за по-добро селфи"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Да се ползва ли предната камера за по-добро селфи?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Използвайте задната камера за по-широка снимка с по-висока разделителна способност."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Този екран ще се изключи"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Разгъване на сгъваемо устройство"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Обръщане на сгъваемо устройство"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Оставаща батерия: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-bg/tiles_states_strings.xml b/packages/SystemUI/res/values-bg/tiles_states_strings.xml index b85133b6bd43..011c62490606 100644 --- a/packages/SystemUI/res/values-bg/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-bg/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Изкл."</item> <item msgid="5966994759929723339">"Вкл."</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml index 08b7ca4ce052..319684206c6f 100644 --- a/packages/SystemUI/res/values-bn/strings.xml +++ b/packages/SystemUI/res/values-bn/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"উজ্জ্বলতা"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"কালার ইনভার্সন"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"রঙ সংশোধন"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ব্যবহারকারীদের ম্যানেজ করুন"</string> <string name="quick_settings_done" msgid="2163641301648855793">"সম্পন্ন হয়েছে"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"বন্ধ করুন"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"স্ক্রিন রেকর্ডিং"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"কোনও শীর্ষক নেই"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"স্ট্যান্ডবাই"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"উইন্ডো বড় করে দেখা"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"উইন্ডো কন্ট্রোল বড় করে দেখা"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"বড় করুন"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"কোনও সমস্যা হয়েছে। আবার চেষ্টা করুন।"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"লোড করা হচ্ছে"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"ট্যাবলেট"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"আপনার মিডিয়া কাস্ট করা"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> কাস্ট করা হচ্ছে"</string> <string name="controls_error_timeout" msgid="794197289772728958">"বন্ধ আছে, অ্যাপ চেক করুন"</string> <string name="controls_error_removed" msgid="6675638069846014366">"খুঁজে পাওয়া যায়নি"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"কন্ট্রোল উপলভ্য নেই"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"সম্প্রচার করা যাচ্ছে না"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"সেভ করা যাচ্ছে না। আবার চেষ্টা করুন।"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"সেভ করা যাচ্ছে না।"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"কমপক্ষে ৪টি অক্ষর ব্যবহার করুন"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"১৬টির চেয়ে কম অক্ষর ব্যবহার করুন"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"বিল্ড নম্বর"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"বিল্ড নম্বর ক্লিপবোর্ডে কপি করা হয়েছে।"</string> <string name="basic_status" msgid="2315371112182658176">"খোলা কথোপকথন"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• অন্তত একটি ডিভাইস উপলভ্য"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"শর্টকাট টাচ করে ধরে রাখুন"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"বাতিল করুন"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"এখনই উল্টান"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"আরও ভাল সেলফির জন্য ফোন আনফোল্ড করা"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"আরও ভাল সেলফির জন্য সামনের ক্যামেরায় পাল্টাতে চান?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"আরও ভাল রেজোলিউশন সহ আরও বেশি ওয়াইড ছবির জন্য ব্যাক-ক্যামেরা ব্যবহার করুন।"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ এই স্ক্রিন বন্ধ হয়ে যাবে"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ফোল্ড করা যায় এমন ডিভাইস খোলা হচ্ছে"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ফোল্ড করা যায় এমন ডিভাইস উল্টানো হচ্ছে"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ব্যাটারির চার্জ বাকি আছে"</string> diff --git a/packages/SystemUI/res/values-bn/tiles_states_strings.xml b/packages/SystemUI/res/values-bn/tiles_states_strings.xml index d70afc0f7f4f..00ce04e42e13 100644 --- a/packages/SystemUI/res/values-bn/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-bn/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"বন্ধ আছে"</item> <item msgid="5966994759929723339">"চালু আছে"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml index e7a6006f837a..8134ec9944b1 100644 --- a/packages/SystemUI/res/values-bs/strings.xml +++ b/packages/SystemUI/res/values-bs/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Osvjetljenje"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzija boja"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ispravka boja"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Veličina fonta"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Upravljajte korisnicima"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Gotovo"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zatvori"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"snimanje ekrana"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Bez naslova"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje mirovanja"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za uvećavanje"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za uvećavanje"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Uvećavanje"</string> @@ -862,7 +869,7 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Nešto nije uredu. Pokušajte ponovo."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Učitavanje"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Emitiranje medijskih sadržaja"</string> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Emitiranje medija"</string> <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Emitiranje aplikacije <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno, vidite aplikaciju"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nije pronađeno"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nije moguće emitirati"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Nije moguće sačuvati. Pokušajte ponovo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Nije moguće sačuvati."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Koristite najmanje 4 znaka"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Koristite manje od 16 znakova"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Broj verzije"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Broj verzije je kopiran u međumemoriju."</string> <string name="basic_status" msgid="2315371112182658176">"Otvoreni razgovor"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Dostupan je najmanje jedan uređaj"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Dodirnite i zadržite prečicu"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Otkaži"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Obrni sada"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Raširite telefon za bolji selfi"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Obrnuti na prednji ekran radi boljeg selfija?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Koristite zadnju kameru za širu fotografiju veće rezolucije."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ekran će se isključiti"</b></string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Promijenite zaslon odmah"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Otklopite telefon"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Želite li promijeniti zaslon?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"Za višu razlučivost upotrijebite stražnju kameru"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Za višu razlučivost okrenite telefon"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Sklopivi uređaj se rasklapa"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Sklopivi uređaj se obrće"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostalo baterije: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-bs/tiles_states_strings.xml b/packages/SystemUI/res/values-bs/tiles_states_strings.xml index b69b06419281..32051ef19743 100644 --- a/packages/SystemUI/res/values-bs/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-bs/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Isključeno"</item> <item msgid="5966994759929723339">"Uključeno"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Nedostupno"</item> + <item msgid="2478289035899842865">"Isključeno"</item> + <item msgid="5137565285664080143">"Uključeno"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml index 109aeb704b14..ca8a4c366094 100644 --- a/packages/SystemUI/res/values-ca/strings.xml +++ b/packages/SystemUI/res/values-ca/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brillantor"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversió de colors"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correcció de color"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gestiona els usuaris"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Fet"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Tanca"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"gravació de pantalla"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sense títol"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Finestra d\'ampliació"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Finestra de controls d\'ampliació"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Amplia"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"S\'ha produït un error. Torna-ho a provar."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"S\'està carregant"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tauleta"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"S\'està emetent el contingut multimèdia"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"S\'està emetent <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inactiu; comprova l\'aplicació"</string> <string name="controls_error_removed" msgid="6675638069846014366">"No s\'ha trobat"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"El control no està disponible"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"No es pot emetre"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"No es pot desar. Torna-ho a provar."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"No es pot desar."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilació"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"El número de compilació s\'ha copiat al porta-retalls."</string> <string name="basic_status" msgid="2315371112182658176">"Conversa oberta"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Almenys un dispositiu està disponible."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Mantén premuda la drecera"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel·la"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Gira ara"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Desplega el telèfon per fer una millor selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Girar a pantalla frontal per fer millors selfies?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Utilitza la càmera posterior per obtenir una foto més àmplia amb una resolució més alta."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Aquesta pantalla s\'apagarà"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositiu plegable desplegant-se"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositiu plegable girant"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Queda un <xliff:g id="PERCENTAGE">%s</xliff:g> de bateria"</string> diff --git a/packages/SystemUI/res/values-ca/tiles_states_strings.xml b/packages/SystemUI/res/values-ca/tiles_states_strings.xml index aaf19c7c0cc6..067b970226d8 100644 --- a/packages/SystemUI/res/values-ca/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ca/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Desactivat"</item> <item msgid="5966994759929723339">"Activat"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml index de48119e7aaa..0e6643ef6a52 100644 --- a/packages/SystemUI/res/values-cs/strings.xml +++ b/packages/SystemUI/res/values-cs/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Jas"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Převrácení barev"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Korekce barev"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Správa uživatelů"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Hotovo"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zavřít"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"nahrávání obrazovky"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Bez názvu"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostní režim"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Zvětšovací okno"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ovládací prvky zvětšovacího okna"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Přiblížit"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Vysílání se nezdařilo"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Uložení se nezdařilo. Zkuste to znovu."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Uložení se nezdařilo."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Heslo musí mít alespoň 4 znaky"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Použijte méně než 16 znaků"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Číslo sestavení"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Číslo sestavení bylo zkopírováno do schránky."</string> <string name="basic_status" msgid="2315371112182658176">"Otevřít konverzaci"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Je k dispozici alespoň jedno zařízení"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Podržte zkratku"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Zrušit"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Otočit"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Rozložte telefon, selfie bude lepší"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Otočit na přední displej pro lepší selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Pomocí zadního fotoaparátu pořiďte širší fotku s vyšším rozlišením."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Tato obrazovka se vypne"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Rozkládání rozkládacího zařízení"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Otáčení rozkládacího zařízení"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Zbývá <xliff:g id="PERCENTAGE">%s</xliff:g> baterie"</string> diff --git a/packages/SystemUI/res/values-cs/tiles_states_strings.xml b/packages/SystemUI/res/values-cs/tiles_states_strings.xml index 64e83e0c31b8..df3d403d14dc 100644 --- a/packages/SystemUI/res/values-cs/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-cs/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Vypnuto"</item> <item msgid="5966994759929723339">"Zapnuto"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml index 73ec8f55589c..0fc389736447 100644 --- a/packages/SystemUI/res/values-da/strings.xml +++ b/packages/SystemUI/res/values-da/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Lysstyrke"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Ombytning af farver"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Farvekorrigering"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Administrer brugere"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Udfør"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Luk"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"skærmoptagelse"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Ingen titel"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Vindue med forstørrelse"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Vindue med forstørrelsesstyring"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom ind"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Noget gik galt. Prøv igen."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Indlæser"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Caster medie"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Caster <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv. Tjek appen"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Ikke fundet"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Styringselement ikke tilgængeligt"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Der kan ikke udsendes en fællesbesked"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Der kan ikke gemmes. Prøv igen."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Der kan ikke gemmes."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Buildnummer"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Buildnummeret blev kopieret til udklipsholderen."</string> <string name="basic_status" msgid="2315371112182658176">"Åben samtale"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Mindst én enhed er tilgængelig"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Hold fingeren på genvejen"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Annuller"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Vend nu"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Fold telefonen ud for at tage en bedre selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Vil du bruge frontkameraet for at få bedre selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Brug bagsidekameraet for at få et bredere billede med højere opløsning."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Denne skærm slukkes"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldbar enhed foldes ud"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldbar enhed vendes om"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batteri tilbage"</string> diff --git a/packages/SystemUI/res/values-da/tiles_states_strings.xml b/packages/SystemUI/res/values-da/tiles_states_strings.xml index f0132dc66130..7e2f87de778e 100644 --- a/packages/SystemUI/res/values-da/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-da/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Fra"</item> <item msgid="5966994759929723339">"Til"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml index c3fb287e1cc2..d6568e7b1b8c 100644 --- a/packages/SystemUI/res/values-de/strings.xml +++ b/packages/SystemUI/res/values-de/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Helligkeit"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Farbumkehr"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Farbkorrektur"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Nutzer verwalten"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Fertig"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Schließen"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"Bildschirmaufzeichnung"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Kein Titel"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Vergrößerungsfenster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Einstellungen für Vergrößerungsfenster"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Heranzoomen"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Ein Fehler ist aufgetreten. Versuch es noch einmal."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Wird geladen"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"Tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Medien werden gestreamt"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> wird gestreamt"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv – sieh in der App nach"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nicht gefunden"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Steuerelement nicht verfügbar"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Übertragung nicht möglich"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Speichern nicht möglich. Versuche es noch einmal."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Speichern nicht möglich."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Gib mindestens vier Zeichen ein"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Maximal 16 Zeichen möglich"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Build-Nummer"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Build-Nummer in Zwischenablage kopiert."</string> <string name="basic_status" msgid="2315371112182658176">"Offene Unterhaltung"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Mindestens ein Gerät ist verfügbar"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Verknüpfung berühren & halten"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Abbrechen"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Jetzt umdrehen"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Für ein besseres Selfie Smartphone öffnen"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Für ein besseres Selfie Frontbildschirm verwenden?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Verwende die Rückkamera, um Fotos mit einem weiteren Blickwinkel und höherer Auflösung aufzunehmen."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Dieses Display wird dann ausgeschaltet"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Faltbares Gerät wird geöffnet"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Faltbares Gerät wird umgeklappt"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akku bei <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-de/tiles_states_strings.xml b/packages/SystemUI/res/values-de/tiles_states_strings.xml index bc50e1603ea4..bd73a0583c53 100644 --- a/packages/SystemUI/res/values-de/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-de/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Aus"</item> <item msgid="5966994759929723339">"An"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml index dacd2f07d588..7b413edd78db 100644 --- a/packages/SystemUI/res/values-el/strings.xml +++ b/packages/SystemUI/res/values-el/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Φωτεινότητα"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Αντιστροφή χρωμάτων"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Διόρθωση χρωμάτων"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Διαχείριση χρηστών"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Τέλος"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Κλείσιμο"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"εγγραφή οθόνης"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Χωρίς τίτλο"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Κατάσταση αναμονής"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Παράθυρο μεγέθυνσης"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Στοιχεία ελέγχου παραθύρου μεγέθυνσης"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Μεγέθυνση"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Δεν είναι δυνατή η μετάδοση"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Δεν είναι δυνατή η αποθήκευση. Δοκιμάστε ξανά."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Δεν είναι δυνατή η αποθήκευση."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Αριθμός έκδοσης"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Ο αριθμός έκδοσης αντιγράφηκε στο πρόχειρο."</string> <string name="basic_status" msgid="2315371112182658176">"Άνοιγμα συνομιλίας"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Είναι διαθέσιμη τουλάχιστον μία συσκευή"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Παρατεταμένο άγγιγμα συντόμευσης"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Ακύρωση"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Αναστροφή τώρα"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Ξεδιπλώστε το τηλέφωνο για καλύτερη selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Αναστροφή στην μπροστ. οθόνη για καλύτερη selfie;"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Χρησιμοποιήστε την πίσω κάμερα για να βγάλετε μια φωτογραφία με μεγαλύτερο εύρος και υψηλότερη ανάλυση."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"* Αυτή η οθόνη θα απενεργοποιηθεί"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Αναδιπλούμενη συσκευή που ξεδιπλώνει"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Αναδιπλούμενη συσκευή που διπλώνει"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Απομένει το <xliff:g id="PERCENTAGE">%s</xliff:g> της μπαταρίας"</string> diff --git a/packages/SystemUI/res/values-el/tiles_states_strings.xml b/packages/SystemUI/res/values-el/tiles_states_strings.xml index 352af39bfe11..5c7c7380943a 100644 --- a/packages/SystemUI/res/values-el/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-el/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Ανενεργό"</item> <item msgid="5966994759929723339">"Ενεργό"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml index 5f6a481b3a86..5b6c106115cc 100644 --- a/packages/SystemUI/res/values-en-rAU/strings.xml +++ b/packages/SystemUI/res/values-en-rAU/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brightness"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Colour inversion"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Colour correction"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Font size"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Manage users"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Done"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Close"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"screen recording"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"No title"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Can’t broadcast"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Can’t save. Try again."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Can’t save."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Use at least four characters"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Use fewer than 16 characters"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Build number"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Build number copied to clipboard."</string> <string name="basic_status" msgid="2315371112182658176">"Open conversation"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• At least one device is available"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Touch & hold shortcut"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Flip now"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Unfold phone for a better selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Flip to front display for a better selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use the rear-facing camera for a wider photo with higher resolution."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ This screen will turn off"</b></string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Switch screens now"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Unfold phone"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Switch screens?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"For higher resolution, use the rear camera"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"For higher resolution, flip the phone"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string> diff --git a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml index 56cdbef092f2..0cf28684aa48 100644 --- a/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-en-rAU/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Off"</item> <item msgid="5966994759929723339">"On"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Unavailable"</item> + <item msgid="2478289035899842865">"Off"</item> + <item msgid="5137565285664080143">"On"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml index bd3fa831c84a..50134c831bee 100644 --- a/packages/SystemUI/res/values-en-rCA/strings.xml +++ b/packages/SystemUI/res/values-en-rCA/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brightness"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Color inversion"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Color correction"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Font size"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Manage users"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Done"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Close"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"screen recording"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"No title"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification Window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification Window Controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Can’t broadcast"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Can’t save. Try again."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Can’t save."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Use at least 4 characters"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Use fewer than 16 characters"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Build number"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Build number copied to clipboard."</string> <string name="basic_status" msgid="2315371112182658176">"Open conversation"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• At least one device is available"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Touch & hold shortcut"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Flip now"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Unfold phone for a better selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Flip to front display for a better selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use the rear-facing camera for a wider photo with higher resolution."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ This screen will turn off"</b></string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Switch screens now"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Unfold phone"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Switch screens?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"For higher resolution, use the rear camera"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"For higher resolution, flip the phone"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string> diff --git a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml index 56cdbef092f2..0cf28684aa48 100644 --- a/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-en-rCA/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Off"</item> <item msgid="5966994759929723339">"On"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Unavailable"</item> + <item msgid="2478289035899842865">"Off"</item> + <item msgid="5137565285664080143">"On"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml index 5f6a481b3a86..5b6c106115cc 100644 --- a/packages/SystemUI/res/values-en-rGB/strings.xml +++ b/packages/SystemUI/res/values-en-rGB/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brightness"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Colour inversion"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Colour correction"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Font size"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Manage users"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Done"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Close"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"screen recording"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"No title"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Can’t broadcast"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Can’t save. Try again."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Can’t save."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Use at least four characters"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Use fewer than 16 characters"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Build number"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Build number copied to clipboard."</string> <string name="basic_status" msgid="2315371112182658176">"Open conversation"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• At least one device is available"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Touch & hold shortcut"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Flip now"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Unfold phone for a better selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Flip to front display for a better selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use the rear-facing camera for a wider photo with higher resolution."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ This screen will turn off"</b></string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Switch screens now"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Unfold phone"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Switch screens?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"For higher resolution, use the rear camera"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"For higher resolution, flip the phone"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string> diff --git a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml index 56cdbef092f2..0cf28684aa48 100644 --- a/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-en-rGB/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Off"</item> <item msgid="5966994759929723339">"On"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Unavailable"</item> + <item msgid="2478289035899842865">"Off"</item> + <item msgid="5137565285664080143">"On"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml index 5f6a481b3a86..5b6c106115cc 100644 --- a/packages/SystemUI/res/values-en-rIN/strings.xml +++ b/packages/SystemUI/res/values-en-rIN/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brightness"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Colour inversion"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Colour correction"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Font size"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Manage users"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Done"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Close"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"screen recording"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"No title"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Can’t broadcast"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Can’t save. Try again."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Can’t save."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Use at least four characters"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Use fewer than 16 characters"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Build number"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Build number copied to clipboard."</string> <string name="basic_status" msgid="2315371112182658176">"Open conversation"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• At least one device is available"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Touch & hold shortcut"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Flip now"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Unfold phone for a better selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Flip to front display for a better selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use the rear-facing camera for a wider photo with higher resolution."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ This screen will turn off"</b></string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Switch screens now"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Unfold phone"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Switch screens?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"For higher resolution, use the rear camera"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"For higher resolution, flip the phone"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string> diff --git a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml index 56cdbef092f2..0cf28684aa48 100644 --- a/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-en-rIN/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Off"</item> <item msgid="5966994759929723339">"On"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Unavailable"</item> + <item msgid="2478289035899842865">"Off"</item> + <item msgid="5137565285664080143">"On"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml index 93d48ef56dd8..f8f77591c8bb 100644 --- a/packages/SystemUI/res/values-en-rXC/strings.xml +++ b/packages/SystemUI/res/values-en-rXC/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brightness"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Color inversion"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Color correction"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Font size"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Manage users"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Done"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Close"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"screen recording"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"No title"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Magnification Window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification Window Controls"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom in"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Can’t broadcast"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Can’t save. Try again."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Can’t save."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Use at least 4 characters"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Use fewer than 16 characters"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Build number"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Build number copied to clipboard."</string> <string name="basic_status" msgid="2315371112182658176">"Open conversation"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• At least one device is available"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Touch & hold shortcut"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancel"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Flip now"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Unfold phone for a better selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Flip to front display for a better selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use the rear-facing camera for a wider photo with higher resolution."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930">""<b>"✱ This screen will turn off"</b>""</string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Switch screens now"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Unfold phone"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Switch screens?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"For higher resolution, use the rear camera"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"For higher resolution, flip the phone"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Foldable device being unfolded"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Foldable device being flipped around"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> battery remaining"</string> diff --git a/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml b/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml index 3a8e34c2ebdc..b9c8e5fcdd6a 100644 --- a/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-en-rXC/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Off"</item> <item msgid="5966994759929723339">"On"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Unavailable"</item> + <item msgid="2478289035899842865">"Off"</item> + <item msgid="5137565285664080143">"On"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml index 2e179de5b4d4..4b49a20551f5 100644 --- a/packages/SystemUI/res/values-es-rUS/strings.xml +++ b/packages/SystemUI/res/values-es-rUS/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brillo"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Invertir colores"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Corregir colores"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Administrar usuarios"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Listo"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Cerrar"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"Grabación de pant."</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sin título"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Ventana de ampliación"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controles de ampliación de la ventana"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Acercar"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Se produjo un error. Vuelve a intentarlo."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Cargando"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Transmitiendo tu contenido multimedia"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Transmitiendo <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inactivo. Verifica la app"</string> <string name="controls_error_removed" msgid="6675638069846014366">"No se encontró"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"El control no está disponible"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Error al iniciar transmisión"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"No se puede guardar. Vuelve a intentarlo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"No se puede guardar."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilación"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Se copió el número de compilación en el portapapeles."</string> <string name="basic_status" msgid="2315371112182658176">"Conversación abierta"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Hay al menos un dispositivo disponible."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Mantener presionado atajo"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancelar"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Girar ahora"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Despliega el teléfono para tomar una selfie mejor"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"¿Girar a pantalla frontal para mejores selfies?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Usa la cámara trasera para tomar una foto más amplia y con mejor resolución."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Esta pantalla se apagará"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo plegable siendo desplegado"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo plegable siendo girado"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> de batería restante"</string> diff --git a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml index 89ee62d1cd87..e15610096626 100644 --- a/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-es-rUS/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"No"</item> <item msgid="5966994759929723339">"Sí"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml index 2d8f0981fcd6..a180e2cf2f6d 100644 --- a/packages/SystemUI/res/values-es/strings.xml +++ b/packages/SystemUI/res/values-es/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brillo"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Invertir colores"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Corrección de color"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gestionar usuarios"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Hecho"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Cerrar"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"grabación de pantalla"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sin título"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"En espera"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Ventana de ampliación"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ventana de controles de ampliación"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Ampliar"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Se ha producido un error. Inténtalo de nuevo."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Cargando"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Enviando tu contenido multimedia"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Enviando <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inactivo, comprobar aplicación"</string> <string name="controls_error_removed" msgid="6675638069846014366">"No se ha encontrado"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Control no disponible"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"No se puede emitir"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"No se puede guardar. Inténtalo de nuevo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"No se puede guardar."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilación"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Número de compilación copiado en el portapapeles."</string> <string name="basic_status" msgid="2315371112182658176">"Conversación abierta"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Al menos un dispositivo debe estar disponible"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Mantén pulsado el acceso directo"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancelar"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Usar ahora"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Despliega el teléfono para hacer un selfie mejor"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"¿Usar pantalla frontal para hacer mejores selfies?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Usa la cámara trasera para hacer fotos más amplias y con mayor resolución."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Esta pantalla se apagará"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo plegable desplegándose"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo plegable mostrado desde varios ángulos"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Batería restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-es/tiles_states_strings.xml b/packages/SystemUI/res/values-es/tiles_states_strings.xml index fe4cbedb6b36..cee83711077c 100644 --- a/packages/SystemUI/res/values-es/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-es/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Desactivado"</item> <item msgid="5966994759929723339">"Activado"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml index a983a7ab6e25..b9d753e106cc 100644 --- a/packages/SystemUI/res/values-et/strings.xml +++ b/packages/SystemUI/res/values-et/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Heledus"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Värvide ümberpööramine"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Värviparandus"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Kasutajate haldamine"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Valmis"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Sule"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ekraanikuva salvest."</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Pealkiri puudub"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ooterežiim"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Suurendamisaken"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Suurendamisakna juhtelemendid"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Suumi sisse"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Midagi läks valesti. Proovige uuesti."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Laadimine"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tahvelarvuti"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Teie meedia ülekandmine"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Rakenduse <xliff:g id="APP_LABEL">%1$s</xliff:g> ülekandmine"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Passiivne, vaadake rakendust"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Ei leitud"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Juhtelement pole saadaval"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Ei saa üle kanda"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Ei saa salvestada. Proovige uuesti."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Ei saa salvestada."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Kasutage vähemalt 4 tähemärki"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Kasutage vähem kui 16 tähemärki"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Järgunumber"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Järgunumber kopeeriti lõikelauale."</string> <string name="basic_status" msgid="2315371112182658176">"Avage vestlus"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Vähemalt üks seade on saadaval"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pikalt puudutamise otsetee"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Tühista"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Pööra kohe ümber"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Voltige telefon parema selfi jaoks lahti"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Kas kasutada parema selfi jaoks esikaamerat?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Kasutage tagakülje kaamerat, et jäädvustada suurema eraldusvõimega laiem foto."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ See ekraan lülitatakse välja"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Volditava seadme lahtivoltimine"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Volditava seadme ümberpööramine"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akutase on <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-et/tiles_states_strings.xml b/packages/SystemUI/res/values-et/tiles_states_strings.xml index 07eddef9383e..7bf520f581c3 100644 --- a/packages/SystemUI/res/values-et/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-et/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Väljas"</item> <item msgid="5966994759929723339">"Sees"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml index 2cd0cedb1eae..722bd7870146 100644 --- a/packages/SystemUI/res/values-eu/strings.xml +++ b/packages/SystemUI/res/values-eu/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Distira"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Kolore-alderantzikatzea"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Koloreen zuzenketa"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Kudeatu erabiltzaileak"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Eginda"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Itxi"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"pantaila-grabaketa"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Ez du izenik"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Egonean"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Lupa-leihoa"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Lupa-leihoaren aukerak"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Handitu"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Arazoren bat izan da. Saiatu berriro."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Kargatzen"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tableta"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Multimedia-edukia igortzen"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> aplikazioa igortzen"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inaktibo; egiaztatu aplikazioa"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Ez da aurkitu"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Ez dago erabilgarri kontrolatzeko aukera"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Ezin da iragarri"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Ezin da gorde. Saiatu berriro."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Ezin da gorde."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Erabili lau karaktere gutxienez"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Erabili 16 karaktere baino gutxiago"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Konpilazio-zenbakia"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Kopiatu da konpilazio-zenbakia arbelean."</string> <string name="basic_status" msgid="2315371112182658176">"Elkarrizketa irekia"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Gutxienez gailu bat erabilgarri dago."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Eduki sakatuta lasterbidea"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Utzi"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Irauli"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Ireki telefonoa autoargazki hobeak ateratzeko"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Telefonoa irauli nahi duzu autoargazki hobeak ateratzeko?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Erabili atzeko kamera kalitate handiagoko argazki zabalago bat ateratzeko."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Pantaila itzali egingo da"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Gailu tolesgarria zabaltzen"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Gailu tolesgarria biratzen"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateriaren <xliff:g id="PERCENTAGE">%s</xliff:g> geratzen da"</string> diff --git a/packages/SystemUI/res/values-eu/tiles_states_strings.xml b/packages/SystemUI/res/values-eu/tiles_states_strings.xml index 3bf49c8e0c77..333ede134f45 100644 --- a/packages/SystemUI/res/values-eu/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-eu/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Desaktibatuta"</item> <item msgid="5966994759929723339">"Aktibatuta"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml index 328515001400..fa7c5c6e9f9d 100644 --- a/packages/SystemUI/res/values-fa/strings.xml +++ b/packages/SystemUI/res/values-fa/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"روشنایی"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"وارونگی رنگ"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"تصحیح رنگ"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"مدیریت کاربران"</string> <string name="quick_settings_done" msgid="2163641301648855793">"تمام"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"بستن"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ضبط صفحهنمایش"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"بدون عنوان"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"آمادهبهکار"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"پنجره درشتنمایی"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"کنترلهای پنجره درشتنمایی"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"زومپیش کردن"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"مشکلی پیش آمد. دوباره امتحان کنید."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"درحال بار کردن"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"رایانه لوحی"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"پخش محتوای رسانهها"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"پخش محتوای <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"غیرفعال، برنامه را بررسی کنید"</string> <string name="controls_error_removed" msgid="6675638069846014366">"پیدا نشد"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"کنترل دردسترس نیست"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"همهفرستی انجام نشد"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"ذخیره نشد. دوباره امتحان کنید."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"ذخیره نشد."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"حداقل از ۴ نویسه استفاده کنید"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"از کمتر از ۱۶ نویسه استفاده کنید"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"شماره ساخت"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"شماره ساخت در بریدهدان کپی شد."</string> <string name="basic_status" msgid="2315371112182658176">"باز کردن مکالمه"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• حداقل یک دستگاه دردسترس باشد"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"میانبر را لمس کنید و نگه دارید"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"لغو کردن"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"اکنون چرخانده شود"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"برای خویشگرفت بهتر، تلفن را باز کنید"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"برای خویشگرفت بهتر، از نمایشگر جلو استفاده شود؟"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"برای عکسی عریضتر با وضوح بالاتر، از دوربین عقب استفاده کنید."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ این صفحهنمایش خاموش خواهد شد"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"دستگاه تاشو درحال باز شدن"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"دستگاه تاشو درحال چرخش به اطراف"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> باتری باقی مانده است"</string> diff --git a/packages/SystemUI/res/values-fa/tiles_states_strings.xml b/packages/SystemUI/res/values-fa/tiles_states_strings.xml index 85f0bfdf86dd..436ea31f2044 100644 --- a/packages/SystemUI/res/values-fa/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-fa/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"خاموش"</item> <item msgid="5966994759929723339">"روشن"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml index 70af7abeef6e..7191d6c63126 100644 --- a/packages/SystemUI/res/values-fi/strings.xml +++ b/packages/SystemUI/res/values-fi/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Kirkkaus"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Käänteiset värit"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Värinkorjaus"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Ylläpidä käyttäjiä"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Valmis"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Sulje"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"näytön tallennus"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Ei nimeä"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Virransäästötila"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Suurennusikkuna"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Suurennusikkunan ohjaimet"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Lähennä"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Ei voi lähettää"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Tallennus ei onnistu. Yritä uudelleen."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Tallennus ei onnistu."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Koontiversion numero"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Koontiversion numero kopioitu leikepöydälle"</string> <string name="basic_status" msgid="2315371112182658176">"Avaa keskustelu"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ainakin yksi laite on käytettävissä"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Kosketa pikakuvaketta pitkään"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Peru"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Käännä nyt"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Saat paremman selfien, kun levität puhelimen"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Käännä etunäytölle, jotta saat paremman selfien?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Voit ottaa laajemman kuvan korkeammalla resoluutiolla, kun käytät takakameraa."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Tämä näyttö sammutetaan"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Taitettava laite taitetaan"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Taitettava laite käännetään ympäri"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akkua jäljellä <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fi/tiles_states_strings.xml b/packages/SystemUI/res/values-fi/tiles_states_strings.xml index 1505dc5c06bb..4bec4b3157cb 100644 --- a/packages/SystemUI/res/values-fi/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-fi/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Poissa päältä"</item> <item msgid="5966994759929723339">"Päällä"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml index e42f24bbe5c5..dbd35189a4f2 100644 --- a/packages/SystemUI/res/values-fr-rCA/strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Luminosité"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversion des couleurs"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correction des couleurs"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gérer les utilisateurs"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Terminé"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Fermer"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"enregistrement d\'écran"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sans titre"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Veille"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Fenêtre d\'agrandissement"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Commandes pour la fenêtre d\'agrandissement"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Effectuer un zoom avant"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Une erreur s\'est produite. Réessayez."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Chargement en cours…"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablette"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Diffusion de votre contenu multimédia en cours…"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Diffusion de <xliff:g id="APP_LABEL">%1$s</xliff:g> en cours…"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Délai expiré, vérifiez l\'appli"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Introuvable"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"La commande n\'est pas accessible"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Impossible de diffuser"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Impossible d\'enregistrer. Réessayez."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Impossible d\'enregistrer."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Numéro de version"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Le numéro de version a été copié dans le presse-papiers."</string> <string name="basic_status" msgid="2315371112182658176">"Ouvrir la conversation"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• qu\'au moins un appareil est utilisable;"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Maintenir le doigt sur raccourci"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Annuler"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Retourner maintenant"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Déplier le téléphone pour un meilleur égoportrait"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Retourner l\'écran pour un meilleur égoportrait?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Utilisez l\'appareil photo arrière pour une photo plus large avec une résolution supérieure."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"* Cet écran va s\'éteindre"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Appareil pliable en cours de dépliage"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Appareil pliable en train d\'être retourné"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Charge restante de la pile : <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml index c4088652fbdd..788f56de1bdc 100644 --- a/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-fr-rCA/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Désactivé"</item> <item msgid="5966994759929723339">"Activé"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml index 371396aa4463..ff8c44fe6e7b 100644 --- a/packages/SystemUI/res/values-fr/strings.xml +++ b/packages/SystemUI/res/values-fr/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Luminosité"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversion des couleurs"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correction des couleurs"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gérer les utilisateurs"</string> <string name="quick_settings_done" msgid="2163641301648855793">"OK"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Fermer"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"enregistrement écran"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sans titre"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Mode Veille imminent"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Fenêtre d\'agrandissement"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Fenêtre des commandes d\'agrandissement"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Faire un zoom avant"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Un problème est survenu. Réessayez."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Chargement…"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablette"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Casting de vos contenus multimédias"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Casting de <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Délai expiré, vérifier l\'appli"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Introuvable"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Commande indisponible"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Impossible de diffuser"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Impossible d\'enregistrer. Réessayez."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Impossible d\'enregistrer."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Numéro de build"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Numéro de build copié dans le presse-papiers."</string> <string name="basic_status" msgid="2315371112182658176">"Conversation ouverte"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Au moins un appareil est disponible"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Appuyez de manière prolongée sur raccourci"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Annuler"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Retourner"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Déplier le téléphone pour un meilleur selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Passer à l\'écran frontal pour un meilleur selfie ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Utilisez la caméra arrière pour prendre une photo plus large d\'une résolution supérieure."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Cet écran s\'éteindra"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Appareil pliable qui est déplié"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Appareil pliable qui est retourné"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> de batterie restante"</string> diff --git a/packages/SystemUI/res/values-fr/tiles_states_strings.xml b/packages/SystemUI/res/values-fr/tiles_states_strings.xml index 8c6c4f555a5c..3f63a9639a80 100644 --- a/packages/SystemUI/res/values-fr/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-fr/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Désactivé"</item> <item msgid="5966994759929723339">"Activé"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml index 9bea0ca9d822..62d0a3082b58 100644 --- a/packages/SystemUI/res/values-gl/strings.xml +++ b/packages/SystemUI/res/values-gl/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brillo"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversión da cor"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Corrección da cor"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Administrar usuarios"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Feito"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Pechar"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"gravación pantalla"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sen título"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Modo de espera"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Ventá de superposición"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controis de ampliación da ventá"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Achegar"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Produciuse un erro. Téntao de novo."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Cargando"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tableta"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Emitindo contido multimedia"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Emitindo <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inactivo. Comproba a app"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Non se atopou"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"O control non está dispoñible"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Non se puido iniciar a emisión"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Non se puido gardar a información. Téntao de novo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Non se pode gardar a información."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Número de compilación"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Copiouse o número de compilación no portapapeis."</string> <string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ten que haber polo menos un dispositivo dispoñible"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Mantén premido o atallo"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancelar"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Voltear agora"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Desprega o teléfono para unha autofoto mellor"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Usar a cámara dianteira para unha autofoto mellor?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Usa a cámara traseira para sacar unha foto máis ampla e con maior resolución."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Desactivarase esta pantalla"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo pregable abríndose"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo pregable xirando"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Batería restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-gl/tiles_states_strings.xml b/packages/SystemUI/res/values-gl/tiles_states_strings.xml index 590ec4ac515c..94fc3f487d17 100644 --- a/packages/SystemUI/res/values-gl/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-gl/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Desactivado"</item> <item msgid="5966994759929723339">"Activado"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml index fa55ea656618..ab37dbb011a5 100644 --- a/packages/SystemUI/res/values-gu/strings.xml +++ b/packages/SystemUI/res/values-gu/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"તેજ"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"વિપરીત રંગમાં બદલવું"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"રંગ સુધારણા"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"વપરાશકર્તાઓને મેનેજ કરો"</string> <string name="quick_settings_done" msgid="2163641301648855793">"થઈ ગયું"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"બંધ કરો"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"સ્ક્રીન રેકોર્ડિંગ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"કોઈ શીર્ષક નથી"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"સ્ટૅન્ડબાય"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"વિસ્તૃતીકરણ વિંડો"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"વિસ્તૃતીકરણ વિંડોના નિયંત્રણો"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"મોટું કરો"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"કંઈક ખોટું થયું. ફરી પ્રયાસ કરો."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"લોડ થઈ રહ્યું છે"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"ટૅબ્લેટ"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"તમારું મીડિયા કાસ્ટ કરી રહ્યાં છીએ"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> કાસ્ટ કરી રહ્યાં છીએ"</string> <string name="controls_error_timeout" msgid="794197289772728958">"નિષ્ક્રિય, ઍપને ચેક કરો"</string> <string name="controls_error_removed" msgid="6675638069846014366">"મળ્યું નથી"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"નિયંત્રણ ઉપલબ્ધ નથી"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"બ્રોડકાસ્ટ કરી શકતા નથી"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"સાચવી શકતા નથી. ફરી પ્રયાસ કરો."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"સાચવી શકતા નથી."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"બિલ્ડ નંબર"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"બિલ્ડ નંબર ક્લિપબૉર્ડ પર કૉપિ કર્યો."</string> <string name="basic_status" msgid="2315371112182658176">"વાતચીત ખોલો"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ઓછામાં ઓછું એક ડિવાઇસ ઉપલબ્ધ છે"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"શૉર્ટકટને ટચ વડે પળભર દબાવી રાખો"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"રદ કરો"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"હમણાં જ ફ્લિપ કરો"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"બહેતર સેલ્ફી લેવા માટે ફોન ખોલો"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"બહેતર સેલ્ફી લેવા ફ્રન્ટ ડિસ્પ્લે પર ફ્લિપ કરીએ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"વધુ ઉચ્ચ રિઝોલ્યુશનવાળો વિશાળ ફોટો લેવા માટે પાછલા કૅમેરાનો ઉપયોગ કરો."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ આ સ્ક્રીન બંધ થઈ જશે"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ફોલ્ડ કરી શકાય એવું ડિવાઇસ અનફોલ્ડ કરવામાં આવી રહ્યું છે"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ફોલ્ડ કરી શકાય એવું ડિવાઇસ ફ્લિપ કરવામાં આવી રહ્યું છે"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> બૅટરી બાકી છે"</string> diff --git a/packages/SystemUI/res/values-gu/tiles_states_strings.xml b/packages/SystemUI/res/values-gu/tiles_states_strings.xml index cc062a772149..e92168c37cb8 100644 --- a/packages/SystemUI/res/values-gu/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-gu/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"બંધ છે"</item> <item msgid="5966994759929723339">"ચાલુ છે"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml index c7b9fecd10f9..22933ba04605 100644 --- a/packages/SystemUI/res/values-hi/strings.xml +++ b/packages/SystemUI/res/values-hi/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"स्क्रीन की रोशनी"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"रंग बदलने की सुविधा"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"रंग में सुधार करने की सुविधा"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"उपयोगकर्ताओं को मैनेज करें"</string> <string name="quick_settings_done" msgid="2163641301648855793">"हो गया"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"रद्द करें"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"स्क्रीन रिकॉर्डिंग"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"कोई शीर्षक नहीं"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्टैंडबाई"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"स्क्रीन को बड़ा करके दिखाने वाली विंडो"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"स्क्रीन को बड़ा करके दिखाने वाली विंडो के नियंत्रण"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ज़ूम इन करें"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"कोई गड़बड़ी हुई. फिर से कोशिश करें."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"लोड हो रहा है"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"टैबलेट"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"आपका मीडिया कास्ट किया जा रहा है"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> को कास्ट किया जा रहा है"</string> <string name="controls_error_timeout" msgid="794197289772728958">"काम नहीं कर रहा, ऐप जांचें"</string> <string name="controls_error_removed" msgid="6675638069846014366">"कंट्रोल नहीं है"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"कंट्रोल मौजूद नहीं है"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ब्रॉडकास्ट नहीं किया जा सकता"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"सेव नहीं किया जा सका. फिर से कोशिश करें."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"सेव नहीं किया जा सका."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"कम से कम चार वर्ण इस्तेमाल करें"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"16 वर्ण से कम इस्तेमाल करें"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"बिल्ड नंबर"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"बिल्ड नंबर को क्लिपबोर्ड पर कॉपी किया गया."</string> <string name="basic_status" msgid="2315371112182658176">"ऐसी बातचीत जिसमें इंटरैक्शन डेटा मौजूद नहीं है"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• कम से कम एक डिवाइस उपलब्ध है"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"शॉर्टकट को दबाकर रखें"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"रद्द करें"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"अभी स्विच करें"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"बेहतर सेल्फ़ी के लिए फ़ोन को अनफ़ोल्ड करें"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"बेहतर सेल्फ़ी के लिए फ़्रंट डिसप्ले पर स्विच करें?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"वाइड ऐंगल में हाई रिज़ॉल्यूशन वाली फ़ोटो लेने के लिए, पीछे का कैमरा इस्तेमाल करें."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ यह स्क्रीन बंद हो जाएगी"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फ़ोल्ड किया जा सकने वाला डिवाइस अनफ़ोल्ड किया जा रहा है"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फ़ोल्ड किया जा सकने वाला डिवाइस पलटा जा रहा है"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> बैटरी बची है"</string> diff --git a/packages/SystemUI/res/values-hi/tiles_states_strings.xml b/packages/SystemUI/res/values-hi/tiles_states_strings.xml index a156b0c43ca6..0abf8b31ca1a 100644 --- a/packages/SystemUI/res/values-hi/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-hi/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"बंद है"</item> <item msgid="5966994759929723339">"चालू है"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml index 72bdbce2d6dd..5de0d542cbe0 100644 --- a/packages/SystemUI/res/values-hr/strings.xml +++ b/packages/SystemUI/res/values-hr/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Svjetlina"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzija boja"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Korekcija boja"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Veličina fonta"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Upravljajte korisnicima"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Gotovo"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zatvori"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"snimanje zaslona"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Bez naslova"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje mirovanja"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za povećavanje"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za povećavanje"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Povećaj"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Emitiranje nije uspjelo"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Spremanje nije uspjelo. Pokušajte ponovo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Spremanje nije uspjelo."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Upotrijebite barem četiri znaka"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Upotrijebite manje od 16 znakova"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Broj međuverzije"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Broj međuverzije kopiran je u međuspremnik."</string> <string name="basic_status" msgid="2315371112182658176">"Otvoreni razgovor"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Dostupan je najmanje jedan uređaj"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Prečac za dodirnuti i zadržati"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Odustani"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Prebaci"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Otvorite telefon da biste snimili bolji selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Prebaciti na prednji zaslon za bolji selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Upotrijebite stražnji fotoaparat za širu fotografiju s višom razlučivošću."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ovaj će se zaslon isključiti"</b></string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Promijenite zaslon odmah"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Otklopite telefon"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Želite li promijeniti zaslon?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"Za višu razlučivost upotrijebite stražnju kameru"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Za višu razlučivost okrenite telefon"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Rasklopljen sklopivi uređaj"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Okretanje sklopivog uređaja sa svih strana"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostalo je <xliff:g id="PERCENTAGE">%s</xliff:g> baterije"</string> diff --git a/packages/SystemUI/res/values-hr/tiles_states_strings.xml b/packages/SystemUI/res/values-hr/tiles_states_strings.xml index b69b06419281..32051ef19743 100644 --- a/packages/SystemUI/res/values-hr/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-hr/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Isključeno"</item> <item msgid="5966994759929723339">"Uključeno"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Nedostupno"</item> + <item msgid="2478289035899842865">"Isključeno"</item> + <item msgid="5137565285664080143">"Uključeno"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml index 0ad27c4af7b9..ffeeb14a3e74 100644 --- a/packages/SystemUI/res/values-hu/strings.xml +++ b/packages/SystemUI/res/values-hu/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Fényerő"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Színek invertálása"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Színjavítás"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Felhasználók kezelése"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Kész"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Bezárás"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"képernyőrögzítés"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Nincs cím"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Készenléti mód"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Nagyítás ablaka"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Nagyítási vezérlők ablaka"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Nagyítás"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nem sikerült a közvetítés"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"A mentés nem sikerült. Próbálja újra."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"A mentés nem sikerült."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Buildszám"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Buildszám a vágólapra másolva."</string> <string name="basic_status" msgid="2315371112182658176">"Beszélgetés megnyitása"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Legalább egy eszköz rendelkezésre áll"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Tartsa nyomva a parancsikont"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Mégse"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Átfordítás most"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Hajtsa ki a telefont jobb szelfi készítéséhez"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Átfordítja az előlapi kijelzőre a jobb szelfiért?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Használja az előlapi kamerát, hogy nagyobb felbontású, szélesebb fotót készíthessen"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ A képernyő kikapcsol"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Összehajtható eszköz kihajtása"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Összehajtható eszköz körbeforgatása"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Akkumulátor töltöttségi szintje: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-hu/tiles_states_strings.xml b/packages/SystemUI/res/values-hu/tiles_states_strings.xml index 050bc14d54ff..0416a5504ae9 100644 --- a/packages/SystemUI/res/values-hu/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-hu/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Ki"</item> <item msgid="5966994759929723339">"Be"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml index ff8f19af524b..4bd3a65c9ba4 100644 --- a/packages/SystemUI/res/values-hy/strings.xml +++ b/packages/SystemUI/res/values-hy/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Պայծառություն"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Գունաշրջում"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Գունաշտկում"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Կառավարել օգտատերերին"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Պատրաստ է"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Փակել"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"էկրանի տեսագրում"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Անանուն"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Սպասման ռեժիմ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Խոշորացման պատուհան"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Խոշորացման պատուհանի կառավարման տարրեր"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Մեծացնել"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Չհաջողվեց հեռարձակել"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Չհաջողվեց պահել։ Նորից փորձեք։"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Չհաջողվեց պահել։"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Օգտագործեք առնվազն 4 նիշ"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Օգտագործեք ոչ ավել քան 16 նիշ"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Կառուցման համարը"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Կառուցման համարը պատճենվեց սեղմատախտակին։"</string> <string name="basic_status" msgid="2315371112182658176">"Բաց զրույց"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Հասանելի է առնվազն մեկ սարք"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Հպեք դյուրանցմանը և պահեք"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Չեղարկել"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Շրջել հիմա"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Բացեք հեռախոսի փեղկը՝ ավելի լավ սելֆի անելու համար"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Հեռախոսը էկրանով դեպի ձե՞զ շրջեցիք"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Օգտագործեք հետևի տեսախցիկը՝ ավելի բարձր լուծաչափով և ավելի լայն լուսանկար ստանալու համար։"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Այս էկրանը կանջատվի"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ծալովի սարք՝ բացված վիճակում"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Ծալովի սարք՝ շրջված վիճակում"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Մարտկոցի լիցքը՝ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-hy/tiles_states_strings.xml b/packages/SystemUI/res/values-hy/tiles_states_strings.xml index 6015fbd75b3c..9f30f1cd3a87 100644 --- a/packages/SystemUI/res/values-hy/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-hy/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Անջատված է"</item> <item msgid="5966994759929723339">"Միացված է"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml index 12495c164d2d..0618ec6d6463 100644 --- a/packages/SystemUI/res/values-in/strings.xml +++ b/packages/SystemUI/res/values-in/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Kecerahan"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversi warna"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Koreksi warna"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Kelola pengguna"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Selesai"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Tutup"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"perekaman layar"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Tanpa judul"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Siaga"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Jendela Pembesaran"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrol Jendela Pembesaran"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Perbesar"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Terjadi error. Coba lagi."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Memuat"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Mentransmisikan media"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Mentransmisikan <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Nonaktif, periksa aplikasi"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Tidak ditemukan"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrol tidak tersedia"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Tidak dapat menyiarkan"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Tidak dapat menyimpan. Coba lagi."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Tidak dapat menyimpan."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Nomor build"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Nomor versi disalin ke papan klip."</string> <string name="basic_status" msgid="2315371112182658176">"Membuka percakapan"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Tersedia minimal satu perangkat"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Sentuh lama pintasan"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Batal"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Balik sekarang"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Bentangkan ponsel untuk selfie yang lebih baik"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Balik ke layar depan untuk selfie yang lebih bagus?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Gunakan kamera belakang untuk foto dengan resolusi lebih tinggi dan lebih lebar."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Layar ini akan dinonaktifkan"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Perangkat foldable sedang dibentangkan"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Perangkat foldable sedang dibalik"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Baterai tersisa <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-in/tiles_states_strings.xml b/packages/SystemUI/res/values-in/tiles_states_strings.xml index 5416c8f77ca6..c31404089220 100644 --- a/packages/SystemUI/res/values-in/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-in/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Nonaktif"</item> <item msgid="5966994759929723339">"Aktif"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml index 87b8a735ccc3..afdaa5dbd56d 100644 --- a/packages/SystemUI/res/values-is/strings.xml +++ b/packages/SystemUI/res/values-is/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Birtustig"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Umsnúningur lita"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Litaleiðrétting"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Stjórna notendum"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Lokið"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Loka"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"skjáupptaka"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Enginn titill"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Biðstaða"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Stækkunargluggi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Stækkunarstillingar glugga"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Auka aðdrátt"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Eitthvað fór úrskeiðis. Reyndu aftur."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Hleður"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"spjaldtölva"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Sendir út efni frá þér"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Sendir út <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Óvirkt, athugaðu forrit"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Fannst ekki"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Stýring er ekki tiltæk"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Ekki hægt að senda út"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Ekki hægt að vista. Reyndu aftur."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Ekki hægt að vista."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Útgáfunúmer smíðar"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Útgáfunúmer smíðar afritað á klippiborð."</string> <string name="basic_status" msgid="2315371112182658176">"Opna samtal"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Að minnsta kosti eitt tæki er tiltækt"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Haltu flýtilyklinum inni"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Hætta við"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Snúa núna"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Opnaðu símann til að taka betri sjálfsmynd"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Snúa á framskjá til að ná betri sjálfsmynd?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Notaðu aftari myndavélina til að ná víðara sjónarhorni með meiri upplausn."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Slökkt verður á þessum skjá"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Samanbrjótanlegt tæki opnað"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Samanbrjótanlegu tæki snúið við"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> hleðsla eftir á rafhlöðu"</string> diff --git a/packages/SystemUI/res/values-is/tiles_states_strings.xml b/packages/SystemUI/res/values-is/tiles_states_strings.xml index 12dd776a357c..cca4943a062e 100644 --- a/packages/SystemUI/res/values-is/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-is/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Slökkt"</item> <item msgid="5966994759929723339">"Kveikt"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml index bc89cbb37b2d..2f366ecab79c 100644 --- a/packages/SystemUI/res/values-it/strings.xml +++ b/packages/SystemUI/res/values-it/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Luminosità"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversione dei colori"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correzione del colore"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gestisci utenti"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Fine"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Chiudi"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"Registraz. schermo"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Senza titolo"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Finestra ingrandimento"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Finestra controlli di ingrandimento"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumenta lo zoom"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Impossibile trasmettere"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Impossibile salvare. Riprova."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Impossibile salvare."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Numero build"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Numero build copiato negli appunti."</string> <string name="basic_status" msgid="2315371112182658176">"Apri conversazione"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ci sia almeno un dispositivo disponibile"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Tocca scorciatoia/tieni premuto"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Annulla"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Gira ora"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Apri il telefono per un selfie migliore"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Passare al display frontale per un selfie migliore?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Utilizza la fotocamera posteriore per una foto più ampia con maggiore risoluzione."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Questo schermo verrà spento"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo pieghevole che viene aperto"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo pieghevole che viene capovolto"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batteria rimanente"</string> diff --git a/packages/SystemUI/res/values-it/tiles_states_strings.xml b/packages/SystemUI/res/values-it/tiles_states_strings.xml index 5ec557bbaf7d..79e5aca07162 100644 --- a/packages/SystemUI/res/values-it/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-it/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Off"</item> <item msgid="5966994759929723339">"On"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml index 863312774142..840744bb9afb 100644 --- a/packages/SystemUI/res/values-iw/strings.xml +++ b/packages/SystemUI/res/values-iw/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"בהירות"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"היפוך צבעים"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"תיקון צבע"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ניהול משתמשים"</string> <string name="quick_settings_done" msgid="2163641301648855793">"סיום"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"סגירה"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"הקלטת המסך"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ללא שם"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"המתנה"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"חלון הגדלה"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"בקרות של חלון ההגדלה"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"התקרבות"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"לא ניתן לשדר"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"לא ניתן לשמור. כדאי לנסות שוב."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"לא ניתן לשמור."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"יש להזין 4 תווים לפחות"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"אפשר להזין עד 16 תווים"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"מספר Build"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"מספר ה-Build הועתק ללוח."</string> <string name="basic_status" msgid="2315371112182658176">"פתיחת שיחה"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• יש לפחות מכשיר אחד זמין"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"מקש קיצור ללחיצה ארוכה"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ביטול"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"אני רוצה להפוך"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"כדי לצלם תמונת סלפי טובה יותר, פותחים את הטלפון"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"להפוך למסך הקדמי כדי לצלם תמונת סלפי טובה יותר?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"במצלמה האחורית אפשר לצלם תמונה רחבה יותר ברזולוציה גבוהה יותר."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ המסך יכבה"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"מכשיר מתקפל עובר למצב לא מקופל"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"מכשיר מתקפל עובר למצב מהופך"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"רמת הטעינה שנותרה בסוללה: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-iw/tiles_states_strings.xml b/packages/SystemUI/res/values-iw/tiles_states_strings.xml index 91577b81a5d3..374f5af7f513 100644 --- a/packages/SystemUI/res/values-iw/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-iw/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"כבוי"</item> <item msgid="5966994759929723339">"מופעל"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml index 9aef2a99adbf..4e9c1bdda389 100644 --- a/packages/SystemUI/res/values-ja/strings.xml +++ b/packages/SystemUI/res/values-ja/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"画面の明るさ"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"色反転"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"色補正"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ユーザーを管理"</string> <string name="quick_settings_done" msgid="2163641301648855793">"完了"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"閉じる"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"画面の録画"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"タイトルなし"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"スタンバイ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"拡大ウィンドウ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"拡大ウィンドウ コントロール"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"拡大"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"エラーが発生しました。もう一度お試しください。"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"読み込んでいます"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"タブレット"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"メディアをキャストしています"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> をキャストしています"</string> <string name="controls_error_timeout" msgid="794197289772728958">"無効: アプリをご確認ください"</string> <string name="controls_error_removed" msgid="6675638069846014366">"見つかりませんでした"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"コントロールを使用できません"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ブロードキャストできません"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"保存できません。もう一度お試しください。"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"保存できません。"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"4 文字以上にしてください"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"使用できる文字数は 16 文字未満です"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"ビルド番号"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"ビルド番号をクリップボードにコピーしました。"</string> <string name="basic_status" msgid="2315371112182658176">"空の会話"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• 利用できるデバイスが 1 台以上ある"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ショートカットの長押しが必要です"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"キャンセル"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"切り替える"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"高画質で撮るにはスマートフォンを開いてください"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"前面ディスプレイに切り替えて綺麗に撮りましょう"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"高解像度で広い範囲を撮影するには、背面カメラを使用してください。"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱この画面は OFF になります"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"折りたたみ式デバイスが広げられている"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"折りたたみ式デバイスがひっくり返されている"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"バッテリー残量 <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ja/tiles_states_strings.xml b/packages/SystemUI/res/values-ja/tiles_states_strings.xml index c2a3321dc19f..64f7c394499c 100644 --- a/packages/SystemUI/res/values-ja/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ja/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"OFF"</item> <item msgid="5966994759929723339">"ON"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml index 62efabe9f9f6..b6ab02c554a4 100644 --- a/packages/SystemUI/res/values-ka/strings.xml +++ b/packages/SystemUI/res/values-ka/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"განათება"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ფერთა ინვერსია"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ფერთა კორექცია"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"მომხმარებლების მართვა"</string> <string name="quick_settings_done" msgid="2163641301648855793">"დასრულდა"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"დახურვა"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ეკრანის ჩაწერა"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"უსათაურო"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"მოლოდინის რეჟიმი"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"გადიდების ფანჯარა"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"გადიდების კონტროლის ფანჯარა"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"მასშტაბის გადიდება"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ტრანსლაცია შეუძლებელია"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"შენახვა ვერ ხერხდება. ცადეთ ხელახლა."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"შენახვა ვერ ხერხდება."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"გამოიყენეთ მინიმუმ 4 სიმბოლო."</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"გამოიყენეთ 16-ზე ნაკლები სიმბოლო"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"ანაწყობის ნომერი"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"ანაწყობის ნომერი დაკოპირებულია გაცვლის ბუფერში."</string> <string name="basic_status" msgid="2315371112182658176">"მიმოწერის გახსნა"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ხელმისაწვდომია მინიმუმ ერთი მოწყობილობა"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"შეხების დაamp; მოცდის მალსახმობი"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"გაუქმება"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ახლა გადატრიალება"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"გაშალეთ ტელეფონი უკეთესი სელფისთვის"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"გამოვიყენოთ წინა ეკრანი უკეთესი სელფის მისაღებად?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"გამოიყენეთ უკანა კამერა უფრო ფართო ფოტოს გადასაღებად მაღალი გარჩევადობით."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ეს ეკრანი გამოირთვება"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"დასაკეცი მოწყობილობა იხსნება"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"დასაკეცი მოწყობილობა ტრიალებს"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"დარჩენილია ბატარეის <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ka/tiles_states_strings.xml b/packages/SystemUI/res/values-ka/tiles_states_strings.xml index c95187404d48..99c5263a1102 100644 --- a/packages/SystemUI/res/values-ka/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ka/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"გამორთულია"</item> <item msgid="5966994759929723339">"ჩართულია"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml index 56d8b91b17de..79d54c55bfb8 100644 --- a/packages/SystemUI/res/values-kk/strings.xml +++ b/packages/SystemUI/res/values-kk/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Жарықтығы"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Түс инверсиясы"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Түсті түзету"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Пайдаланушыларды басқару"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Дайын"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Жабу"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"экранды бейнеге жазу"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Атауы жоқ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Күту режимі"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Ұлғайту терезесі"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ұлғайту терезесінің басқару элементтері"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Ұлғайту"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Бірдеңе дұрыс болмады. Қайталап көріңіз."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Жүктеліп жатыр"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"планшет"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Медиаконтентті трансляциялау"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Трансляция: <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Өшірулі. Қолданба тексеріңіз."</string> <string name="controls_error_removed" msgid="6675638069846014366">"Табылмады"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Басқару виджеті қолжетімсіз"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Тарату мүмкін емес"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Сақталмайды. Қайталап көріңіз."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Сақталмайды."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Құрама нөмірі"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Құрама нөмірі буферге көшірілді."</string> <string name="basic_status" msgid="2315371112182658176">"Ашық әңгіме"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Кемінде бір құрылғы қолжетімді"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Таңбашаны басып тұрыңыз."</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Бас тарту"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Айналдыру"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Жақсырақ селфи түсіру үшін телефонды жазыңыз"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Жақсырақ селфи үшін алдыңғы экранға ауысасыз ба?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Ажыратымдылығы жоғары кеңірек фотосурет түсіру үшін артқы камераны пайдаланыңыз."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Бұл экран өшіріледі."</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Бүктемелі құрылғы ашылып жатыр."</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Бүктемелі құрылғы аударылып жатыр."</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Қалған батарея заряды: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-kk/tiles_states_strings.xml b/packages/SystemUI/res/values-kk/tiles_states_strings.xml index c312b4957615..be7546eb7686 100644 --- a/packages/SystemUI/res/values-kk/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-kk/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Өшірулі."</item> <item msgid="5966994759929723339">"Қосулы."</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml index 3a04488f0405..306d104a9292 100644 --- a/packages/SystemUI/res/values-km/strings.xml +++ b/packages/SystemUI/res/values-km/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ពន្លឺ"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ការបញ្ច្រាសពណ៌"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ការកែតម្រូវពណ៌"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"គ្រប់គ្រងអ្នកប្រើប្រាស់"</string> <string name="quick_settings_done" msgid="2163641301648855793">"រួចរាល់"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"បិទ"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ការថតវីដេអូអេក្រង់"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"គ្មានចំណងជើង"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ផ្អាកដំណើរការ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"វិនដូការពង្រីក"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"វិនដូគ្រប់គ្រងការពង្រីក"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ពង្រីក"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"មានអ្វីមួយខុសប្រក្រតី។ សូមព្យាយាមម្ដងទៀត។"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"កំពុងផ្ទុក"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"ថេប្លេត"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"កំពុងភ្ជាប់មេឌៀរបស់អ្នក"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"កំពុងភ្ជាប់ <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"អសកម្ម ពិនិត្យមើលកម្មវិធី"</string> <string name="controls_error_removed" msgid="6675638069846014366">"រកមិនឃើញទេ"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"មិនអាចគ្រប់គ្រងបានទេ"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"មិនអាចផ្សាយបានទេ"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"មិនអាចរក្សាទុកបានទេ។ សូមព្យាយាមម្ដងទៀត។"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"មិនអាចរក្សាទុកបានទេ។"</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"លេខកំណែបង្កើត"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"បានចម្លងលេខកំណែបង្កើតទៅឃ្លីបបត។"</string> <string name="basic_status" msgid="2315371112182658176">"បើកការសន្ទនា"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ឧបករណ៍យ៉ាងតិចមួយអាចប្រើបាន"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ចុចឱ្យជាប់លើផ្លូវកាត់"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"បោះបង់"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ត្រឡប់ឥឡូវនេះ"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"លាតទូរសព្ទ ដើម្បីសែលហ្វីកាន់តែប្រសើរ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ត្រឡប់ទៅផ្ទាំងអេក្រង់ខាងមុខ ដើម្បីថតសែលហ្វីកាន់តែបានល្អឬ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ប្រើកាមេរ៉ាខាងក្រោយ ដើម្បីទទួលបានរូបថតកាន់តែធំជាមួយនឹងកម្រិតគុណភាពកាន់តែខ្ពស់។"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ អេក្រង់នេះនឹងបិទ"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ឧបករណ៍អាចបត់បានកំពុងត្រូវបានលា"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ឧបករណ៍អាចបត់បានកំពុងត្រូវបានលា"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"ថ្មនៅសល់ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-km/tiles_states_strings.xml b/packages/SystemUI/res/values-km/tiles_states_strings.xml index ec748cfac142..37e839f01dfc 100644 --- a/packages/SystemUI/res/values-km/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-km/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"បិទ"</item> <item msgid="5966994759929723339">"បើក"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml index dbc7e1596019..1b186149ed09 100644 --- a/packages/SystemUI/res/values-kn/strings.xml +++ b/packages/SystemUI/res/values-kn/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ಪ್ರಕಾಶಮಾನ"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ಕಲರ್ ಇನ್ವರ್ಶನ್"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ಬಣ್ಣದ ತಿದ್ದುಪಡಿ"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ಬಳಕೆದಾರರನ್ನು ನಿರ್ವಹಿಸಿ"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ಮುಗಿದಿದೆ"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ಮುಚ್ಚಿರಿ"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ಸ್ಕ್ರೀನ್ ರೆಕಾರ್ಡಿಂಗ್"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ಯಾವುದೇ ಶೀರ್ಷಿಕೆಯಿಲ್ಲ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ಸ್ಟ್ಯಾಂಡ್ಬೈ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"ವರ್ಧನೆಯ ವಿಂಡೋ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ವರ್ಧನೆಯ ವಿಂಡೋ ನಿಯಂತ್ರಣಗಳು"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ಝೂಮ್ ಇನ್ ಮಾಡಿ"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ಪ್ರಸಾರ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"ಉಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ಪುನಃ ಪ್ರಯತ್ನಿಸಿ."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"ಉಳಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"ಕನಿಷ್ಠ 4 ಅಕ್ಷರಗಳನ್ನು ಬಳಸಿ"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"16 ಕ್ಕಿಂತ ಕಡಿಮೆ ಅಕ್ಷರಗಳನ್ನು ಬಳಸಿ"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"ಬಿಲ್ಡ್ ಸಂಖ್ಯೆ"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"ಬಿಲ್ಡ್ ಸಂಖ್ಯೆಯನ್ನು ಕ್ಲಿಪ್ಬೋರ್ಡ್ನಲ್ಲಿ ನಕಲಿಸಲಾಗಿದೆ."</string> <string name="basic_status" msgid="2315371112182658176">"ಸಂಭಾಷಣೆಯನ್ನು ತೆರೆಯಿರಿ"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ಕನಿಷ್ಠ ಒಂದು ಸಾಧನ ಲಭ್ಯವಿದೆ"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ಸ್ಪರ್ಶಿಸಿ ಹೋಲ್ಡ್ ಮಾಡಿ ಶಾರ್ಟ್ಕಟ್"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ರದ್ದುಗೊಳಿಸಿ"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ಈಗ ಫ್ಲಿಪ್ ಮಾಡಿ"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"ಉತ್ತಮ ಸೆಲ್ಫೀಗಾಗಿ ಫೋನ್ ಅನ್ನು ಅನ್ಫೋಲ್ಡ್ ಮಾಡಿ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ಉತ್ತಮ ಸೆಲ್ಫೀಗಾಗಿ ಮುಂಭಾಗದ ಕ್ಯಾಮರಾಗೆ ಫ್ಲಿಪ್ ಮಾಡಬೇಕೆ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ಹೆಚ್ಚಿನ ರೆಸಲ್ಯೂಷನ್ ಹೊಂದಿರುವ ವಿಶಾಲವಾದ ಫೋಟೋಗಾಗಿ ಹಿಂಭಾಗದ ಕ್ಯಾಮರಾವನ್ನು ಬಳಸಿ."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ಈ ಸ್ಕ್ರೀನ್ ಆಫ್ ಆಗುತ್ತದೆ"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ಫೋಲ್ಡ್ ಮಾಡಬಹುದಾದ ಸಾಧನವನ್ನು ಅನ್ಫೋಲ್ಡ್ ಮಾಡಲಾಗುತ್ತಿದೆ"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ಫೋಲ್ಡ್ ಮಾಡಬಹುದಾದ ಸಾಧನವನ್ನು ಸುತ್ತಲೂ ತಿರುಗಿಸಲಾಗುತ್ತಿದೆ"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ಬ್ಯಾಟರಿ ಉಳಿದಿದೆ"</string> diff --git a/packages/SystemUI/res/values-kn/tiles_states_strings.xml b/packages/SystemUI/res/values-kn/tiles_states_strings.xml index 864a607c8a39..8a2ad2a8bb13 100644 --- a/packages/SystemUI/res/values-kn/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-kn/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ಆಫ್ ಮಾಡಿ"</item> <item msgid="5966994759929723339">"ಆನ್ ಮಾಡಿ"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml index 1595de32f1c0..12cef5509c94 100644 --- a/packages/SystemUI/res/values-ko/strings.xml +++ b/packages/SystemUI/res/values-ko/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"밝기"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"색상 반전"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"색상 보정"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"사용자 관리"</string> <string name="quick_settings_done" msgid="2163641301648855793">"완료"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"닫기"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"화면 녹화"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"제목 없음"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"대기"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"확대 창"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"확대 창 컨트롤"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"확대"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"방송할 수 없음"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"저장할 수 없습니다. 다시 시도해 주세요."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"저장할 수 없습니다."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"빌드 번호"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"빌드 번호가 클립보드에 복사되었습니다."</string> <string name="basic_status" msgid="2315371112182658176">"대화 열기"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• 1대 이상의 기기를 사용할 수 있습니다."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"바로가기를 길게 터치하세요."</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"취소"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"지금 뒤집기"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"휴대전화를 열어서 더 나은 셀카를 찍어보세요"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"전면 디스플레이가 보이도록 뒤집어서 더 나은 셀카를 찍어보세요"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"후면 카메라를 통해 넓은 각도로 해상도가 높은 사진을 찍어보세요."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ 이 화면이 꺼집니다."</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"폴더블 기기를 펼치는 모습"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"폴더블 기기를 뒤집는 모습"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"배터리 <xliff:g id="PERCENTAGE">%s</xliff:g> 남음"</string> diff --git a/packages/SystemUI/res/values-ko/tiles_states_strings.xml b/packages/SystemUI/res/values-ko/tiles_states_strings.xml index c52c17cedc32..c3d9d44db26a 100644 --- a/packages/SystemUI/res/values-ko/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ko/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"꺼짐"</item> <item msgid="5966994759929723339">"켜짐"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml index 653292c1b74b..834d1bf69577 100644 --- a/packages/SystemUI/res/values-ky/strings.xml +++ b/packages/SystemUI/res/values-ky/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Жарыктыгы"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Түстөрдү инверсиялоо"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Түстөрдү тууралоо"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Колдонуучуларды тескөө"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Бүттү"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Жабуу"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"экранды жаздыруу"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Аталышы жок"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Көшүү режими"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Чоңойтуу терезеси"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Чоңойтуу терезесин башкаруу каражаттары"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Жакындатуу"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Кабарлоого болбойт"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Сакталган жок. Кайталап көрүңүз."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Сакталган жок."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Курама номери"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Курама номери алмашуу буферине көчүрүлдү."</string> <string name="basic_status" msgid="2315371112182658176">"Ачык сүйлөшүү"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Кеминде бир түзмөк жеткиликтүү"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Ыкчам баскычты басып туруңуз"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Токтотуу"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Азыр которуу"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Жакшы селфи тартуу үчүн негизги камерага которуңуз"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Жакшы селфи тартуу үчүн маңдайкы экранга которосузбу?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Кең жана жогорку дааналыктагы сүрөттү тартуу үчүн негизги камераны колдонуңуз."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Бул экран өчөт"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ачылып турган бүктөлмө түзмөк"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Оодарылып жаткан бүктөлмө түзмөк"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Батареянын кубаты: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ky/tiles_states_strings.xml b/packages/SystemUI/res/values-ky/tiles_states_strings.xml index f872926aa945..f4b84478d56b 100644 --- a/packages/SystemUI/res/values-ky/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ky/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Өчүк"</item> <item msgid="5966994759929723339">"Күйүк"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml index ce929e910ef7..0b4c2dc2ae00 100644 --- a/packages/SystemUI/res/values-lo/strings.xml +++ b/packages/SystemUI/res/values-lo/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ຄວາມແຈ້ງ"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ການປີ້ນສີ"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ການແກ້ໄຂສີ"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ຈັດການຜູ້ໃຊ້"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ແລ້ວໆ"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ປິດ"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ການບັນທຶກໜ້າຈໍ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ບໍ່ມີຊື່"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ສະແຕນບາຍ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"ໜ້າຈໍການຂະຫຍາຍ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ການຄວບຄຸມໜ້າຈໍການຂະຫຍາຍ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ຊູມເຂົ້າ"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ບໍ່ສາມາດອອກອາກາດໄດ້"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"ບໍ່ສາມາດບັນທຶກໄດ້. ກະລຸນາລອງໃໝ່."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"ບໍ່ສາມາດບັນທຶກໄດ້."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"ໃຊ້ຢ່າງໜ້ອຍ 4 ຕົວອັກສອນ"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"ໃຊ້ໜ້ອຍກວ່າ 16 ຕົວອັກສອນ"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"ໝາຍເລກສ້າງ"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"ສຳເນົາໝາຍເລກສ້າງໄປໃສ່ຄລິບບອດແລ້ວ."</string> <string name="basic_status" msgid="2315371112182658176">"ເປີດການສົນທະນາ"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ມີຢ່າງໜ້ອຍ 1 ອຸປະກອນພ້ອມໃຫ້ນຳໃຊ້"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ແຕະທາງລັດຄ້າງໄວ້"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ຍົກເລີກ"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ປີ້ນດຽວນີ້"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"ກາງໂທລະສັບອອກເພື່ອການຖ່າຍເຊວຟີທີ່ດີຂຶ້ນ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ປີ້ນເປັນຈໍສະແດງຜົນດ້ານໜ້າເພື່ອການຖ່າຍເຊວຟີທີ່ດີຂຶ້ນບໍ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ໃຊ້ກ້ອງຫຼັງເພື່ອການຖ່າຍຮູບທີ່ກວ້າງຂຶ້ນດ້ວຍຄວາມລະອຽດສູງຂຶ້ນ."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ໜ້າຈໍນີ້ຈະປິດ"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ອຸປະກອນທີ່ພັບໄດ້ກຳລັງກາງອອກ"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ອຸປະກອນທີ່ພັກໄດ້ກຳລັງປີ້ນໄປມາ"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"ແບັດເຕີຣີເຫຼືອ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-lo/tiles_states_strings.xml b/packages/SystemUI/res/values-lo/tiles_states_strings.xml index 6ae37e472b0c..f7f4b623402c 100644 --- a/packages/SystemUI/res/values-lo/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-lo/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ປິດ"</item> <item msgid="5966994759929723339">"ເປີດ"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml index e153fe02626a..583624f7182d 100644 --- a/packages/SystemUI/res/values-lt/strings.xml +++ b/packages/SystemUI/res/values-lt/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Šviesumas"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Spalvų inversija"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Spalvų taisymas"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Tvarkyti naudotojus"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Atlikta"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Uždaryti"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ekrano įrašymas"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Nėra pavadinimo"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Budėjimo laikas"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Didinimo langas"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Didinimo lango valdikliai"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Artinti"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nepavyko transliuoti"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Nepavyko išsaugoti. Bandykite dar kartą."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Nepavyko išsaugoti."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Naudokite bent 4 simbolius"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Naudokite daugiausia 16 simbolių"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Versijos numeris"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Versijos numeris nukopijuotas į iškarpinę."</string> <string name="basic_status" msgid="2315371112182658176">"Atidaryti pokalbį"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Pasiekiamas bent vienas įrenginys"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Paliesk. ir palaik. spart. klav."</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Atšaukti"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Apversti dabar"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Užfiksuokite geresnę asmenukę atlenkę telefoną"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Užfiksuoti geresnę asmenukę įjungus priekinį rodinį?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Naudokite galinį fotoaparatą, kad nuotrauka būtų platesnė ir didesnės skyros."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Šis ekranas išsijungs"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Lankstomasis įrenginys išlankstomas"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Lankstomasis įrenginys apverčiamas"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Liko akumuliatoriaus įkrovos: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-lt/tiles_states_strings.xml b/packages/SystemUI/res/values-lt/tiles_states_strings.xml index 03d98c42ff19..58379150e4a7 100644 --- a/packages/SystemUI/res/values-lt/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-lt/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Išjungta"</item> <item msgid="5966994759929723339">"Įjungta"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml index 2878f7dc030c..2b68f2ae6a1b 100644 --- a/packages/SystemUI/res/values-lv/strings.xml +++ b/packages/SystemUI/res/values-lv/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Spilgtums"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Krāsu inversija"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Krāsu korekcija"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Pārvaldīt lietotājus"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Gatavs"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Aizvērt"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ekrāna ierakstīšana"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Nav nosaukuma"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Gaidstāve"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Palielināšanas logs"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Palielināšanas loga vadīklas"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Tuvināt"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Radās kļūda. Mēģiniet vēlreiz."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Notiek ielāde"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"planšetdators"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Notiek multivides satura apraide"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Notiek lietotnes <xliff:g id="APP_LABEL">%1$s</xliff:g> apraide"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Neaktīva, pārbaudiet lietotni"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Netika atrasta"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Vadīkla nav pieejama"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nevar apraidīt"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Nevar saglabāt. Mēģiniet vēlreiz."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Nevar saglabāt."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Versijas numurs"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Versijas numurs ir kopēts starpliktuvē."</string> <string name="basic_status" msgid="2315371112182658176">"Atvērt sarunu"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ir pieejama vismaz viena ierīce."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pieskarieties saīsnei un turiet."</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Atcelt"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Apvērst tūlīt"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Labākas pašbildes uzņemšana, atlokot tālruni"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Vai apvērst uz priekšējo kameru labākai pašbildei?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Lai uzņemtu platāku fotoattēlu ar augstāku izšķirtspēju, izmantojiet aizmugurējo kameru."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Šis ekrāns tiks izslēgts."</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Salokāma ierīce tiek atlocīta"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Salokāma ierīce tiek apgriezta"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Atlikušais uzlādes līmenis: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-lv/tiles_states_strings.xml b/packages/SystemUI/res/values-lv/tiles_states_strings.xml index 6e9264d2a347..9a534c4eaeed 100644 --- a/packages/SystemUI/res/values-lv/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-lv/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Izslēgts"</item> <item msgid="5966994759929723339">"Ieslēgts"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml index b7d69cf301e4..3ba3bc067fd6 100644 --- a/packages/SystemUI/res/values-mk/strings.xml +++ b/packages/SystemUI/res/values-mk/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Осветленост"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Инверзија на боите"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Корекција на боите"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Управувајте со корисниците"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Готово"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Затвори"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"снимање на екранот"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Без наслов"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Подготвеност"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Прозорец за зголемување"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Контроли на прозорец за зголемување"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Зумирај"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Нешто не е во ред. Обидете се повторно."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Се вчитува"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"таблет"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Емитување на вашите аудиовизуелни содржини"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Се емитува <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактивна, провери апликација"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не е најдено"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Контролата не е достапна"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Не може да се емитува"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Не може да се зачува. Обидете се повторно."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Не може да се зачува."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Број на верзија"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Бројот на верзијата е копиран во привремената меморија."</string> <string name="basic_status" msgid="2315371112182658176">"Започни разговор"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• достапен е најмалку еден уред"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Допрете и задржете ја кратенката"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Откажи"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Префрли сега"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Отворете го телефонот за подобро селфи"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Да се префрли на предниот екран за подобро селфи?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Користете ја задната камера за поширока фотографија со повисока резолуција."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Екранов ќе се исклучи"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Преклопувачки уред се отклопува"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Преклопувачки уред се врти"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Преостаната батерија: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-mk/tiles_states_strings.xml b/packages/SystemUI/res/values-mk/tiles_states_strings.xml index 96c8a49ae0b6..d088f120b362 100644 --- a/packages/SystemUI/res/values-mk/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-mk/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Исклучено"</item> <item msgid="5966994759929723339">"Вклучено"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml index 46258cb050b5..123c42447b18 100644 --- a/packages/SystemUI/res/values-ml/strings.xml +++ b/packages/SystemUI/res/values-ml/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"തെളിച്ചം"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"നിറം വിപരീതമാക്കൽ"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"നിറം ശരിയാക്കൽ"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ഉപയോക്താക്കളെ മാനേജ് ചെയ്യുക"</string> <string name="quick_settings_done" msgid="2163641301648855793">"പൂർത്തിയാക്കി"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"അടയ്ക്കുക"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"സ്ക്രീൻ റെക്കോർഡിംഗ്"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"പേരില്ല"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"സ്റ്റാൻഡ്ബൈ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"മാഗ്നിഫിക്കേഷൻ വിൻഡോ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"മാഗ്നിഫിക്കേഷൻ വിൻഡോ നിയന്ത്രണങ്ങൾ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"സൂം ഇൻ ചെയ്യുക"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ബ്രോഡ്കാസ്റ്റ് ചെയ്യാനാകുന്നില്ല"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"സംരക്ഷിക്കാൻ കഴിയില്ല. വീണ്ടും ശ്രമിക്കുക."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"സംരക്ഷിക്കാൻ കഴിയില്ല."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"കുറഞ്ഞത് 4 പ്രതീകങ്ങളെങ്കിലും ഉപയോഗിക്കുക"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"16-ൽ കുറവ് പ്രതീകങ്ങൾ ഉപയോഗിക്കുക"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"ബിൽഡ് നമ്പർ"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"ക്ലിപ്പ്ബോർഡിലേക്ക് ബിൽഡ് നമ്പർ പകർത്തി."</string> <string name="basic_status" msgid="2315371112182658176">"സംഭാഷണം തുറക്കുക"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ഒരു ഉപകരണമെങ്കിലും ലഭ്യമാണ്"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"സ്പർശിച്ച് പിടിക്കുക കുറുക്കുവഴി"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"റദ്ദാക്കുക"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ഇപ്പോൾ ഫ്ലിപ്പ് ചെയ്യൂ"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"കൂടുതൽ മികച്ച സെൽഫി ലഭിക്കാൻ ഫോൺ അൺഫോൾഡ് ചെയ്യൂ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"മികച്ച സെൽഫിക്ക് ഫ്രണ്ട് ഡിസ്പ്ലേയിലേക്ക് മാറണോ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ഉയർന്ന റെസല്യൂഷൻ ഉള്ള, വീതി കൂടിയ ഫോട്ടോയ്ക്ക്, പിൻഭാഗത്തെ ക്യാമറ ഉപയോഗിക്കുക."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ഈ സ്ക്രീൻ ഓഫാകും"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ഫോൾഡ് ചെയ്യാവുന്ന ഉപകരണം അൺഫോൾഡ് ആകുന്നു"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ഫോൾഡ് ചെയ്യാവുന്ന ഉപകരണം, കറങ്ങുന്ന വിധത്തിൽ ഫ്ലിപ്പ് ആകുന്നു"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ബാറ്ററി ചാർജ് ശേഷിക്കുന്നു"</string> diff --git a/packages/SystemUI/res/values-ml/tiles_states_strings.xml b/packages/SystemUI/res/values-ml/tiles_states_strings.xml index 7a078737aa96..108e173e003a 100644 --- a/packages/SystemUI/res/values-ml/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ml/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ഓഫാണ്"</item> <item msgid="5966994759929723339">"ഓണാണ്"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml index 2ef821683a5e..d74e7dc56194 100644 --- a/packages/SystemUI/res/values-mn/strings.xml +++ b/packages/SystemUI/res/values-mn/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Тодрол"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Өнгө хувиргалт"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Өнгө тохируулга"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Хэрэглэгчдийг удирдах"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Дууссан"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Хаах"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"дэлгэцийн бичлэг"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Гарчиггүй"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Зогсолтын горим"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Томруулалтын цонх"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Томруулалтын цонхны хяналт"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Томруулах"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Алдаа гарлаа. Дахин оролдоно уу."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Ачаалж байна"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"таблет"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Таны медиаг дамжуулж байна"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g>-г дамжуулж байна"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Идэвхгүй байна, аппыг шалгана уу"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Олдсонгүй"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Хяналт боломжгүй байна"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Нэвтрүүлэх боломжгүй"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Хадгалах боломжгүй. Дахин оролдоно уу."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Хадгалах боломжгүй."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Хийцийн дугаар"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Хийцийн дугаарыг түр санах ойд хуулсан."</string> <string name="basic_status" msgid="2315371112182658176">"Харилцан яриаг нээх"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Дор хаяж нэг төхөөрөмж боломжтой"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Товчлолд хүрээд удаан дарна уу"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Цуцлах"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Одоо хөнтрөх"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Илүү сайн селфи хийхийн тулд утсаа дэлгэнэ үү"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Сайн сельфи авахаар урд талын дэлгэц рүү хөнтрөх үү?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Илүү өндөр нягтаршилтай илүү өргөн зураг авахын тулд арын камерыг ашиглана уу."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Энэ дэлгэц унтарна"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Эвхэгддэг төхөөрөмжийг дэлгэж байна"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Эвхэгддэг төхөөрөмжийг хөнтөрч байна"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> батарей үлдлээ"</string> diff --git a/packages/SystemUI/res/values-mn/tiles_states_strings.xml b/packages/SystemUI/res/values-mn/tiles_states_strings.xml index 776c4877d1ad..5cd21c1d2ec8 100644 --- a/packages/SystemUI/res/values-mn/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-mn/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Унтраалттай"</item> <item msgid="5966994759929723339">"Асаалттай"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml index c4fd4aae4827..3d73e2259c6e 100644 --- a/packages/SystemUI/res/values-mr/strings.xml +++ b/packages/SystemUI/res/values-mr/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"चमक"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"कलर इन्व्हर्जन"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"रंग सुधारणा"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"वापरकर्ते व्यवस्थापित करा"</string> <string name="quick_settings_done" msgid="2163641301648855793">"पूर्ण झाले"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"बंद करा"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"स्क्रीन रेकॉर्डिंग"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"शीर्षक नाही"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्टँडबाय"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"मॅग्निफिकेशन विंडो"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"मॅग्निफिकेशन विंडो नियंत्रणे"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"झूम इन करा"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"काहीतरी चूक झाली. पुन्हा प्रयत्न करा."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"लोड करत आहे"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"टॅबलेट"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"तुमचा मीडिया कास्ट करत आहे"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> कास्ट करत आहे"</string> <string name="controls_error_timeout" msgid="794197289772728958">"निष्क्रिय, ॲप तपासा"</string> <string name="controls_error_removed" msgid="6675638069846014366">"आढळले नाही"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"नियंत्रण उपलब्ध नाही"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ब्रॉडकास्ट करू शकत नाही"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"सेव्ह करू शकत नाही. पुन्हा प्रयत्न करा."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"सेव्ह करू शकत नाही."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"बिल्ड नंबर"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"बिल्ड नंबर क्लिपबोर्डवर कॉपी केला."</string> <string name="basic_status" msgid="2315371112182658176">"संभाषण उघडा"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• किमान एक डिव्हाइस उपलब्ध करणे"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"स्पर्श करा आणि धरून ठेवा शॉर्टकट"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"रद्द करा"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"आता फ्लिप करा"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"आणखी चांगल्या सेल्फीसाठी फोनबद्दल अधिक जाणून घ्या"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"आणखी चांगल्या सेल्फीसाठी फ्रंट डिस्प्ले वापरायचा का?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"उच्च रेझोल्यूशन असलेल्या विस्तृत फोटोसाठी रीअर कॅमेरा वापरा."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ही स्क्रीन बंद होईल"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फोल्ड करता येण्यासारखे डिव्हाइस अनफोल्ड केले जात आहे"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फोल्ड करता येण्यासारखे डिव्हाइस आजूबाजूला फ्लिप केले जात आहे"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> बॅटरी शिल्लक आहे"</string> diff --git a/packages/SystemUI/res/values-mr/tiles_states_strings.xml b/packages/SystemUI/res/values-mr/tiles_states_strings.xml index f75f0d097998..78560c4314c6 100644 --- a/packages/SystemUI/res/values-mr/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-mr/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"बंद आहे"</item> <item msgid="5966994759929723339">"सुरू आहे"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml index aa3626cf2c4f..c3408b7ad8e6 100644 --- a/packages/SystemUI/res/values-ms/strings.xml +++ b/packages/SystemUI/res/values-ms/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Kecerahan"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Penyongsangan warna"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Pembetulan warna"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Urus pengguna"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Selesai"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Tutup"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"rakaman skrin"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Tiada tajuk"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Tunggu sedia"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Tetingkap Pembesaran"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kawalan Tetingkap Pembesaran"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zum masuk"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Tidak dapat disiarkan"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Tidak dapat disimpan. Cuba lagi."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Tidak dapat disimpan."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Gunakan sekurang-kurangnya 4 aksara"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Gunakan kurang daripada 16 aksara"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Nombor binaan"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Nombor binaan disalin ke papan keratan."</string> <string name="basic_status" msgid="2315371112182658176">"Buka perbualan"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Sekurang-kurangnya satu peranti tersedia"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pintasan sentuh & tahan"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Batal"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Balikkan sekarang"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Buka telefon untuk swafoto yang lebih baik"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Balikkan ke paparan depan utk swafoto lebih baik?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Gunakan kamera menghadap belakang untuk mendapatkan foto yang lebih luas dengan resolusi yang lebih tinggi."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Skrin ini akan dimatikan"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Peranti boleh lipat dibuka"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Peranti boleh lipat diterbalikkan"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateri tinggal <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ms/tiles_states_strings.xml b/packages/SystemUI/res/values-ms/tiles_states_strings.xml index 9fa7ab51d064..f3dafa519140 100644 --- a/packages/SystemUI/res/values-ms/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ms/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Mati"</item> <item msgid="5966994759929723339">"Hidup"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml index 6338abf68cc2..b74dd93bf75f 100644 --- a/packages/SystemUI/res/values-my/strings.xml +++ b/packages/SystemUI/res/values-my/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"အလင်းတောက်ပမှု"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"အရောင်ပြောင်းပြန်ပြုလုပ်ရန်"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"အရောင် အမှန်ပြင်ခြင်း"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"အသုံးပြုသူများ စီမံရန်"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ပြီးပါပြီ"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ပိတ်ရန်"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"စခရင်ရိုက်ကူးမှု"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ခေါင်းစဉ် မရှိပါ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"အသင့်အနေအထား"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"ဝင်းဒိုး ချဲ့ခြင်း"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ဝင်းဒိုး ထိန်းချုပ်မှုများ ချဲ့ခြင်း"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ဇူးမ်ဆွဲရန်"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ထုတ်လွှင့်၍ မရပါ"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"သိမ်း၍မရပါ။ ထပ်စမ်းကြည့်ပါ။"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"သိမ်း၍မရပါ။"</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"တည်ဆောက်မှုနံပါတ်"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"တည်ဆောက်မှုနံပါတ်ကို ကလစ်ဘုတ်သို့ မိတ္တူကူးပြီးပါပြီ။"</string> <string name="basic_status" msgid="2315371112182658176">"စကားဝိုင်းကို ဖွင့်ရန်"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• အနည်းဆုံး စက်တစ်ခုသုံးနိုင်ရမည်"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ဖြတ်လမ်းလင့်ခ်ကို ထိပြီးဖိထားပါ"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"မလုပ်တော့"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ယခုလှည့်လိုက်ပါ"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"ပိုကောင်းသော ဆယ်လ်ဖီအတွက် ဖုန်းကိုဖြန့်လိုက်ပါ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ပိုကောင်းသော ဆယ်လ်ဖီအတွက် ဖန်သားပြင်ကိုလှည့်မလား။"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ပုံရိပ်ပြတ်သားကိန်း ပိုမြင့်ပြီး မြင်ကွင်းပိုကျယ်သည့် ဓာတ်ပုံအတွက် နောက်ဘက်ကင်မရာကို အသုံးပြုပါ။"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ဤဖန်သားပြင်ကို ပိတ်လိုက်မည်"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ခေါက်နိုင်သောစက်ကို ဖြန့်လိုက်သည်"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ခေါက်နိုင်သောစက်ကို တစ်ဘက်သို့ လှန်လိုက်သည်"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"ဘက်ထရီ <xliff:g id="PERCENTAGE">%s</xliff:g> ကျန်သေးသည်"</string> diff --git a/packages/SystemUI/res/values-my/tiles_states_strings.xml b/packages/SystemUI/res/values-my/tiles_states_strings.xml index 493a7f0977c6..cadf00975048 100644 --- a/packages/SystemUI/res/values-my/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-my/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ပိတ်"</item> <item msgid="5966994759929723339">"ဖွင့်"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml index 9a9ca35e2c81..af9cf7e24df4 100644 --- a/packages/SystemUI/res/values-nb/strings.xml +++ b/packages/SystemUI/res/values-nb/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Lysstyrke"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Fargeinvertering"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Fargekorrigering"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Administrer brukere"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Ferdig"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Lukk"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"skjermopptak"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Ingen tittel"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ventemodus"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Forstørringsvindu"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontroller for forstørringsvindu"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zoom inn"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Noe gikk galt. Prøv på nytt."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Laster inn"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"nettbrett"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Caster mediene"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Caster <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv. Sjekk appen"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Ikke funnet"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrollen er utilgjengelig"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Kan ikke kringkaste"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Kan ikke lagre. Prøv på nytt."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Kan ikke lagre."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Delversjonsnummer"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Delversjonsnummeret er kopiert til utklippstavlen."</string> <string name="basic_status" msgid="2315371112182658176">"Åpen samtale"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• minst én enhet er tilgjengelig"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Trykk på og hold inne snarveien"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Avbryt"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Vend nå"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Brett ut telefonen for å ta bedre selfier"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Vil du bruke frontkameraet for bedre selfier?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Bruk det bakovervendte kameraet for å ta bredere bilder med høyere oppløsning."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Denne skjermen slås av"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"En sammenleggbar enhet blir brettet ut"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"En sammenleggbar enhet blir snudd"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> batteri gjenstår"</string> diff --git a/packages/SystemUI/res/values-nb/tiles_states_strings.xml b/packages/SystemUI/res/values-nb/tiles_states_strings.xml index 6fa902a662ff..b465617aa6fd 100644 --- a/packages/SystemUI/res/values-nb/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-nb/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Av"</item> <item msgid="5966994759929723339">"På"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml index e460e263d101..ff017ab166cd 100644 --- a/packages/SystemUI/res/values-ne/strings.xml +++ b/packages/SystemUI/res/values-ne/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"उज्यालपन"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"कलर इन्भर्सन"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"कलर करेक्सन"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"प्रयोगकर्ताहरू व्यवस्थित गर्नुहोस्"</string> <string name="quick_settings_done" msgid="2163641301648855793">"भयो"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"बन्द गर्नुहोस्"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"स्क्रिन रेकर्डिङ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"शीर्षक छैन"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"स्ट्यान्डबाई"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"म्याग्निफिकेसन विन्डो"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"म्याग्निफिकेसन विन्डोका नियन्त्रणहरू"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"जुम इन गर्नुहोस्"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"प्रसारण गर्न सकिएन"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"सेभ गर्न सकिएन। फेरि प्रयास गर्नुहोस्।"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"सेभ गर्न सकिएन।"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"कम्तीमा ४ वटा वर्ण प्रयोग गर्नुहोस्"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"१६ वटाभन्दा कम वर्ण प्रयोग गर्नुहोस्"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"बिल्ड नम्बर"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"बिल्ड नम्बर कपी गरी क्लिपबोर्डमा सारियो।"</string> <string name="basic_status" msgid="2315371112182658176">"वार्तालाप खोल्नुहोस्"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• कम्तीमा एउटा डिभाइस उपलब्ध छ"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"सर्टकट थिचिराख्नुहोस्"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"रद्द गर्नुहोस्"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"अहिले नै फ्लिप गर्नुहोस्"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"अझ राम्रो सेल्फी खिच्न फोन अनफोल्ड गर्नुहोस्"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"अझ राम्रो सेल्फी खिच्न फ्लिप गरी अगाडिपट्टिको डिस्प्ले प्रयोग गर्ने हो?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"अझ बढी रिजोल्युसन भएको फराकिलो फोटो खिच्न पछाडिपट्टिको क्यामेरा प्रयोग गर्नुहोस्।"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ यो स्क्रिन अफ हुने छ"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"फोल्ड गर्न मिल्ने डिभाइस अनफोल्ड गरेको देखाइएको एनिमेसन"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"फोल्ड गर्न मिल्ने डिभाइस यताउता पल्टाएर देखाइएको एनिमेसन"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ब्याट्री बाँकी छ"</string> diff --git a/packages/SystemUI/res/values-ne/tiles_states_strings.xml b/packages/SystemUI/res/values-ne/tiles_states_strings.xml index 17193bafd9a3..bbdf72a3fa44 100644 --- a/packages/SystemUI/res/values-ne/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ne/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"अफ"</item> <item msgid="5966994759929723339">"अन"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml index 8d67715eda59..a368fcf90cab 100644 --- a/packages/SystemUI/res/values-nl/strings.xml +++ b/packages/SystemUI/res/values-nl/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Helderheid"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Kleurinversie"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Kleurcorrectie"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gebruikers beheren"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Klaar"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Sluiten"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"schermopname"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Geen titel"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stand-by"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Vergrotingsvenster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Bediening van vergrotingsvenster"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Inzoomen"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Kan niet uitzenden"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Kan niet opslaan. Probeer het opnieuw."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Kan niet opslaan."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Gebruik minstens 4 tekens"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Gebruik minder dan 16 tekens"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Buildnummer"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Buildnummer naar klembord gekopieerd."</string> <string name="basic_status" msgid="2315371112182658176">"Gesprek openen"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Er is ten minste één apparaat beschikbaar"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Houd de sneltoets ingedrukt"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Annuleren"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Nu omkeren"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Klap de telefoon open voor een betere selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Omkeren naar scherm voorkant voor een betere selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Gebruik de camera aan de achterzijde voor een bredere foto met hogere resolutie."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Dit scherm gaat uit"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Opvouwbaar apparaat wordt uitgevouwen"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Opvouwbaar apparaat wordt gedraaid"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Nog <xliff:g id="PERCENTAGE">%s</xliff:g> batterijlading"</string> diff --git a/packages/SystemUI/res/values-nl/tiles_states_strings.xml b/packages/SystemUI/res/values-nl/tiles_states_strings.xml index fbccd78eeb8f..b51dc653912b 100644 --- a/packages/SystemUI/res/values-nl/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-nl/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Uit"</item> <item msgid="5966994759929723339">"Aan"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml index 992cd863a1bc..0fd1d1d86556 100644 --- a/packages/SystemUI/res/values-or/strings.xml +++ b/packages/SystemUI/res/values-or/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ଉଜ୍ଜ୍ୱଳତା"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ରଙ୍ଗ ଇନଭାର୍ସନ"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ରଙ୍ଗ ସଂଶୋଧନ"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ୟୁଜରମାନଙ୍କୁ ପରିଚାଳନା କରନ୍ତୁ"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ହୋଇଗଲା"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ବନ୍ଦ କରନ୍ତୁ"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ସ୍କ୍ରିନ ରେକର୍ଡିଂ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"କୌଣସି ଶୀର୍ଷକ ନାହିଁ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ଷ୍ଟାଣ୍ଡବାଏ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ୱିଣ୍ଡୋ"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ୱିଣ୍ଡୋ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ଜୁମ୍ ଇନ୍ କରନ୍ତୁ"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"କିଛି ତ୍ରୁଟି ହୋଇଛି। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"ଲୋଡ ହେଉଛି"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"ଟାବଲେଟ"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"ଆପଣଙ୍କ ମିଡିଆକୁ କାଷ୍ଟ କରାଯାଉଛି"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g>କୁ କାଷ୍ଟ କରାଯାଉଛି"</string> <string name="controls_error_timeout" msgid="794197289772728958">"ନିଷ୍କ୍ରିୟ ଅଛି, ଆପ ଯାଞ୍ଚ କରନ୍ତୁ"</string> <string name="controls_error_removed" msgid="6675638069846014366">"ମିଳିଲା ନାହିଁ"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"ନିୟନ୍ତ୍ରଣ ଉପଲବ୍ଧ ନାହିଁ"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ବ୍ରଡକାଷ୍ଟ କରାଯାଇପାରିବ ନାହିଁ"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"ସେଭ କରାଯାଇପାରିଲା ନାହିଁ। ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"ସେଭ କରାଯାଇପାରିଲା ନାହିଁ।"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"ଅତିକମରେ 4ଟି କେରେକ୍ଟର ବ୍ୟବହାର କରନ୍ତୁ"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"16ଟିରୁ କମ କେରେକ୍ଟର ବ୍ୟବହାର କରନ୍ତୁ"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"ବିଲ୍ଡ ନମ୍ୱର"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"କ୍ଲିପବୋର୍ଡକୁ କପି କରାଯାଇଥିବା ବିଲ୍ଡ ନମ୍ୱର।"</string> <string name="basic_status" msgid="2315371112182658176">"ବାର୍ତ୍ତାଳାପ ଖୋଲନ୍ତୁ"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ଅତିକମରେ ଗୋଟିଏ ଡିଭାଇସ ଉପଲବ୍ଧ ଅଛି"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ସର୍ଟକଟକୁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ବାତିଲ କରନ୍ତୁ"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ବର୍ତ୍ତମାନ ଫ୍ଲିପ କରନ୍ତୁ"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"ଏକ ଉନ୍ନତ ସେଲ୍ଫି ପାଇଁ ଫୋନକୁ ଅନଫୋଲ୍ଡ କରନ୍ତୁ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ଏକ ଉନ୍ନତ ସେଲ୍ଫି ପାଇଁ ସାମ୍ନା ଡିସପ୍ଲେକୁ ଫ୍ଲିପ କରିବେ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ଉଚ୍ଚ ରିଜୋଲ୍ୟୁସନ ସହ ଅଧିକ ଚଉଡ଼ାର ଏକ ଫଟୋ ନେବା ପାଇଁ ପଛ-ପଟର କେମେରା ବ୍ୟବହାର କରନ୍ତୁ।"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ଏହି ସ୍କ୍ରିନ ବନ୍ଦ ହୋଇଯିବ"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଅନଫୋଲ୍ଡ କରାଯାଉଛି"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ଫୋଲ୍ଡ କରାଯାଇପାରୁଥିବା ଡିଭାଇସକୁ ଫ୍ଲିପ କରାଯାଉଛି"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ବେଟେରୀ ଚାର୍ଜ ବାକି ଅଛି"</string> diff --git a/packages/SystemUI/res/values-or/tiles_states_strings.xml b/packages/SystemUI/res/values-or/tiles_states_strings.xml index acaa3fb6f6a8..5e4b730f6144 100644 --- a/packages/SystemUI/res/values-or/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-or/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ବନ୍ଦ ଅଛି"</item> <item msgid="5966994759929723339">"ଚାଲୁ ଅଛି"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml index c814159eb64d..28c6b314a41d 100644 --- a/packages/SystemUI/res/values-pa/strings.xml +++ b/packages/SystemUI/res/values-pa/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ਚਮਕ"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"ਰੰਗ ਪਲਟਨਾ"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"ਰੰਗ ਸੁਧਾਈ"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"ਵਰਤੋਂਕਾਰਾਂ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰੋ"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ਹੋ ਗਿਆ"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ਬੰਦ ਕਰੋ"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ਸਕ੍ਰੀਨ ਰਿਕਾਰਡਿੰਗ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ਕੋਈ ਸਿਰਲੇਖ ਨਹੀਂ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"ਸਟੈਂਡਬਾਈ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"ਵੱਡਦਰਸ਼ੀਕਰਨ Window"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"ਵੱਡਦਰਸ਼ੀਕਰਨ Window ਦੇ ਕੰਟਰੋਲ"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ਜ਼ੂਮ ਵਧਾਓ"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"ਕੋਈ ਗੜਬੜ ਹੋ ਗਈ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"ਲੋਡ ਕੀਤੀ ਜਾ ਰਹੀ ਹੈ"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"ਟੈਬਲੈੱਟ"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"ਤੁਹਾਡੇ ਮੀਡੀਆ ਨੂੰ ਕਾਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> \'ਤੇ ਕਾਸਟ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string> <string name="controls_error_timeout" msgid="794197289772728958">"ਅਕਿਰਿਆਸ਼ੀਲ, ਐਪ ਦੀ ਜਾਂਚ ਕਰੋ"</string> <string name="controls_error_removed" msgid="6675638069846014366">"ਨਹੀਂ ਮਿਲਿਆ"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"ਕੰਟਰੋਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ਪ੍ਰਸਾਰਨ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ। ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"ਰੱਖਿਅਤ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ।"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"ਘੱਟੋ-ਘੱਟ 4 ਅੱਖਰ-ਚਿੰਨ੍ਹ ਵਰਤੋ"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"16 ਤੋਂ ਘੱਟ ਅੱਖਰ-ਚਿੰਨ੍ਹ ਵਰਤੋ"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"ਬਿਲਡ ਨੰਬਰ"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"ਬਿਲਡ ਨੰਬਰ ਨੂੰ ਕਲਿੱਪਬੋਰਡ \'ਤੇ ਕਾਪੀ ਕੀਤਾ ਗਿਆ।"</string> <string name="basic_status" msgid="2315371112182658176">"ਗੱਲਬਾਤ ਖੋਲ੍ਹੋ"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• ਘੱਟੋ-ਘੱਟ ਇੱਕ ਡੀਵਾਈਸ ਉਪਲਬਧ ਹੈ"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ਸ਼ਾਰਟਕੱਟ ਨੂੰ ਸਪਰਸ਼ ਕਰ ਕੇ ਰੱਖੋ"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ਰੱਦ ਕਰੋ"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ਹੁਣੇ ਫਲਿੱਪ ਕਰੋ"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"ਬਿਹਤਰ ਸੈਲਫ਼ੀ ਲਈ ਫ਼ੋਨ ਨੂੰ ਖੋਲ੍ਹੋ"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"ਕੀ ਬਿਹਤਰ ਸੈਲਫ਼ੀ ਲਈ ਅਗਲੀ ਡਿਸਪਲੇ \'ਤੇ ਫਲਿੱਪ ਕਰਨਾ ਹੈ?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ਉੱਚ ਰੈਜ਼ੋਲਿਊਸ਼ਨ ਵਾਲੀ ਜ਼ਿਆਦਾ ਚੌੜੀ ਫ਼ੋਟੋ ਲਈ ਪਿਛਲੇ ਕੈਮਰੇ ਦੀ ਵਰਤੋਂ ਕਰੋ।"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ਇਹ ਸਕ੍ਰੀਨ ਬੰਦ ਹੋ ਜਾਵੇਗੀ"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"ਮੋੜਨਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਖੋਲ੍ਹਿਆ ਜਾ ਰਿਹਾ ਹੈ"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"ਮੋੜਨਯੋਗ ਡੀਵਾਈਸ ਨੂੰ ਆਲੇ-ਦੁਆਲੇ ਫਲਿੱਪ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ਬੈਟਰੀ ਬਾਕੀ"</string> diff --git a/packages/SystemUI/res/values-pa/tiles_states_strings.xml b/packages/SystemUI/res/values-pa/tiles_states_strings.xml index 9653b923224a..5628a3167b87 100644 --- a/packages/SystemUI/res/values-pa/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-pa/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ਬੰਦ"</item> <item msgid="5966994759929723339">"ਚਾਲੂ"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml index 025dd66fd1f0..ed0d257889b4 100644 --- a/packages/SystemUI/res/values-pl/strings.xml +++ b/packages/SystemUI/res/values-pl/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Jasność"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Odwrócenie kolorów"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Korekcja kolorów"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Zarządzaj użytkownikami"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Gotowe"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zamknij"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"nagrywanie ekranu"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Bez tytułu"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Tryb gotowości"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Okno powiększenia"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Elementy sterujące okna powiększenia"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Powiększ"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Coś poszło nie tak. Spróbuj ponownie."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Wczytuję"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Przesyłanie multimediów"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Przesyłanie treści z aplikacji <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Nieaktywny, sprawdź aplikację"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nie znaleziono"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Element jest niedostępny"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nie można przesyłać"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Nie można zapisać. Spróbuj ponownie."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Nie można zapisać."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Wpisz co najmniej 4 znaki"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Wpisz mniej niż 16 znaków"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Numer kompilacji"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Numer kompilacji został skopiowany do schowka."</string> <string name="basic_status" msgid="2315371112182658176">"Otwarta rozmowa"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Dostępne jest co najmniej 1 urządzenie."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Skrót – naciśnij i przytrzymaj"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Anuluj"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Przełącz teraz"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Rozłóż telefon, aby uzyskać lepszej jakości selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Przełączyć na przedni wyświetlacz?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Użyj tylnego aparatu, aby zrobić szersze zdjęcie o większej rozdzielczości."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"* Ten ekran się wyłączy"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Składane urządzenie jest rozkładane"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Składane urządzenie jest obracane"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Pozostało <xliff:g id="PERCENTAGE">%s</xliff:g> baterii"</string> diff --git a/packages/SystemUI/res/values-pl/tiles_states_strings.xml b/packages/SystemUI/res/values-pl/tiles_states_strings.xml index 50650986c517..c32aa1a69a43 100644 --- a/packages/SystemUI/res/values-pl/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-pl/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Wyłączono"</item> <item msgid="5966994759929723339">"Włączono"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml index 39feb0836f39..1b9e0150ce26 100644 --- a/packages/SystemUI/res/values-pt-rBR/strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brilho"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversão de cores"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correção de cor"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gerenciar usuários"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Concluído"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Fechar"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"gravação de tela"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sem título"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Em espera"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controles da janela de ampliação"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumentar zoom"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Não foi possível fazer a transmissão"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Falha ao salvar. Tente de novo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Falha ao salvar."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Número da versão"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Número da versão copiado para a área de transferência."</string> <string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Pelo menos um dispositivo está disponível"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Toque e pressione o atalho"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancelar"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Virar agora"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Abra o smartphone para tirar uma selfie melhor"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Usar o display frontal para tirar uma selfie melhor?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use a câmera traseira para tirar uma foto mais ampla e com maior resolução."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Esta tela vai ser desativada"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo dobrável sendo aberto"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo dobrável sendo virado"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateria restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml index ebe67d86ca23..cea45323069f 100644 --- a/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-pt-rBR/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Desativado"</item> <item msgid="5966994759929723339">"Ativado"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml index 98f063f933ed..22ddebfc0317 100644 --- a/packages/SystemUI/res/values-pt-rPT/strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/strings.xml @@ -257,6 +257,7 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brilho"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversão de cores"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correção da cor"</string> + <string name="quick_settings_font_scaling_label" msgid="5289001009876936768">"Tamanho do tipo de letra"</string> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gerir utilizadores"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Concluído"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Fechar"</string> @@ -777,6 +778,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"gravação de ecrã"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sem título"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Modo de espera"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controlos da janela de ampliação"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumentar zoom"</string> @@ -901,6 +908,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Não é possível transmitir"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Não é possível guardar. Tente novamente."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Não é possível guardar."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Use, pelo menos, 4 carateres"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Use menos de 16 carateres"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Número da compilação"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Número da compilação copiado para a área de transferência."</string> <string name="basic_status" msgid="2315371112182658176">"Abrir conversa"</string> @@ -1020,11 +1029,11 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Está disponível, pelo menos, um dispositivo"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Toque sem soltar no atalho"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancelar"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Inverter agora"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Desdobre o telemóvel para uma selfie melhor"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Inverter para ecrã frontal para uma selfie melhor?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use a câmara traseira para uma foto mais ampla com uma resolução superior."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Este ecrã vai ser desligado"</b></string> + <string name="rear_display_bottom_sheet_confirm" msgid="1507591562761552899">"Mudar de ecrã agora"</string> + <string name="rear_display_folded_bottom_sheet_title" msgid="3930008746560711990">"Desdobre o telemóvel"</string> + <string name="rear_display_unfolded_bottom_sheet_title" msgid="6291111173057304055">"Mudar de ecrã?"</string> + <string name="rear_display_folded_bottom_sheet_description" msgid="6842767125783222695">"Para uma resolução superior, use a câmara traseira"</string> + <string name="rear_display_unfolded_bottom_sheet_description" msgid="7229961336309960201">"Para uma resolução superior, inverta o telemóvel"</string> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo dobrável a ser desdobrado"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo dobrável a ser virado ao contrário"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> de bateria restante"</string> diff --git a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml index bda7473ba15b..b58b8488a3e4 100644 --- a/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-pt-rPT/tiles_states_strings.xml @@ -176,4 +176,9 @@ <item msgid="8014986104355098744">"Desativado"</item> <item msgid="5966994759929723339">"Ativado"</item> </string-array> + <string-array name="tile_states_font_scaling"> + <item msgid="3173069902082305985">"Indisponível"</item> + <item msgid="2478289035899842865">"Desativado"</item> + <item msgid="5137565285664080143">"Ativado"</item> + </string-array> </resources> diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml index 39feb0836f39..1b9e0150ce26 100644 --- a/packages/SystemUI/res/values-pt/strings.xml +++ b/packages/SystemUI/res/values-pt/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brilho"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversão de cores"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Correção de cor"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gerenciar usuários"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Concluído"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Fechar"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"gravação de tela"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Sem título"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Em espera"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Controles da janela de ampliação"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Aumentar zoom"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Não foi possível fazer a transmissão"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Falha ao salvar. Tente de novo."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Falha ao salvar."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Número da versão"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Número da versão copiado para a área de transferência."</string> <string name="basic_status" msgid="2315371112182658176">"Conversa aberta"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Pelo menos um dispositivo está disponível"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Toque e pressione o atalho"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Cancelar"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Virar agora"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Abra o smartphone para tirar uma selfie melhor"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Usar o display frontal para tirar uma selfie melhor?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Use a câmera traseira para tirar uma foto mais ampla e com maior resolução."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Esta tela vai ser desativada"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispositivo dobrável sendo aberto"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispositivo dobrável sendo virado"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Bateria restante: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-pt/tiles_states_strings.xml b/packages/SystemUI/res/values-pt/tiles_states_strings.xml index ebe67d86ca23..cea45323069f 100644 --- a/packages/SystemUI/res/values-pt/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-pt/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Desativado"</item> <item msgid="5966994759929723339">"Ativado"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml index bf26016b39c6..907b9c185c3c 100644 --- a/packages/SystemUI/res/values-ro/strings.xml +++ b/packages/SystemUI/res/values-ro/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Luminozitate"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inversarea culorilor"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Corecția culorii"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Gestionează utilizatorii"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Terminat"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Închide"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"înregistrare de ecran"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Fără titlu"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Fereastra de mărire"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Comenzi pentru fereastra de mărire"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Mărește"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"A apărut o eroare. Încearcă din nou."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Se încarcă"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tabletă"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Se proiectează conținutul media"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Se proiectează <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inactiv, verifică aplicația"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Nu s-a găsit"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Comanda este indisponibilă"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nu se poate transmite"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Nu se poate salva. Încearcă din nou."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Nu se poate salva."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Folosește minimum 4 caractere."</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Folosește maximum 16 caractere"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Numărul versiunii"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Numărul versiunii s-a copiat în clipboard."</string> <string name="basic_status" msgid="2315371112182658176">"Deschide conversația"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Este disponibil cel puțin un dispozitiv"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Atinge lung comanda rapidă"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Anulează"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Întoarce-l acum"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Desfă telefonul pentru un selfie mai bun"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Comuți la ecranul frontal pentru un selfie mai bun?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Folosește camera posterioară pentru o fotografie mai lată, cu rezoluție mai mare."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Acest ecran se va dezactiva"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Dispozitiv pliabil care este desfăcut"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Dispozitiv pliabil care este întors"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> baterie rămasă"</string> diff --git a/packages/SystemUI/res/values-ro/tiles_states_strings.xml b/packages/SystemUI/res/values-ro/tiles_states_strings.xml index 7b7bb3ac11d8..782afc5d7299 100644 --- a/packages/SystemUI/res/values-ro/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ro/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Dezactivat"</item> <item msgid="5966994759929723339">"Activat"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml index 1a10a79b2c44..2b8c776915bd 100644 --- a/packages/SystemUI/res/values-ru/strings.xml +++ b/packages/SystemUI/res/values-ru/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Яркость"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Инверсия цветов"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Коррекция цвета"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Управление пользователями"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Готово"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Закрыть"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"запись экрана"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Без названия"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Переход в режим ожидания"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Окно увеличения"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Настройки окна увеличения"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Увеличить"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Не удалось запустить трансляцию"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Не удалось сохранить. Повторите попытку."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Не удалось сохранить."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Номер сборки"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Номер сборки скопирован в буфер обмена."</string> <string name="basic_status" msgid="2315371112182658176">"Открытый чат"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Доступно хотя бы одно устройство."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Нажмите и удерживайте ярлык"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Отмена"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Перевернуть сейчас"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Разложите телефон, чтобы селфи получилось лучше"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Перейти на передний экран?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Используйте основную камеру с широкоугольным объективом и высоким разрешением."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Этот экран отключится"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Складное устройство в разложенном виде"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Перевернутое складное устройство"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Уровень заряда батареи: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-ru/tiles_states_strings.xml b/packages/SystemUI/res/values-ru/tiles_states_strings.xml index 6255bd8ee26d..9a4960b1ada9 100644 --- a/packages/SystemUI/res/values-ru/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ru/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Отключено"</item> <item msgid="5966994759929723339">"Включено"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml index 217a6e348e3c..8c8511989e2e 100644 --- a/packages/SystemUI/res/values-si/strings.xml +++ b/packages/SystemUI/res/values-si/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"දීප්තිමත් බව"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"වර්ණ අපවර්තනය"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"වර්ණ නිවැරදි කිරීම"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"පරිශීලකයන් කළමනාකරණය කරන්න"</string> <string name="quick_settings_done" msgid="2163641301648855793">"නිමයි"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"වසන්න"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"තිර පටිගත කිරීම"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"මාතෘකාවක් නැත"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"පොරොත්තු"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"විශාලන කවුළුව"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"විශාලනය කිරීමේ කවුළු පාලන"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"විශාලනය වැඩි කරන්න"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"යම් දෙයක් වැරදිණි. නැවත උත්සාහ කරන්න."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"පූරණය වේ"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"ටැබ්ලටය"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"ඔබේ මාධ්ය විකාශය කිරීම"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> විකාශය කරමින්"</string> <string name="controls_error_timeout" msgid="794197289772728958">"අක්රියයි, යෙදුම පරීක්ෂා කරන්න"</string> <string name="controls_error_removed" msgid="6675638069846014366">"හමු නොවිණි"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"පාලනය ලබා ගත නොහැකිය"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"විකාශනය කළ නොහැකිය"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"සුරැකිය නොහැකිය. නැවත උත්සාහ කරන්න."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"සුරැකිය නොහැකිය."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"නිමැවුම් අංකය"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"නිමැවුම් අංකය පසුරු පුවරුවට පිටපත් කරන ලදි."</string> <string name="basic_status" msgid="2315371112182658176">"සංවාදය විවෘත කරන්න"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• අවම වශයෙන් එක උපාංගයක් ලැබේ"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ස්පර්ශ කර අල්ලා සිටීමේ කෙටිමඟ"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"අවලංගු කරන්න"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"දැන් පෙරළන්න"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"වඩා හොඳ සෙල්ෆියක් සඳහා දුරකථනය දිගහරින්න"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"වඩා හොඳ සෙල්ෆියක් සඳහා ඉදිරිපස සංදර්ශකයට පෙරළන්න ද?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ඉහළ විභේදන සහිත පුළුල් ඡායාරූපයක් සඳහා පසුපසට මුහුණලා ඇති කැමරාව භාවිතා කරන්න."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ මෙම තිරය ක්රියා විරහිත වනු ඇත"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"දිග හැරෙමින් පවතින නැමිය හැකි උපාංගය"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"වටා පෙරළෙමින් තිබෙන නැමිය හැකි උපාංගය"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> බැටරිය ඉතිරිව ඇත"</string> diff --git a/packages/SystemUI/res/values-si/tiles_states_strings.xml b/packages/SystemUI/res/values-si/tiles_states_strings.xml index 327e0b92c967..c9312ff08040 100644 --- a/packages/SystemUI/res/values-si/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-si/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ක්රියාවිරහිතයි"</item> <item msgid="5966994759929723339">"ක්රියාත්මකයි"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml index f6f7b37d4afa..262e269dd790 100644 --- a/packages/SystemUI/res/values-sk/strings.xml +++ b/packages/SystemUI/res/values-sk/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Jas"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzia farieb"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Úprava farieb"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Spravovať používateľov"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Hotovo"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zavrieť"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"nahrávanie obrazovky"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Bez názvu"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Pohotovostný režim"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Okno priblíženia"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Ovládacie prvky okna priblíženia"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Priblížiť"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nedá sa vysielať"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Nedá sa uložiť. Skúste to znova."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Nedá sa uložiť."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Použite aspoň štyri znaky"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Použite menej než 16 znakov"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Číslo zostavy"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Číslo zostavy bolo skopírované do schránky."</string> <string name="basic_status" msgid="2315371112182658176">"Otvorená konverzácia"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• K dispozícii je minimálne jedno zariadenie"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pridržte skratku"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Zrušiť"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Otočiť"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Ak chcete lepšie selfie, rozložte telefón"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Otočiť na prednú obrazovku pre lepšie selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Pomocou zadného fotoaparátu vytvorte širšiu fotku s vyšším rozlíšením."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Táto obrazovka sa vypne"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Rozloženie skladacieho zariadenia"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Prevrátenie skladacieho zariadenia"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Zostáva <xliff:g id="PERCENTAGE">%s</xliff:g> batérie"</string> diff --git a/packages/SystemUI/res/values-sk/tiles_states_strings.xml b/packages/SystemUI/res/values-sk/tiles_states_strings.xml index 3cbde1c9574c..3540eabb8205 100644 --- a/packages/SystemUI/res/values-sk/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sk/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Vypnuté"</item> <item msgid="5966994759929723339">"Zapnuté"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml index c188d4577524..012b14f959e2 100644 --- a/packages/SystemUI/res/values-sl/strings.xml +++ b/packages/SystemUI/res/values-sl/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Svetlost"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Inverzija barv"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Popravljanje barv"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Upravljanje uporabnikov"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Končano"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Zapri"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"snemanje zaslona"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Brez naslova"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Stanje pripravljenosti"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Povečevalno okno"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrolniki povečevalnega okna"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Povečaj"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Prišlo je do napake. Poskusite znova."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Nalaganje"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablični računalnik"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Predvajanje predstavnosti"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Predvajanje aplikacije <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Neaktivno, poglejte aplikacijo"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Ni mogoče najti"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrolnik ni na voljo"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Oddajanje ni mogoče"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Ni mogoče shraniti. Poskusite znova."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Ni mogoče shraniti."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Uporabite vsaj 4 znake."</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Uporabite manj kot 16 znakov."</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Delovna različica"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Delovna različica je bila kopirana v odložišče."</string> <string name="basic_status" msgid="2315371112182658176">"Odprt pogovor"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Na voljo mora biti vsaj ena naprava."</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pridržite bližnjico"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Prekliči"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Obrni"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Razprite telefon za boljši selfi"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Obrnite telefon na sprednji zaslon za boljši selfi"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Uporabite hrbtni fotoaparat, da posnamete širšo sliko višje ločljivosti."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ta zaslon se bo izklopil."</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Razpiranje zložljive naprave"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Obračanje zložljive naprave"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Preostanek energije baterije: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sl/tiles_states_strings.xml b/packages/SystemUI/res/values-sl/tiles_states_strings.xml index e720819b4b60..985b7796c567 100644 --- a/packages/SystemUI/res/values-sl/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sl/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Izklopljeno"</item> <item msgid="5966994759929723339">"Vklopljeno"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml index c9789a967929..a9c8784a0251 100644 --- a/packages/SystemUI/res/values-sq/strings.xml +++ b/packages/SystemUI/res/values-sq/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Ndriçimi"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Anasjellja e ngjyrës"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Korrigjimi i ngjyrës"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Menaxho përdoruesit"</string> <string name="quick_settings_done" msgid="2163641301648855793">"U krye"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Mbyll"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"regjistrim i ekranit"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Pa titull"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Në gatishmëri"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Dritarja e zmadhimit"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrollet e dritares së zmadhimit"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zmadho"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Nuk mund të transmetohet"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Nuk mund të ruhet. Provo përsëri."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Nuk mund të ruhet."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Përdor të paktën 4 karaktere"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Përdor më pak se 16 karaktere"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Numri i ndërtimit"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Numri i ndërtimit u kopjua te kujtesa e fragmenteve"</string> <string name="basic_status" msgid="2315371112182658176">"Hap bisedën"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Ofrohet të paktën një pajisje"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Prek dhe mbaj shtypur shkurtoren"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Anulo"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Ktheje tani"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Shpalos telefonin për një selfi më të mirë"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Të kthehet tek ekrani para për selfi më të mirë?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Përdor lenten e kamerës së pasme për një fotografi më të gjerë me rezolucion më të lartë."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Ky ekran do të fiket"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Pajisja e palosshme duke u hapur"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Pajisja e palosshme duke u rrotulluar"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Përqindja e mbetur e baterisë: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sq/tiles_states_strings.xml b/packages/SystemUI/res/values-sq/tiles_states_strings.xml index 7a09f2450354..5862e2ef2b1c 100644 --- a/packages/SystemUI/res/values-sq/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sq/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Joaktiv"</item> <item msgid="5966994759929723339">"Aktiv"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml index d756401277a7..a9df97a4007d 100644 --- a/packages/SystemUI/res/values-sr/strings.xml +++ b/packages/SystemUI/res/values-sr/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Осветљеност"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Инверзија боја"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Корекција боја"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Управљаjте корисницима"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Готово"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Затвори"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"снимање екрана"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Без наслова"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Стање приправности"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Прозор за увећање"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Контроле прозора за увећање"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Увећајте"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Дошло је до грешке. Пробајте поново."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Учитава се"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"таблет"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Пребацивање медија"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Пребацује се <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактивно. Видите апликацију"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Није пронађено"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Контрола није доступна"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Емитовање није успело"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Чување није успело. Пробајте поново."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Чување није успело."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Користите бар 4 знака"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Користите мање од 16 знакова"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Број верзије"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Број верзије је копиран у привремену меморију."</string> <string name="basic_status" msgid="2315371112182658176">"Отворите конверзацију"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• да је доступан барем један уређај"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Додирните и задржите пречицу"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Откажи"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Обрни"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Отворите телефон за бољи селфи"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Желите да обрнете на предњи екран за бољи селфи?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Користите задњу камеру да бисте снимили ширу слику са вишом резолуцијом."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Овај екран ће се искључити"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Уређај на преклоп се отвара"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Уређај на преклоп се обрће"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Преостало је још<xliff:g id="PERCENTAGE">%s</xliff:g> батерије"</string> diff --git a/packages/SystemUI/res/values-sr/tiles_states_strings.xml b/packages/SystemUI/res/values-sr/tiles_states_strings.xml index dace491993ba..e817eea952ec 100644 --- a/packages/SystemUI/res/values-sr/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sr/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Искључено"</item> <item msgid="5966994759929723339">"Укључено"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml index d12c25ff5a4b..d839a1117401 100644 --- a/packages/SystemUI/res/values-sv/strings.xml +++ b/packages/SystemUI/res/values-sv/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Ljusstyrka"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Färginvertering"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Färgkorrigering"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Hantera användare"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Klart"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Stäng"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"skärminspelning"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Ingen titel"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Viloläge"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Förstoringsfönster"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Inställningar för förstoringsfönster"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Zooma in"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Något gick fel. Försök igen."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Läser in"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"surfplatta"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Castar din media"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Castar <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Inaktiv, kolla appen"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Hittades inte"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Styrning är inte tillgänglig"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Det gick inte att sända ut"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Det gick inte att spara. Försök igen."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Det gick inte att spara."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Versionsnummer"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Versionsnumret har kopierats till urklipp."</string> <string name="basic_status" msgid="2315371112182658176">"Öppen konversation"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• minst en enhet är tillgänglig"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Tryck länge på genvägen"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Avbryt"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Vänd nu"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Vik upp telefonen för att ta en bättre selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Vill du ta en bättre selfie med främre kameran?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Använd den bakre kameran för att ta ett mer vidsträckt foto med högre upplösning."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Den här skärmen inaktiveras"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"En vikbar enhet viks upp"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"En vikbar enhet vänds"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> av batteriet återstår"</string> diff --git a/packages/SystemUI/res/values-sv/tiles_states_strings.xml b/packages/SystemUI/res/values-sv/tiles_states_strings.xml index 9e69b00adf64..45169aa8b1f4 100644 --- a/packages/SystemUI/res/values-sv/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sv/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Av"</item> <item msgid="5966994759929723339">"På"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml index 564de43b90a7..c303c09375aa 100644 --- a/packages/SystemUI/res/values-sw/strings.xml +++ b/packages/SystemUI/res/values-sw/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Ung\'avu"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Ugeuzaji rangi"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Usahihishaji wa rangirangi"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Dhibiti watumiaji"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Nimemaliza"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Funga"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"kurekodi skrini"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Wimbo hauna jina"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Hali tuli"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Dirisha la Ukuzaji"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Vidhibiti vya Dirisha la Ukuzaji"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Vuta karibu"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Hitilafu fulani imetokea. Jaribu tena."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Inapakia"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"kompyuta kibao"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Inatuma maudhui yako"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Inatuma <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Haitumiki, angalia programu"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Hakipatikani"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Kidhibiti hakipatikani"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Imeshindwa kutuma arifa"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Imeshindwa kuhifadhi. Jaribu tena."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Imeshindwa kuhifadhi."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Nambari ya muundo"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Nambari ya muundo imewekwa kwenye ubao wa kunakili."</string> <string name="basic_status" msgid="2315371112182658176">"Fungua mazungumzo"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Angalau kifaa kimoja kinapatikana"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Gusa na ushikilie njia ya mkato"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Ghairi"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Geuza kifaa sasa"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Kunjua simu ili upige selfi iliyo bora"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Ungependa kugeuza skrini ya mbele ili upige selfi?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Tumia kamera ya nyuma ili upige picha pana iliyo na ubora wa juu."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Skrini hii itajizima"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Kifaa kinachokunjwa kikikunjuliwa"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Kifaa kinachokunjwa kikigeuzwa"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Chaji ya betri imesalia <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-sw/tiles_states_strings.xml b/packages/SystemUI/res/values-sw/tiles_states_strings.xml index 2f765ef5320a..aad00999f0f6 100644 --- a/packages/SystemUI/res/values-sw/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-sw/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Imezimwa"</item> <item msgid="5966994759929723339">"Imewashwa"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml index b20bd37460b7..e58acfa56c6d 100644 --- a/packages/SystemUI/res/values-ta/strings.xml +++ b/packages/SystemUI/res/values-ta/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ஒளிர்வு"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"கலர் இன்வெர்ஷன்"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"கலர் கரெக்ஷன்"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"பயனர்களை நிர்வகியுங்கள்"</string> <string name="quick_settings_done" msgid="2163641301648855793">"முடிந்தது"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"மூடுக"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ஸ்கிரீன் ரெக்கார்டிங்"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"தலைப்பு இல்லை"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"இயக்க நேரம்"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"பெரிதாக்கல் சாளரம்"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"பெரிதாக்கல் சாளரக் கட்டுப்பாடுகள்"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"பெரிதாக்கு"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"ஏதோ தவறாகிவிட்டது. மீண்டும் முயலவும்."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"ஏற்றுகிறது"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"டேப்லெட்"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"உங்கள் மீடியா அலைபரப்பப்படுகிறது"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> ஆப்ஸை அலைபரப்புகிறது"</string> <string name="controls_error_timeout" msgid="794197289772728958">"செயலில் இல்லை , சரிபார்க்கவும்"</string> <string name="controls_error_removed" msgid="6675638069846014366">"இல்லை"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"கட்டுப்பாடு இல்லை"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ஒளிபரப்ப முடியவில்லை"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"சேமிக்க முடியவில்லை. மீண்டும் முயலவும்."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"சேமிக்க முடியவில்லை."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"பதிப்பு எண்"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"பதிப்பு எண் கிளிப்போர்டுக்கு நகலெடுக்கப்பட்டது."</string> <string name="basic_status" msgid="2315371112182658176">"திறந்தநிலை உரையாடல்"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• குறைந்தபட்சம் ஒரு சாதனமாவது கிடைக்க வேண்டும்"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"ஷார்ட்கட்டை தொட்டுப் பிடிக்கவும்"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ரத்துசெய்"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"இப்போது மாற்றவும்"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"சிறந்த செல்ஃபிக்கு மொபைலை மடக்காதீர்கள்"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"சிறந்த செல்ஃபிக்கு முன்புற டிஸ்பிளேவிற்கு மாற்றவா?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"அதிகத் தெளிவுத்திறனுடன் அகலக் கோணத்தில் படத்தை எடுப்பதற்குப் பின்பக்கக் கேமராவைப் பயன்படுத்துங்கள்."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ இந்தத் திரை ஆஃப் ஆகிவிடும்"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"மடக்கத்தக்க சாதனம் திறக்கப்படுகிறது"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"மடக்கத்தக்க சாதனம் ஃபிளிப் செய்யப்பட்டு திருப்பப்படுகிறது"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> பேட்டரி மீதமுள்ளது"</string> diff --git a/packages/SystemUI/res/values-ta/tiles_states_strings.xml b/packages/SystemUI/res/values-ta/tiles_states_strings.xml index 41f64125753c..1a22d9fa1476 100644 --- a/packages/SystemUI/res/values-ta/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ta/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"முடக்கப்பட்டுள்ளது"</item> <item msgid="5966994759929723339">"இயக்கப்பட்டுள்ளது"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml index 07196710c6a5..11f528a1cc25 100644 --- a/packages/SystemUI/res/values-te/strings.xml +++ b/packages/SystemUI/res/values-te/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ప్రకాశం"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"కలర్ మార్పిడి"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"కలర్ కరెక్షన్"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"యూజర్లను మేనేజ్ చేయండి"</string> <string name="quick_settings_done" msgid="2163641301648855793">"పూర్తయింది"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"మూసివేయి"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"స్క్రీన్ రికార్డింగ్"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"శీర్షిక లేదు"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"స్టాండ్బై"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"మ్యాగ్నిఫికేషన్ విండో"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"మ్యాగ్నిఫికేషన్ నియంత్రణల విండో"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"దగ్గరగా జూమ్ చేయండి"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ప్రసారం చేయడం సాధ్యపడలేదు"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"సేవ్ చేయడం సాధ్యపడదు. మళ్లీ ట్రై చేయండి."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"సేవ్ చేయడం సాధ్యపడదు."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"కనీసం 4 అక్షరాలను ఉపయోగించండి"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"16 కంటే తక్కువ అక్షరాలను ఉపయోగించండి"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"బిల్డ్ నంబర్"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"బిల్డ్ నంబర్, క్లిప్బోర్డ్కు కాపీ చేయబడింది."</string> <string name="basic_status" msgid="2315371112182658176">"సంభాషణను తెరవండి"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• కనీసం ఒక పరికరమైనా అందుబాటులో ఉందని"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"షార్ట్కట్ను తాకి, నొక్కి ఉంచు"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"రద్దు చేయండి"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"ఇప్పుడే తిప్పండి"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"మెరుగైన సెల్ఫీ కోసం ఫోన్ను అన్ఫోల్డ్ చేయండి"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"మంచి సెల్ఫీ కోసం ముందు వైపు డిస్ప్లేకు తిప్పాలా?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"వెనుక వైపున ఉన్న కెమెరాను ఉపయోగించి అధిక రిజల్యూషన్ గల, మరింత వెడల్పైన ఫోటోను పొందండి."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ ఈ స్క్రీన్ ఆఫ్ అవుతుంది"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"మడవగల పరికరం విప్పబడుతోంది"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"మడవగల పరికరం చుట్టూ తిప్పబడుతోంది"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> బ్యాటరీ మిగిలి ఉంది"</string> diff --git a/packages/SystemUI/res/values-te/tiles_states_strings.xml b/packages/SystemUI/res/values-te/tiles_states_strings.xml index 44ba47781ae7..c5a525cb611f 100644 --- a/packages/SystemUI/res/values-te/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-te/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ఆఫ్"</item> <item msgid="5966994759929723339">"ఆన్"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml index 90617cac58ae..c3037be4ea6f 100644 --- a/packages/SystemUI/res/values-th/strings.xml +++ b/packages/SystemUI/res/values-th/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"ความสว่าง"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"การกลับสี"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"การแก้สี"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"จัดการผู้ใช้"</string> <string name="quick_settings_done" msgid="2163641301648855793">"เสร็จสิ้น"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"ปิด"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"การบันทึกหน้าจอ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"ไม่มีชื่อ"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"สแตนด์บาย"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"หน้าต่างการขยาย"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"การควบคุมหน้าต่างการขยาย"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"ซูมเข้า"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"ออกอากาศไม่ได้"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"บันทึกไม่ได้ โปรดลองอีกครั้ง"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"บันทึกไม่ได้"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"ใช้อักขระอย่างน้อย 4 ตัว"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"ใช้อักขระไม่เกิน 16 ตัว"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"หมายเลขบิลด์"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"คัดลอกหมายเลขบิลด์ไปยังคลิปบอร์ดแล้ว"</string> <string name="basic_status" msgid="2315371112182658176">"เปิดการสนทนา"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• มีอุปกรณ์พร้อมใช้งานอย่างน้อย 1 รายการ"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"แตะแป้นพิมพ์ลัดค้างไว้"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"ยกเลิก"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"พลิกเลย"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"กางโทรศัพท์เพื่อเซลฟีที่ดียิ่งขึ้น"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"พลิกเป็นหน้าจอด้านหน้าเพื่อภาพเซลฟีที่ดีขึ้นไหม"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"ใช้กล้องหลังเพื่อถ่ายภาพกว้างขึ้นด้วยความละเอียดสูงขึ้น"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ หน้าจอนี้จะปิดไป"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"อุปกรณ์ที่พับได้กำลังกางออก"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"อุปกรณ์ที่พับได้กำลังพลิกไปมา"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"เหลือแบตเตอรี่ <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-th/tiles_states_strings.xml b/packages/SystemUI/res/values-th/tiles_states_strings.xml index 9cd060f2cabf..61e0fe6bde77 100644 --- a/packages/SystemUI/res/values-th/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-th/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"ปิด"</item> <item msgid="5966994759929723339">"เปิด"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml index 4eaa89ca0ac5..c991c82eb936 100644 --- a/packages/SystemUI/res/values-tl/strings.xml +++ b/packages/SystemUI/res/values-tl/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Brightness"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Pag-invert ng kulay"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Pagtatama ng kulay"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Pamahalaan ang mga user"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Tapos na"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Isara"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"pag-record ng screen"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Walang pamagat"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Naka-standby"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Window ng Pag-magnify"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Mga Kontrol sa Pag-magnify ng Window"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Mag-zoom in"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Nagkaproblema. Subukan ulit."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Naglo-load"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Pag-cast ng iyong media"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Kina-cast ang <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Hindi aktibo, tingnan ang app"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Hindi nahanap"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Hindi available ang kontrol"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Hindi makapag-broadcast"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Hindi ma-save. Subukan ulit."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Hindi ma-save."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Numero ng build"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Nakopya sa clipboard ang numero ng build."</string> <string name="basic_status" msgid="2315371112182658176">"Buksan ang pag-uusap"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• May kahit isang device na available"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Pindutin nang matagal: shortcut"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Kanselahin"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"I-flip na ngayon"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"I-unfold ang telepono para sa mas magandang selfie"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"I-flip sa front display para sa magandang selfie?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Gamitin ang camera sa harap para sa mas malawak na larawan na may mas mataas na resolution."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Mag-o-off ang screen na ito"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Ina-unfold na foldable na device"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Fini-flip na foldable na device"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> baterya na lang ang natitira"</string> diff --git a/packages/SystemUI/res/values-tl/tiles_states_strings.xml b/packages/SystemUI/res/values-tl/tiles_states_strings.xml index cd7dcf51b279..4522945908c9 100644 --- a/packages/SystemUI/res/values-tl/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-tl/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Naka-off"</item> <item msgid="5966994759929723339">"Naka-on"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml index 2e53e64f8eb9..d8569b32b1b2 100644 --- a/packages/SystemUI/res/values-tr/strings.xml +++ b/packages/SystemUI/res/values-tr/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Parlaklık"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Rengi ters çevirme"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Renk düzeltme"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Kullanıcıları yönet"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Bitti"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Kapat"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ekran kaydı"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Başlıksız"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Beklemeye alınıyor"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Büyütme Penceresi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Büyütme Penceresi Kontrolleri"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Yakınlaştır"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Bir hata oluştu. Tekrar deneyin."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Yükleme"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"tablet"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Medyanız yayınlanıyor"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> yayınlanıyor"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Devre dışı, uygulamaya bakın"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Bulunamadı"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Kontrol kullanılamıyor"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Yayınlanamıyor"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Kaydedilemiyor. Tekrar deneyin."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Kaydedilemiyor."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Derleme numarası"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Derleme numarası panoya kopyalandı."</string> <string name="basic_status" msgid="2315371112182658176">"Görüşmeyi aç"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• En az bir cihaz mevcut olmalıdır"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Kısayola dokunup basılı tutun"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"İptal"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Şimdi çevirin"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Daha iyi selfie çekmek için telefonu açın"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Daha iyi bir selfie için ön ekrana geçilsin mi?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Daha yüksek çözünürlüğe sahip daha büyük bir fotoğraf için arka yüz kamerasını kullanın."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Bu ekran kapatılacak"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Katlanabilir cihaz açılıyor"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Katlanabilir cihaz döndürülüyor"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> pil kaldı"</string> diff --git a/packages/SystemUI/res/values-tr/tiles_states_strings.xml b/packages/SystemUI/res/values-tr/tiles_states_strings.xml index 28ba7dcb9010..5d6a7f429614 100644 --- a/packages/SystemUI/res/values-tr/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-tr/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Kapalı"</item> <item msgid="5966994759929723339">"Açık"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml index 8b5f7b69e01e..df1d27a5aa38 100644 --- a/packages/SystemUI/res/values-uk/strings.xml +++ b/packages/SystemUI/res/values-uk/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Яскравість"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Інверсія кольорів"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Корекція кольору"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Керувати користувачами"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Готово"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Закрити"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"запис відео з екрана"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Без назви"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Режим очікування"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Вікно збільшення"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Елементи керування вікна збільшення"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Наблизити"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Сталася помилка. Повторіть спробу."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Завантаження"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"планшет"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Трансляція медіаконтенту"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Трансляція додатка <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Неактивно, перейдіть у додаток"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Не знайдено"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Елемент керування недоступний"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Неможливо транслювати"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Не вдалося зберегти. Повторіть спробу."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Не вдалося зберегти."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Номер складання"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Номер складання скопійовано в буфер обміну."</string> <string name="basic_status" msgid="2315371112182658176">"Відкрита розмова"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Принаймні один пристрій доступний"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Натисніть і утримуйте ярлик"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Скасувати"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Перевернути"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Розгорніть телефон, щоб зробити краще селфі"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Перемкнути на фронтальну камеру для кращого селфі?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Використовуйте камеру на задній панелі, щоб зробити знімок із ширшим кутом і вищою роздільною здатністю."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Цей екран вимкнеться"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Розкладний пристрій у розкладеному стані"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Розкладний пристрій обертається"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Заряд акумулятора: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-uk/tiles_states_strings.xml b/packages/SystemUI/res/values-uk/tiles_states_strings.xml index 3f6ca461ac1d..a0cc1c19d46d 100644 --- a/packages/SystemUI/res/values-uk/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-uk/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Вимкнено"</item> <item msgid="5966994759929723339">"Увімкнено"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml index c1bca22ad556..089e4b476843 100644 --- a/packages/SystemUI/res/values-ur/strings.xml +++ b/packages/SystemUI/res/values-ur/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"چمکیلا پن"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"رنگوں کی تقلیب"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"رنگ کی اصلاح"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"صارفین کا نظم کریں"</string> <string name="quick_settings_done" msgid="2163641301648855793">"ہو گیا"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"بند کریں"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"اسکرین ریکارڈنگ"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"کوئی عنوان نہیں ہے"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"اسٹینڈ بائی"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"میگنیفکیشن ونڈو"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"میگنیفکیشن ونڈو کنٹرولز"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"زوم ان کریں"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"کچھ غلط ہوگیا۔ پھر کوشش کریں۔"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"لوڈ ہو رہا ہے"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"ٹیبلیٹ"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"آپ کا میڈیا کاسٹ ہو رہا ہے"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"<xliff:g id="APP_LABEL">%1$s</xliff:g> کاسٹ ہو رہا ہے"</string> <string name="controls_error_timeout" msgid="794197289772728958">"غیر فعال، ایپ چیک کریں"</string> <string name="controls_error_removed" msgid="6675638069846014366">"نہیں ملا"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"کنٹرول دستیاب نہیں ہے"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"براڈکاسٹ نہیں کیا جا سکتا"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"محفوظ نہیں کیا جا سکا۔ پھر کوشش کریں۔"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"محفوظ نہیں کیا جا سکا۔"</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"بلڈ نمبر"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"بلڈ نمبر کلپ بورڈ میں کاپی ہو گیا۔"</string> <string name="basic_status" msgid="2315371112182658176">"گفتگو کھولیں"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• کم از کم ایک آلہ دستیاب ہے"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"شارٹ کٹ ٹچ کریں اور دبائے رکھیں"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"منسوخ کریں"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"اب پلٹائیں"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"بہتر سیلفی کے لیے فون کھولیں"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"بہتر سیلفی کے لیے سامنے والے ڈسپلے پر پلٹائیں؟"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"اعلی ریزولیوشن والی وسیع تصویر کے لیے ییچھے والا کیمرا استعمال کریں۔"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ یہ اسکرین آف ہو جائے گی"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"فولڈ ہونے والے آلے کو کھولا جا رہا ہے"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"فولڈ ہونے والے آلے کو گھمایا جا رہا ہے"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> بیٹری باقی ہے"</string> diff --git a/packages/SystemUI/res/values-ur/tiles_states_strings.xml b/packages/SystemUI/res/values-ur/tiles_states_strings.xml index 05aa4e91e5cc..5e2b0736ec8f 100644 --- a/packages/SystemUI/res/values-ur/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-ur/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"آف"</item> <item msgid="5966994759929723339">"آن"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml index 284193b78a54..7df2aed28fff 100644 --- a/packages/SystemUI/res/values-uz/strings.xml +++ b/packages/SystemUI/res/values-uz/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Yorqinlik"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Ranglarni akslantirish"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ranglarni tuzatish"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Foydalanuvchilarni boshqarish"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Tayyor"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Yopish"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ekranni yozuvi"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Nomsiz"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Kutib turing"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Kattalashtirish oynasi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Kattalashtirish oynasi sozlamalari"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Yaqinlashtirish"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Uzatilmadi"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Saqlanmadi. Qayta urining."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Saqlanmadi."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Parolga kamida 4 ta belgi kiriting."</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Kiritiladigan belgilar 16 tadan oshmasin"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Nashr raqami"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Nashr raqami vaqtinchalik xotiraga nusxalandi."</string> <string name="basic_status" msgid="2315371112182658176">"Suhbatni ochish"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Kamida bitta qurilma mavjud"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Bosib turish yorligʻi"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Bekor qilish"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Almashtirish"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Yaxshiroq selfi olish uchun telefonni yoying"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Yaxshiroq selfi uchun old ekranga almashilsinmi?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Keng burchakli va yuqori aniqlikda suratga olish uchun orqa kameradan foydalaning."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Bu ekran oʻchiriladi"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Buklanadigan qurilma ochilmoqda"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Buklanadigan qurilma aylantirilmoqda"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Batareya quvvati: <xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-uz/tiles_states_strings.xml b/packages/SystemUI/res/values-uz/tiles_states_strings.xml index a84f7698d861..6d55fc1f1225 100644 --- a/packages/SystemUI/res/values-uz/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-uz/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Oʻchiq"</item> <item msgid="5966994759929723339">"Yoniq"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml index fe77c10ac22d..caeb44c5985e 100644 --- a/packages/SystemUI/res/values-vi/strings.xml +++ b/packages/SystemUI/res/values-vi/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Độ sáng"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Đảo màu"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Chỉnh màu"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Quản lý người dùng"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Xong"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Đóng"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ghi màn hình"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Không có tiêu đề"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Chế độ chờ"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Cửa sổ phóng to"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Các tùy chọn điều khiển cửa sổ phóng to"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Phóng to"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"Đã xảy ra lỗi. Hãy thử lại."</string> <string name="media_transfer_loading" msgid="5544017127027152422">"Đang tải"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"máy tính bảng"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"Truyền nội dung đa phương tiện"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"Đang truyền <xliff:g id="APP_LABEL">%1$s</xliff:g>"</string> <string name="controls_error_timeout" msgid="794197289772728958">"Không hoạt động, hãy kiểm tra ứng dụng"</string> <string name="controls_error_removed" msgid="6675638069846014366">"Không tìm thấy"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"Không có chức năng điều khiển"</string> @@ -903,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Không thể truyền"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Không lưu được. Hãy thử lại."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Không lưu được."</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Số bản dựng"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Đã sao chép số bản dựng vào bảng nhớ tạm."</string> <string name="basic_status" msgid="2315371112182658176">"Mở cuộc trò chuyện"</string> @@ -1022,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Có ít nhất một thiết bị đang hoạt động"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Chạm và giữ phím tắt"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Huỷ"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Lật ngay"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Mở điện thoại ra để tự chụp ảnh chân dung đẹp hơn"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Lật sang màn hình ngoài để tự chụp ảnh chân dung đẹp hơn?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Sử dụng máy ảnh sau để chụp ảnh góc rộng hơn với độ phân giải cao hơn."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Màn hình này sẽ tắt"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Thiết bị có thể gập lại đang được mở ra"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Thiết bị có thể gập lại đang được lật ngược"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"Còn <xliff:g id="PERCENTAGE">%s</xliff:g> pin"</string> diff --git a/packages/SystemUI/res/values-vi/tiles_states_strings.xml b/packages/SystemUI/res/values-vi/tiles_states_strings.xml index 482a32f902b4..5b816fb9e62e 100644 --- a/packages/SystemUI/res/values-vi/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-vi/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Tắt"</item> <item msgid="5966994759929723339">"Đang bật"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml index 3cd6a69ccf55..f2ddb99a176a 100644 --- a/packages/SystemUI/res/values-zh-rCN/strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"亮度"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"颜色反转"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"色彩校正"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"管理用户"</string> <string name="quick_settings_done" msgid="2163641301648855793">"完成"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"关闭"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"屏幕录制"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"无标题"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待机"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"放大窗口"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"放大窗口控件"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"放大"</string> @@ -901,6 +909,10 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"无法广播"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"无法保存,请重试。"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"无法保存。"</string> + <!-- no translation found for media_output_broadcast_code_hint_no_less_than_min (4663836092607696185) --> + <skip /> + <!-- no translation found for media_output_broadcast_code_hint_no_more_than_max (9181869364856175638) --> + <skip /> <string name="build_number_clip_data_label" msgid="3623176728412560914">"版本号"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"已将版本号复制到剪贴板。"</string> <string name="basic_status" msgid="2315371112182658176">"开放式对话"</string> @@ -1020,11 +1032,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• 至少有一台设备可用"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"轻触并按住快捷方式"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"取消"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"立即翻转"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"展开手机可拍出更好的自拍照"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"翻转到外屏后自拍效果更好,要试试吗?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"您可以使用后置摄像头拍摄视角更广、分辨率更高的照片。"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ 此屏幕将会关闭"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"正在展开可折叠设备"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"正在翻转可折叠设备"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"电池还剩 <xliff:g id="PERCENTAGE">%s</xliff:g> 的电量"</string> diff --git a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml index 6ce948def69e..5d7d02f2dbeb 100644 --- a/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-zh-rCN/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"关闭"</item> <item msgid="5966994759929723339">"已开启"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml index e499fe5beda3..1898f8c479b7 100644 --- a/packages/SystemUI/res/values-zh-rHK/strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"亮度"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"色彩反轉"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"色彩校正"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"管理使用者"</string> <string name="quick_settings_done" msgid="2163641301648855793">"完成"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"關閉"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"錄製螢幕畫面"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"無標題"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待機"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"放大視窗"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"放大視窗控制項"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"放大"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"發生錯誤,請再試一次。"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"正在載入"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"平板電腦"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"投放媒體"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"投放 <xliff:g id="APP_LABEL">%1$s</xliff:g> 內容"</string> <string name="controls_error_timeout" msgid="794197289772728958">"已停用,請檢查應用程式"</string> <string name="controls_error_removed" msgid="6675638069846014366">"找不到"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"無法使用控制功能"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"無法廣播"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"無法儲存,請再試一次。"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"無法儲存。"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"至少要有 4 個半形字元"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"不得超過 16 個半形字元"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"版本號碼"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"版本號碼已複製到剪貼簿。"</string> <string name="basic_status" msgid="2315371112182658176">"開啟對話"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• 至少一部裝置可用"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"輕觸並按住快速鍵"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"取消"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"立即翻轉"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"打開手機,即可拍攝更出色的自拍"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"要翻轉至前方螢幕拍攝更出色的自拍嗎?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"使用後置鏡頭,拍攝更廣角、解像度更高的相片。"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ 此螢幕將關閉"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"正在展開折疊式裝置"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"正在翻轉折疊式裝置"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"剩餘電量:<xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml index ab8e961a1f47..2e51f920055a 100644 --- a/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-zh-rHK/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"已關閉"</item> <item msgid="5966994759929723339">"已開啟"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml index 26c60e0b3340..a1296507fc61 100644 --- a/packages/SystemUI/res/values-zh-rTW/strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"亮度"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"色彩反轉"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"色彩校正"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"管理使用者"</string> <string name="quick_settings_done" msgid="2163641301648855793">"完成"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"關閉"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"錄製螢幕畫面"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"無標題"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"待機"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"放大視窗"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"放大視窗控制項"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"放大"</string> @@ -862,10 +870,8 @@ <string name="media_transfer_failed" msgid="7955354964610603723">"發生錯誤,請再試一次。"</string> <string name="media_transfer_loading" msgid="5544017127027152422">"載入中"</string> <string name="media_ttt_default_device_type" msgid="4457646436153370169">"平板電腦"</string> - <!-- no translation found for media_transfer_receiver_content_description_unknown_app (7381771464846263667) --> - <skip /> - <!-- no translation found for media_transfer_receiver_content_description_with_app_name (8555975056850659389) --> - <skip /> + <string name="media_transfer_receiver_content_description_unknown_app" msgid="7381771464846263667">"投放媒體"</string> + <string name="media_transfer_receiver_content_description_with_app_name" msgid="8555975056850659389">"投放「<xliff:g id="APP_LABEL">%1$s</xliff:g>」的內容"</string> <string name="controls_error_timeout" msgid="794197289772728958">"無效,請查看應用程式"</string> <string name="controls_error_removed" msgid="6675638069846014366">"找不到控制項"</string> <string name="controls_error_removed_title" msgid="1207794911208047818">"無法使用控制項"</string> @@ -903,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"無法廣播"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"無法儲存,請再試一次。"</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"無法儲存。"</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"至少要有 4 個半形字元"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"不得超過 16 個半形字元"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"版本號碼"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"已將版本號碼複製到剪貼簿。"</string> <string name="basic_status" msgid="2315371112182658176">"開放式對話"</string> @@ -1022,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• 至少要有一部可用裝置"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"按住快速鍵"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"取消"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"立即翻轉"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"打開手機自拍效果較佳"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"要翻轉到前螢幕拍攝更優質的自拍照嗎?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"使用後置鏡頭可拍攝視角較寬廣、解析度較高的相片。"</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ 這麼做會關閉這個螢幕"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"正在展開的折疊式裝置"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"正在翻轉折疊式裝置"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"剩餘電量:<xliff:g id="PERCENTAGE">%s</xliff:g>"</string> diff --git a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml index 3d6a546e6103..f1f01853d342 100644 --- a/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-zh-rTW/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"已關閉"</item> <item msgid="5966994759929723339">"已開啟"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml index b585b6ccbada..16f184a9a823 100644 --- a/packages/SystemUI/res/values-zu/strings.xml +++ b/packages/SystemUI/res/values-zu/strings.xml @@ -257,6 +257,8 @@ <string name="quick_settings_brightness_dialog_title" msgid="4980669966716685588">"Ukugqama"</string> <string name="quick_settings_inversion_label" msgid="3501527749494755688">"Ukuguqulwa kombala"</string> <string name="quick_settings_color_correction_label" msgid="5636617913560474664">"Ukulungiswa kombala"</string> + <!-- no translation found for quick_settings_font_scaling_label (5289001009876936768) --> + <skip /> <string name="quick_settings_more_user_settings" msgid="7634653308485206306">"Phatha abasebenzisi"</string> <string name="quick_settings_done" msgid="2163641301648855793">"Kwenziwe"</string> <string name="quick_settings_close_user_panel" msgid="5599724542275896849">"Vala"</string> @@ -777,6 +779,12 @@ <string name="privacy_type_media_projection" msgid="8136723828804251547">"ukurekhoda isikrini"</string> <string name="music_controls_no_title" msgid="4166497066552290938">"Asikho isihloko"</string> <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Ilindile"</string> + <!-- no translation found for font_scaling_dialog_title (6273107303850248375) --> + <skip /> + <!-- no translation found for font_scaling_smaller (1012032217622008232) --> + <skip /> + <!-- no translation found for font_scaling_larger (5476242157436806760) --> + <skip /> <string name="magnification_window_title" msgid="4863914360847258333">"Iwindi Lesikhulisi"</string> <string name="magnification_controls_title" msgid="8421106606708891519">"Izilawuli Zewindi Lesikhulisi"</string> <string name="accessibility_control_zoom_in" msgid="1189272315480097417">"Sondeza"</string> @@ -901,6 +909,8 @@ <string name="media_output_broadcast_start_failed" msgid="3670835946856129775">"Ayikwazi ukusakaza"</string> <string name="media_output_broadcast_update_error" msgid="1420868236079122521">"Ayikwazi ukulondoloza. Zama futhi."</string> <string name="media_output_broadcast_last_update_error" msgid="5484328807296895491">"Ayikwazi ukulondoloza."</string> + <string name="media_output_broadcast_code_hint_no_less_than_min" msgid="4663836092607696185">"Sebenzisa okungenani izinhlamvu ezi-4"</string> + <string name="media_output_broadcast_code_hint_no_more_than_max" msgid="9181869364856175638">"Sebenzisa isinhlamvu ezimbalwa kuneziyi-16"</string> <string name="build_number_clip_data_label" msgid="3623176728412560914">"Yakha inombolo"</string> <string name="build_number_copy_toast" msgid="877720921605503046">"Yakha inombolo ekopishelwe kubhodi yokunamathisela."</string> <string name="basic_status" msgid="2315371112182658176">"Vula ingxoxo"</string> @@ -1020,11 +1030,16 @@ <string name="keyguard_affordance_enablement_dialog_home_instruction_2" msgid="8308525385889021652">"• Okungenani idivayisi eyodwa iyatholakala"</string> <string name="keyguard_affordance_press_too_short" msgid="8145437175134998864">"Thinta futhi ubambe isinqamuleli"</string> <string name="rear_display_bottom_sheet_cancel" msgid="3461468855493357248">"Khansela"</string> - <string name="rear_display_bottom_sheet_confirm" msgid="4383356544661421206">"Phendula manje"</string> - <string name="rear_display_fold_bottom_sheet_title" msgid="6081542277622721548">"Vula ifoni ukuze ube nesithombe ozishuthe sona esingcono"</string> - <string name="rear_display_unfold_bottom_sheet_title" msgid="2137403802960396357">"Phendulela kwisibonisi sangaphambili ukuba nesithombe ozishuthe sona esingcono?"</string> - <string name="rear_display_bottom_sheet_description" msgid="1852662982816810352">"Sebenzisa ikhamera ebheke ngemuva ukuze uthole isithombe esibanzi esinokucaca okuphezulu."</string> - <string name="rear_display_bottom_sheet_warning" msgid="800995919558238930"><b>"✱ Lesi sikrini sizovala"</b></string> + <!-- no translation found for rear_display_bottom_sheet_confirm (1507591562761552899) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_title (3930008746560711990) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_title (6291111173057304055) --> + <skip /> + <!-- no translation found for rear_display_folded_bottom_sheet_description (6842767125783222695) --> + <skip /> + <!-- no translation found for rear_display_unfolded_bottom_sheet_description (7229961336309960201) --> + <skip /> <string name="rear_display_accessibility_folded_animation" msgid="1538121649587978179">"Idivayisi egoqekayo iyembulwa"</string> <string name="rear_display_accessibility_unfolded_animation" msgid="1946153682258289040">"Idivayisi egoqekayo iphendulwa nxazonke"</string> <string name="stylus_battery_low_percentage" msgid="1620068112350141558">"<xliff:g id="PERCENTAGE">%s</xliff:g> ibhethri elisele"</string> diff --git a/packages/SystemUI/res/values-zu/tiles_states_strings.xml b/packages/SystemUI/res/values-zu/tiles_states_strings.xml index 81c46364a9fd..a8ccbb58366a 100644 --- a/packages/SystemUI/res/values-zu/tiles_states_strings.xml +++ b/packages/SystemUI/res/values-zu/tiles_states_strings.xml @@ -176,4 +176,7 @@ <item msgid="8014986104355098744">"Valiwe"</item> <item msgid="5966994759929723339">"Vuliwe"</item> </string-array> + <!-- no translation found for tile_states_font_scaling:0 (3173069902082305985) --> + <!-- no translation found for tile_states_font_scaling:1 (2478289035899842865) --> + <!-- no translation found for tile_states_font_scaling:2 (5137565285664080143) --> </resources> diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml index 031d40e074a3..3f84ddb2a067 100644 --- a/packages/SystemUI/res/values/config.xml +++ b/packages/SystemUI/res/values/config.xml @@ -450,7 +450,7 @@ <integer name="watch_heap_limit">256000</integer> <!-- SystemUI Plugins that can be loaded on user builds. --> - <string-array name="config_pluginWhitelist" translatable="false"> + <string-array name="config_pluginAllowlist" translatable="false"> <item>com.android.systemui</item> </string-array> @@ -829,7 +829,7 @@ <string name="config_wallpaperPickerPackage" translatable="false"> com.android.wallpaper </string> - + <!-- Whether the floating rotation button should be on the left/right in the device's natural orientation --> <bool name="floating_rotation_button_position_left">true</bool> diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml index e6ac59e6b106..464ce0333fd1 100644 --- a/packages/SystemUI/res/values/strings.xml +++ b/packages/SystemUI/res/values/strings.xml @@ -479,6 +479,8 @@ <string name="accessibility_desc_notification_shade">Notification shade.</string> <!-- Content description for the quick settings panel (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_desc_quick_settings">Quick settings.</string> + <!-- Content description for the split notification shade that also includes QS (not shown on the screen). [CHAR LIMIT=NONE] --> + <string name="accessibility_desc_qs_notification_shade">Quick settings and Notification shade.</string> <!-- Content description for the lock screen (not shown on the screen). [CHAR LIMIT=NONE] --> <string name="accessibility_desc_lock_screen">Lock screen.</string> <!-- Content description for the work profile lock screen. This prevents work profile apps from being used, but personal apps can be used as normal (not shown on the screen). [CHAR LIMIT=NONE] --> diff --git a/packages/SystemUI/src/com/android/keyguard/ActiveUnlockConfig.kt b/packages/SystemUI/src/com/android/keyguard/ActiveUnlockConfig.kt index ead1a100f75b..c4f1ce8f5d3b 100644 --- a/packages/SystemUI/src/com/android/keyguard/ActiveUnlockConfig.kt +++ b/packages/SystemUI/src/com/android/keyguard/ActiveUnlockConfig.kt @@ -29,8 +29,9 @@ import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_FACE_ACQUIRE_INFO import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_FACE_ERRORS import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_UNLOCK_INTENT import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_UNLOCK_INTENT_WHEN_BIOMETRIC_ENROLLED -import android.provider.Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_WAKE +import android.provider.Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS +import android.provider.Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD import android.util.Log import com.android.keyguard.KeyguardUpdateMonitor.getCurrentUser import com.android.systemui.Dumpable @@ -60,9 +61,27 @@ class ActiveUnlockConfig @Inject constructor( * Indicates the origin for an active unlock request. */ enum class ActiveUnlockRequestOrigin { + /** + * Trigger ActiveUnlock on wake ups that'd trigger FaceAuth, see [FaceWakeUpTriggersConfig] + */ WAKE, + + /** + * Trigger ActiveUnlock on unlock intents. This includes the bouncer showing or tapping on + * a notification. May also include wakeups: [wakeupsConsideredUnlockIntents]. + */ UNLOCK_INTENT, + + /** + * Trigger ActiveUnlock on biometric failures. This may include soft errors depending on + * the other settings. See: [faceErrorsToTriggerBiometricFailOn], + * [faceAcquireInfoToTriggerBiometricFailOn]. + */ BIOMETRIC_FAIL, + + /** + * Trigger ActiveUnlock when the assistant is triggered. + */ ASSISTANT, } @@ -85,6 +104,7 @@ class ActiveUnlockConfig @Inject constructor( private var faceAcquireInfoToTriggerBiometricFailOn = mutableSetOf<Int>() private var onUnlockIntentWhenBiometricEnrolled = mutableSetOf<Int>() private var wakeupsConsideredUnlockIntents = mutableSetOf<Int>() + private var wakeupsToForceDismissKeyguard = mutableSetOf<Int>() private val settingsObserver = object : ContentObserver(handler) { private val wakeUri = secureSettings.getUriFor(ACTIVE_UNLOCK_ON_WAKE) @@ -97,6 +117,8 @@ class ActiveUnlockConfig @Inject constructor( secureSettings.getUriFor(ACTIVE_UNLOCK_ON_UNLOCK_INTENT_WHEN_BIOMETRIC_ENROLLED) private val wakeupsConsideredUnlockIntentsUri = secureSettings.getUriFor(ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS) + private val wakeupsToForceDismissKeyguardUri = + secureSettings.getUriFor(ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD) fun register() { registerUri( @@ -108,6 +130,7 @@ class ActiveUnlockConfig @Inject constructor( faceAcquireInfoUri, unlockIntentWhenBiometricEnrolledUri, wakeupsConsideredUnlockIntentsUri, + wakeupsToForceDismissKeyguardUri, ) ) @@ -182,6 +205,15 @@ class ActiveUnlockConfig @Inject constructor( wakeupsConsideredUnlockIntents, setOf(WAKE_REASON_UNFOLD_DEVICE)) } + + if (selfChange || uris.contains(wakeupsToForceDismissKeyguardUri)) { + processStringArray( + secureSettings.getStringForUser( + ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD, + getCurrentUser()), + wakeupsToForceDismissKeyguard, + setOf(WAKE_REASON_UNFOLD_DEVICE)) + } } /** @@ -249,6 +281,14 @@ class ActiveUnlockConfig @Inject constructor( } /** + * Whether the PowerManager wake reason should force dismiss the keyguard if active + * unlock is successful. + */ + fun shouldWakeupForceDismissKeyguard(pmWakeReason: Int): Boolean { + return wakeupsToForceDismissKeyguard.contains(pmWakeReason) + } + + /** * Whether to trigger active unlock based on where the request is coming from and * the current settings. */ @@ -321,6 +361,9 @@ class ActiveUnlockConfig @Inject constructor( pw.println(" activeUnlockWakeupsConsideredUnlockIntents=${ wakeupsConsideredUnlockIntents.map { PowerManager.wakeReasonToString(it) } }") + pw.println(" activeUnlockFromWakeupsToAlwaysDismissKeyguard=${ + wakeupsToForceDismissKeyguard.map { PowerManager.wakeReasonToString(it) } + }") pw.println("Current state:") keyguardUpdateMonitor?.let { diff --git a/packages/SystemUI/src/com/android/keyguard/FaceWakeUpTriggersConfig.kt b/packages/SystemUI/src/com/android/keyguard/FaceWakeUpTriggersConfig.kt index a0c43fba4bc1..788a66dcf281 100644 --- a/packages/SystemUI/src/com/android/keyguard/FaceWakeUpTriggersConfig.kt +++ b/packages/SystemUI/src/com/android/keyguard/FaceWakeUpTriggersConfig.kt @@ -29,7 +29,7 @@ import java.io.PrintWriter import java.util.stream.Collectors import javax.inject.Inject -/** Determines which device wake-ups should trigger face authentication. */ +/** Determines which device wake-ups should trigger passive authentication. */ @SysUISingleton class FaceWakeUpTriggersConfig @Inject diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java deleted file mode 100644 index 2a389b6132e9..000000000000 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * Copyright (C) 2007 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.keyguard; - -import android.content.Context; -import android.graphics.Canvas; -import android.util.AttributeSet; -import android.view.MotionEvent; -import android.widget.FrameLayout; - -/** - * Base class for keyguard view. {@link #reset} is where you should - * reset the state of your view. Use the {@link KeyguardViewCallback} via - * {@link #getCallback()} to send information back (such as poking the wake lock, - * or finishing the keyguard). - * - * Handles intercepting of media keys that still work when the keyguard is - * showing. - */ -public class KeyguardHostView extends FrameLayout { - - protected ViewMediatorCallback mViewMediatorCallback; - private boolean mIsInteractable; - - public KeyguardHostView(Context context) { - this(context, null); - } - - public KeyguardHostView(Context context, AttributeSet attrs) { - super(context, attrs); - } - - @Override - protected void dispatchDraw(Canvas canvas) { - super.dispatchDraw(canvas); - if (mViewMediatorCallback != null) { - mViewMediatorCallback.keyguardDoneDrawing(); - } - } - - public void setViewMediatorCallback(ViewMediatorCallback viewMediatorCallback) { - mViewMediatorCallback = viewMediatorCallback; - } - - /** Set true if the view can be interacted with */ - public void setInteractable(boolean isInteractable) { - mIsInteractable = isInteractable; - } - - /** - * Make sure to disallow touches while transitioning the bouncer, otherwise - * it can remain interactable even when barely visible. - */ - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - return !mIsInteractable; - } - - /** True to consume any events that are sent to it */ - @Override - public boolean onTouchEvent(MotionEvent ev) { - return true; - } -} diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardHostViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardHostViewController.java deleted file mode 100644 index 77f6318738a7..000000000000 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardHostViewController.java +++ /dev/null @@ -1,538 +0,0 @@ -/* - * Copyright (C) 2020 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.keyguard; - -import android.app.ActivityManager; -import android.content.res.ColorStateList; -import android.content.res.Resources; -import android.media.AudioManager; -import android.os.SystemClock; -import android.telephony.TelephonyManager; -import android.util.Log; -import android.util.MathUtils; -import android.view.KeyEvent; -import android.view.View; -import android.view.View.OnKeyListener; -import android.view.ViewTreeObserver; -import android.widget.FrameLayout; -import android.window.OnBackAnimationCallback; - -import androidx.annotation.NonNull; - -import com.android.keyguard.KeyguardSecurityContainer.SecurityCallback; -import com.android.keyguard.KeyguardSecurityModel.SecurityMode; -import com.android.keyguard.dagger.KeyguardBouncerScope; -import com.android.settingslib.Utils; -import com.android.systemui.R; -import com.android.systemui.plugins.ActivityStarter; -import com.android.systemui.util.ViewController; - -import java.io.File; - -import javax.inject.Inject; - -/** Controller for a {@link KeyguardHostView}. */ -@KeyguardBouncerScope -public class KeyguardHostViewController extends ViewController<KeyguardHostView> { - private static final String TAG = "KeyguardViewBase"; - public static final boolean DEBUG = KeyguardConstants.DEBUG; - // Whether the volume keys should be handled by keyguard. If true, then - // they will be handled here for specific media types such as music, otherwise - // the audio service will bring up the volume dialog. - private static final boolean KEYGUARD_MANAGES_VOLUME = false; - - private static final String ENABLE_MENU_KEY_FILE = "/data/local/enable_menu_key"; - - private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; - private final KeyguardSecurityContainerController mKeyguardSecurityContainerController; - private final TelephonyManager mTelephonyManager; - private final ViewMediatorCallback mViewMediatorCallback; - private final AudioManager mAudioManager; - - private ActivityStarter.OnDismissAction mDismissAction; - private Runnable mCancelAction; - private int mTranslationY; - - private final KeyguardUpdateMonitorCallback mUpdateCallback = - new KeyguardUpdateMonitorCallback() { - @Override - public void onTrustGrantedForCurrentUser( - boolean dismissKeyguard, - boolean newlyUnlocked, - TrustGrantFlags flags, - String message - ) { - if (dismissKeyguard) { - if (!mView.isVisibleToUser()) { - // The trust agent dismissed the keyguard without the user proving - // that they are present (by swiping up to show the bouncer). That's - // fine if the user proved presence via some other way to the trust - // agent. - Log.i(TAG, "TrustAgent dismissed Keyguard."); - } - mSecurityCallback.dismiss( - false /* authenticated */, - KeyguardUpdateMonitor.getCurrentUser(), - /* bypassSecondaryLockScreen */ false, - SecurityMode.Invalid - ); - } else { - if (flags.isInitiatedByUser() || flags.dismissKeyguardRequested()) { - mViewMediatorCallback.playTrustedSound(); - } - } - } - }; - - private final SecurityCallback mSecurityCallback = new SecurityCallback() { - - @Override - public boolean dismiss(boolean authenticated, int targetUserId, - boolean bypassSecondaryLockScreen, SecurityMode expectedSecurityMode) { - return mKeyguardSecurityContainerController.showNextSecurityScreenOrFinish( - authenticated, targetUserId, bypassSecondaryLockScreen, expectedSecurityMode); - } - - @Override - public void userActivity() { - mViewMediatorCallback.userActivity(); - } - - @Override - public void onSecurityModeChanged(SecurityMode securityMode, boolean needsInput) { - mViewMediatorCallback.setNeedsInput(needsInput); - } - - /** - * Authentication has happened and it's time to dismiss keyguard. This function - * should clean up and inform KeyguardViewMediator. - * - * @param strongAuth whether the user has authenticated with strong authentication like - * pattern, password or PIN but not by trust agents or fingerprint - * @param targetUserId a user that needs to be the foreground user at the dismissal - * completion. - */ - @Override - public void finish(boolean strongAuth, int targetUserId) { - // If there's a pending runnable because the user interacted with a widget - // and we're leaving keyguard, then run it. - boolean deferKeyguardDone = false; - if (mDismissAction != null) { - deferKeyguardDone = mDismissAction.onDismiss(); - mDismissAction = null; - mCancelAction = null; - } - if (mViewMediatorCallback != null) { - if (deferKeyguardDone) { - mViewMediatorCallback.keyguardDonePending(strongAuth, targetUserId); - } else { - mViewMediatorCallback.keyguardDone(strongAuth, targetUserId); - } - } - } - - @Override - public void reset() { - mViewMediatorCallback.resetKeyguard(); - } - - @Override - public void onCancelClicked() { - mViewMediatorCallback.onCancelClicked(); - } - }; - - private OnKeyListener mOnKeyListener = (v, keyCode, event) -> interceptMediaKey(event); - - @Inject - public KeyguardHostViewController(KeyguardHostView view, - KeyguardUpdateMonitor keyguardUpdateMonitor, - AudioManager audioManager, - TelephonyManager telephonyManager, - ViewMediatorCallback viewMediatorCallback, - KeyguardSecurityContainerController.Factory - keyguardSecurityContainerControllerFactory) { - super(view); - mKeyguardUpdateMonitor = keyguardUpdateMonitor; - mAudioManager = audioManager; - mTelephonyManager = telephonyManager; - mViewMediatorCallback = viewMediatorCallback; - mKeyguardSecurityContainerController = keyguardSecurityContainerControllerFactory.create( - mSecurityCallback); - } - - /** Initialize the Controller. */ - public void onInit() { - mKeyguardSecurityContainerController.init(); - updateResources(); - } - - @Override - protected void onViewAttached() { - mView.setViewMediatorCallback(mViewMediatorCallback); - // Update ViewMediator with the current input method requirements - mViewMediatorCallback.setNeedsInput(mKeyguardSecurityContainerController.needsInput()); - mKeyguardUpdateMonitor.registerCallback(mUpdateCallback); - mView.setOnKeyListener(mOnKeyListener); - mKeyguardSecurityContainerController.showPrimarySecurityScreen(false); - } - - @Override - protected void onViewDetached() { - mKeyguardUpdateMonitor.removeCallback(mUpdateCallback); - mView.setOnKeyListener(null); - } - - /** Called before this view is being removed. */ - public void cleanUp() { - mKeyguardSecurityContainerController.onPause(); - } - - public void resetSecurityContainer() { - mKeyguardSecurityContainerController.reset(); - } - - /** - * Reinflate the view flipper child view. - */ - public void reinflateViewFlipper() { - mKeyguardSecurityContainerController.reinflateViewFlipper(); - } - - /** - * Dismisses the keyguard by going to the next screen or making it gone. - * @param targetUserId a user that needs to be the foreground user at the dismissal completion. - * @return True if the keyguard is done. - */ - public boolean dismiss(int targetUserId) { - return mSecurityCallback.dismiss(false, targetUserId, false, - getCurrentSecurityMode()); - } - - /** - * Called when the Keyguard is actively shown on the screen. - */ - public void onResume() { - if (DEBUG) Log.d(TAG, "screen on, instance " + Integer.toHexString(hashCode())); - mKeyguardSecurityContainerController.onResume(KeyguardSecurityView.SCREEN_ON); - mView.requestFocus(); - } - - public CharSequence getAccessibilityTitleForCurrentMode() { - return mKeyguardSecurityContainerController.getTitle(); - } - - /** - * Starts the animation when the Keyguard gets shown. - */ - public void appear() { - // We might still be collapsed and the view didn't have time to layout yet or still - // be small, let's wait on the predraw to do the animation in that case. - mView.getViewTreeObserver().addOnPreDrawListener( - new ViewTreeObserver.OnPreDrawListener() { - @Override - public boolean onPreDraw() { - mView.getViewTreeObserver().removeOnPreDrawListener(this); - mKeyguardSecurityContainerController.startAppearAnimation(); - return true; - } - }); - mView.requestLayout(); - } - - /** - * Show a string explaining why the security view needs to be solved. - * - * @param reason a flag indicating which string should be shown, see - * {@link KeyguardSecurityView#PROMPT_REASON_NONE}, - * {@link KeyguardSecurityView#PROMPT_REASON_RESTART}, - * {@link KeyguardSecurityView#PROMPT_REASON_TIMEOUT}, and - * {@link KeyguardSecurityView#PROMPT_REASON_PREPARE_FOR_UPDATE}. - */ - public void showPromptReason(int reason) { - mKeyguardSecurityContainerController.showPromptReason(reason); - } - - public void showMessage(CharSequence message, ColorStateList colorState) { - mKeyguardSecurityContainerController.showMessage(message, colorState); - } - - public void showErrorMessage(CharSequence customMessage) { - showMessage(customMessage, Utils.getColorError(mView.getContext())); - } - - /** - * Sets an action to run when keyguard finishes. - * - * @param action - */ - public void setOnDismissAction(ActivityStarter.OnDismissAction action, Runnable cancelAction) { - if (mCancelAction != null) { - mCancelAction.run(); - mCancelAction = null; - } - mDismissAction = action; - mCancelAction = cancelAction; - } - - public void cancelDismissAction() { - setOnDismissAction(null, null); - } - - public void startDisappearAnimation(Runnable finishRunnable) { - if (!mKeyguardSecurityContainerController.startDisappearAnimation(finishRunnable) - && finishRunnable != null) { - finishRunnable.run(); - } - } - - /** - * Called when the Keyguard is not actively shown anymore on the screen. - */ - public void onPause() { - if (DEBUG) { - Log.d(TAG, String.format("screen off, instance %s at %s", - Integer.toHexString(hashCode()), SystemClock.uptimeMillis())); - } - mKeyguardSecurityContainerController.showPrimarySecurityScreen(true); - mKeyguardSecurityContainerController.onPause(); - mView.clearFocus(); - } - - /** - * Called when the view needs to be shown. - */ - public void showPrimarySecurityScreen() { - if (DEBUG) Log.d(TAG, "show()"); - mKeyguardSecurityContainerController.showPrimarySecurityScreen(false); - } - - /** - * Fades and translates in/out the security screen. - * Fades in as expansion approaches 0. - * Animation duration is between 0.33f and 0.67f of panel expansion fraction. - * @param fraction amount of the screen that should show. - */ - public void setExpansion(float fraction) { - float scaledFraction = BouncerPanelExpansionCalculator.showBouncerProgress(fraction); - mView.setAlpha(MathUtils.constrain(1 - scaledFraction, 0f, 1f)); - mView.setTranslationY(scaledFraction * mTranslationY); - } - - /** - * When bouncer was visible and is starting to become hidden. - */ - public void onStartingToHide() { - mKeyguardSecurityContainerController.onStartingToHide(); - } - - /** Called when bouncer visibility changes. */ - public void onBouncerVisibilityChanged(@View.Visibility int visibility) { - mKeyguardSecurityContainerController.onBouncerVisibilityChanged(visibility); - } - - public boolean hasDismissActions() { - return mDismissAction != null || mCancelAction != null; - } - - public SecurityMode getCurrentSecurityMode() { - return mKeyguardSecurityContainerController.getCurrentSecurityMode(); - } - - public int getTop() { - int top = mView.getTop(); - // The password view has an extra top padding that should be ignored. - if (getCurrentSecurityMode() == SecurityMode.Password) { - View messageArea = mView.findViewById(R.id.keyguard_message_area); - top += messageArea.getTop(); - } - return top; - } - - public boolean handleBackKey() { - SecurityMode securityMode = mKeyguardSecurityContainerController.getCurrentSecurityMode(); - if (securityMode != SecurityMode.None) { - mKeyguardSecurityContainerController.dismiss( - false, KeyguardUpdateMonitor.getCurrentUser(), securityMode); - return true; - } - return false; - } - - /** - * In general, we enable unlocking the insecure keyguard with the menu key. However, there are - * some cases where we wish to disable it, notably when the menu button placement or technology - * is prone to false positives. - * - * @return true if the menu key should be enabled - */ - public boolean shouldEnableMenuKey() { - final Resources res = mView.getResources(); - final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen); - final boolean isTestHarness = ActivityManager.isRunningInTestHarness(); - final boolean fileOverride = (new File(ENABLE_MENU_KEY_FILE)).exists(); - return !configDisabled || isTestHarness || fileOverride; - } - - /** - * @return true if the current bouncer is password - */ - public boolean dispatchBackKeyEventPreIme() { - if (mKeyguardSecurityContainerController.getCurrentSecurityMode() - == SecurityMode.Password) { - return true; - } - return false; - } - - /** - * @return the {@link OnBackAnimationCallback} to animate this view during a back gesture. - */ - @NonNull - public OnBackAnimationCallback getBackCallback() { - return mKeyguardSecurityContainerController.getBackCallback(); - } - - /** - * Allows the media keys to work when the keyguard is showing. - * The media keys should be of no interest to the actual keyguard view(s), - * so intercepting them here should not be of any harm. - * @param event The key event - * @return whether the event was consumed as a media key. - */ - public boolean interceptMediaKey(KeyEvent event) { - int keyCode = event.getKeyCode(); - if (event.getAction() == KeyEvent.ACTION_DOWN) { - switch (keyCode) { - case KeyEvent.KEYCODE_MEDIA_PLAY: - case KeyEvent.KEYCODE_MEDIA_PAUSE: - case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: - /* Suppress PLAY/PAUSE toggle when phone is ringing or - * in-call to avoid music playback */ - if (mTelephonyManager != null && - mTelephonyManager.getCallState() != TelephonyManager.CALL_STATE_IDLE) { - return true; // suppress key event - } - case KeyEvent.KEYCODE_MUTE: - case KeyEvent.KEYCODE_HEADSETHOOK: - case KeyEvent.KEYCODE_MEDIA_STOP: - case KeyEvent.KEYCODE_MEDIA_NEXT: - case KeyEvent.KEYCODE_MEDIA_PREVIOUS: - case KeyEvent.KEYCODE_MEDIA_REWIND: - case KeyEvent.KEYCODE_MEDIA_RECORD: - case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: - case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: { - handleMediaKeyEvent(event); - return true; - } - - case KeyEvent.KEYCODE_VOLUME_UP: - case KeyEvent.KEYCODE_VOLUME_DOWN: - case KeyEvent.KEYCODE_VOLUME_MUTE: { - if (KEYGUARD_MANAGES_VOLUME) { - // Volume buttons should only function for music (local or remote). - // TODO: Actually handle MUTE. - mAudioManager.adjustSuggestedStreamVolume( - keyCode == KeyEvent.KEYCODE_VOLUME_UP - ? AudioManager.ADJUST_RAISE - : AudioManager.ADJUST_LOWER /* direction */, - AudioManager.STREAM_MUSIC /* stream */, 0 /* flags */); - // Don't execute default volume behavior - return true; - } else { - return false; - } - } - } - } else if (event.getAction() == KeyEvent.ACTION_UP) { - switch (keyCode) { - case KeyEvent.KEYCODE_MUTE: - case KeyEvent.KEYCODE_HEADSETHOOK: - case KeyEvent.KEYCODE_MEDIA_PLAY: - case KeyEvent.KEYCODE_MEDIA_PAUSE: - case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: - case KeyEvent.KEYCODE_MEDIA_STOP: - case KeyEvent.KEYCODE_MEDIA_NEXT: - case KeyEvent.KEYCODE_MEDIA_PREVIOUS: - case KeyEvent.KEYCODE_MEDIA_REWIND: - case KeyEvent.KEYCODE_MEDIA_RECORD: - case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: - case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: { - handleMediaKeyEvent(event); - return true; - } - } - } - return false; - } - - - private void handleMediaKeyEvent(KeyEvent keyEvent) { - mAudioManager.dispatchMediaKeyEvent(keyEvent); - } - - public void finish(boolean strongAuth, int currentUser) { - mSecurityCallback.finish(strongAuth, currentUser); - } - - /** - * Apply keyguard configuration from the currently active resources. This can be called when the - * device configuration changes, to re-apply some resources that are qualified on the device - * configuration. - */ - public void updateResources() { - int gravity; - - Resources resources = mView.getResources(); - - if (resources.getBoolean(R.bool.can_use_one_handed_bouncer)) { - gravity = resources.getInteger( - R.integer.keyguard_host_view_one_handed_gravity); - } else { - gravity = resources.getInteger(R.integer.keyguard_host_view_gravity); - } - - mTranslationY = resources - .getDimensionPixelSize(R.dimen.keyguard_host_view_translation_y); - // Android SysUI uses a FrameLayout as the top-level, but Auto uses RelativeLayout. - // We're just changing the gravity here though (which can't be applied to RelativeLayout), - // so only attempt the update if mView is inside a FrameLayout. - if (mView.getLayoutParams() instanceof FrameLayout.LayoutParams) { - FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mView.getLayoutParams(); - if (lp.gravity != gravity) { - lp.gravity = gravity; - mView.setLayoutParams(lp); - } - } - - if (mKeyguardSecurityContainerController != null) { - mKeyguardSecurityContainerController.updateResources(); - } - } - - /** Update keyguard position based on a tapped X coordinate. */ - public void updateKeyguardPosition(float x) { - if (mKeyguardSecurityContainerController != null) { - mKeyguardSecurityContainerController.updateKeyguardPosition(x); - } - } - - /** Set true if the view can be interacted with */ - public void setInteractable(boolean isInteractable) { - mView.setInteractable(isInteractable); - } -} diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java index b143c5b90373..7054393f5fed 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardInputViewController.java @@ -51,26 +51,7 @@ public abstract class KeyguardInputViewController<T extends KeyguardInputView> // The following is used to ignore callbacks from SecurityViews that are no longer current // (e.g. face unlock). This avoids unwanted asynchronous events from messing with the // state for the current security method. - private KeyguardSecurityCallback mNullCallback = new KeyguardSecurityCallback() { - @Override - public void userActivity() { } - @Override - public void reportUnlockAttempt(int userId, boolean success, int timeoutMs) { } - @Override - public boolean isVerifyUnlockOnly() { - return false; - } - @Override - public void dismiss(boolean securityVerified, int targetUserId, - SecurityMode expectedSecurityMode) { } - @Override - public void dismiss(boolean authenticated, int targetId, - boolean bypassSecondaryLockScreen, SecurityMode expectedSecurityMode) { } - @Override - public void onUserInput() { } - @Override - public void reset() {} - }; + private KeyguardSecurityCallback mNullCallback = new KeyguardSecurityCallback() {}; protected KeyguardInputViewController(T view, SecurityMode securityMode, KeyguardSecurityCallback keyguardSecurityCallback, diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityCallback.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityCallback.java index bc72f7979a74..bf9c3bbddc30 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityCallback.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityCallback.java @@ -25,7 +25,9 @@ public interface KeyguardSecurityCallback { * @param targetUserId a user that needs to be the foreground user at the dismissal completion. * @param expectedSecurityMode The security mode that is invoking this dismiss. */ - void dismiss(boolean securityVerified, int targetUserId, SecurityMode expectedSecurityMode); + default void dismiss(boolean securityVerified, int targetUserId, + SecurityMode expectedSecurityMode) { + } /** * Dismiss the given security screen. @@ -35,19 +37,26 @@ public interface KeyguardSecurityCallback { * if any, during this dismissal. * @param expectedSecurityMode The security mode that is invoking this dismiss. */ - void dismiss(boolean securityVerified, int targetUserId, boolean bypassSecondaryLockScreen, - SecurityMode expectedSecurityMode); + default boolean dismiss(boolean securityVerified, int targetUserId, + boolean bypassSecondaryLockScreen, + SecurityMode expectedSecurityMode) { + return false; + } /** * Manually report user activity to keep the device awake. */ - void userActivity(); + default void userActivity() { + } /** * Checks if keyguard is in "verify credentials" mode. + * * @return true if user has been asked to verify security. */ - boolean isVerifyUnlockOnly(); + default boolean isVerifyUnlockOnly() { + return false; + } /** * Call to report an unlock attempt. @@ -56,12 +65,14 @@ public interface KeyguardSecurityCallback { * @param timeoutMs timeout in milliseconds to wait before reattempting an unlock. * Only nonzero if 'success' is false */ - void reportUnlockAttempt(int userId, boolean success, int timeoutMs); + default void reportUnlockAttempt(int userId, boolean success, int timeoutMs) { + } /** * Resets the keyguard view. */ - void reset(); + default void reset() { + } /** * Call when cancel button is pressed in bouncer. @@ -73,5 +84,19 @@ public interface KeyguardSecurityCallback { /** * Invoked whenever users are typing their password or drawing a pattern. */ - void onUserInput(); + default void onUserInput() { + } + + + /** + * Dismisses keyguard and go to unlocked state. + */ + default void finish(boolean strongAuth, int targetUserId) { + } + + /** + * Specifies that security mode has changed. + */ + default void onSecurityModeChanged(SecurityMode securityMode, boolean needsInput) { + } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java index 9f07a20ce812..eec788b7add8 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java @@ -50,6 +50,7 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.BlendMode; +import android.graphics.Canvas; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; @@ -164,6 +165,8 @@ public class KeyguardSecurityContainer extends ConstraintLayout { private boolean mDisappearAnimRunning; private SwipeListener mSwipeListener; private ViewMode mViewMode = new DefaultViewMode(); + private boolean mIsInteractable; + protected ViewMediatorCallback mViewMediatorCallback; /* * Using MODE_UNINITIALIZED to mean the view mode is set to DefaultViewMode, but init() has not * yet been called on it. This will happen when the ViewController is initialized. @@ -265,31 +268,6 @@ public class KeyguardSecurityContainer extends ConstraintLayout { return mBackCallback; } - // Used to notify the container when something interesting happens. - public interface SecurityCallback { - /** - * Potentially dismiss the current security screen, after validating that all device - * security has been unlocked. Otherwise show the next screen. - */ - boolean dismiss(boolean authenticated, int targetUserId, boolean bypassSecondaryLockScreen, - SecurityMode expectedSecurityMode); - - void userActivity(); - - void onSecurityModeChanged(SecurityMode securityMode, boolean needsInput); - - /** - * @param strongAuth wheher the user has authenticated with strong authentication like - * pattern, password or PIN but not by trust agents or fingerprint - * @param targetUserId a user that needs to be the foreground user at the finish completion. - */ - void finish(boolean strongAuth, int targetUserId); - - void reset(); - - void onCancelClicked(); - } - public interface SwipeListener { void onSwipeUp(); } @@ -342,7 +320,7 @@ public class KeyguardSecurityContainer extends ConstraintLayout { public KeyguardSecurityContainer(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); - mSpringAnimation = new SpringAnimation(this, DynamicAnimation.Y); + mSpringAnimation = new SpringAnimation(this, DynamicAnimation.TRANSLATION_Y); mViewConfiguration = ViewConfiguration.get(context); mDoubleTapDetector = new GestureDetector(context, new DoubleTapListener()); } @@ -445,6 +423,11 @@ public class KeyguardSecurityContainer extends ConstraintLayout { mViewMode.reset(); } + /** Set true if the view can be interacted with */ + public void setInteractable(boolean isInteractable) { + mIsInteractable = isInteractable; + } + @Override public boolean shouldDelayChildPressedState() { return true; @@ -452,6 +435,10 @@ public class KeyguardSecurityContainer extends ConstraintLayout { @Override public boolean onInterceptTouchEvent(MotionEvent event) { + if (!mIsInteractable) { + return true; + } + boolean result = mMotionEventListeners.stream().anyMatch( listener -> listener.onInterceptTouchEvent(event)) || super.onInterceptTouchEvent(event); @@ -639,6 +626,18 @@ public class KeyguardSecurityContainer extends ConstraintLayout { return insets.inset(0, 0, 0, inset); } + @Override + protected void dispatchDraw(Canvas canvas) { + super.dispatchDraw(canvas); + if (mViewMediatorCallback != null) { + mViewMediatorCallback.keyguardDoneDrawing(); + } + } + + public void setViewMediatorCallback(ViewMediatorCallback viewMediatorCallback) { + mViewMediatorCallback = viewMediatorCallback; + } + private void showDialog(String title, String message) { if (mAlertDialog != null) { mAlertDialog.dismiss(); diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java index d9b88954c306..92cbb296f270 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainerController.java @@ -29,18 +29,27 @@ import static com.android.keyguard.KeyguardSecurityContainer.USER_TYPE_SECONDARY import static com.android.keyguard.KeyguardSecurityContainer.USER_TYPE_WORK_PROFILE; import static com.android.systemui.DejankUtils.whitelistIpcs; +import android.app.ActivityManager; import android.app.admin.DevicePolicyManager; import android.content.Intent; import android.content.res.ColorStateList; import android.content.res.Configuration; +import android.content.res.Resources; import android.hardware.biometrics.BiometricOverlayConstants; import android.hardware.biometrics.BiometricSourceType; +import android.media.AudioManager; import android.metrics.LogMaker; +import android.os.SystemClock; import android.os.UserHandle; +import android.telephony.TelephonyManager; import android.util.Log; +import android.util.MathUtils; import android.util.Slog; +import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; +import android.view.ViewTreeObserver; +import android.widget.FrameLayout; import android.window.OnBackAnimationCallback; import androidx.annotation.NonNull; @@ -54,7 +63,6 @@ import com.android.internal.logging.nano.MetricsProto; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; import com.android.internal.widget.LockPatternUtils; import com.android.keyguard.KeyguardSecurityContainer.BouncerUiEvent; -import com.android.keyguard.KeyguardSecurityContainer.SecurityCallback; import com.android.keyguard.KeyguardSecurityContainer.SwipeListener; import com.android.keyguard.KeyguardSecurityModel.SecurityMode; import com.android.keyguard.dagger.KeyguardBouncerScope; @@ -68,6 +76,7 @@ import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; import com.android.systemui.log.SessionTracker; +import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.shared.system.SysUiStatsLog; import com.android.systemui.statusbar.policy.ConfigurationController; @@ -76,6 +85,7 @@ import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.util.ViewController; import com.android.systemui.util.settings.GlobalSettings; +import java.io.File; import java.util.Optional; import javax.inject.Inject; @@ -96,7 +106,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final UiEventLogger mUiEventLogger; private final KeyguardStateController mKeyguardStateController; private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController; - private final SecurityCallback mSecurityCallback; private final ConfigurationController mConfigurationController; private final FalsingCollector mFalsingCollector; private final FalsingManager mFalsingManager; @@ -106,6 +115,20 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final SessionTracker mSessionTracker; private final Optional<SideFpsController> mSideFpsController; private final FalsingA11yDelegate mFalsingA11yDelegate; + private int mTranslationY; + // Whether the volume keys should be handled by keyguard. If true, then + // they will be handled here for specific media types such as music, otherwise + // the audio service will bring up the volume dialog. + private static final boolean KEYGUARD_MANAGES_VOLUME = false; + + private static final String ENABLE_MENU_KEY_FILE = "/data/local/enable_menu_key"; + + private final TelephonyManager mTelephonyManager; + private final ViewMediatorCallback mViewMediatorCallback; + private final AudioManager mAudioManager; + private View.OnKeyListener mOnKeyListener = (v, keyCode, event) -> interceptMediaKey(event); + private ActivityStarter.OnDismissAction mDismissAction; + private Runnable mCancelAction; private int mLastOrientation = Configuration.ORIENTATION_UNDEFINED; @@ -150,11 +173,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard }; private KeyguardSecurityCallback mKeyguardSecurityCallback = new KeyguardSecurityCallback() { - public void userActivity() { - if (mSecurityCallback != null) { - mSecurityCallback.userActivity(); - } - } @Override public void onUserInput() { @@ -169,16 +187,23 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } @Override - public void dismiss(boolean authenticated, int targetId, + public boolean dismiss(boolean authenticated, int targetId, boolean bypassSecondaryLockScreen, SecurityMode expectedSecurityMode) { - mSecurityCallback.dismiss(authenticated, targetId, bypassSecondaryLockScreen, - expectedSecurityMode); + return showNextSecurityScreenOrFinish( + authenticated, targetId, bypassSecondaryLockScreen, expectedSecurityMode); + } + + @Override + public void userActivity() { + mViewMediatorCallback.userActivity(); } + @Override public boolean isVerifyUnlockOnly() { return false; } + @Override public void reportUnlockAttempt(int userId, boolean success, int timeoutMs) { int bouncerSide = SysUiStatsLog.KEYGUARD_BOUNCER_PASSWORD_ENTERED__SIDE__DEFAULT; if (mView.isSidedSecurityMode()) { @@ -215,12 +240,47 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard : BouncerUiEvent.BOUNCER_PASSWORD_FAILURE, getSessionId()); } + @Override public void reset() { - mSecurityCallback.reset(); + mViewMediatorCallback.resetKeyguard(); } + @Override public void onCancelClicked() { - mSecurityCallback.onCancelClicked(); + mViewMediatorCallback.onCancelClicked(); + } + + /** + * Authentication has happened and it's time to dismiss keyguard. This function + * should clean up and inform KeyguardViewMediator. + * + * @param strongAuth whether the user has authenticated with strong authentication like + * pattern, password or PIN but not by trust agents or fingerprint + * @param targetUserId a user that needs to be the foreground user at the dismissal + * completion. + */ + @Override + public void finish(boolean strongAuth, int targetUserId) { + // If there's a pending runnable because the user interacted with a widget + // and we're leaving keyguard, then run it. + boolean deferKeyguardDone = false; + if (mDismissAction != null) { + deferKeyguardDone = mDismissAction.onDismiss(); + mDismissAction = null; + mCancelAction = null; + } + if (mViewMediatorCallback != null) { + if (deferKeyguardDone) { + mViewMediatorCallback.keyguardDonePending(strongAuth, targetUserId); + } else { + mViewMediatorCallback.keyguardDone(strongAuth, targetUserId); + } + } + } + + @Override + public void onSecurityModeChanged(SecurityMode securityMode, boolean needsInput) { + mViewMediatorCallback.setNeedsInput(needsInput); } }; @@ -264,6 +324,34 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard private final KeyguardUpdateMonitorCallback mKeyguardUpdateMonitorCallback = new KeyguardUpdateMonitorCallback() { @Override + public void onTrustGrantedForCurrentUser( + boolean dismissKeyguard, + boolean newlyUnlocked, + TrustGrantFlags flags, + String message + ) { + if (dismissKeyguard) { + if (!mView.isVisibleToUser()) { + // The trust agent dismissed the keyguard without the user proving + // that they are present (by swiping up to show the bouncer). That's + // fine if the user proved presence via some other way to the trust + // agent. + Log.i(TAG, "TrustAgent dismissed Keyguard."); + } + mKeyguardSecurityCallback.dismiss( + false /* authenticated */, + KeyguardUpdateMonitor.getCurrentUser(), + /* bypassSecondaryLockScreen */ false, + SecurityMode.Invalid + ); + } else { + if (flags.isInitiatedByUser() || flags.dismissKeyguardRequested()) { + mViewMediatorCallback.playTrustedSound(); + } + } + } + + @Override public void onDevicePolicyManagerStateChanged() { showPrimarySecurityScreen(false); } @@ -282,7 +370,8 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } }; - private KeyguardSecurityContainerController(KeyguardSecurityContainer view, + @Inject + public KeyguardSecurityContainerController(KeyguardSecurityContainer view, AdminSecondaryLockScreenController.Factory adminSecondaryLockScreenControllerFactory, LockPatternUtils lockPatternUtils, KeyguardUpdateMonitor keyguardUpdateMonitor, @@ -290,7 +379,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard MetricsLogger metricsLogger, UiEventLogger uiEventLogger, KeyguardStateController keyguardStateController, - SecurityCallback securityCallback, KeyguardSecurityViewFlipperController securityViewFlipperController, ConfigurationController configurationController, FalsingCollector falsingCollector, @@ -300,7 +388,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard GlobalSettings globalSettings, SessionTracker sessionTracker, Optional<SideFpsController> sideFpsController, - FalsingA11yDelegate falsingA11yDelegate) { + FalsingA11yDelegate falsingA11yDelegate, + TelephonyManager telephonyManager, + ViewMediatorCallback viewMediatorCallback, + AudioManager audioManager + ) { super(view); mLockPatternUtils = lockPatternUtils; mUpdateMonitor = keyguardUpdateMonitor; @@ -308,7 +400,6 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mMetricsLogger = metricsLogger; mUiEventLogger = uiEventLogger; mKeyguardStateController = keyguardStateController; - mSecurityCallback = securityCallback; mSecurityViewFlipperController = securityViewFlipperController; mAdminSecondaryLockScreenController = adminSecondaryLockScreenControllerFactory.create( mKeyguardSecurityCallback); @@ -322,11 +413,15 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mSessionTracker = sessionTracker; mSideFpsController = sideFpsController; mFalsingA11yDelegate = falsingA11yDelegate; + mTelephonyManager = telephonyManager; + mViewMediatorCallback = viewMediatorCallback; + mAudioManager = audioManager; } @Override public void onInit() { mSecurityViewFlipperController.init(); + updateResources(); configureMode(); } @@ -337,6 +432,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mView.addMotionEventListener(mGlobalTouchListener); mConfigurationController.addCallback(mConfigurationListener); mUserSwitcherController.addUserSwitchCallback(mUserSwitchCallback); + mView.setViewMediatorCallback(mViewMediatorCallback); + // Update ViewMediator with the current input method requirements + mViewMediatorCallback.setNeedsInput(needsInput()); + mView.setOnKeyListener(mOnKeyListener); + showPrimarySecurityScreen(false); } @Override @@ -349,6 +449,11 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard /** */ public void onPause() { + if (DEBUG) { + Log.d(TAG, String.format("screen off, instance %s at %s", + Integer.toHexString(hashCode()), SystemClock.uptimeMillis())); + } + showPrimarySecurityScreen(true); mAdminSecondaryLockScreenController.hide(); if (mCurrentSecurityMode != SecurityMode.None) { getCurrentSecurityController().onPause(); @@ -357,6 +462,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard // It might happen that onStartingToHide is not called when the device is locked while on // bouncer. setBouncerVisible(false); + mView.clearFocus(); } private void updateSideFpsVisibility() { @@ -393,12 +499,22 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard * @param turningOff true if the device is being turned off */ public void showPrimarySecurityScreen(boolean turningOff) { + if (DEBUG) Log.d(TAG, "show()"); SecurityMode securityMode = whitelistIpcs(() -> mSecurityModel.getSecurityMode( KeyguardUpdateMonitor.getCurrentUser())); if (DEBUG) Log.v(TAG, "showPrimarySecurityScreen(turningOff=" + turningOff + ")"); showSecurityScreen(securityMode); } + /** + * Show a string explaining why the security view needs to be solved. + * + * @param reason a flag indicating which string should be shown, see + * {@link KeyguardSecurityView#PROMPT_REASON_NONE}, + * {@link KeyguardSecurityView#PROMPT_REASON_RESTART}, + * {@link KeyguardSecurityView#PROMPT_REASON_TIMEOUT}, and + * {@link KeyguardSecurityView#PROMPT_REASON_PREPARE_FOR_UPDATE}. + */ @Override public void showPromptReason(int reason) { if (mCurrentSecurityMode != SecurityMode.None) { @@ -415,8 +531,32 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } } - public SecurityMode getCurrentSecurityMode() { - return mCurrentSecurityMode; + /** + * Sets an action to run when keyguard finishes. + * + * @param action callback to be invoked when keyguard disappear animation completes. + */ + public void setOnDismissAction(ActivityStarter.OnDismissAction action, Runnable cancelAction) { + if (mCancelAction != null) { + mCancelAction.run(); + mCancelAction = null; + } + mDismissAction = action; + mCancelAction = cancelAction; + } + + /** + * @return whether dismiss action or cancel action has been set. + */ + public boolean hasDismissActions() { + return mDismissAction != null || mCancelAction != null; + } + + /** + * Remove any dismiss action or cancel action that was set. + */ + public void cancelDismissAction() { + setOnDismissAction(null, null); } /** @@ -428,17 +568,64 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardSecurityCallback.dismiss(authenticated, targetUserId, expectedSecurityMode); } - public void reset() { - mView.reset(); - mSecurityViewFlipperController.reset(); + /** + * Dismisses the keyguard by going to the next screen or making it gone. + * @param targetUserId a user that needs to be the foreground user at the dismissal completion. + * @return True if the keyguard is done. + */ + public boolean dismiss(int targetUserId) { + return mKeyguardSecurityCallback.dismiss(false, targetUserId, false, + getCurrentSecurityMode()); + } + + public SecurityMode getCurrentSecurityMode() { + return mCurrentSecurityMode; + } + + /** + * @return the top of the corresponding view. + */ + public int getTop() { + int top = mView.getTop(); + // The password view has an extra top padding that should be ignored. + if (getCurrentSecurityMode() == SecurityMode.Password) { + View messageArea = mView.findViewById(R.id.keyguard_message_area); + top += messageArea.getTop(); + } + return top; + } + + /** Set true if the view can be interacted with */ + public void setInteractable(boolean isInteractable) { + mView.setInteractable(isInteractable); } + /** + * Dismiss keyguard due to a user unlock event. + */ + public void finish(boolean strongAuth, int currentUser) { + mKeyguardSecurityCallback.finish(strongAuth, currentUser); + } + + /** + * @return the text of the KeyguardMessageArea. + */ public CharSequence getTitle() { return mView.getTitle(); } + /** + * Resets the state of the views. + */ + public void reset() { + mView.reset(); + mSecurityViewFlipperController.reset(); + } + @Override public void onResume(int reason) { + if (DEBUG) Log.d(TAG, "screen on, instance " + Integer.toHexString(hashCode())); + mView.requestFocus(); if (mCurrentSecurityMode != SecurityMode.None) { int state = SysUiStatsLog.KEYGUARD_BOUNCER_STATE_CHANGED__STATE__SHOWN; if (mView.isSidedSecurityMode()) { @@ -456,6 +643,25 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardStateController.isFaceAuthEnabled()); } + /** + * Show the bouncer and start appear animations. + * + */ + public void appear() { + // We might still be collapsed and the view didn't have time to layout yet or still + // be small, let's wait on the predraw to do the animation in that case. + mView.getViewTreeObserver().addOnPreDrawListener( + new ViewTreeObserver.OnPreDrawListener() { + @Override + public boolean onPreDraw() { + mView.getViewTreeObserver().removeOnPreDrawListener(this); + startAppearAnimation(); + return true; + } + }); + mView.requestLayout(); + } + public void startAppearAnimation() { if (mCurrentSecurityMode != SecurityMode.None) { mView.setAlpha(1f); @@ -465,12 +671,19 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard } public boolean startDisappearAnimation(Runnable onFinishRunnable) { + boolean didRunAnimation = false; + if (mCurrentSecurityMode != SecurityMode.None) { mView.startDisappearAnimation(mCurrentSecurityMode); - return getCurrentSecurityController().startDisappearAnimation(onFinishRunnable); + didRunAnimation = getCurrentSecurityController().startDisappearAnimation( + onFinishRunnable); } - return false; + if (!didRunAnimation && onFinishRunnable != null) { + onFinishRunnable.run(); + } + + return didRunAnimation; } public void onStartingToHide() { @@ -585,7 +798,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mUiEventLogger.log(uiEvent, getSessionId()); } if (finish) { - mSecurityCallback.finish(strongAuth, targetUserId); + mKeyguardSecurityCallback.finish(strongAuth, targetUserId); } return finish; } @@ -598,11 +811,114 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard * @return the {@link OnBackAnimationCallback} to animate this view during a back gesture. */ @NonNull - OnBackAnimationCallback getBackCallback() { + public OnBackAnimationCallback getBackCallback() { return mView.getBackCallback(); } /** + * @return whether we should dispatch the back key event before Ime. + */ + public boolean dispatchBackKeyEventPreIme() { + return getCurrentSecurityMode() == SecurityMode.Password; + } + + /** + * Allows the media keys to work when the keyguard is showing. + * The media keys should be of no interest to the actual keyguard view(s), + * so intercepting them here should not be of any harm. + * @param event The key event + * @return whether the event was consumed as a media key. + */ + public boolean interceptMediaKey(KeyEvent event) { + int keyCode = event.getKeyCode(); + if (event.getAction() == KeyEvent.ACTION_DOWN) { + switch (keyCode) { + case KeyEvent.KEYCODE_MEDIA_PLAY: + case KeyEvent.KEYCODE_MEDIA_PAUSE: + case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: + /* Suppress PLAY/PAUSE toggle when phone is ringing or + * in-call to avoid music playback */ + if (mTelephonyManager != null + && mTelephonyManager.getCallState() + != TelephonyManager.CALL_STATE_IDLE) { + return true; // suppress key event + } + return false; + case KeyEvent.KEYCODE_MUTE: + case KeyEvent.KEYCODE_HEADSETHOOK: + case KeyEvent.KEYCODE_MEDIA_STOP: + case KeyEvent.KEYCODE_MEDIA_NEXT: + case KeyEvent.KEYCODE_MEDIA_PREVIOUS: + case KeyEvent.KEYCODE_MEDIA_REWIND: + case KeyEvent.KEYCODE_MEDIA_RECORD: + case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: + case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: { + handleMediaKeyEvent(event); + return true; + } + + case KeyEvent.KEYCODE_VOLUME_UP: + case KeyEvent.KEYCODE_VOLUME_DOWN: + case KeyEvent.KEYCODE_VOLUME_MUTE: { + if (KEYGUARD_MANAGES_VOLUME) { + // Volume buttons should only function for music (local or remote). + // TODO: Actually handle MUTE. + mAudioManager.adjustSuggestedStreamVolume( + keyCode == KeyEvent.KEYCODE_VOLUME_UP + ? AudioManager.ADJUST_RAISE + : AudioManager.ADJUST_LOWER /* direction */, + AudioManager.STREAM_MUSIC /* stream */, 0 /* flags */); + // Don't execute default volume behavior + return true; + } else { + return false; + } + } + } + } else if (event.getAction() == KeyEvent.ACTION_UP) { + switch (keyCode) { + case KeyEvent.KEYCODE_MUTE: + case KeyEvent.KEYCODE_HEADSETHOOK: + case KeyEvent.KEYCODE_MEDIA_PLAY: + case KeyEvent.KEYCODE_MEDIA_PAUSE: + case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: + case KeyEvent.KEYCODE_MEDIA_STOP: + case KeyEvent.KEYCODE_MEDIA_NEXT: + case KeyEvent.KEYCODE_MEDIA_PREVIOUS: + case KeyEvent.KEYCODE_MEDIA_REWIND: + case KeyEvent.KEYCODE_MEDIA_RECORD: + case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: + case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK: { + handleMediaKeyEvent(event); + return true; + } + } + } + return false; + } + + + private void handleMediaKeyEvent(KeyEvent keyEvent) { + mAudioManager.dispatchMediaKeyEvent(keyEvent); + } + + /** + * In general, we enable unlocking the insecure keyguard with the menu key. However, there are + * some cases where we wish to disable it, notably when the menu button placement or technology + * is prone to false positives. + * + * @return true if the menu key should be enabled + */ + public boolean shouldEnableMenuKey() { + final Resources res = mView.getResources(); + final boolean configDisabled = res.getBoolean(R.bool.config_disableMenuKeyInLockScreen); + final boolean isTestHarness = ActivityManager.isRunningInTestHarness(); + final boolean fileOverride = (new File(ENABLE_MENU_KEY_FILE)).exists(); + return !configDisabled || isTestHarness || fileOverride; + } + + + /** * Switches to the given security view unless it's already being shown, in which case * this is a no-op. * @@ -630,7 +946,7 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard configureMode(); } - mSecurityCallback.onSecurityModeChanged( + mKeyguardSecurityCallback.onSecurityModeChanged( securityMode, newView != null && newView.needsInput()); } @@ -728,6 +1044,30 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard * configuration. */ public void updateResources() { + int gravity; + + Resources resources = mView.getResources(); + + if (resources.getBoolean(R.bool.can_use_one_handed_bouncer)) { + gravity = resources.getInteger( + R.integer.keyguard_host_view_one_handed_gravity); + } else { + gravity = resources.getInteger(R.integer.keyguard_host_view_gravity); + } + + mTranslationY = resources + .getDimensionPixelSize(R.dimen.keyguard_host_view_translation_y); + // Android SysUI uses a FrameLayout as the top-level, but Auto uses RelativeLayout. + // We're just changing the gravity here though (which can't be applied to RelativeLayout), + // so only attempt the update if mView is inside a FrameLayout. + if (mView.getLayoutParams() instanceof FrameLayout.LayoutParams) { + FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) mView.getLayoutParams(); + if (lp.gravity != gravity) { + lp.gravity = gravity; + mView.setLayoutParams(lp); + } + } + int newOrientation = getResources().getConfiguration().orientation; if (newOrientation != mLastOrientation) { mLastOrientation = newOrientation; @@ -764,77 +1104,15 @@ public class KeyguardSecurityContainerController extends ViewController<Keyguard mKeyguardSecurityCallback); } - static class Factory { - - private final KeyguardSecurityContainer mView; - private final AdminSecondaryLockScreenController.Factory - mAdminSecondaryLockScreenControllerFactory; - private final LockPatternUtils mLockPatternUtils; - private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; - private final KeyguardSecurityModel mKeyguardSecurityModel; - private final MetricsLogger mMetricsLogger; - private final UiEventLogger mUiEventLogger; - private final KeyguardStateController mKeyguardStateController; - private final KeyguardSecurityViewFlipperController mSecurityViewFlipperController; - private final ConfigurationController mConfigurationController; - private final FalsingCollector mFalsingCollector; - private final FalsingManager mFalsingManager; - private final GlobalSettings mGlobalSettings; - private final FeatureFlags mFeatureFlags; - private final UserSwitcherController mUserSwitcherController; - private final SessionTracker mSessionTracker; - private final Optional<SideFpsController> mSidefpsController; - private final FalsingA11yDelegate mFalsingA11yDelegate; - - @Inject - Factory(KeyguardSecurityContainer view, - AdminSecondaryLockScreenController.Factory - adminSecondaryLockScreenControllerFactory, - LockPatternUtils lockPatternUtils, - KeyguardUpdateMonitor keyguardUpdateMonitor, - KeyguardSecurityModel keyguardSecurityModel, - MetricsLogger metricsLogger, - UiEventLogger uiEventLogger, - KeyguardStateController keyguardStateController, - KeyguardSecurityViewFlipperController securityViewFlipperController, - ConfigurationController configurationController, - FalsingCollector falsingCollector, - FalsingManager falsingManager, - UserSwitcherController userSwitcherController, - FeatureFlags featureFlags, - GlobalSettings globalSettings, - SessionTracker sessionTracker, - Optional<SideFpsController> sidefpsController, - FalsingA11yDelegate falsingA11yDelegate) { - mView = view; - mAdminSecondaryLockScreenControllerFactory = adminSecondaryLockScreenControllerFactory; - mLockPatternUtils = lockPatternUtils; - mKeyguardUpdateMonitor = keyguardUpdateMonitor; - mKeyguardSecurityModel = keyguardSecurityModel; - mMetricsLogger = metricsLogger; - mUiEventLogger = uiEventLogger; - mKeyguardStateController = keyguardStateController; - mSecurityViewFlipperController = securityViewFlipperController; - mConfigurationController = configurationController; - mFalsingCollector = falsingCollector; - mFalsingManager = falsingManager; - mFeatureFlags = featureFlags; - mGlobalSettings = globalSettings; - mUserSwitcherController = userSwitcherController; - mSessionTracker = sessionTracker; - mSidefpsController = sidefpsController; - mFalsingA11yDelegate = falsingA11yDelegate; - } - - public KeyguardSecurityContainerController create( - SecurityCallback securityCallback) { - return new KeyguardSecurityContainerController(mView, - mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, - mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, - mKeyguardStateController, securityCallback, mSecurityViewFlipperController, - mConfigurationController, mFalsingCollector, mFalsingManager, - mUserSwitcherController, mFeatureFlags, mGlobalSettings, mSessionTracker, - mSidefpsController, mFalsingA11yDelegate); - } + /** + * Fades and translates in/out the security screen. + * Fades in as expansion approaches 0. + * Animation duration is between 0.33f and 0.67f of panel expansion fraction. + * @param fraction amount of the screen that should show. + */ + public void setExpansion(float fraction) { + float scaledFraction = BouncerPanelExpansionCalculator.showBouncerProgress(fraction); + mView.setAlpha(MathUtils.constrain(1 - scaledFraction, 0f, 1f)); + mView.setTranslationY(scaledFraction * mTranslationY); } } diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java index e5113654e1ef..be9264dbfcf3 100644 --- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java +++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java @@ -1927,11 +1927,23 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab FACE_AUTH_UPDATED_STARTED_WAKING_UP.setExtraInfo(pmWakeReason); updateFaceListeningState(BIOMETRIC_ACTION_UPDATE, FACE_AUTH_UPDATED_STARTED_WAKING_UP); - requestActiveUnlock( + + final ActiveUnlockConfig.ActiveUnlockRequestOrigin requestOrigin = mActiveUnlockConfig.isWakeupConsideredUnlockIntent(pmWakeReason) ? ActiveUnlockConfig.ActiveUnlockRequestOrigin.UNLOCK_INTENT - : ActiveUnlockConfig.ActiveUnlockRequestOrigin.WAKE, - "wakingUp - " + PowerManager.wakeReasonToString(pmWakeReason)); + : ActiveUnlockConfig.ActiveUnlockRequestOrigin.WAKE; + final String reason = "wakingUp - " + PowerManager.wakeReasonToString(pmWakeReason); + if (mActiveUnlockConfig.shouldWakeupForceDismissKeyguard(pmWakeReason)) { + requestActiveUnlockDismissKeyguard( + requestOrigin, + reason + ); + } else { + requestActiveUnlock( + requestOrigin, + reason + ); + } } else { mLogger.logSkipUpdateFaceListeningOnWakeup(pmWakeReason); } @@ -2590,6 +2602,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } } + /** * Attempts to trigger active unlock from trust agent. * Only dismisses the keyguard under certain conditions. @@ -3785,7 +3798,7 @@ public class KeyguardUpdateMonitor implements TrustManager.TrustListener, Dumpab } // TODO: use these callbacks elsewhere in place of the existing notifyScreen*() - // (KeyguardViewMediator, KeyguardHostView) + // (KeyguardViewMediator, KeyguardSecurityContainer) /** * Dispatch wakeup events to: * - update biometric listening states diff --git a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerComponent.java b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerComponent.java index 5ad21df1e652..154b0ed2c4d1 100644 --- a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerComponent.java +++ b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerComponent.java @@ -18,7 +18,7 @@ package com.android.keyguard.dagger; import android.view.ViewGroup; -import com.android.keyguard.KeyguardHostViewController; +import com.android.keyguard.KeyguardSecurityContainerController; import com.android.systemui.dagger.qualifiers.RootView; import com.android.systemui.keyguard.domain.interactor.PrimaryBouncerInteractor; @@ -37,6 +37,6 @@ public interface KeyguardBouncerComponent { KeyguardBouncerComponent create(@BindsInstance @RootView ViewGroup bouncerContainer); } - /** Returns a {@link KeyguardHostViewController}. */ - KeyguardHostViewController getKeyguardHostViewController(); + /** Returns a {@link KeyguardSecurityContainerController}. */ + KeyguardSecurityContainerController getSecurityContainerController(); } diff --git a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java index cb7a0a9b1653..38f252a221eb 100644 --- a/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java +++ b/packages/SystemUI/src/com/android/keyguard/dagger/KeyguardBouncerModule.java @@ -23,7 +23,6 @@ import android.hardware.fingerprint.FingerprintManager; import android.view.LayoutInflater; import android.view.ViewGroup; -import com.android.keyguard.KeyguardHostView; import com.android.keyguard.KeyguardSecurityContainer; import com.android.keyguard.KeyguardSecurityViewFlipper; import com.android.systemui.R; @@ -47,19 +46,13 @@ public interface KeyguardBouncerModule { /** */ @Provides @KeyguardBouncerScope - static KeyguardHostView providesKeyguardHostView(@RootView ViewGroup rootView, + static KeyguardSecurityContainer providesKeyguardSecurityContainer(@RootView ViewGroup rootView, LayoutInflater layoutInflater) { - KeyguardHostView hostView = (KeyguardHostView) layoutInflater.inflate( - R.layout.keyguard_host_view, rootView, false); - rootView.addView(hostView); - return hostView; - } - - /** */ - @Provides - @KeyguardBouncerScope - static KeyguardSecurityContainer providesKeyguardSecurityContainer(KeyguardHostView hostView) { - return hostView.findViewById(R.id.keyguard_security_container); + KeyguardSecurityContainer securityContainer = + (KeyguardSecurityContainer) layoutInflater.inflate( + R.layout.keyguard_security_container_view, rootView, false); + rootView.addView(securityContainer); + return securityContainer; } /** */ diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java index 2dc0cd34adf4..3302073af7c6 100644 --- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java +++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthController.java @@ -129,7 +129,6 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, private float mScaleFactor = 1f; // sensor locations without any resolution scaling nor rotation adjustments: @Nullable private final Point mFaceSensorLocationDefault; - @Nullable private final Point mFingerprintSensorLocationDefault; // cached sensor locations: @Nullable private Point mFaceSensorLocation; @Nullable private Point mFingerprintSensorLocation; @@ -586,11 +585,23 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, @Nullable private Point getFingerprintSensorLocationInNaturalOrientation() { if (getUdfpsLocation() != null) { return getUdfpsLocation(); + } else { + int xFpLocation = mCachedDisplayInfo.getNaturalWidth() / 2; + try { + xFpLocation = mContext.getResources().getDimensionPixelSize( + com.android.systemui.R.dimen + .physical_fingerprint_sensor_center_screen_location_x); + } catch (Resources.NotFoundException e) { + } + + return new Point( + (int) (xFpLocation * mScaleFactor), + (int) (mContext.getResources().getDimensionPixelSize( + com.android.systemui.R.dimen + .physical_fingerprint_sensor_center_screen_location_y) + * mScaleFactor) + ); } - return new Point( - (int) (mFingerprintSensorLocationDefault.x * mScaleFactor), - (int) (mFingerprintSensorLocationDefault.y * mScaleFactor) - ); } /** @@ -774,19 +785,6 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, } mDisplay = mContext.getDisplay(); - mDisplay.getDisplayInfo(mCachedDisplayInfo); - int xFpLocation = mCachedDisplayInfo.getNaturalWidth() / 2; - try { - xFpLocation = mContext.getResources().getDimensionPixelSize( - com.android.systemui.R.dimen - .physical_fingerprint_sensor_center_screen_location_x); - } catch (Resources.NotFoundException e) { - } - mFingerprintSensorLocationDefault = new Point( - xFpLocation, - mContext.getResources().getDimensionPixelSize(com.android.systemui.R.dimen - .physical_fingerprint_sensor_center_screen_location_y) - ); updateSensorLocations(); IntentFilter filter = new IntentFilter(); @@ -1246,7 +1244,6 @@ public class AuthController implements CoreStartable, CommandQueue.Callbacks, pw.println(" mScaleFactor=" + mScaleFactor); pw.println(" faceAuthSensorLocationDefault=" + mFaceSensorLocationDefault); pw.println(" faceAuthSensorLocation=" + getFaceSensorLocation()); - pw.println(" fingerprintSensorLocationDefault=" + mFingerprintSensorLocationDefault); pw.println(" fingerprintSensorLocationInNaturalOrientation=" + getFingerprintSensorLocationInNaturalOrientation()); pw.println(" fingerprintSensorLocation=" + getFingerprintSensorLocation()); diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt index d8d8c0ead06a..3a3f9b4e5265 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsActivity.kt @@ -134,7 +134,8 @@ class ControlsActivity @Inject constructor( super.onStop() mExitToDream = false - uiController.hide() + // parent is set in onStart, so the field is initialized when we get here + uiController.hide(parent) controlsSettingsDialogManager.closeDialog() } diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt index c1cec9dd0f94..58673bb6f567 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt @@ -31,7 +31,13 @@ interface ControlsUiController { } fun show(parent: ViewGroup, onDismiss: Runnable, activityContext: Context) - fun hide() + + /** + * Hide the controls content if it's attached to this parent. + */ + fun hide(parent: ViewGroup) + + val isShowing: Boolean /** * Returns the preferred activity to start, depending on if the user has favorited any diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt index 58f4835a01ee..9405c602caf7 100644 --- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt +++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt @@ -168,6 +168,9 @@ class ControlsUiControllerImpl @Inject constructor ( private lateinit var activityContext: Context private lateinit var listingCallback: ControlsListingController.ControlsListingCallback + override val isShowing: Boolean + get() = !hidden + init { dumpManager.registerDumpable(javaClass.name, this) } @@ -727,21 +730,27 @@ class ControlsUiControllerImpl @Inject constructor ( controlActionCoordinator.closeDialogs() } - override fun hide() { - hidden = true + override fun hide(parent: ViewGroup) { + // We need to check for the parent because it's possible that we have started showing in a + // different activity. In that case, make sure to only clear things associated with the + // passed parent + if (parent == this.parent) { + Log.d(ControlsUiController.TAG, "hide()") + hidden = true - closeDialogs(true) - controlsController.get().unsubscribe() - taskViewController?.dismiss() - taskViewController = null + closeDialogs(true) + controlsController.get().unsubscribe() + taskViewController?.dismiss() + taskViewController = null - parent.removeAllViews() - controlsById.clear() - controlViewsById.clear() + controlsById.clear() + controlViewsById.clear() - controlsListingController.get().removeCallback(listingCallback) + controlsListingController.get().removeCallback(listingCallback) - if (!retainCache) RenderInfo.clearCache() + if (!retainCache) RenderInfo.clearCache() + } + parent.removeAllViews() } override fun onRefreshState(componentName: ComponentName, controls: List<Control>) { diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugStartable.kt b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugStartable.kt index dc7fc28f3c0d..06ca0adfa928 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugStartable.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsDebugStartable.kt @@ -22,6 +22,7 @@ import com.android.systemui.broadcast.BroadcastSender import com.android.systemui.dump.DumpManager import com.android.systemui.statusbar.commandline.CommandRegistry import com.android.systemui.util.InitializationChecker +import com.android.systemui.util.concurrency.DelayableExecutor import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey @@ -36,7 +37,9 @@ constructor( private val flagCommand: FlagCommand, private val featureFlags: FeatureFlagsDebug, private val broadcastSender: BroadcastSender, - private val initializationChecker: InitializationChecker + private val initializationChecker: InitializationChecker, + private val restartDozeListener: RestartDozeListener, + private val delayableExecutor: DelayableExecutor ) : CoreStartable { init { @@ -52,6 +55,9 @@ constructor( // protected broadcast should only be sent for the main process val intent = Intent(FlagManager.ACTION_SYSUI_STARTED) broadcastSender.sendBroadcast(intent) + + restartDozeListener.init() + delayableExecutor.executeDelayed({ restartDozeListener.maybeRestartSleep() }, 1000) } } } diff --git a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseStartable.kt b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseStartable.kt index d088d7414035..133e67f2822b 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseStartable.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/FeatureFlagsReleaseStartable.kt @@ -18,6 +18,8 @@ package com.android.systemui.flags import com.android.systemui.CoreStartable import com.android.systemui.dump.DumpManager +import com.android.systemui.util.InitializationChecker +import com.android.systemui.util.concurrency.DelayableExecutor import dagger.Binds import dagger.Module import dagger.multibindings.ClassKey @@ -26,7 +28,13 @@ import javax.inject.Inject class FeatureFlagsReleaseStartable @Inject -constructor(dumpManager: DumpManager, featureFlags: FeatureFlags) : CoreStartable { +constructor( + dumpManager: DumpManager, + featureFlags: FeatureFlags, + private val initializationChecker: InitializationChecker, + private val restartDozeListener: RestartDozeListener, + private val delayableExecutor: DelayableExecutor +) : CoreStartable { init { dumpManager.registerCriticalDumpable(FeatureFlagsRelease.TAG) { pw, args -> @@ -35,7 +43,10 @@ constructor(dumpManager: DumpManager, featureFlags: FeatureFlags) : CoreStartabl } override fun start() { - // no-op + if (initializationChecker.initializeComponents()) { + restartDozeListener.init() + delayableExecutor.executeDelayed({ restartDozeListener.maybeRestartSleep() }, 1000) + } } } diff --git a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt index 343fcb0e9c5f..9fe1739fab0f 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/Flags.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/Flags.kt @@ -59,7 +59,7 @@ object Flags { ) // TODO(b/254512517): Tracking Bug - val FSI_REQUIRES_KEYGUARD = unreleasedFlag(110, "fsi_requires_keyguard", teamfood = true) + val FSI_REQUIRES_KEYGUARD = releasedFlag(110, "fsi_requires_keyguard") // TODO(b/259130119): Tracking Bug val FSI_ON_DND_UPDATE = unreleasedFlag(259130119, "fsi_on_dnd_update", teamfood = true) @@ -187,7 +187,7 @@ object Flags { // TODO(b/262780002): Tracking Bug @JvmField - val REVAMPED_WALLPAPER_UI = unreleasedFlag(222, "revamped_wallpaper_ui", teamfood = false) + val REVAMPED_WALLPAPER_UI = unreleasedFlag(222, "revamped_wallpaper_ui", teamfood = true) /** A different path for unocclusion transitions back to keyguard */ // TODO(b/262859270): Tracking Bug @@ -217,6 +217,7 @@ object Flags { unreleasedFlag( 228, "lock_screen_long_press_enabled", + teamfood = true, ) // 300 - power menu @@ -262,6 +263,11 @@ object Flags { val QS_SECONDARY_DATA_SUB_INFO = unreleasedFlag(508, "qs_secondary_data_sub_info", teamfood = true) + /** Enables Font Scaling Quick Settings tile */ + // TODO(b/269341316): Tracking Bug + @JvmField + val ENABLE_FONT_SCALING_TILE = unreleasedFlag(509, "enable_font_scaling_tile", teamfood = false) + // 600- status bar // TODO(b/256614753): Tracking Bug @@ -471,8 +477,7 @@ object Flags { sysPropBooleanFlag(1202, "persist.wm.debug.predictive_back_always_enforce", default = false) // TODO(b/254512728): Tracking Bug - @JvmField - val NEW_BACK_AFFORDANCE = unreleasedFlag(1203, "new_back_affordance", teamfood = true) + @JvmField val NEW_BACK_AFFORDANCE = unreleasedFlag(1203, "new_back_affordance", teamfood = true) // TODO(b/255854141): Tracking Bug @JvmField diff --git a/packages/SystemUI/src/com/android/systemui/flags/RestartDozeListener.kt b/packages/SystemUI/src/com/android/systemui/flags/RestartDozeListener.kt new file mode 100644 index 000000000000..bd74f4e5daab --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/flags/RestartDozeListener.kt @@ -0,0 +1,72 @@ +/* + * Copyright (C) 2023 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.systemui.flags + +import android.os.PowerManager +import android.util.Log +import com.android.internal.annotations.VisibleForTesting +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.util.settings.SecureSettings +import com.android.systemui.util.time.SystemClock +import javax.inject.Inject + +@SysUISingleton +class RestartDozeListener +@Inject +constructor( + private val settings: SecureSettings, + private val statusBarStateController: StatusBarStateController, + private val powerManager: PowerManager, + private val systemClock: SystemClock, +) { + + companion object { + @VisibleForTesting val RESTART_NAP_KEY = "restart_nap_after_start" + } + + private var inited = false + + val listener = + object : StatusBarStateController.StateListener { + override fun onDreamingChanged(isDreaming: Boolean) { + settings.putBool(RESTART_NAP_KEY, isDreaming) + } + } + + fun init() { + if (inited) { + return + } + inited = true + + statusBarStateController.addCallback(listener) + } + + fun destroy() { + statusBarStateController.removeCallback(listener) + } + + fun maybeRestartSleep() { + if (settings.getBool(RESTART_NAP_KEY, false)) { + Log.d("RestartDozeListener", "Restarting sleep state") + powerManager.wakeUp(systemClock.uptimeMillis()) + powerManager.goToSleep(systemClock.uptimeMillis()) + settings.putBool(RESTART_NAP_KEY, false) + } + } +} diff --git a/packages/SystemUI/src/com/android/systemui/flags/ServerFlagReader.kt b/packages/SystemUI/src/com/android/systemui/flags/ServerFlagReader.kt index e225b10d4e52..9b748d0a0eb2 100644 --- a/packages/SystemUI/src/com/android/systemui/flags/ServerFlagReader.kt +++ b/packages/SystemUI/src/com/android/systemui/flags/ServerFlagReader.kt @@ -57,16 +57,16 @@ class ServerFlagReaderImpl @Inject constructor( override fun onPropertiesChanged(properties: DeviceConfig.Properties) { if (isTestHarness) { Log.w(TAG, "Ignore server flag changes in Test Harness mode.") + return } if (properties.namespace != namespace) { return } - for ((listener, flags) in listeners) { propLoop@ for (propName in properties.keyset) { for (flag in flags) { - if (propName == getServerOverrideName(flag.id) || propName == flag.name) { + if (propName == flag.name) { listener.onChange(flag) break@propLoop } @@ -103,10 +103,6 @@ class ServerFlagReaderImpl @Inject constructor( } listeners.add(Pair(listener, flags)) } - - private fun getServerOverrideName(flagId: Int): String { - return "flag_override_$flagId" - } } @Module diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/CustomizationProvider.kt b/packages/SystemUI/src/com/android/systemui/keyguard/CustomizationProvider.kt index 680c504d50fc..27a5974e6299 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/CustomizationProvider.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/CustomizationProvider.kt @@ -131,7 +131,7 @@ class CustomizationProvider : throw UnsupportedOperationException() } - return insertSelection(values) + return runBlocking(mainDispatcher) { insertSelection(values) } } override fun query( @@ -171,7 +171,7 @@ class CustomizationProvider : throw UnsupportedOperationException() } - return deleteSelection(uri, selectionArgs) + return runBlocking(mainDispatcher) { deleteSelection(uri, selectionArgs) } } override fun call(method: String, arg: String?, extras: Bundle?): Bundle? { @@ -189,7 +189,7 @@ class CustomizationProvider : } } - private fun insertSelection(values: ContentValues?): Uri? { + private suspend fun insertSelection(values: ContentValues?): Uri? { if (values == null) { throw IllegalArgumentException("Cannot insert selection, no values passed in!") } @@ -311,7 +311,7 @@ class CustomizationProvider : } } - private fun querySlots(): Cursor { + private suspend fun querySlots(): Cursor { return MatrixCursor( arrayOf( Contract.LockScreenQuickAffordances.SlotTable.Columns.ID, @@ -330,7 +330,7 @@ class CustomizationProvider : } } - private fun queryFlags(): Cursor { + private suspend fun queryFlags(): Cursor { return MatrixCursor( arrayOf( Contract.FlagsTable.Columns.NAME, @@ -353,7 +353,7 @@ class CustomizationProvider : } } - private fun deleteSelection( + private suspend fun deleteSelection( uri: Uri, selectionArgs: Array<out String>?, ): Int { diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardFaceAuthManager.kt b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardFaceAuthManager.kt new file mode 100644 index 000000000000..2069891a23e0 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/keyguard/data/repository/KeyguardFaceAuthManager.kt @@ -0,0 +1,342 @@ +/* + * Copyright (C) 2023 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.systemui.keyguard.data.repository + +import android.app.StatusBarManager +import android.content.Context +import android.hardware.face.FaceManager +import android.os.CancellationSignal +import com.android.internal.logging.InstanceId +import com.android.internal.logging.UiEventLogger +import com.android.keyguard.FaceAuthUiEvent +import com.android.systemui.Dumpable +import com.android.systemui.R +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Application +import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.dump.DumpManager +import com.android.systemui.keyguard.shared.model.AcquiredAuthenticationStatus +import com.android.systemui.keyguard.shared.model.AuthenticationStatus +import com.android.systemui.keyguard.shared.model.DetectionStatus +import com.android.systemui.keyguard.shared.model.ErrorAuthenticationStatus +import com.android.systemui.keyguard.shared.model.FailedAuthenticationStatus +import com.android.systemui.keyguard.shared.model.HelpAuthenticationStatus +import com.android.systemui.keyguard.shared.model.SuccessAuthenticationStatus +import com.android.systemui.log.FaceAuthenticationLogger +import com.android.systemui.log.SessionTracker +import com.android.systemui.statusbar.phone.KeyguardBypassController +import com.android.systemui.user.data.repository.UserRepository +import java.io.PrintWriter +import java.util.Arrays +import java.util.stream.Collectors +import javax.inject.Inject +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Job +import kotlinx.coroutines.delay +import kotlinx.coroutines.flow.Flow +import kotlinx.coroutines.flow.MutableStateFlow +import kotlinx.coroutines.flow.filterNotNull +import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext + +/** + * API to run face authentication and detection for device entry / on keyguard (as opposed to the + * biometric prompt). + */ +interface KeyguardFaceAuthManager { + /** + * Trigger face authentication. + * + * [uiEvent] provided should be logged whenever face authentication runs. Invocation should be + * ignored if face authentication is already running. Results should be propagated through + * [authenticationStatus] + */ + suspend fun authenticate(uiEvent: FaceAuthUiEvent) + + /** + * Trigger face detection. + * + * Invocation should be ignored if face authentication is currently running. + */ + suspend fun detect() + + /** Stop currently running face authentication or detection. */ + fun cancel() + + /** Provide the current status of face authentication. */ + val authenticationStatus: Flow<AuthenticationStatus> + + /** Provide the current status of face detection. */ + val detectionStatus: Flow<DetectionStatus> + + /** Current state of whether face authentication is locked out or not. */ + val isLockedOut: Flow<Boolean> + + /** Current state of whether face authentication is running. */ + val isAuthRunning: Flow<Boolean> + + /** Is face detection supported. */ + val isDetectionSupported: Boolean +} + +@SysUISingleton +class KeyguardFaceAuthManagerImpl +@Inject +constructor( + context: Context, + private val faceManager: FaceManager? = null, + private val userRepository: UserRepository, + private val keyguardBypassController: KeyguardBypassController? = null, + @Application private val applicationScope: CoroutineScope, + @Main private val mainDispatcher: CoroutineDispatcher, + private val sessionTracker: SessionTracker, + private val uiEventsLogger: UiEventLogger, + private val faceAuthLogger: FaceAuthenticationLogger, + dumpManager: DumpManager, +) : KeyguardFaceAuthManager, Dumpable { + private var cancellationSignal: CancellationSignal? = null + private val lockscreenBypassEnabled: Boolean + get() = keyguardBypassController?.bypassEnabled ?: false + private var faceAcquiredInfoIgnoreList: Set<Int> + + private val faceLockoutResetCallback = + object : FaceManager.LockoutResetCallback() { + override fun onLockoutReset(sensorId: Int) { + _isLockedOut.value = false + } + } + + init { + faceManager?.addLockoutResetCallback(faceLockoutResetCallback) + faceAcquiredInfoIgnoreList = + Arrays.stream( + context.resources.getIntArray( + R.array.config_face_acquire_device_entry_ignorelist + ) + ) + .boxed() + .collect(Collectors.toSet()) + dumpManager.registerCriticalDumpable("KeyguardFaceAuthManagerImpl", this) + } + + private val faceAuthCallback = + object : FaceManager.AuthenticationCallback() { + override fun onAuthenticationFailed() { + _authenticationStatus.value = FailedAuthenticationStatus + faceAuthLogger.authenticationFailed() + onFaceAuthRequestCompleted() + } + + override fun onAuthenticationAcquired(acquireInfo: Int) { + _authenticationStatus.value = AcquiredAuthenticationStatus(acquireInfo) + faceAuthLogger.authenticationAcquired(acquireInfo) + } + + override fun onAuthenticationError(errorCode: Int, errString: CharSequence?) { + val errorStatus = ErrorAuthenticationStatus(errorCode, errString.toString()) + if (errorStatus.isLockoutError()) { + _isLockedOut.value = true + } + _authenticationStatus.value = errorStatus + if (errorStatus.isCancellationError()) { + cancelNotReceivedHandlerJob?.cancel() + applicationScope.launch { + faceAuthLogger.launchingQueuedFaceAuthRequest( + faceAuthRequestedWhileCancellation + ) + faceAuthRequestedWhileCancellation?.let { authenticate(it) } + faceAuthRequestedWhileCancellation = null + } + } + faceAuthLogger.authenticationError( + errorCode, + errString, + errorStatus.isLockoutError(), + errorStatus.isCancellationError() + ) + onFaceAuthRequestCompleted() + } + + override fun onAuthenticationHelp(code: Int, helpStr: CharSequence?) { + if (faceAcquiredInfoIgnoreList.contains(code)) { + return + } + _authenticationStatus.value = HelpAuthenticationStatus(code, helpStr.toString()) + } + + override fun onAuthenticationSucceeded(result: FaceManager.AuthenticationResult) { + _authenticationStatus.value = SuccessAuthenticationStatus(result) + faceAuthLogger.faceAuthSuccess(result) + onFaceAuthRequestCompleted() + } + } + + private fun onFaceAuthRequestCompleted() { + cancellationInProgress = false + _isAuthRunning.value = false + cancellationSignal = null + } + + private val detectionCallback = + FaceManager.FaceDetectionCallback { sensorId, userId, isStrong -> + faceAuthLogger.faceDetected() + _detectionStatus.value = DetectionStatus(sensorId, userId, isStrong) + } + + private var cancellationInProgress = false + private var faceAuthRequestedWhileCancellation: FaceAuthUiEvent? = null + + override suspend fun authenticate(uiEvent: FaceAuthUiEvent) { + if (_isAuthRunning.value) { + faceAuthLogger.ignoredFaceAuthTrigger(uiEvent) + return + } + + if (cancellationInProgress) { + faceAuthLogger.queuingRequestWhileCancelling( + faceAuthRequestedWhileCancellation, + uiEvent + ) + faceAuthRequestedWhileCancellation = uiEvent + return + } else { + faceAuthRequestedWhileCancellation = null + } + + withContext(mainDispatcher) { + // We always want to invoke face auth in the main thread. + cancellationSignal = CancellationSignal() + _isAuthRunning.value = true + uiEventsLogger.logWithInstanceIdAndPosition( + uiEvent, + 0, + null, + keyguardSessionId, + uiEvent.extraInfo + ) + faceAuthLogger.authenticating(uiEvent) + faceManager?.authenticate( + null, + cancellationSignal, + faceAuthCallback, + null, + currentUserId, + lockscreenBypassEnabled + ) + } + } + + override suspend fun detect() { + if (!isDetectionSupported) { + faceAuthLogger.detectionNotSupported(faceManager, faceManager?.sensorPropertiesInternal) + return + } + if (_isAuthRunning.value) { + faceAuthLogger.skippingBecauseAlreadyRunning("detection") + return + } + + cancellationSignal = CancellationSignal() + withContext(mainDispatcher) { + // We always want to invoke face detect in the main thread. + faceAuthLogger.faceDetectionStarted() + faceManager?.detectFace(cancellationSignal, detectionCallback, currentUserId) + } + } + + private val currentUserId: Int + get() = userRepository.getSelectedUserInfo().id + + override fun cancel() { + if (cancellationSignal == null) return + + cancellationSignal?.cancel() + cancelNotReceivedHandlerJob = + applicationScope.launch { + delay(DEFAULT_CANCEL_SIGNAL_TIMEOUT) + faceAuthLogger.cancelSignalNotReceived( + _isAuthRunning.value, + _isLockedOut.value, + cancellationInProgress, + faceAuthRequestedWhileCancellation + ) + onFaceAuthRequestCompleted() + } + cancellationInProgress = true + _isAuthRunning.value = false + } + + private var cancelNotReceivedHandlerJob: Job? = null + + private val _authenticationStatus: MutableStateFlow<AuthenticationStatus?> = + MutableStateFlow(null) + override val authenticationStatus: Flow<AuthenticationStatus> + get() = _authenticationStatus.filterNotNull() + + private val _detectionStatus = MutableStateFlow<DetectionStatus?>(null) + override val detectionStatus: Flow<DetectionStatus> + get() = _detectionStatus.filterNotNull() + + private val _isLockedOut = MutableStateFlow(false) + override val isLockedOut: Flow<Boolean> = _isLockedOut + + override val isDetectionSupported = + faceManager?.sensorPropertiesInternal?.firstOrNull()?.supportsFaceDetection ?: false + + private val _isAuthRunning = MutableStateFlow(false) + override val isAuthRunning: Flow<Boolean> + get() = _isAuthRunning + + private val keyguardSessionId: InstanceId? + get() = sessionTracker.getSessionId(StatusBarManager.SESSION_KEYGUARD) + + companion object { + const val TAG = "KeyguardFaceAuthManager" + + /** + * If no cancel signal has been received after this amount of time, assume that it is + * cancelled. + */ + const val DEFAULT_CANCEL_SIGNAL_TIMEOUT = 3000L + } + + override fun dump(pw: PrintWriter, args: Array<out String>) { + pw.println("KeyguardFaceAuthManagerImpl state:") + pw.println(" cancellationInProgress: $cancellationInProgress") + pw.println(" _isLockedOut.value: ${_isLockedOut.value}") + pw.println(" _isAuthRunning.value: ${_isAuthRunning.value}") + pw.println(" isDetectionSupported: $isDetectionSupported") + pw.println(" FaceManager state:") + pw.println(" faceManager: $faceManager") + pw.println(" sensorPropertiesInternal: ${faceManager?.sensorPropertiesInternal}") + pw.println( + " supportsFaceDetection: " + + "${faceManager?.sensorPropertiesInternal?.firstOrNull()?.supportsFaceDetection}" + ) + pw.println( + " faceAuthRequestedWhileCancellation: ${faceAuthRequestedWhileCancellation?.reason}" + ) + pw.println(" cancellationSignal: $cancellationSignal") + pw.println(" faceAcquiredInfoIgnoreList: $faceAcquiredInfoIgnoreList") + pw.println(" _authenticationStatus: ${_authenticationStatus.value}") + pw.println(" _detectionStatus: ${_detectionStatus.value}") + pw.println(" currentUserId: $currentUserId") + pw.println(" keyguardSessionId: $keyguardSessionId") + pw.println(" lockscreenBypassEnabled: $lockscreenBypassEnabled") + } +} diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt index b2da793bb8e0..dfbe1c216847 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractor.kt @@ -18,12 +18,14 @@ package com.android.systemui.keyguard.domain.interactor import android.app.AlertDialog +import android.app.admin.DevicePolicyManager import android.content.Intent import android.util.Log import com.android.internal.widget.LockPatternUtils import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.animation.Expandable import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.flags.FeatureFlags import com.android.systemui.flags.Flags import com.android.systemui.keyguard.data.quickaffordance.KeyguardQuickAffordanceConfig @@ -41,13 +43,17 @@ import com.android.systemui.statusbar.phone.SystemUIDialog import com.android.systemui.statusbar.policy.KeyguardStateController import dagger.Lazy import javax.inject.Inject +import kotlinx.coroutines.CoroutineDispatcher +import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.combine import kotlinx.coroutines.flow.flatMapLatest import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.map import kotlinx.coroutines.flow.onStart +import kotlinx.coroutines.withContext +@OptIn(ExperimentalCoroutinesApi::class) @SysUISingleton class KeyguardQuickAffordanceInteractor @Inject @@ -61,6 +67,8 @@ constructor( private val featureFlags: FeatureFlags, private val repository: Lazy<KeyguardQuickAffordanceRepository>, private val launchAnimator: DialogLaunchAnimator, + private val devicePolicyManager: DevicePolicyManager, + @Background private val backgroundDispatcher: CoroutineDispatcher, ) { private val isUsingRepository: Boolean get() = featureFlags.isEnabled(Flags.CUSTOMIZABLE_LOCK_SCREEN_QUICK_AFFORDANCES) @@ -74,9 +82,13 @@ constructor( get() = featureFlags.isEnabled(Flags.CUSTOMIZABLE_LOCK_SCREEN_QUICK_AFFORDANCES) /** Returns an observable for the quick affordance at the given position. */ - fun quickAffordance( + suspend fun quickAffordance( position: KeyguardQuickAffordancePosition ): Flow<KeyguardQuickAffordanceModel> { + if (isFeatureDisabledByDevicePolicy()) { + return flowOf(KeyguardQuickAffordanceModel.Hidden) + } + return combine( quickAffordanceAlwaysVisible(position), keyguardInteractor.isDozing, @@ -148,13 +160,20 @@ constructor( * * @return `true` if the affordance was selected successfully; `false` otherwise. */ - fun select(slotId: String, affordanceId: String): Boolean { + suspend fun select(slotId: String, affordanceId: String): Boolean { check(isUsingRepository) + if (isFeatureDisabledByDevicePolicy()) { + return false + } val slots = repository.get().getSlotPickerRepresentations() val slot = slots.find { it.id == slotId } ?: return false val selections = - repository.get().getCurrentSelections().getOrDefault(slotId, emptyList()).toMutableList() + repository + .get() + .getCurrentSelections() + .getOrDefault(slotId, emptyList()) + .toMutableList() val alreadySelected = selections.remove(affordanceId) if (!alreadySelected) { while (selections.size > 0 && selections.size >= slot.maxSelectedAffordances) { @@ -183,8 +202,11 @@ constructor( * @return `true` if the affordance was successfully removed; `false` otherwise (for example, if * the affordance was not on the slot to begin with). */ - fun unselect(slotId: String, affordanceId: String?): Boolean { + suspend fun unselect(slotId: String, affordanceId: String?): Boolean { check(isUsingRepository) + if (isFeatureDisabledByDevicePolicy()) { + return false + } val slots = repository.get().getSlotPickerRepresentations() if (slots.find { it.id == slotId } == null) { @@ -203,7 +225,11 @@ constructor( } val selections = - repository.get().getCurrentSelections().getOrDefault(slotId, emptyList()).toMutableList() + repository + .get() + .getCurrentSelections() + .getOrDefault(slotId, emptyList()) + .toMutableList() return if (selections.remove(affordanceId)) { repository .get() @@ -219,6 +245,10 @@ constructor( /** Returns affordance IDs indexed by slot ID, for all known slots. */ suspend fun getSelections(): Map<String, List<KeyguardQuickAffordancePickerRepresentation>> { + if (isFeatureDisabledByDevicePolicy()) { + return emptyMap() + } + val slots = repository.get().getSlotPickerRepresentations() val selections = repository.get().getCurrentSelections() val affordanceById = @@ -343,13 +373,17 @@ constructor( return repository.get().getAffordancePickerRepresentations() } - fun getSlotPickerRepresentations(): List<KeyguardSlotPickerRepresentation> { + suspend fun getSlotPickerRepresentations(): List<KeyguardSlotPickerRepresentation> { check(isUsingRepository) + if (isFeatureDisabledByDevicePolicy()) { + return emptyList() + } + return repository.get().getSlotPickerRepresentations() } - fun getPickerFlags(): List<KeyguardPickerFlag> { + suspend fun getPickerFlags(): List<KeyguardPickerFlag> { return listOf( KeyguardPickerFlag( name = Contract.FlagsTable.FLAG_NAME_REVAMPED_WALLPAPER_UI, @@ -357,7 +391,9 @@ constructor( ), KeyguardPickerFlag( name = Contract.FlagsTable.FLAG_NAME_CUSTOM_LOCK_SCREEN_QUICK_AFFORDANCES_ENABLED, - value = featureFlags.isEnabled(Flags.CUSTOMIZABLE_LOCK_SCREEN_QUICK_AFFORDANCES), + value = + !isFeatureDisabledByDevicePolicy() && + featureFlags.isEnabled(Flags.CUSTOMIZABLE_LOCK_SCREEN_QUICK_AFFORDANCES), ), KeyguardPickerFlag( name = Contract.FlagsTable.FLAG_NAME_CUSTOM_CLOCKS_ENABLED, @@ -374,6 +410,17 @@ constructor( ) } + private suspend fun isFeatureDisabledByDevicePolicy(): Boolean { + val flags = + withContext(backgroundDispatcher) { + devicePolicyManager.getKeyguardDisabledFeatures(null, userTracker.userId) + } + val flagsToCheck = + DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_ALL or + DevicePolicyManager.KEYGUARD_DISABLE_SHORTCUTS_ALL + return flagsToCheck and flags != 0 + } + companion object { private const val TAG = "KeyguardQuickAffordanceInteractor" private const val DELIMITER = "::" diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/FaceAuthenticationModels.kt b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/FaceAuthenticationModels.kt new file mode 100644 index 000000000000..b1c5f8fa270b --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/keyguard/shared/model/FaceAuthenticationModels.kt @@ -0,0 +1,53 @@ +/* + * Copyright (C) 2023 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.systemui.keyguard.shared.model + +import android.hardware.face.FaceManager + +/** Authentication status provided by [com.android.keyguard.faceauth.KeyguardFaceAuthManager] */ +sealed class AuthenticationStatus + +/** Success authentication status. */ +data class SuccessAuthenticationStatus(val successResult: FaceManager.AuthenticationResult) : + AuthenticationStatus() + +/** Face authentication help message. */ +data class HelpAuthenticationStatus(val msgId: Int, val msg: String?) : AuthenticationStatus() + +/** Face acquired message. */ +data class AcquiredAuthenticationStatus(val acquiredInfo: Int) : AuthenticationStatus() + +/** Face authentication failed message. */ +object FailedAuthenticationStatus : AuthenticationStatus() + +/** Face authentication error message */ +data class ErrorAuthenticationStatus(val msgId: Int, val msg: String?) : AuthenticationStatus() { + /** + * Method that checks if [msgId] is a lockout error. A lockout error means that face + * authentication is locked out. + */ + fun isLockoutError() = msgId == FaceManager.FACE_ERROR_LOCKOUT_PERMANENT + + /** + * Method that checks if [msgId] is a cancellation error. This means that face authentication + * was cancelled before it completed. + */ + fun isCancellationError() = msgId == FaceManager.FACE_ERROR_CANCELED +} + +/** Face detection success message. */ +data class DetectionStatus(val sensorId: Int, val userId: Int, val isStrongBiometric: Boolean) diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt index b0c0dd79b047..56f911f8b1da 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt +++ b/packages/SystemUI/src/com/android/systemui/keyguard/ui/binder/KeyguardBouncerViewBinder.kt @@ -22,10 +22,12 @@ import android.view.ViewGroup import android.window.OnBackAnimationCallback import androidx.lifecycle.Lifecycle import androidx.lifecycle.repeatOnLifecycle -import com.android.keyguard.KeyguardHostViewController +import com.android.keyguard.KeyguardSecurityContainerController import com.android.keyguard.KeyguardSecurityModel +import com.android.keyguard.KeyguardSecurityView import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.dagger.KeyguardBouncerComponent +import com.android.settingslib.Utils import com.android.systemui.keyguard.data.BouncerViewDelegate import com.android.systemui.keyguard.shared.constants.KeyguardBouncerConstants.EXPANSION_VISIBLE import com.android.systemui.keyguard.ui.viewmodel.KeyguardBouncerViewModel @@ -43,52 +45,54 @@ object KeyguardBouncerViewBinder { viewModel: KeyguardBouncerViewModel, componentFactory: KeyguardBouncerComponent.Factory ) { - // Builds the KeyguardHostViewController from bouncer view group. - val hostViewController: KeyguardHostViewController = - componentFactory.create(view).keyguardHostViewController - hostViewController.init() + // Builds the KeyguardSecurityContainerController from bouncer view group. + val securityContainerController: KeyguardSecurityContainerController = + componentFactory.create(view).securityContainerController + securityContainerController.init() val delegate = object : BouncerViewDelegate { override fun isFullScreenBouncer(): Boolean { - val mode = hostViewController.currentSecurityMode + val mode = securityContainerController.currentSecurityMode return mode == KeyguardSecurityModel.SecurityMode.SimPin || mode == KeyguardSecurityModel.SecurityMode.SimPuk } override fun getBackCallback(): OnBackAnimationCallback { - return hostViewController.backCallback + return securityContainerController.backCallback } override fun shouldDismissOnMenuPressed(): Boolean { - return hostViewController.shouldEnableMenuKey() + return securityContainerController.shouldEnableMenuKey() } override fun interceptMediaKey(event: KeyEvent?): Boolean { - return hostViewController.interceptMediaKey(event) + return securityContainerController.interceptMediaKey(event) } override fun dispatchBackKeyEventPreIme(): Boolean { - return hostViewController.dispatchBackKeyEventPreIme() + return securityContainerController.dispatchBackKeyEventPreIme() } override fun showNextSecurityScreenOrFinish(): Boolean { - return hostViewController.dismiss(KeyguardUpdateMonitor.getCurrentUser()) + return securityContainerController.dismiss( + KeyguardUpdateMonitor.getCurrentUser() + ) } override fun resume() { - hostViewController.showPrimarySecurityScreen() - hostViewController.onResume() + securityContainerController.showPrimarySecurityScreen(/* isTurningOff= */ false) + securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) } override fun setDismissAction( onDismissAction: ActivityStarter.OnDismissAction?, cancelAction: Runnable? ) { - hostViewController.setOnDismissAction(onDismissAction, cancelAction) + securityContainerController.setOnDismissAction(onDismissAction, cancelAction) } override fun willDismissWithActions(): Boolean { - return hostViewController.hasDismissActions() + return securityContainerController.hasDismissActions() } } view.repeatWhenAttached { @@ -98,38 +102,45 @@ object KeyguardBouncerViewBinder { launch { viewModel.show.collect { // Reset Security Container entirely. - hostViewController.reinflateViewFlipper() - hostViewController.showPromptReason(it.promptReason) + securityContainerController.reinflateViewFlipper() + securityContainerController.showPromptReason(it.promptReason) it.errorMessage?.let { errorMessage -> - hostViewController.showErrorMessage(errorMessage) + securityContainerController.showMessage( + errorMessage, + Utils.getColorError(view.context) + ) } - hostViewController.showPrimarySecurityScreen() - hostViewController.appear() - hostViewController.onResume() + securityContainerController.showPrimarySecurityScreen( + /* turningOff= */ false + ) + securityContainerController.appear() + securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) } } launch { viewModel.hide.collect { - hostViewController.cancelDismissAction() - hostViewController.cleanUp() - hostViewController.resetSecurityContainer() + securityContainerController.cancelDismissAction() + securityContainerController.onPause() + securityContainerController.reset() } } launch { - viewModel.startingToHide.collect { hostViewController.onStartingToHide() } + viewModel.startingToHide.collect { + securityContainerController.onStartingToHide() + } } launch { viewModel.startDisappearAnimation.collect { - hostViewController.startDisappearAnimation(it) + securityContainerController.startDisappearAnimation(it) } } launch { viewModel.bouncerExpansionAmount.collect { expansion -> - hostViewController.setExpansion(expansion) + securityContainerController.setExpansion(expansion) } } @@ -137,10 +148,8 @@ object KeyguardBouncerViewBinder { viewModel.bouncerExpansionAmount .filter { it == EXPANSION_VISIBLE } .collect { - hostViewController.onResume() - view.announceForAccessibility( - hostViewController.accessibilityTitleForCurrentMode - ) + securityContainerController.onResume(KeyguardSecurityView.SCREEN_ON) + view.announceForAccessibility(securityContainerController.title) } } @@ -148,39 +157,42 @@ object KeyguardBouncerViewBinder { viewModel.isBouncerVisible.collect { isVisible -> val visibility = if (isVisible) View.VISIBLE else View.INVISIBLE view.visibility = visibility - hostViewController.onBouncerVisibilityChanged(visibility) + securityContainerController.onBouncerVisibilityChanged(visibility) } } launch { viewModel.isInteractable.collect { isInteractable -> - hostViewController.setInteractable(isInteractable) + securityContainerController.setInteractable(isInteractable) } } launch { viewModel.keyguardPosition.collect { position -> - hostViewController.updateKeyguardPosition(position) + securityContainerController.updateKeyguardPosition(position) } } launch { viewModel.updateResources.collect { - hostViewController.updateResources() + securityContainerController.updateResources() viewModel.notifyUpdateResources() } } launch { viewModel.bouncerShowMessage.collect { - hostViewController.showMessage(it.message, it.colorStateList) + securityContainerController.showMessage(it.message, it.colorStateList) viewModel.onMessageShown() } } launch { viewModel.keyguardAuthenticated.collect { - hostViewController.finish(it, KeyguardUpdateMonitor.getCurrentUser()) + securityContainerController.finish( + it, + KeyguardUpdateMonitor.getCurrentUser() + ) viewModel.notifyKeyguardAuthenticated() } } @@ -194,7 +206,7 @@ object KeyguardBouncerViewBinder { launch { viewModel.screenTurnedOff.collect { if (view.visibility == View.VISIBLE) { - hostViewController.onPause() + securityContainerController.onPause() } } } diff --git a/packages/SystemUI/src/com/android/systemui/log/FaceAuthenticationLogger.kt b/packages/SystemUI/src/com/android/systemui/log/FaceAuthenticationLogger.kt new file mode 100644 index 000000000000..f7349a2a7ae6 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/log/FaceAuthenticationLogger.kt @@ -0,0 +1,181 @@ +package com.android.systemui.log + +import android.hardware.face.FaceManager +import android.hardware.face.FaceSensorPropertiesInternal +import com.android.keyguard.FaceAuthUiEvent +import com.android.systemui.dagger.SysUISingleton +import com.android.systemui.log.dagger.FaceAuthLog +import com.android.systemui.plugins.log.LogBuffer +import com.android.systemui.plugins.log.LogLevel.DEBUG +import com.google.errorprone.annotations.CompileTimeConstant +import javax.inject.Inject + +private const val TAG = "KeyguardFaceAuthManagerLog" + +/** + * Helper class for logging for [com.android.keyguard.faceauth.KeyguardFaceAuthManager] + * + * To enable logcat echoing for an entire buffer: + * + * ``` + * adb shell settings put global systemui/buffer/KeyguardFaceAuthManagerLog <logLevel> + * + * ``` + */ +@SysUISingleton +class FaceAuthenticationLogger +@Inject +constructor( + @FaceAuthLog private val logBuffer: LogBuffer, +) { + fun ignoredFaceAuthTrigger(uiEvent: FaceAuthUiEvent) { + logBuffer.log( + TAG, + DEBUG, + { str1 = uiEvent.reason }, + { + "Ignoring trigger because face auth is currently running. " + + "Trigger reason: $str1" + } + ) + } + + fun queuingRequestWhileCancelling( + alreadyQueuedRequest: FaceAuthUiEvent?, + newRequest: FaceAuthUiEvent + ) { + logBuffer.log( + TAG, + DEBUG, + { + str1 = alreadyQueuedRequest?.reason + str2 = newRequest.reason + }, + { + "Face auth requested while previous request is being cancelled, " + + "already queued request: $str1 queueing the new request: $str2" + } + ) + } + + fun authenticating(uiEvent: FaceAuthUiEvent) { + logBuffer.log(TAG, DEBUG, { str1 = uiEvent.reason }, { "Running authenticate for $str1" }) + } + + fun detectionNotSupported( + faceManager: FaceManager?, + sensorPropertiesInternal: MutableList<FaceSensorPropertiesInternal>? + ) { + logBuffer.log( + TAG, + DEBUG, + { + bool1 = faceManager == null + bool2 = sensorPropertiesInternal.isNullOrEmpty() + bool2 = sensorPropertiesInternal?.firstOrNull()?.supportsFaceDetection ?: false + }, + { + "skipping detection request because it is not supported, " + + "faceManager isNull: $bool1, " + + "sensorPropertiesInternal isNullOrEmpty: $bool2, " + + "supportsFaceDetection: $bool3" + } + ) + } + + fun skippingBecauseAlreadyRunning(@CompileTimeConstant operation: String) { + logBuffer.log(TAG, DEBUG, "isAuthRunning is true, skipping $operation") + } + + fun faceDetectionStarted() { + logBuffer.log(TAG, DEBUG, "Face detection started.") + } + + fun faceDetected() { + logBuffer.log(TAG, DEBUG, "Face detected") + } + + fun cancelSignalNotReceived( + isAuthRunning: Boolean, + isLockedOut: Boolean, + cancellationInProgress: Boolean, + faceAuthRequestedWhileCancellation: FaceAuthUiEvent? + ) { + logBuffer.log( + TAG, + DEBUG, + { + bool1 = isAuthRunning + bool2 = isLockedOut + bool3 = cancellationInProgress + str1 = "${faceAuthRequestedWhileCancellation?.reason}" + }, + { + "Cancel signal was not received, running timeout handler to reset state. " + + "State before reset: " + + "isAuthRunning: $bool1, " + + "isLockedOut: $bool2, " + + "cancellationInProgress: $bool3, " + + "faceAuthRequestedWhileCancellation: $str1" + } + ) + } + + fun authenticationFailed() { + logBuffer.log(TAG, DEBUG, "Face authentication failed") + } + + fun authenticationAcquired(acquireInfo: Int) { + logBuffer.log( + TAG, + DEBUG, + { int1 = acquireInfo }, + { "Face acquired during face authentication: acquireInfo: $int1 " } + ) + } + + fun authenticationError( + errorCode: Int, + errString: CharSequence?, + lockoutError: Boolean, + cancellationError: Boolean + ) { + logBuffer.log( + TAG, + DEBUG, + { + int1 = errorCode + str1 = "$errString" + bool1 = lockoutError + bool2 = cancellationError + }, + { + "Received authentication error: errorCode: $int1, " + + "errString: $str1, " + + "isLockoutError: $bool1, " + + "isCancellationError: $bool2" + } + ) + } + + fun launchingQueuedFaceAuthRequest(faceAuthRequestedWhileCancellation: FaceAuthUiEvent?) { + logBuffer.log( + TAG, + DEBUG, + { str1 = "${faceAuthRequestedWhileCancellation?.reason}" }, + { "Received cancellation error and starting queued face auth request: $str1" } + ) + } + + fun faceAuthSuccess(result: FaceManager.AuthenticationResult) { + logBuffer.log( + TAG, + DEBUG, + { + int1 = result.userId + bool1 = result.isStrongBiometric + }, + { "Face authenticated successfully: userId: $int1, isStrongBiometric: $bool1" } + ) + } +} diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/FaceAuthLog.kt b/packages/SystemUI/src/com/android/systemui/log/dagger/FaceAuthLog.kt new file mode 100644 index 000000000000..b97e3a788396 --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/log/dagger/FaceAuthLog.kt @@ -0,0 +1,6 @@ +package com.android.systemui.log.dagger + +import javax.inject.Qualifier + +/** A [com.android.systemui.log.LogBuffer] for Face authentication triggered by SysUI. */ +@Qualifier @MustBeDocumented @Retention(AnnotationRetention.RUNTIME) annotation class FaceAuthLog() diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java index 5341cd53b2a5..817de7976352 100644 --- a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java +++ b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java @@ -350,6 +350,17 @@ public class LogModule { } /** + * Provides a {@link LogBuffer} for use by + * {@link com.android.keyguard.faceauth.KeyguardFaceAuthManagerImpl}. + */ + @Provides + @SysUISingleton + @FaceAuthLog + public static LogBuffer provideFaceAuthLog(LogBufferFactory factory) { + return factory.create("KeyguardFaceAuthManagerLog", 300); + } + + /** * Provides a {@link LogBuffer} for bluetooth-related logs. */ @Provides diff --git a/packages/SystemUI/src/com/android/systemui/plugins/PluginsModule.java b/packages/SystemUI/src/com/android/systemui/plugins/PluginsModule.java index 146633d0d9f0..95f14190537f 100644 --- a/packages/SystemUI/src/com/android/systemui/plugins/PluginsModule.java +++ b/packages/SystemUI/src/com/android/systemui/plugins/PluginsModule.java @@ -121,6 +121,6 @@ public abstract class PluginsModule { @Provides @Named(PLUGIN_PRIVILEGED) static List<String> providesPrivilegedPlugins(Context context) { - return Arrays.asList(context.getResources().getStringArray(R.array.config_pluginWhitelist)); + return Arrays.asList(context.getResources().getStringArray(R.array.config_pluginAllowlist)); } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java index 7067c220da87..a0be151e15a1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java @@ -25,8 +25,6 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.graphics.Rect; import android.os.Bundle; -import android.os.Handler; -import android.os.Message; import android.util.ArrayMap; import android.util.AttributeSet; import android.util.Log; @@ -108,6 +106,11 @@ public class QSPanel extends LinearLayout implements Tunable { private boolean mShouldMoveMediaOnExpansion = true; private boolean mUsingCombinedHeaders = false; private QSLogger mQsLogger; + /** + * Specifies if we can collapse to QQS in current state. In split shade that should be always + * false. It influences available accessibility actions. + */ + private boolean mCanCollapse = true; public QSPanel(Context context, AttributeSet attrs) { super(context, attrs); @@ -650,7 +653,9 @@ public class QSPanel extends LinearLayout implements Tunable { @Override public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); - info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_COLLAPSE); + if (mCanCollapse) { + info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_COLLAPSE); + } } @Override @@ -669,15 +674,11 @@ public class QSPanel extends LinearLayout implements Tunable { mCollapseExpandAction = action; } - private class H extends Handler { - private static final int ANNOUNCE_FOR_ACCESSIBILITY = 1; - - @Override - public void handleMessage(Message msg) { - if (msg.what == ANNOUNCE_FOR_ACCESSIBILITY) { - announceForAccessibility((CharSequence) msg.obj); - } - } + /** + * Specifies if these expanded QS can collapse to QQS. + */ + public void setCanCollapse(boolean canCollapse) { + mCanCollapse = canCollapse; } public interface QSTileLayout { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java index cabe1daf16f4..01dbb1825208 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelController.java @@ -148,9 +148,10 @@ public class QSPanelController extends QSPanelControllerBase<QSPanel> { } @Override - protected void onSplitShadeChanged() { + protected void onSplitShadeChanged(boolean shouldUseSplitNotificationShade) { ((PagedTileLayout) mView.getOrCreateTileLayout()) .forceTilesRedistribution("Split shade state changed"); + mView.setCanCollapse(!shouldUseSplitNotificationShade); } /** */ diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java index e85d0a32cfa8..bbdf6cc70541 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanelControllerBase.java @@ -104,14 +104,14 @@ public abstract class QSPanelControllerBase<T extends QSPanel> extends ViewContr switchTileLayoutIfNeeded(); onConfigurationChanged(); if (previousSplitShadeState != mShouldUseSplitNotificationShade) { - onSplitShadeChanged(); + onSplitShadeChanged(mShouldUseSplitNotificationShade); } } }; protected void onConfigurationChanged() { } - protected void onSplitShadeChanged() { } + protected void onSplitShadeChanged(boolean shouldUseSplitNotificationShade) { } private final Function1<Boolean, Unit> mMediaHostVisibilityListener = (visible) -> { if (mMediaVisibilityChangedListener != null) { diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java index 946fe542741f..e696d131267f 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java +++ b/packages/SystemUI/src/com/android/systemui/qs/QuickStatusBarHeader.java @@ -152,9 +152,7 @@ public class QuickStatusBarHeader extends FrameLayout { Configuration config = mContext.getResources().getConfiguration(); setDatePrivacyContainersWidth(config.orientation == Configuration.ORIENTATION_LANDSCAPE); - // QS will always show the estimate, and BatteryMeterView handles the case where - // it's unavailable or charging - mBatteryRemainingIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE); + updateBatteryMode(); mIconsAlphaAnimatorFixed = new TouchAnimator.Builder() .addFloat(mIconContainer, "alpha", 0, 1) @@ -460,24 +458,24 @@ public class QuickStatusBarHeader extends FrameLayout { (LinearLayout.LayoutParams) mDatePrivacySeparator.getLayoutParams(); LinearLayout.LayoutParams mClockIconsSeparatorLayoutParams = (LinearLayout.LayoutParams) mClockIconsSeparator.getLayoutParams(); - if (cutout != null) { - Rect topCutout = cutout.getBoundingRectTop(); - if (topCutout.isEmpty() || hasCornerCutout) { - datePrivacySeparatorLayoutParams.width = 0; - mDatePrivacySeparator.setVisibility(View.GONE); - mClockIconsSeparatorLayoutParams.width = 0; - setSeparatorVisibility(false); - mShowClockIconsSeparator = false; - mHasCenterCutout = false; - } else { - datePrivacySeparatorLayoutParams.width = topCutout.width(); - mDatePrivacySeparator.setVisibility(View.VISIBLE); - mClockIconsSeparatorLayoutParams.width = topCutout.width(); - mShowClockIconsSeparator = true; - setSeparatorVisibility(mKeyguardExpansionFraction == 0f); - mHasCenterCutout = true; - } + + Rect topCutout = cutout == null ? null : cutout.getBoundingRectTop(); + if (topCutout == null || topCutout.isEmpty() || hasCornerCutout) { + datePrivacySeparatorLayoutParams.width = 0; + mDatePrivacySeparator.setVisibility(View.GONE); + mClockIconsSeparatorLayoutParams.width = 0; + setSeparatorVisibility(false); + mShowClockIconsSeparator = false; + mHasCenterCutout = false; + } else { + datePrivacySeparatorLayoutParams.width = topCutout.width(); + mDatePrivacySeparator.setVisibility(View.VISIBLE); + mClockIconsSeparatorLayoutParams.width = topCutout.width(); + mShowClockIconsSeparator = true; + setSeparatorVisibility(mKeyguardExpansionFraction == 0f); + mHasCenterCutout = true; } + mDatePrivacySeparator.setLayoutParams(datePrivacySeparatorLayoutParams); mClockIconsSeparator.setLayoutParams(mClockIconsSeparatorLayoutParams); mCutOutPaddingLeft = sbInsets.first; diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt index 721046d217c9..9b4ac1b3437e 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FontScalingTile.kt @@ -27,6 +27,8 @@ import com.android.systemui.animation.DialogCuj import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main +import com.android.systemui.flags.FeatureFlags +import com.android.systemui.flags.Flags import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.qs.QSTile @@ -50,7 +52,8 @@ constructor( activityStarter: ActivityStarter, qsLogger: QSLogger, private val dialogLaunchAnimator: DialogLaunchAnimator, - private val systemSettings: SystemSettings + private val systemSettings: SystemSettings, + private val featureFlags: FeatureFlags ) : QSTileImpl<QSTile.State?>( host, @@ -65,7 +68,7 @@ constructor( private val icon = ResourceIcon.get(R.drawable.ic_qs_font_scaling) override fun isAvailable(): Boolean { - return false + return featureFlags.isEnabled(Flags.ENABLE_FONT_SCALING_TILE) } override fun newTileState(): QSTile.State { diff --git a/packages/SystemUI/src/com/android/systemui/shade/DebugDrawable.java b/packages/SystemUI/src/com/android/systemui/shade/DebugDrawable.java index ae303eb6d203..fb2ddc15bab1 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/DebugDrawable.java +++ b/packages/SystemUI/src/com/android/systemui/shade/DebugDrawable.java @@ -39,6 +39,7 @@ public class DebugDrawable extends Drawable { private final NotificationPanelView mView; private final NotificationStackScrollLayoutController mNotificationStackScrollLayoutController; private final LockIconViewController mLockIconViewController; + private final QuickSettingsController mQsController; private final Set<Integer> mDebugTextUsedYPositions; private final Paint mDebugPaint; @@ -46,12 +47,14 @@ public class DebugDrawable extends Drawable { NotificationPanelViewController notificationPanelViewController, NotificationPanelView notificationPanelView, NotificationStackScrollLayoutController notificationStackScrollLayoutController, - LockIconViewController lockIconViewController + LockIconViewController lockIconViewController, + QuickSettingsController quickSettingsController ) { mNotificationPanelViewController = notificationPanelViewController; mView = notificationPanelView; mNotificationStackScrollLayoutController = notificationStackScrollLayoutController; mLockIconViewController = lockIconViewController; + mQsController = quickSettingsController; mDebugTextUsedYPositions = new HashSet<>(); mDebugPaint = new Paint(); } @@ -71,12 +74,19 @@ public class DebugDrawable extends Drawable { Color.RED, "getMaxPanelHeight()"); drawDebugInfo(canvas, (int) mNotificationPanelViewController.getExpandedHeight(), Color.BLUE, "getExpandedHeight()"); - drawDebugInfo(canvas, mNotificationPanelViewController.calculatePanelHeightQsExpanded(), + drawDebugInfo(canvas, mQsController.calculatePanelHeightExpanded( + mNotificationPanelViewController.getClockPositionResult() + .stackScrollerPadding), Color.GREEN, "calculatePanelHeightQsExpanded()"); - drawDebugInfo(canvas, mNotificationPanelViewController.calculatePanelHeightQsExpanded(), + drawDebugInfo(canvas, mQsController.calculatePanelHeightExpanded( + mNotificationPanelViewController.getClockPositionResult() + .stackScrollerPadding), Color.YELLOW, "calculatePanelHeightShade()"); drawDebugInfo(canvas, - (int) mNotificationPanelViewController.calculateNotificationsTopPadding(), + (int) mQsController.calculateNotificationsTopPadding( + mNotificationPanelViewController.isExpanding(), + mNotificationPanelViewController.getKeyguardNotificationStaticPadding(), + mNotificationPanelViewController.getExpandedFraction()), Color.MAGENTA, "calculateNotificationsTopPadding()"); drawDebugInfo(canvas, mNotificationPanelViewController.getClockPositionResult().clockY, Color.GRAY, "mClockPositionResult.clockY"); diff --git a/packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt b/packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt index 197232ecb547..9d8ed460dece 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/LargeScreenShadeHeaderController.kt @@ -17,6 +17,7 @@ package com.android.systemui.shade import android.animation.Animator +import android.animation.AnimatorListenerAdapter import android.annotation.IdRes import android.app.StatusBarManager import android.content.res.Configuration @@ -24,6 +25,7 @@ import android.os.Bundle import android.os.Trace import android.os.Trace.TRACE_TAG_APP import android.util.Pair +import android.view.DisplayCutout import android.view.View import android.view.WindowInsets import android.widget.TextView @@ -91,7 +93,8 @@ class LargeScreenShadeHeaderController @Inject constructor( private val featureFlags: FeatureFlags, private val qsCarrierGroupControllerBuilder: QSCarrierGroupController.Builder, private val combinedShadeHeadersConstraintManager: CombinedShadeHeadersConstraintManager, - private val demoModeController: DemoModeController + private val demoModeController: DemoModeController, + private val qsBatteryModeController: QsBatteryModeController, ) : ViewController<View>(header), Dumpable { companion object { @@ -129,9 +132,8 @@ class LargeScreenShadeHeaderController @Inject constructor( private val iconContainer: StatusIconContainer = header.findViewById(R.id.statusIcons) private val qsCarrierGroup: QSCarrierGroup = header.findViewById(R.id.carrier_group) - private var cutoutLeft = 0 - private var cutoutRight = 0 private var roundedCorners = 0 + private var cutout: DisplayCutout? = null private var lastInsets: WindowInsets? = null private var qsDisabled = false @@ -144,6 +146,14 @@ class LargeScreenShadeHeaderController @Inject constructor( updateListeners() } + private var customizing = false + set(value) { + if (field != value) { + field = value + updateVisibility() + } + } + /** * Whether the QQS/QS part of the shade is visible. This is particularly important in * Lockscreen, as the shade is visible but QS is not. @@ -175,14 +185,9 @@ class LargeScreenShadeHeaderController @Inject constructor( */ var shadeExpandedFraction = -1f set(value) { - if (field != value) { - val oldAlpha = header.alpha + if (qsVisible && field != value) { header.alpha = ShadeInterpolation.getContentAlpha(value) field = value - if ((oldAlpha == 0f && header.alpha > 0f) || - (oldAlpha > 0f && header.alpha == 0f)) { - updateVisibility() - } } } @@ -273,7 +278,6 @@ class LargeScreenShadeHeaderController @Inject constructor( // battery settings same as in QS icons batteryMeterViewController.ignoreTunerUpdates() - batteryIcon.setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) iconManager = tintedIconManagerFactory.create(iconContainer, StatusBarLocation.QS) iconManager.setTint( @@ -305,6 +309,7 @@ class LargeScreenShadeHeaderController @Inject constructor( if (header is MotionLayout) { header.setOnApplyWindowInsetsListener(insetListener) + clock.addOnLayoutChangeListener { v, _, _, _, _, _, _, _, _ -> val newPivot = if (v.isLayoutRtl) v.width.toFloat() else 0f v.pivotX = newPivot @@ -317,6 +322,7 @@ class LargeScreenShadeHeaderController @Inject constructor( dumpManager.registerDumpable(this) configurationController.addCallback(configurationControllerListener) demoModeController.addCallback(demoModeReceiver) + statusBarIconController.addIconGroup(iconManager) } override fun onViewDetached() { @@ -324,6 +330,7 @@ class LargeScreenShadeHeaderController @Inject constructor( dumpManager.unregisterDumpable(this::class.java.simpleName) configurationController.removeCallback(configurationControllerListener) demoModeController.removeCallback(demoModeReceiver) + statusBarIconController.removeIconGroup(iconManager) } fun disable(state1: Int, state2: Int, animate: Boolean) { @@ -338,31 +345,10 @@ class LargeScreenShadeHeaderController @Inject constructor( .setDuration(duration) .alpha(if (show) 0f else 1f) .setInterpolator(if (show) Interpolators.ALPHA_OUT else Interpolators.ALPHA_IN) - .setUpdateListener { - updateVisibility() - } - .setListener(endAnimationListener) + .setListener(CustomizerAnimationListener(show)) .start() } - private val endAnimationListener = object : Animator.AnimatorListener { - override fun onAnimationCancel(animation: Animator?) { - clearListeners() - } - - override fun onAnimationEnd(animation: Animator?) { - clearListeners() - } - - override fun onAnimationRepeat(animation: Animator?) {} - - override fun onAnimationStart(animation: Animator?) {} - - private fun clearListeners() { - header.animate().setListener(null).setUpdateListener(null) - } - } - private fun loadConstraints() { if (header is MotionLayout) { // Use resources.getXml instead of passing the resource id due to bug b/205018300 @@ -376,11 +362,13 @@ class LargeScreenShadeHeaderController @Inject constructor( } private fun updateConstraintsForInsets(view: MotionLayout, insets: WindowInsets) { - val cutout = insets.displayCutout + val cutout = insets.displayCutout.also { + this.cutout = it + } val sbInsets: Pair<Int, Int> = insetsProvider.getStatusBarContentInsetsForCurrentRotation() - cutoutLeft = sbInsets.first - cutoutRight = sbInsets.second + val cutoutLeft = sbInsets.first + val cutoutRight = sbInsets.second val hasCornerCutout: Boolean = insetsProvider.currentRotationHasCornerCutout() updateQQSPaddings() // Set these guides as the left/right limits for content that lives in the top row, using @@ -408,6 +396,13 @@ class LargeScreenShadeHeaderController @Inject constructor( } view.updateAllConstraints(changes) + updateBatteryMode() + } + + private fun updateBatteryMode() { + qsBatteryModeController.getBatteryMode(cutout, qsExpandedFraction)?.let { + batteryIcon.setPercentShowMode(it) + } } private fun updateScrollY() { @@ -443,7 +438,7 @@ class LargeScreenShadeHeaderController @Inject constructor( private fun updateVisibility() { val visibility = if (!largeScreenActive && !combinedHeaders || qsDisabled) { View.GONE - } else if (qsVisible && header.alpha > 0f) { + } else if (qsVisible && !customizing) { View.VISIBLE } else { View.INVISIBLE @@ -475,6 +470,7 @@ class LargeScreenShadeHeaderController @Inject constructor( if (header is MotionLayout && !largeScreenActive && visible) { logInstantEvent("updatePosition: $qsExpandedFraction") header.progress = qsExpandedFraction + updateBatteryMode() } } @@ -491,10 +487,8 @@ class LargeScreenShadeHeaderController @Inject constructor( if (visible) { updateSingleCarrier(qsCarrierGroupController.isSingleCarrier) qsCarrierGroupController.setOnSingleCarrierChangedListener { updateSingleCarrier(it) } - statusBarIconController.addIconGroup(iconManager) } else { qsCarrierGroupController.setOnSingleCarrierChangedListener(null) - statusBarIconController.removeIconGroup(iconManager) } } @@ -511,6 +505,7 @@ class LargeScreenShadeHeaderController @Inject constructor( val padding = resources.getDimensionPixelSize(R.dimen.qs_panel_padding) header.setPadding(padding, header.paddingTop, padding, header.paddingBottom) updateQQSPaddings() + qsBatteryModeController.updateResources() } private fun updateQQSPaddings() { @@ -566,4 +561,23 @@ class LargeScreenShadeHeaderController @Inject constructor( @VisibleForTesting internal fun simulateViewDetached() = this.onViewDetached() + + inner class CustomizerAnimationListener( + private val enteringCustomizing: Boolean, + ) : AnimatorListenerAdapter() { + override fun onAnimationEnd(animation: Animator?) { + super.onAnimationEnd(animation) + header.animate().setListener(null) + if (enteringCustomizing) { + customizing = true + } + } + + override fun onAnimationStart(animation: Animator?) { + super.onAnimationStart(animation) + if (!enteringCustomizing) { + customizing = false + } + } + } } diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java index cd45b328345f..2175a3358396 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationPanelViewController.java @@ -23,14 +23,12 @@ import static android.view.View.VISIBLE; import static androidx.constraintlayout.widget.ConstraintSet.END; import static androidx.constraintlayout.widget.ConstraintSet.PARENT_ID; -import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE; import static com.android.keyguard.KeyguardClockSwitch.LARGE; import static com.android.keyguard.KeyguardClockSwitch.SMALL; import static com.android.systemui.animation.Interpolators.EMPHASIZED_ACCELERATE; import static com.android.systemui.animation.Interpolators.EMPHASIZED_DECELERATE; import static com.android.systemui.classifier.Classifier.BOUNCER_UNLOCK; import static com.android.systemui.classifier.Classifier.GENERIC; -import static com.android.systemui.classifier.Classifier.QS_COLLAPSE; import static com.android.systemui.classifier.Classifier.QUICK_SETTINGS; import static com.android.systemui.classifier.Classifier.UNLOCK; import static com.android.systemui.shade.ShadeExpansionStateManagerKt.STATE_CLOSED; @@ -53,7 +51,6 @@ import android.animation.AnimatorListenerAdapter; import android.animation.ValueAnimator; import android.annotation.NonNull; import android.annotation.Nullable; -import android.app.Fragment; import android.app.StatusBarManager; import android.content.ContentResolver; import android.content.res.Resources; @@ -101,10 +98,8 @@ import android.widget.FrameLayout; import androidx.constraintlayout.widget.ConstraintSet; import com.android.internal.annotations.VisibleForTesting; -import com.android.internal.jank.InteractionJankMonitor; import com.android.internal.logging.MetricsLogger; import com.android.internal.logging.nano.MetricsProto.MetricsEvent; -import com.android.internal.policy.ScreenDecorationsUtils; import com.android.internal.policy.SystemBarUtils; import com.android.internal.util.LatencyTracker; import com.android.keyguard.ActiveUnlockConfig; @@ -135,7 +130,6 @@ import com.android.systemui.dump.DumpManager; import com.android.systemui.dump.DumpsysTableLogger; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.flags.Flags; -import com.android.systemui.fragments.FragmentHostManager.FragmentListener; import com.android.systemui.fragments.FragmentService; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.domain.interactor.AlternateBouncerInteractor; @@ -177,7 +171,6 @@ import com.android.systemui.statusbar.NotificationShadeDepthController; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.NotificationShelfController; import com.android.systemui.statusbar.PulseExpansionHandler; -import com.android.systemui.statusbar.QsFrameTranslateController; import com.android.systemui.statusbar.RemoteInputController; import com.android.systemui.statusbar.StatusBarState; import com.android.systemui.statusbar.SysuiStatusBarStateController; @@ -263,13 +256,13 @@ public final class NotificationPanelViewController implements Dumpable { private static final VibrationEffect ADDITIONAL_TAP_REQUIRED_VIBRATION_EFFECT = VibrationEffect.get(VibrationEffect.EFFECT_STRENGTH_MEDIUM, false); /** The parallax amount of the quick settings translation when dragging down the panel. */ - private static final float QS_PARALLAX_AMOUNT = 0.175f; + public static final float QS_PARALLAX_AMOUNT = 0.175f; /** Fling expanding QS. */ public static final int FLING_EXPAND = 0; /** Fling collapsing QS, potentially stopping when QS becomes QQS. */ - private static final int FLING_COLLAPSE = 1; + public static final int FLING_COLLAPSE = 1; /** Fling until QS is completely hidden. */ - private static final int FLING_HIDE = 2; + public static final int FLING_HIDE = 2; /** The delay to reset the hint text when the hint animation is finished running. */ private static final int HINT_RESET_DELAY_MS = 1200; private static final long ANIMATION_DELAY_ICON_FADE_IN = @@ -291,7 +284,7 @@ public final class NotificationPanelViewController implements Dumpable { private static final int MAX_TIME_TO_OPEN_WHEN_FLINGING_FROM_LAUNCHER = 300; private static final int MAX_DOWN_EVENT_BUFFER_SIZE = 50; private static final String COUNTER_PANEL_OPEN = "panel_open"; - private static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs"; + public static final String COUNTER_PANEL_OPEN_QS = "panel_open_qs"; private static final String COUNTER_PANEL_OPEN_PEEK = "panel_open_peek"; private static final Rect M_DUMMY_DIRTY_RECT = new Rect(0, 0, 1, 1); private static final Rect EMPTY_RECT = new Rect(); @@ -310,14 +303,10 @@ public final class NotificationPanelViewController implements Dumpable { private final SystemClock mSystemClock; private final ShadeLogger mShadeLog; private final DozeParameters mDozeParameters; - private final Runnable mCollapseExpandAction = this::collapseOrExpand; - private final NsslOverscrollTopChangedListener mOnOverscrollTopChangedListener = - new NsslOverscrollTopChangedListener(); private final NotificationStackScrollLayout.OnEmptySpaceClickListener mOnEmptySpaceClickListener = (x, y) -> onEmptySpaceClick(); private final ShadeHeadsUpChangedListener mOnHeadsUpChangedListener = new ShadeHeadsUpChangedListener(); - private final QS.HeightListener mHeightListener = this::onQsHeightChanged; private final ConfigurationListener mConfigurationListener = new ConfigurationListener(); private final SettingsChangeObserver mSettingsChangeObserver; private final StatusBarStateListener mStatusBarStateListener = new StatusBarStateListener(); @@ -327,7 +316,6 @@ public final class NotificationPanelViewController implements Dumpable { private final ConfigurationController mConfigurationController; private final Provider<FlingAnimationUtils.Builder> mFlingAnimationUtilsBuilder; private final NotificationStackScrollLayoutController mNotificationStackScrollLayoutController; - private final InteractionJankMonitor mInteractionJankMonitor; private final LayoutInflater mLayoutInflater; private final FeatureFlags mFeatureFlags; private final PowerManager mPowerManager; @@ -346,12 +334,9 @@ public final class NotificationPanelViewController implements Dumpable { private final KeyguardStatusBarViewComponent.Factory mKeyguardStatusBarViewComponentFactory; private final FragmentService mFragmentService; private final ScrimController mScrimController; - private final NotificationRemoteInputManager mRemoteInputManager; private final LockscreenShadeTransitionController mLockscreenShadeTransitionController; - private final ShadeTransitionController mShadeTransitionController; private final TapAgainViewController mTapAgainViewController; private final LargeScreenShadeHeaderController mLargeScreenShadeHeaderController; - private final RecordingController mRecordingController; private final boolean mVibrateOnOpening; private final VelocityTracker mVelocityTracker = VelocityTracker.obtain(); private final FlingAnimationUtils mFlingAnimationUtilsClosing; @@ -363,12 +348,11 @@ public final class NotificationPanelViewController implements Dumpable { private final Interpolator mBounceInterpolator; private final NotificationShadeWindowController mNotificationShadeWindowController; private final ShadeExpansionStateManager mShadeExpansionStateManager; - private final QS.ScrollListener mQsScrollListener = this::onQsPanelScrollChanged; private final FalsingTapListener mFalsingTapListener = this::falsingAdditionalTapRequired; - private final FragmentListener mQsFragmentListener = new QsFragmentListener(); private final AccessibilityDelegate mAccessibilityDelegate = new ShadeAccessibilityDelegate(); private final NotificationGutsManager mGutsManager; private final AlternateBouncerInteractor mAlternateBouncerInteractor; + private final QuickSettingsController mQsController; private long mDownTime; private boolean mTouchSlopExceededBeforeDown; @@ -395,9 +379,6 @@ public final class NotificationPanelViewController implements Dumpable { private KeyguardUserSwitcherController mKeyguardUserSwitcherController; private KeyguardStatusBarView mKeyguardStatusBar; private KeyguardStatusBarViewController mKeyguardStatusBarViewController; - private QS mQs; - private FrameLayout mQsFrame; - private final QsFrameTranslateController mQsFrameTranslateController; private KeyguardStatusViewController mKeyguardStatusViewController; private final LockIconViewController mLockIconViewController; private NotificationsQuickSettingsContainer mNotificationContainerParent; @@ -405,47 +386,19 @@ public final class NotificationPanelViewController implements Dumpable { private final Provider<KeyguardBottomAreaViewController> mKeyguardBottomAreaViewControllerProvider; private boolean mAnimateNextPositionUpdate; - private float mQuickQsHeaderHeight; private final ScreenOffAnimationController mScreenOffAnimationController; private final UnlockedScreenOffAnimationController mUnlockedScreenOffAnimationController; - private int mQsTrackingPointer; - private VelocityTracker mQsVelocityTracker; private TrackingStartedListener mTrackingStartedListener; private OpenCloseListener mOpenCloseListener; private GestureRecorder mGestureRecorder; - private boolean mQsTracking; - /** Whether the ongoing gesture might both trigger the expansion in both the view and QS. */ - private boolean mConflictingQsExpansionGesture; private boolean mPanelExpanded; - /** - * Indicates that QS is in expanded state which can happen by: - * - single pane shade: expanding shade and then expanding QS - * - split shade: just expanding shade (QS are expanded automatically) - */ - private boolean mQsExpanded; - private boolean mQsExpandedWhenExpandingStarted; - private boolean mQsFullyExpanded; - private boolean mKeyguardShowing; private boolean mKeyguardQsUserSwitchEnabled; private boolean mKeyguardUserSwitcherEnabled; private boolean mDozing; private boolean mDozingOnDown; private boolean mBouncerShowing; private int mBarState; - private float mInitialHeightOnTouch; - private float mInitialTouchX; - private float mInitialTouchY; - private float mQsExpansionHeight; - private int mQsMinExpansionHeight; - private int mQsMaxExpansionHeight; - private int mQsPeekHeight; - private boolean mStackScrollerOverscrolling; - private boolean mQsExpansionFromOverscroll; - private float mLastOverscroll; - private boolean mQsExpansionEnabledPolicy = true; - private boolean mQsExpansionEnabledAmbient = true; - private ValueAnimator mQsExpansionAnimator; private FlingAnimationUtils mFlingAnimationUtils; private int mStatusBarMinHeight; private int mStatusBarHeaderHeightKeyguard; @@ -455,8 +408,6 @@ public final class NotificationPanelViewController implements Dumpable { private int mDisplayTopInset = 0; // in pixels private int mDisplayRightInset = 0; // in pixels private int mDisplayLeftInset = 0; // in pixels - private int mLargeScreenShadeHeaderHeight; - private int mSplitShadeNotificationsScrimMarginBottom; private final KeyguardClockPositionAlgorithm mClockPositionAlgorithm = @@ -466,23 +417,7 @@ public final class NotificationPanelViewController implements Dumpable { new KeyguardClockPositionAlgorithm.Result(); private boolean mIsExpanding; - /** - * Determines if QS should be already expanded when expanding shade. - * Used for split shade, two finger gesture as well as accessibility shortcut to QS. - * It needs to be set when movement starts as it resets at the end of expansion/collapse. - */ - private boolean mQsExpandImmediate; - private boolean mTwoFingerQsExpandPossible; private String mHeaderDebugInfo; - /** - * If we are in a panel collapsing motion, we reset scrollY of our scroll view but still - * need to take this into account in our panel height calculation. - */ - private boolean mQsAnimatorExpand; - private ValueAnimator mQsSizeChangeAnimator; - private boolean mQsScrimEnabled = true; - private boolean mQsTouchAboveFalsingThreshold; - private int mQsFalsingThreshold; /** * Indicates drag starting height when swiping down or up on heads-up notifications. @@ -564,51 +499,12 @@ public final class NotificationPanelViewController implements Dumpable { private Runnable mExpandAfterLayoutRunnable; private Runnable mHideExpandedRunnable; - /** - * The padding between the start of notifications and the qs boundary on the lockscreen. - * On lockscreen, notifications aren't inset this extra amount, but we still want the - * qs boundary to be padded. - */ - private int mLockscreenNotificationQSPadding; - /** - * The amount of progress we are currently in if we're transitioning to the full shade. - * 0.0f means we're not transitioning yet, while 1 means we're all the way in the full - * shade. This value can also go beyond 1.1 when we're overshooting! - */ - private float mTransitioningToFullShadeProgress; - /** - * Position of the qs bottom during the full shade transition. This is needed as the toppadding - * can change during state changes, which makes it much harder to do animations - */ - private int mTransitionToFullShadeQSPosition; - /** Distance a full shade transition takes in order for qs to fully transition to the shade. */ - private int mDistanceForQSFullShadeTransition; - /** The translation amount for QS for the full shade transition. */ - private float mQsTranslationForFullShadeTransition; - /** The maximum overshoot allowed for the top padding for the full shade transition. */ private int mMaxOverscrollAmountForPulse; - /** Should we animate the next bounds update. */ - private boolean mAnimateNextNotificationBounds; - /** The delay for the next bounds animation. */ - private long mNotificationBoundsAnimationDelay; - /** The duration of the notification bounds animation. */ - private long mNotificationBoundsAnimationDuration; /** Whether a collapse that started on the panel should allow the panel to intercept. */ private boolean mIsPanelCollapseOnQQS; - private boolean mAnimatingQS; - /** The end bounds of a clipping animation. */ - private final Rect mQsClippingAnimationEndBounds = new Rect(); - /** The animator for the qs clipping bounds. */ - private ValueAnimator mQsClippingAnimation = null; - /** Whether the current animator is resetting the qs translation. */ - private boolean mIsQsTranslationResetAnimator; - - /** Whether the current animator is resetting the pulse expansion after a drag down. */ - private boolean mIsPulseExpansionResetAnimator; - private final Rect mLastQsClipBounds = new Rect(); - private final Region mQsInterceptRegion = new Region(); + /** Alpha of the views which only show on the keyguard but not in shade / shade locked. */ private float mKeyguardOnlyContentAlpha = 1.0f; /** Y translation of the views that only show on the keyguard but in shade / shade locked. */ @@ -618,15 +514,6 @@ public final class NotificationPanelViewController implements Dumpable { private boolean mIsGestureNavigation; private int mOldLayoutDirection; private NotificationShelfController mNotificationShelfController; - private int mScrimCornerRadius; - private int mScreenCornerRadius; - private boolean mQSAnimatingHiddenFromCollapsed; - private boolean mUseLargeScreenShadeHeader; - private boolean mEnableQsClipping; - - private int mQsClipTop; - private int mQsClipBottom; - private boolean mQsVisible; private final ContentResolver mContentResolver; private float mMinFraction; @@ -685,7 +572,6 @@ public final class NotificationPanelViewController implements Dumpable { private boolean mInstantExpanding; private boolean mAnimateAfterExpanding; private boolean mIsFlinging; - private boolean mLastFlingWasExpanding; private String mViewName; private float mInitialExpandY; private float mInitialExpandX; @@ -803,6 +689,7 @@ public final class NotificationPanelViewController implements Dumpable { TapAgainViewController tapAgainViewController, NavigationModeController navigationModeController, NavigationBarController navigationBarController, + QuickSettingsController quickSettingsController, FragmentService fragmentService, ContentResolver contentResolver, RecordingController recordingController, @@ -812,8 +699,6 @@ public final class NotificationPanelViewController implements Dumpable { ShadeExpansionStateManager shadeExpansionStateManager, NotificationRemoteInputManager remoteInputManager, Optional<SysUIUnfoldComponent> unfoldComponent, - InteractionJankMonitor interactionJankMonitor, - QsFrameTranslateController qsFrameTranslateController, SysUiState sysUiState, Provider<KeyguardBottomAreaViewController> keyguardBottomAreaViewControllerProvider, KeyguardUnlockAnimationController keyguardUnlockAnimationController, @@ -873,6 +758,7 @@ public final class NotificationPanelViewController implements Dumpable { mResources = mView.getResources(); mKeyguardStateController = keyguardStateController; + mQsController = quickSettingsController; mKeyguardIndicationController = keyguardIndicationController; mStatusBarStateController = (SysuiStatusBarStateController) statusBarStateController; mNotificationShadeWindowController = notificationShadeWindowController; @@ -903,7 +789,6 @@ public final class NotificationPanelViewController implements Dumpable { mVibratorHelper = vibratorHelper; mVibrateOnOpening = mResources.getBoolean(R.bool.config_vibrateOnIconAnimation); mStatusBarTouchableRegionManager = statusBarTouchableRegionManager; - mInteractionJankMonitor = interactionJankMonitor; mSystemClock = systemClock; mKeyguardMediaController = keyguardMediaController; mMetricsLogger = metricsLogger; @@ -939,7 +824,6 @@ public final class NotificationPanelViewController implements Dumpable { mView.setAccessibilityPaneTitle(determineAccessibilityPaneTitle()); setPanelAlpha(255, false /* animate */); mCommandQueue = commandQueue; - mRecordingController = recordingController; mDisplayId = displayId; mPulseExpansionHandler = pulseExpansionHandler; mDozeParameters = dozeParameters; @@ -948,20 +832,19 @@ public final class NotificationPanelViewController implements Dumpable { mMediaDataManager = mediaDataManager; mTapAgainViewController = tapAgainViewController; mSysUiState = sysUiState; - pulseExpansionHandler.setPulseExpandAbortListener(() -> { - if (mQs != null) { - mQs.animateHeaderSlidingOut(); - } - }); statusBarWindowStateController.addListener(this::onStatusBarWindowStateChanged); mKeyguardBypassController = bypassController; mUpdateMonitor = keyguardUpdateMonitor; mLockscreenShadeTransitionController = lockscreenShadeTransitionController; - mShadeTransitionController = shadeTransitionController; lockscreenShadeTransitionController.setNotificationPanelController(this); shadeTransitionController.setNotificationPanelViewController(this); dynamicPrivacyController.addListener(this::onDynamicPrivacyChanged); - + quickSettingsController.setExpansionHeightListener(this::onQsSetExpansionHeightCalled); + quickSettingsController.setQsStateUpdateListener(this::onQsStateUpdated); + quickSettingsController.setApplyClippingImmediatelyListener( + this::onQsClippingImmediatelyApplied); + quickSettingsController.setFlingQsWithoutClickListener(this::onFlingQsWithoutClick); + quickSettingsController.setExpansionHeightSetToMaxListener(this::onExpansionHeightSetToMax); shadeExpansionStateManager.addStateListener(this::onPanelStateChanged); mBottomAreaShadeAlphaAnimator = ValueAnimator.ofFloat(1f, 0); @@ -976,7 +859,6 @@ public final class NotificationPanelViewController implements Dumpable { mLockIconViewController = lockIconViewController; mScreenOffAnimationController = screenOffAnimationController; mUnlockedScreenOffAnimationController = unlockedScreenOffAnimationController; - mRemoteInputManager = remoteInputManager; mLastDownEvents = new NPVCDownEventState.Buffer(MAX_DOWN_EVENT_BUFFER_SIZE); int currentMode = navigationModeController.addListener( @@ -995,7 +877,8 @@ public final class NotificationPanelViewController implements Dumpable { if (DEBUG_DRAWABLE) { mView.getOverlay().add(new DebugDrawable(this, mView, - mNotificationStackScrollLayoutController, mLockIconViewController)); + mNotificationStackScrollLayoutController, mLockIconViewController, + mQsController)); } mKeyguardUnfoldTransition = unfoldComponent.map( @@ -1004,8 +887,6 @@ public final class NotificationPanelViewController implements Dumpable { SysUIUnfoldComponent::getNotificationPanelUnfoldAnimationController); mUnocclusionTransitionFlagEnabled = featureFlags.isEnabled(Flags.UNOCCLUSION_TRANSITION); - - mQsFrameTranslateController = qsFrameTranslateController; updateUserSwitcherFlags(); mKeyguardBottomAreaViewModel = keyguardBottomAreaViewModel; mKeyguardBottomAreaInteractor = keyguardBottomAreaInteractor; @@ -1121,19 +1002,16 @@ public final class NotificationPanelViewController implements Dumpable { mNotificationStackScrollLayoutController.attach(stackScrollLayout); mNotificationStackScrollLayoutController.setOnHeightChangedListener( new NsslHeightChangedListener()); - mNotificationStackScrollLayoutController.setOverscrollTopChangedListener( - mOnOverscrollTopChangedListener); - mNotificationStackScrollLayoutController.setOnScrollListener(this::onNotificationScrolled); - mNotificationStackScrollLayoutController.setOnStackYChanged(this::onStackYChanged); mNotificationStackScrollLayoutController.setOnEmptySpaceClickListener( mOnEmptySpaceClickListener); + mQsController.initNotificationStackScrollLayoutController(); + mShadeExpansionStateManager.addQsExpansionListener(this::onQsExpansionChanged); addTrackingHeadsUpListener(mNotificationStackScrollLayoutController::setTrackingHeadsUp); setKeyguardBottomArea(mView.findViewById(R.id.keyguard_bottom_area)); initBottomArea(); mWakeUpCoordinator.setStackScroller(mNotificationStackScrollLayoutController); - mQsFrame = mView.findViewById(R.id.qs_frame); mPulseExpansionHandler.setUp(mNotificationStackScrollLayoutController); mWakeUpCoordinator.addListener(new NotificationWakeUpCoordinator.WakeUpListener() { @Override @@ -1236,24 +1114,14 @@ public final class NotificationPanelViewController implements Dumpable { .setMaxLengthSeconds(0.4f).build(); mStatusBarMinHeight = SystemBarUtils.getStatusBarHeight(mView.getContext()); mStatusBarHeaderHeightKeyguard = Utils.getStatusBarHeaderHeightKeyguard(mView.getContext()); - mQsPeekHeight = mResources.getDimensionPixelSize(R.dimen.qs_peek_height); mClockPositionAlgorithm.loadDimens(mResources); - mQsFalsingThreshold = mResources.getDimensionPixelSize(R.dimen.qs_falsing_threshold); mIndicationBottomPadding = mResources.getDimensionPixelSize( R.dimen.keyguard_indication_bottom_padding); int statusbarHeight = SystemBarUtils.getStatusBarHeight(mView.getContext()); mHeadsUpInset = statusbarHeight + mResources.getDimensionPixelSize( R.dimen.heads_up_status_bar_padding); - mDistanceForQSFullShadeTransition = mResources.getDimensionPixelSize( - R.dimen.lockscreen_shade_qs_transition_distance); mMaxOverscrollAmountForPulse = mResources.getDimensionPixelSize( R.dimen.pulse_expansion_max_top_overshoot); - mScrimCornerRadius = mResources.getDimensionPixelSize( - R.dimen.notification_scrim_corner_radius); - mScreenCornerRadius = (int) ScreenDecorationsUtils.getWindowCornerRadius( - mView.getContext()); - mLockscreenNotificationQSPadding = mResources.getDimensionPixelSize( - R.dimen.notification_side_paddings); mUdfpsMaxYBurnInOffset = mResources.getDimensionPixelSize(R.dimen.udfps_burn_in_offset_y); mSplitShadeScrimTransitionDistance = mResources.getDimensionPixelSize( R.dimen.split_shade_scrim_transition_distance); @@ -1267,6 +1135,8 @@ public final class NotificationPanelViewController implements Dumpable { R.dimen.gone_to_dreaming_transition_lockscreen_translation_y); mLockscreenToOccludedTransitionTranslationY = mResources.getDimensionPixelSize( R.dimen.lockscreen_to_occluded_transition_lockscreen_translation_y); + // TODO (b/265193930): remove this and make QsController listen to NotificationPanelViews + mQsController.loadDimens(); } private void updateViewControllers(KeyguardStatusView keyguardStatusView, @@ -1309,40 +1179,13 @@ public final class NotificationPanelViewController implements Dumpable { } public void updateResources() { - mSplitShadeNotificationsScrimMarginBottom = - mResources.getDimensionPixelSize( - R.dimen.split_shade_notifications_scrim_margin_bottom); final boolean newSplitShadeEnabled = LargeScreenUtils.shouldUseSplitNotificationShade(mResources); final boolean splitShadeChanged = mSplitShadeEnabled != newSplitShadeEnabled; mSplitShadeEnabled = newSplitShadeEnabled; - - if (mQs != null) { - mQs.setInSplitShade(mSplitShadeEnabled); - } - - mUseLargeScreenShadeHeader = - LargeScreenUtils.shouldUseLargeScreenShadeHeader(mView.getResources()); - - mLargeScreenShadeHeaderHeight = - mResources.getDimensionPixelSize(R.dimen.large_screen_shade_header_height); - // TODO: When the flag is eventually removed, it means that we have a single view that is - // the same height in QQS and in Large Screen (large_screen_shade_header_height). Eventually - // the concept of largeScreenHeader or quickQsHeader will disappear outside of the class - // that controls the view as the offset needs to be the same regardless. - if (mUseLargeScreenShadeHeader || mFeatureFlags.isEnabled(Flags.COMBINED_QS_HEADERS)) { - mQuickQsHeaderHeight = mLargeScreenShadeHeaderHeight; - } else { - mQuickQsHeaderHeight = SystemBarUtils.getQuickQsOffsetHeight(mView.getContext()); - } - int topMargin = mUseLargeScreenShadeHeader ? mLargeScreenShadeHeaderHeight : - mResources.getDimensionPixelSize(R.dimen.notification_panel_margin_top); - mLargeScreenShadeHeaderController.setLargeScreenActive(mUseLargeScreenShadeHeader); - mAmbientState.setStackTopMargin(topMargin); + mQsController.updateResources(); mNotificationsQSContainerController.updateResources(); - updateKeyguardStatusViewAlignment(/* animate= */false); - mKeyguardMediaController.refreshMediaPosition(); if (splitShadeChanged) { @@ -1351,17 +1194,15 @@ public final class NotificationPanelViewController implements Dumpable { mSplitShadeFullTransitionDistance = mResources.getDimensionPixelSize(R.dimen.split_shade_full_transition_distance); - - mEnableQsClipping = mResources.getBoolean(R.bool.qs_enable_clipping); } private void onSplitShadeEnabledChanged() { // when we switch between split shade and regular shade we want to enforce setting qs to // the default state: expanded for split shade and collapsed otherwise if (!isOnKeyguard() && mPanelExpanded) { - setQsExpanded(mSplitShadeEnabled); + mQsController.setExpanded(mSplitShadeEnabled); } - if (isOnKeyguard() && mQsExpanded && mSplitShadeEnabled) { + if (isOnKeyguard() && mQsController.getExpanded() && mSplitShadeEnabled) { // In single column keyguard - when you swipe from the top - QS is fully expanded and // StatusBarState is KEYGUARD. That state doesn't make sense for split shade, // where notifications are always visible and we effectively go to fully expanded @@ -1371,7 +1212,7 @@ public final class NotificationPanelViewController implements Dumpable { mStatusBarStateController.setState(StatusBarState.SHADE_LOCKED, /* force= */false); } updateClockAppearance(); - updateQsState(); + mQsController.updateQsState(); mNotificationStackScrollLayoutController.updateFooter(); } @@ -1479,11 +1320,6 @@ public final class NotificationPanelViewController implements Dumpable { mNotificationPanelUnfoldAnimationController.ifPresent(u -> u.setup(mView)); } - @VisibleForTesting - void setQs(QS qs) { - mQs = qs; - } - private void attachSplitShadeMediaPlayerContainer(FrameLayout container) { mKeyguardMediaController.attachSplitShadeContainer(container); } @@ -1515,7 +1351,7 @@ public final class NotificationPanelViewController implements Dumpable { if (SPEW_LOGCAT) Log.d(TAG, "Skipping computeMaxKeyguardNotifications() by request"); } - if (mKeyguardShowing && !mKeyguardBypassController.getBypassEnabled()) { + if (getKeyguardShowing() && !mKeyguardBypassController.getBypassEnabled()) { mNotificationStackScrollLayoutController.setMaxDisplayedNotifications( mMaxAllowedKeyguardNotifications); mNotificationStackScrollLayoutController.setKeyguardBottomPaddingForDebug( @@ -1564,39 +1400,14 @@ public final class NotificationPanelViewController implements Dumpable { mIsFullWidth = isFullWidth; mScrimController.setClipsQsScrim(isFullWidth); mNotificationStackScrollLayoutController.setIsFullWidth(isFullWidth); - if (mQs != null) { - mQs.setIsNotificationPanelFullWidth(isFullWidth); - } - } - - private void startQsSizeChangeAnimation(int oldHeight, final int newHeight) { - if (mQsSizeChangeAnimator != null) { - oldHeight = (int) mQsSizeChangeAnimator.getAnimatedValue(); - mQsSizeChangeAnimator.cancel(); - } - mQsSizeChangeAnimator = ValueAnimator.ofInt(oldHeight, newHeight); - mQsSizeChangeAnimator.setDuration(300); - mQsSizeChangeAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); - mQsSizeChangeAnimator.addUpdateListener(animation -> { - requestScrollerTopPaddingUpdate(false /* animate */); - updateExpandedHeightToMaxHeight(); - int height = (int) mQsSizeChangeAnimator.getAnimatedValue(); - mQs.setHeightOverride(height); - }); - mQsSizeChangeAnimator.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mQsSizeChangeAnimator = null; - } - }); - mQsSizeChangeAnimator.start(); + mQsController.setNotificationPanelFullWidth(isFullWidth); } /** * Positions the clock and notifications dynamically depending on how many notifications are * showing. */ - private void positionClockAndNotifications() { + void positionClockAndNotifications() { positionClockAndNotifications(false /* forceUpdate */); } @@ -1621,7 +1432,7 @@ public final class NotificationPanelViewController implements Dumpable { // so we should not add a padding for them stackScrollerPadding = 0; } else { - stackScrollerPadding = getUnlockedStackScrollerPadding(); + stackScrollerPadding = mQsController.getUnlockedStackScrollerPadding(); } } else { stackScrollerPadding = mClockPositionResult.stackScrollerPaddingExpanded; @@ -1669,8 +1480,9 @@ public final class NotificationPanelViewController implements Dumpable { userSwitcherHeight, userSwitcherPreferredY, darkAmount, mOverStretchAmount, - bypassEnabled, getUnlockedStackScrollerPadding(), - computeQsExpansionFraction(), + bypassEnabled, + mQsController.getUnlockedStackScrollerPadding(), + mQsController.computeExpansionFraction(), mDisplayTopInset, mSplitShadeEnabled, udfpsAodTopLocation, @@ -1822,19 +1634,16 @@ public final class NotificationPanelViewController implements Dumpable { return mDozing && mDozeParameters.getAlwaysOn(); } + boolean isDozing() { + return mDozing; + } + private boolean hasVisibleNotifications() { return mNotificationStackScrollLayoutController .getVisibleNotificationCount() != 0 || mMediaDataManager.hasActiveMediaOrRecommendation(); } - /** - * @return the padding of the stackscroller when unlocked - */ - private int getUnlockedStackScrollerPadding() { - return (mQs != null ? mQs.getHeader().getHeight() : 0) + mQsPeekHeight; - } - /** Returns space between top of lock icon and bottom of NotificationStackScrollLayout. */ private float getLockIconPadding() { float lockIconPadding = 0f; @@ -1952,23 +1761,23 @@ public final class NotificationPanelViewController implements Dumpable { mAnimateNextPositionUpdate = true; } - private void setQsExpansionEnabled() { - if (mQs == null) return; - mQs.setHeaderClickable(isQsExpansionEnabled()); - } + /** Animate QS closing. */ + public void animateCloseQs(boolean animateAway) { + if (mSplitShadeEnabled) { + collapsePanel(true, false, 1.0f); + } else { + mQsController.animateCloseQs(animateAway); + } - public void setQsExpansionEnabledPolicy(boolean qsExpansionEnabledPolicy) { - mQsExpansionEnabledPolicy = qsExpansionEnabledPolicy; - setQsExpansionEnabled(); } public void resetViews(boolean animate) { mGutsManager.closeAndSaveGuts(true /* leavebehind */, true /* force */, true /* controls */, -1 /* x */, -1 /* y */, true /* resetMenu */); if (animate && !isFullyCollapsed()) { - animateCloseQs(true /* animateAway */); + animateCloseQs(true); } else { - closeQs(); + mQsController.closeQs(); } mNotificationStackScrollLayoutController.setOverScrollAmount(0f, true /* onTop */, animate, !animate /* cancelAnimators */); @@ -1999,8 +1808,8 @@ public final class NotificationPanelViewController implements Dumpable { return; } - if (mQsExpanded) { - setQsExpandImmediate(true); + if (mQsController.getExpanded()) { + mQsController.setExpandImmediate(true); setShowShelfOnly(true); } debugLog("collapse: %s", this); @@ -2019,33 +1828,11 @@ public final class NotificationPanelViewController implements Dumpable { } } - @VisibleForTesting - void setQsExpandImmediate(boolean expandImmediate) { - if (expandImmediate != mQsExpandImmediate) { - mQsExpandImmediate = expandImmediate; - mShadeExpansionStateManager.notifyExpandImmediateChange(expandImmediate); - } - } - - @VisibleForTesting - boolean isQsExpandImmediate() { - return mQsExpandImmediate; - } - private void setShowShelfOnly(boolean shelfOnly) { mNotificationStackScrollLayoutController.setShouldShowShelfOnly( shelfOnly && !mSplitShadeEnabled); } - public void closeQs() { - cancelQsAnimation(); - setQsExpansionHeight(mQsMinExpansionHeight); - // qsExpandImmediate is a safety latch in case we're calling closeQS while we're in the - // middle of animation - we need to make sure that value is always false when shade if - // fully collapsed or expanded - setQsExpandImmediate(false); - } - @VisibleForTesting void cancelHeightAnimator() { if (mHeightAnimator != null) { @@ -2061,39 +1848,9 @@ public final class NotificationPanelViewController implements Dumpable { mView.animate().cancel(); } - /** - * Animate QS closing by flinging it. - * If QS is expanded, it will collapse into QQS and stop. - * If in split shade, it will collapse the whole shade. - * - * @param animateAway Do not stop when QS becomes QQS. Fling until QS isn't visible anymore. - */ - public void animateCloseQs(boolean animateAway) { - if (mSplitShadeEnabled) { - collapsePanel( - /* animate= */true, /* delayed= */false, /* speedUpFactor= */1.0f); - return; - } - - if (mQsExpansionAnimator != null) { - if (!mQsAnimatorExpand) { - return; - } - float height = mQsExpansionHeight; - mQsExpansionAnimator.cancel(); - setQsExpansionHeight(height); - } - flingSettings(0 /* vel */, animateAway ? FLING_HIDE : FLING_COLLAPSE); - } - - private boolean isQsExpansionEnabled() { - return mQsExpansionEnabledPolicy && mQsExpansionEnabledAmbient - && !mRemoteInputManager.isRemoteInputActive(); - } - public void expandWithQs() { - if (isQsExpansionEnabled()) { - setQsExpandImmediate(true); + if (mQsController.isExpansionEnabled()) { + mQsController.setExpandImmediate(true); setShowShelfOnly(true); } if (mSplitShadeEnabled && isOnKeyguard()) { @@ -2109,8 +1866,8 @@ public final class NotificationPanelViewController implements Dumpable { } else if (isFullyCollapsed()) { expand(true /* animate */); } else { - traceQsJank(true /* startTracing */, false /* wasCancelled */); - flingSettings(0 /* velocity */, FLING_EXPAND); + mQsController.traceQsJank(true /* startTracing */, false /* wasCancelled */); + mQsController.flingQs(0, FLING_EXPAND); } } @@ -2125,8 +1882,8 @@ public final class NotificationPanelViewController implements Dumpable { if (mSplitShadeEnabled && (isShadeFullyOpen() || isExpanding())) { return; } - if (isQsExpanded()) { - flingSettings(0 /* velocity */, FLING_COLLAPSE); + if (mQsController.getExpanded()) { + mQsController.flingQs(0, FLING_COLLAPSE); } else { expand(true /* animate */); } @@ -2143,8 +1900,7 @@ public final class NotificationPanelViewController implements Dumpable { @VisibleForTesting void flingToHeight(float vel, boolean expand, float target, float collapseSpeedUpFactor, boolean expandBecauseOfFalsing) { - mLastFlingWasExpanding = expand; - mShadeLog.logLastFlingWasExpanding(expand); + mQsController.setLastShadeFlingWasExpanding(expand); mHeadsUpTouchHelper.notifyFling(!expand); mKeyguardStateController.notifyPanelFlingStart(!expand /* flingingToDismiss */); setClosingWithAlphaFadeout(!expand && !isOnKeyguard() && getFadeoutAlpha() == 1.0f); @@ -2216,7 +1972,7 @@ public final class NotificationPanelViewController implements Dumpable { @Override public void onAnimationStart(Animator animation) { if (!mStatusBarStateController.isDozing()) { - beginJankMonitoring(); + mQsController.beginJankMonitoring(isFullyCollapsed()); } } @@ -2248,117 +2004,15 @@ public final class NotificationPanelViewController implements Dumpable { setAnimator(null); mKeyguardStateController.notifyPanelFlingEnd(); if (!cancelled) { - endJankMonitoring(); + mQsController.endJankMonitoring(); notifyExpandingFinished(); } else { - cancelJankMonitoring(); + mQsController.cancelJankMonitoring(); } updatePanelExpansionAndVisibility(); mNotificationStackScrollLayoutController.setPanelFlinging(false); } - private boolean onQsIntercept(MotionEvent event) { - debugLog("onQsIntercept"); - int pointerIndex = event.findPointerIndex(mQsTrackingPointer); - if (pointerIndex < 0) { - pointerIndex = 0; - mQsTrackingPointer = event.getPointerId(pointerIndex); - } - final float x = event.getX(pointerIndex); - final float y = event.getY(pointerIndex); - - switch (event.getActionMasked()) { - case MotionEvent.ACTION_DOWN: - mInitialTouchY = y; - mInitialTouchX = x; - initVelocityTracker(); - trackMovement(event); - float qsExpansionFraction = computeQsExpansionFraction(); - // Intercept the touch if QS is between fully collapsed and fully expanded state - if (!mSplitShadeEnabled - && qsExpansionFraction > 0.0 && qsExpansionFraction < 1.0) { - mShadeLog.logMotionEvent(event, - "onQsIntercept: down action, QS partially expanded/collapsed"); - return true; - } - if (mKeyguardShowing - && shouldQuickSettingsIntercept(mInitialTouchX, mInitialTouchY, 0)) { - // Dragging down on the lockscreen statusbar should prohibit other interactions - // immediately, otherwise we'll wait on the touchslop. This is to allow - // dragging down to expanded quick settings directly on the lockscreen. - mView.getParent().requestDisallowInterceptTouchEvent(true); - } - if (mQsExpansionAnimator != null) { - mInitialHeightOnTouch = mQsExpansionHeight; - mShadeLog.logMotionEvent(event, - "onQsIntercept: down action, QS tracking enabled"); - mQsTracking = true; - traceQsJank(true /* startTracing */, false /* wasCancelled */); - mNotificationStackScrollLayoutController.cancelLongPress(); - } - break; - case MotionEvent.ACTION_POINTER_UP: - final int upPointer = event.getPointerId(event.getActionIndex()); - if (mQsTrackingPointer == upPointer) { - // gesture is ongoing, find a new pointer to track - final int newIndex = event.getPointerId(0) != upPointer ? 0 : 1; - mQsTrackingPointer = event.getPointerId(newIndex); - mInitialTouchX = event.getX(newIndex); - mInitialTouchY = event.getY(newIndex); - } - break; - - case MotionEvent.ACTION_MOVE: - final float h = y - mInitialTouchY; - trackMovement(event); - if (mQsTracking) { - - // Already tracking because onOverscrolled was called. We need to update here - // so we don't stop for a frame until the next touch event gets handled in - // onTouchEvent. - setQsExpansionHeight(h + mInitialHeightOnTouch); - trackMovement(event); - return true; - } else { - mShadeLog.logMotionEvent(event, - "onQsIntercept: move ignored because qs tracking disabled"); - } - float touchSlop = getTouchSlop(event); - if ((h > touchSlop || (h < -touchSlop && mQsExpanded)) - && Math.abs(h) > Math.abs(x - mInitialTouchX) - && shouldQuickSettingsIntercept(mInitialTouchX, mInitialTouchY, h)) { - mView.getParent().requestDisallowInterceptTouchEvent(true); - mShadeLog.onQsInterceptMoveQsTrackingEnabled(h); - mQsTracking = true; - traceQsJank(true /* startTracing */, false /* wasCancelled */); - onQsExpansionStarted(); - notifyExpandingFinished(); - mInitialHeightOnTouch = mQsExpansionHeight; - mInitialTouchY = y; - mInitialTouchX = x; - mNotificationStackScrollLayoutController.cancelLongPress(); - return true; - } else { - mShadeLog.logQsTrackingNotStarted(mInitialTouchY, y, h, touchSlop, mQsExpanded, - mCollapsedOnDown, mKeyguardShowing, isQsExpansionEnabled()); - } - break; - - case MotionEvent.ACTION_CANCEL: - case MotionEvent.ACTION_UP: - trackMovement(event); - mShadeLog.logMotionEvent(event, "onQsIntercept: up action, QS tracking disabled"); - mQsTracking = false; - break; - } - return false; - } - - @VisibleForTesting - boolean isQsTracking() { - return mQsTracking; - } - private boolean isInContentBounds(float x, float y) { float stackScrollerX = mNotificationStackScrollLayoutController.getX(); return !mNotificationStackScrollLayoutController @@ -2367,29 +2021,14 @@ public final class NotificationPanelViewController implements Dumpable { && x < stackScrollerX + mNotificationStackScrollLayoutController.getWidth(); } - private void traceQsJank(boolean startTracing, boolean wasCancelled) { - if (mInteractionJankMonitor == null) { - return; - } - if (startTracing) { - mInteractionJankMonitor.begin(mView, CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); - } else { - if (wasCancelled) { - mInteractionJankMonitor.cancel(CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); - } else { - mInteractionJankMonitor.end(CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); - } - } - } - private void initDownStates(MotionEvent event) { if (event.getActionMasked() == MotionEvent.ACTION_DOWN) { - mQsTouchAboveFalsingThreshold = mQsFullyExpanded; mDozingOnDown = mDozing; mDownX = event.getX(); mDownY = event.getY(); mCollapsedOnDown = isFullyCollapsed(); - mIsPanelCollapseOnQQS = canPanelCollapseOnQQS(mDownX, mDownY); + mQsController.setCollapsedOnDown(mCollapsedOnDown); + mIsPanelCollapseOnQQS = mQsController.canPanelCollapseOnQQS(mDownX, mDownY); mListenForHeadsUp = mCollapsedOnDown && mHeadsUpManager.hasPinnedHeadsUp(); mAllowExpandForSmallExpansion = mExpectingSynthesizedDown; mTouchSlopExceededBeforeDown = mExpectingSynthesizedDown; @@ -2399,7 +2038,7 @@ public final class NotificationPanelViewController implements Dumpable { event.getEventTime(), mDownX, mDownY, - mQsTouchAboveFalsingThreshold, + mQsController.updateAndGetTouchAboveFalsingThreshold(), mDozingOnDown, mCollapsedOnDown, mIsPanelCollapseOnQQS, @@ -2414,84 +2053,14 @@ public final class NotificationPanelViewController implements Dumpable { } } - /** - * Can the panel collapse in this motion because it was started on QQS? - * - * @param downX the x location where the touch started - * @param downY the y location where the touch started - * @return true if the panel could be collapsed because it stared on QQS - */ - private boolean canPanelCollapseOnQQS(float downX, float downY) { - if (mCollapsedOnDown || mKeyguardShowing || mQsExpanded) { - return false; - } - View header = mQs == null ? mKeyguardStatusBar : mQs.getHeader(); - return downX >= mQsFrame.getX() && downX <= mQsFrame.getX() + mQsFrame.getWidth() - && downY <= header.getBottom(); - - } - - private void flingQsWithCurrentVelocity(float y, boolean isCancelMotionEvent) { - float vel = getCurrentQSVelocity(); - boolean expandsQs = flingExpandsQs(vel); - if (expandsQs) { - if (mFalsingManager.isUnlockingDisabled() || isFalseTouch()) { - expandsQs = false; - } else { - logQsSwipeDown(y); - } - } else if (vel < 0) { - mFalsingManager.isFalseTouch(QS_COLLAPSE); - } - - int flingType; - if (expandsQs && !isCancelMotionEvent) { - flingType = FLING_EXPAND; - } else if (mSplitShadeEnabled) { - flingType = FLING_HIDE; - } else { - flingType = FLING_COLLAPSE; - } - flingSettings(vel, flingType); - } - - private void logQsSwipeDown(float y) { - float vel = getCurrentQSVelocity(); - final int - gesture = - mBarState == KEYGUARD ? MetricsEvent.ACTION_LS_QS - : MetricsEvent.ACTION_SHADE_QS_PULL; - mLockscreenGestureLogger.write(gesture, - (int) ((y - mInitialTouchY) / mCentralSurfaces.getDisplayDensity()), - (int) (vel / mCentralSurfaces.getDisplayDensity())); - } - - private boolean flingExpandsQs(float vel) { + boolean flingExpandsQs(float vel) { if (Math.abs(vel) < mFlingAnimationUtils.getMinVelocityPxPerSecond()) { - return computeQsExpansionFraction() > 0.5f; + return mQsController.computeExpansionFraction() > 0.5f; } else { return vel > 0; } } - private boolean isFalseTouch() { - if (mFalsingManager.isClassifierEnabled()) { - return mFalsingManager.isFalseTouch(Classifier.QUICK_SETTINGS); - } - return !mQsTouchAboveFalsingThreshold; - } - - private float computeQsExpansionFraction() { - if (mQSAnimatingHiddenFromCollapsed) { - // When hiding QS from collapsed state, the expansion can sometimes temporarily - // be larger than 0 because of the timing, leading to flickers. - return 0.0f; - } - return Math.min( - 1f, (mQsExpansionHeight - mQsMinExpansionHeight) / (mQsMaxExpansionHeight - - mQsMinExpansionHeight)); - } - private boolean shouldExpandWhenNotFlinging() { if (getExpandedFraction() > 0.5f) { return true; @@ -2509,121 +2078,13 @@ public final class NotificationPanelViewController implements Dumpable { return mNotificationStackScrollLayoutController.getOpeningHeight(); } - - private boolean handleQsTouch(MotionEvent event) { - if (isSplitShadeAndTouchXOutsideQs(event.getX())) { - return false; - } - final int action = event.getActionMasked(); - boolean collapsedQs = !mQsExpanded && !mSplitShadeEnabled; - boolean expandedShadeCollapsedQs = getExpandedFraction() == 1f && mBarState != KEYGUARD - && collapsedQs && isQsExpansionEnabled(); - if (action == MotionEvent.ACTION_DOWN && expandedShadeCollapsedQs) { - // Down in the empty area while fully expanded - go to QS. - mShadeLog.logMotionEvent(event, "handleQsTouch: down action, QS tracking enabled"); - mQsTracking = true; - traceQsJank(true /* startTracing */, false /* wasCancelled */); - mConflictingQsExpansionGesture = true; - onQsExpansionStarted(); - mInitialHeightOnTouch = mQsExpansionHeight; - mInitialTouchY = event.getY(); - mInitialTouchX = event.getX(); - } - if (!isFullyCollapsed() && !isShadeOrQsHeightAnimationRunning()) { - handleQsDown(event); - } - // defer touches on QQS to shade while shade is collapsing. Added margin for error - // as sometimes the qsExpansionFraction can be a tiny value instead of 0 when in QQS. - if (!mSplitShadeEnabled && !mLastFlingWasExpanding - && computeQsExpansionFraction() <= 0.01 && getExpandedFraction() < 1.0) { - mShadeLog.logMotionEvent(event, - "handleQsTouch: shade touched while collapsing, QS tracking disabled"); - mQsTracking = false; - } - if (!mQsExpandImmediate && mQsTracking) { - onQsTouch(event); - if (!mConflictingQsExpansionGesture && !mSplitShadeEnabled) { - mShadeLog.logMotionEvent(event, - "handleQsTouch: not immediate expand or conflicting gesture"); - return true; - } - } - if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) { - mConflictingQsExpansionGesture = false; - } - if (action == MotionEvent.ACTION_DOWN && isFullyCollapsed() && isQsExpansionEnabled()) { - mTwoFingerQsExpandPossible = true; - } - if (mTwoFingerQsExpandPossible && isOpenQsEvent(event) && event.getY(event.getActionIndex()) - < mStatusBarMinHeight) { - mMetricsLogger.count(COUNTER_PANEL_OPEN_QS, 1); - setQsExpandImmediate(true); - setShowShelfOnly(true); - updateExpandedHeightToMaxHeight(); - - // Normally, we start listening when the panel is expanded, but here we need to start - // earlier so the state is already up to date when dragging down. - setListening(true); - } - return false; - } - - /** Returns whether split shade is enabled and an x coordinate is outside of the QS frame. */ - private boolean isSplitShadeAndTouchXOutsideQs(float touchX) { - return mSplitShadeEnabled && (touchX < mQsFrame.getX() - || touchX > mQsFrame.getX() + mQsFrame.getWidth()); - } - - private boolean isInQsArea(float x, float y) { - if (isSplitShadeAndTouchXOutsideQs(x)) { - return false; - } - // Let's reject anything at the very bottom around the home handle in gesture nav - if (mIsGestureNavigation && y > mView.getHeight() - mNavigationBarBottomHeight) { - return false; - } - return y <= mNotificationStackScrollLayoutController.getBottomMostNotificationBottom() - || y <= mQs.getView().getY() + mQs.getView().getHeight(); + float getDisplayDensity() { + return mCentralSurfaces.getDisplayDensity(); } - private boolean isOpenQsEvent(MotionEvent event) { - final int pointerCount = event.getPointerCount(); - final int action = event.getActionMasked(); - - final boolean - twoFingerDrag = - action == MotionEvent.ACTION_POINTER_DOWN && pointerCount == 2; - - final boolean - stylusButtonClickDrag = - action == MotionEvent.ACTION_DOWN && (event.isButtonPressed( - MotionEvent.BUTTON_STYLUS_PRIMARY) || event.isButtonPressed( - MotionEvent.BUTTON_STYLUS_SECONDARY)); - - final boolean - mouseButtonClickDrag = - action == MotionEvent.ACTION_DOWN && (event.isButtonPressed( - MotionEvent.BUTTON_SECONDARY) || event.isButtonPressed( - MotionEvent.BUTTON_TERTIARY)); - - return twoFingerDrag || stylusButtonClickDrag || mouseButtonClickDrag; - } - - private void handleQsDown(MotionEvent event) { - if (event.getActionMasked() == MotionEvent.ACTION_DOWN && shouldQuickSettingsIntercept( - event.getX(), event.getY(), -1)) { - debugLog("handleQsDown"); - mFalsingCollector.onQsDown(); - mShadeLog.logMotionEvent(event, "handleQsDown: down action, QS tracking enabled"); - mQsTracking = true; - onQsExpansionStarted(); - mInitialHeightOnTouch = mQsExpansionHeight; - mInitialTouchY = event.getY(); - mInitialTouchX = event.getX(); - - // If we interrupt an expansion gesture here, make sure to update the state correctly. - notifyExpandingFinished(); - } + /** Return whether a touch is near the gesture handle at the bottom of screen */ + public boolean isInGestureNavHomeHandleArea(float x, float y) { + return mIsGestureNavigation && y > mView.getHeight() - mNavigationBarBottomHeight; } /** Input focus transfer is about to happen. */ @@ -2680,7 +2141,7 @@ public final class NotificationPanelViewController implements Dumpable { } // If we are already running a QS expansion, make sure that we keep the panel open. - if (mQsExpansionAnimator != null) { + if (mQsController.isExpansionAnimating()) { expands = true; } return expands; @@ -2694,124 +2155,9 @@ public final class NotificationPanelViewController implements Dumpable { return isFullyCollapsed() || mBarState != StatusBarState.SHADE; } - private void onQsTouch(MotionEvent event) { - int pointerIndex = event.findPointerIndex(mQsTrackingPointer); - if (pointerIndex < 0) { - pointerIndex = 0; - mQsTrackingPointer = event.getPointerId(pointerIndex); - } - final float y = event.getY(pointerIndex); - final float x = event.getX(pointerIndex); - final float h = y - mInitialTouchY; - - switch (event.getActionMasked()) { - case MotionEvent.ACTION_DOWN: - mShadeLog.logMotionEvent(event, "onQsTouch: down action, QS tracking enabled"); - mQsTracking = true; - traceQsJank(true /* startTracing */, false /* wasCancelled */); - mInitialTouchY = y; - mInitialTouchX = x; - onQsExpansionStarted(); - mInitialHeightOnTouch = mQsExpansionHeight; - initVelocityTracker(); - trackMovement(event); - break; - - case MotionEvent.ACTION_POINTER_UP: - final int upPointer = event.getPointerId(event.getActionIndex()); - if (mQsTrackingPointer == upPointer) { - // gesture is ongoing, find a new pointer to track - final int newIndex = event.getPointerId(0) != upPointer ? 0 : 1; - final float newY = event.getY(newIndex); - final float newX = event.getX(newIndex); - mQsTrackingPointer = event.getPointerId(newIndex); - mInitialHeightOnTouch = mQsExpansionHeight; - mInitialTouchY = newY; - mInitialTouchX = newX; - } - break; - - case MotionEvent.ACTION_MOVE: - debugLog("onQSTouch move"); - mShadeLog.logMotionEvent(event, "onQsTouch: move action, setting QS expansion"); - setQsExpansionHeight(h + mInitialHeightOnTouch); - if (h >= getFalsingThreshold()) { - mQsTouchAboveFalsingThreshold = true; - } - trackMovement(event); - break; - - case MotionEvent.ACTION_UP: - case MotionEvent.ACTION_CANCEL: - mShadeLog.logMotionEvent(event, - "onQsTouch: up/cancel action, QS tracking disabled"); - mQsTracking = false; - mQsTrackingPointer = -1; - trackMovement(event); - float fraction = computeQsExpansionFraction(); - if (fraction != 0f || y >= mInitialTouchY) { - flingQsWithCurrentVelocity(y, - event.getActionMasked() == MotionEvent.ACTION_CANCEL); - } else { - traceQsJank(false /* startTracing */, - event.getActionMasked() == MotionEvent.ACTION_CANCEL); - } - if (mQsVelocityTracker != null) { - mQsVelocityTracker.recycle(); - mQsVelocityTracker = null; - } - break; - } - } - - private int getFalsingThreshold() { + int getFalsingThreshold() { float factor = mCentralSurfaces.isWakeUpComingFromTouch() ? 1.5f : 1.0f; - return (int) (mQsFalsingThreshold * factor); - } - - private void setOverScrolling(boolean overscrolling) { - mStackScrollerOverscrolling = overscrolling; - if (mQs == null) return; - mQs.setOverscrolling(overscrolling); - } - - private void onQsExpansionStarted() { - cancelQsAnimation(); - cancelHeightAnimator(); - - // Reset scroll position and apply that position to the expanded height. - float height = mQsExpansionHeight; - setQsExpansionHeight(height); - mNotificationStackScrollLayoutController.checkSnoozeLeavebehind(); - - // When expanding QS, let's authenticate the user if possible, - // this will speed up notification actions. - if (height == 0 && !mKeyguardStateController.canDismissLockScreen()) { - mUpdateMonitor.requestFaceAuth(FaceAuthApiRequestReason.QS_EXPANDED); - } - } - - @VisibleForTesting - void setQsExpanded(boolean expanded) { - boolean changed = mQsExpanded != expanded; - if (changed) { - mQsExpanded = expanded; - updateQsState(); - updateExpandedHeightToMaxHeight(); - setStatusAccessibilityImportance(expanded - ? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS - : View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); - updateSystemUiStateFlags(); - NavigationBarView navigationBarView = - mNavigationBarController.getNavigationBarView(mDisplayId); - if (navigationBarView != null) { - navigationBarView.onStatusBarPanelStateChanged(); - } - mShadeExpansionStateManager.onQsExpansionChanged(expanded); - mShadeLog.logQsExpansionChanged("QS Expansion Changed.", expanded, - mQsMinExpansionHeight, mQsMaxExpansionHeight, mStackScrollerOverscrolling, - mDozing, mQsAnimatorExpand, mAnimatingQS); - } + return (int) (mQsController.getFalsingThreshold() * factor); } private void maybeAnimateBottomAreaAlpha() { @@ -2843,403 +2189,29 @@ public final class NotificationPanelViewController implements Dumpable { } } - private void updateQsState() { - boolean qsFullScreen = mQsExpanded && !mSplitShadeEnabled; - mNotificationStackScrollLayoutController.setQsFullScreen(qsFullScreen); - mNotificationStackScrollLayoutController.setScrollingEnabled( - mBarState != KEYGUARD && (!qsFullScreen || mQsExpansionFromOverscroll)); - - if (mKeyguardUserSwitcherController != null && mQsExpanded - && !mStackScrollerOverscrolling) { - mKeyguardUserSwitcherController.closeSwitcherIfOpenAndNotSimple(true); - } - if (mQs == null) return; - mQs.setExpanded(mQsExpanded); - } - - void setQsExpansionHeight(float height) { - height = Math.min(Math.max(height, mQsMinExpansionHeight), mQsMaxExpansionHeight); - mQsFullyExpanded = height == mQsMaxExpansionHeight && mQsMaxExpansionHeight != 0; - boolean qsAnimatingAway = !mQsAnimatorExpand && mAnimatingQS; - if (height > mQsMinExpansionHeight && !mQsExpanded && !mStackScrollerOverscrolling - && !mDozing && !qsAnimatingAway) { - setQsExpanded(true); - } else if (height <= mQsMinExpansionHeight && mQsExpanded) { - setQsExpanded(false); - } - mQsExpansionHeight = height; - updateQsExpansion(); - requestScrollerTopPaddingUpdate(false /* animate */); - mKeyguardStatusBarViewController.updateViewState(); - if (mBarState == StatusBarState.SHADE_LOCKED || mBarState == KEYGUARD) { - updateKeyguardBottomAreaAlpha(); - positionClockAndNotifications(); - } - - if (mAccessibilityManager.isEnabled()) { - mView.setAccessibilityPaneTitle(determineAccessibilityPaneTitle()); - } - - if (!mFalsingManager.isUnlockingDisabled() && mQsFullyExpanded - && mFalsingCollector.shouldEnforceBouncer()) { - mCentralSurfaces.executeRunnableDismissingKeyguard(null, null /* cancelAction */, - false /* dismissShade */, true /* afterKeyguardGone */, false /* deferred */); - } - if (DEBUG_DRAWABLE) { - mView.invalidate(); - } - } - - private void updateQsExpansion() { - if (mQs == null) return; - final float squishiness; - if ((mQsExpandImmediate || mQsExpanded) && !mSplitShadeEnabled) { - squishiness = 1; - } else if (mTransitioningToFullShadeProgress > 0.0f) { - squishiness = mLockscreenShadeTransitionController.getQsSquishTransitionFraction(); - } else { - squishiness = mNotificationStackScrollLayoutController - .getNotificationSquishinessFraction(); - } - final float qsExpansionFraction = computeQsExpansionFraction(); - final float adjustedExpansionFraction = mSplitShadeEnabled - ? 1f : computeQsExpansionFraction(); - mQs.setQsExpansion(adjustedExpansionFraction, getExpandedFraction(), getHeaderTranslation(), - squishiness); - mMediaHierarchyManager.setQsExpansion(qsExpansionFraction); - int qsPanelBottomY = calculateQsBottomPosition(qsExpansionFraction); - mScrimController.setQsPosition(qsExpansionFraction, qsPanelBottomY); - setQSClippingBounds(); - - if (mSplitShadeEnabled) { - // In split shade we want to pretend that QS are always collapsed so their behaviour and - // interactions don't influence notifications as they do in portrait. But we want to set - // 0 explicitly in case we're rotating from non-split shade with QS expansion of 1. - mNotificationStackScrollLayoutController.setQsExpansionFraction(0); - } else { - mNotificationStackScrollLayoutController.setQsExpansionFraction(qsExpansionFraction); - } - - mDepthController.setQsPanelExpansion(qsExpansionFraction); - mStatusBarKeyguardViewManager.setQsExpansion(qsExpansionFraction); - - float shadeExpandedFraction = isOnKeyguard() - ? getLockscreenShadeDragProgress() - : getExpandedFraction(); - mLargeScreenShadeHeaderController.setShadeExpandedFraction(shadeExpandedFraction); - mLargeScreenShadeHeaderController.setQsExpandedFraction(qsExpansionFraction); - mLargeScreenShadeHeaderController.setQsVisible(mQsVisible); - } - - private float getLockscreenShadeDragProgress() { + /** */ + public float getLockscreenShadeDragProgress() { // mTransitioningToFullShadeProgress > 0 means we're doing regular lockscreen to shade // transition. If that's not the case we should follow QS expansion fraction for when // user is pulling from the same top to go directly to expanded QS - return mTransitioningToFullShadeProgress > 0 + return mQsController.getTransitioningToFullShadeProgress() > 0 ? mLockscreenShadeTransitionController.getQSDragProgress() - : computeQsExpansionFraction(); - } - - private void onStackYChanged(boolean shouldAnimate) { - if (mQs != null) { - if (shouldAnimate) { - animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_STANDARD, - 0 /* delay */); - mNotificationBoundsAnimationDelay = 0; - } - setQSClippingBounds(); - } - } - - private void onNotificationScrolled(int newScrollPosition) { - updateQSExpansionEnabledAmbient(); - } - - private void updateQSExpansionEnabledAmbient() { - final float scrollRangeToTop = mAmbientState.getTopPadding() - mQuickQsHeaderHeight; - mQsExpansionEnabledAmbient = mSplitShadeEnabled - || (mAmbientState.getScrollY() <= scrollRangeToTop); - setQsExpansionEnabled(); - } - - /** - * Updates scrim bounds, QS clipping, notifications clipping and keyguard status view clipping - * as well based on the bounds of the shade and QS state. - */ - private void setQSClippingBounds() { - float qsExpansionFraction = computeQsExpansionFraction(); - final int qsPanelBottomY = calculateQsBottomPosition(qsExpansionFraction); - final boolean qsVisible = (qsExpansionFraction > 0 || qsPanelBottomY > 0); - checkCorrectScrimVisibility(qsExpansionFraction); - - int top = calculateTopQsClippingBound(qsPanelBottomY); - int bottom = calculateBottomQsClippingBound(top); - int left = calculateLeftQsClippingBound(); - int right = calculateRightQsClippingBound(); - // top should never be lower than bottom, otherwise it will be invisible. - top = Math.min(top, bottom); - applyQSClippingBounds(left, top, right, bottom, qsVisible); - } - - private void checkCorrectScrimVisibility(float expansionFraction) { - // issues with scrims visible on keyguard occur only in split shade - if (mSplitShadeEnabled) { - boolean keyguardViewsVisible = mBarState == KEYGUARD && mKeyguardOnlyContentAlpha == 1; - // expansionFraction == 1 means scrims are fully visible as their size/visibility depend - // on QS expansion - if (expansionFraction == 1 && keyguardViewsVisible) { - Log.wtf(TAG, - "Incorrect state, scrim is visible at the same time when clock is visible"); - } - } - } - - private int calculateTopQsClippingBound(int qsPanelBottomY) { - int top; - if (mSplitShadeEnabled) { - top = Math.min(qsPanelBottomY, mLargeScreenShadeHeaderHeight); - } else { - if (mTransitioningToFullShadeProgress > 0.0f) { - // If we're transitioning, let's use the actual value. The else case - // can be wrong during transitions when waiting for the keyguard to unlock - top = mTransitionToFullShadeQSPosition; - } else { - final float notificationTop = getQSEdgePosition(); - if (isOnKeyguard()) { - if (mKeyguardBypassController.getBypassEnabled()) { - // When bypassing on the keyguard, let's use the panel bottom. - // this should go away once we unify the stackY position and don't have - // to do this min anymore below. - top = qsPanelBottomY; - } else { - top = (int) Math.min(qsPanelBottomY, notificationTop); - } - } else { - top = (int) notificationTop; - } - } - top += mOverStretchAmount; - // Correction for instant expansion caused by HUN pull down/ - if (mMinFraction > 0f && mMinFraction < 1f) { - float realFraction = - (getExpandedFraction() - mMinFraction) / (1f - mMinFraction); - top *= MathUtils.saturate(realFraction / mMinFraction); - } - } - return top; - } - - private int calculateBottomQsClippingBound(int top) { - if (mSplitShadeEnabled) { - return top + mNotificationStackScrollLayoutController.getHeight() - + mSplitShadeNotificationsScrimMarginBottom; - } else { - return mView.getBottom(); - } - } - - private int calculateLeftQsClippingBound() { - if (mIsFullWidth) { - // left bounds can ignore insets, it should always reach the edge of the screen - return 0; - } else { - return mNotificationStackScrollLayoutController.getLeft() + mDisplayLeftInset; - } - } - - private int calculateRightQsClippingBound() { - if (mIsFullWidth) { - return mView.getRight() + mDisplayRightInset; - } else { - return mNotificationStackScrollLayoutController.getRight() + mDisplayLeftInset; - } - } - - /** - * Applies clipping to quick settings, notifications layout and - * updates bounds of the notifications background (notifications scrim). - * - * The parameters are bounds of the notifications area rectangle, this function - * calculates bounds for the QS clipping based on the notifications bounds. - */ - private void applyQSClippingBounds(int left, int top, int right, int bottom, - boolean qsVisible) { - if (!mAnimateNextNotificationBounds || mLastQsClipBounds.isEmpty()) { - if (mQsClippingAnimation != null) { - // update the end position of the animator - mQsClippingAnimationEndBounds.set(left, top, right, bottom); - } else { - applyQSClippingImmediately(left, top, right, bottom, qsVisible); - } - } else { - mQsClippingAnimationEndBounds.set(left, top, right, bottom); - final int startLeft = mLastQsClipBounds.left; - final int startTop = mLastQsClipBounds.top; - final int startRight = mLastQsClipBounds.right; - final int startBottom = mLastQsClipBounds.bottom; - if (mQsClippingAnimation != null) { - mQsClippingAnimation.cancel(); - } - mQsClippingAnimation = ValueAnimator.ofFloat(0.0f, 1.0f); - mQsClippingAnimation.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); - mQsClippingAnimation.setDuration(mNotificationBoundsAnimationDuration); - mQsClippingAnimation.setStartDelay(mNotificationBoundsAnimationDelay); - mQsClippingAnimation.addUpdateListener(animation -> { - float fraction = animation.getAnimatedFraction(); - int animLeft = (int) MathUtils.lerp(startLeft, - mQsClippingAnimationEndBounds.left, fraction); - int animTop = (int) MathUtils.lerp(startTop, - mQsClippingAnimationEndBounds.top, fraction); - int animRight = (int) MathUtils.lerp(startRight, - mQsClippingAnimationEndBounds.right, fraction); - int animBottom = (int) MathUtils.lerp(startBottom, - mQsClippingAnimationEndBounds.bottom, fraction); - applyQSClippingImmediately(animLeft, animTop, animRight, animBottom, - qsVisible /* qsVisible */); - }); - mQsClippingAnimation.addListener(new AnimatorListenerAdapter() { - @Override - public void onAnimationEnd(Animator animation) { - mQsClippingAnimation = null; - mIsQsTranslationResetAnimator = false; - mIsPulseExpansionResetAnimator = false; - } - }); - mQsClippingAnimation.start(); - } - mAnimateNextNotificationBounds = false; - mNotificationBoundsAnimationDelay = 0; - } - - private void applyQSClippingImmediately(int left, int top, int right, int bottom, - boolean qsVisible) { - int radius = mScrimCornerRadius; - boolean clipStatusView = false; - mLastQsClipBounds.set(left, top, right, bottom); - if (mIsFullWidth) { - clipStatusView = qsVisible; - float screenCornerRadius = mRecordingController.isRecording() ? 0 : mScreenCornerRadius; - radius = (int) MathUtils.lerp(screenCornerRadius, mScrimCornerRadius, - Math.min(top / (float) mScrimCornerRadius, 1f)); - } - if (mQs != null) { - float qsTranslation = 0; - boolean pulseExpanding = mPulseExpansionHandler.isExpanding(); - if (mTransitioningToFullShadeProgress > 0.0f || pulseExpanding - || (mQsClippingAnimation != null - && (mIsQsTranslationResetAnimator || mIsPulseExpansionResetAnimator))) { - if (pulseExpanding || mIsPulseExpansionResetAnimator) { - // qsTranslation should only be positive during pulse expansion because it's - // already translating in from the top - qsTranslation = Math.max(0, (top - mQs.getHeader().getHeight()) / 2.0f); - } else if (!mSplitShadeEnabled) { - qsTranslation = (top - mQs.getHeader().getHeight()) * QS_PARALLAX_AMOUNT; - } - } - mQsTranslationForFullShadeTransition = qsTranslation; - updateQsFrameTranslation(); - float currentTranslation = mQsFrame.getTranslationY(); - mQsClipTop = mEnableQsClipping - ? (int) (top - currentTranslation - mQsFrame.getTop()) : 0; - mQsClipBottom = mEnableQsClipping - ? (int) (bottom - currentTranslation - mQsFrame.getTop()) : 0; - mQsVisible = qsVisible; - mQs.setQsVisible(mQsVisible); - mQs.setFancyClipping( - mQsClipTop, - mQsClipBottom, - radius, - qsVisible && !mSplitShadeEnabled); - mKeyguardInteractor.setQuickSettingsVisible(mQsVisible); - } - // The padding on this area is large enough that we can use a cheaper clipping strategy - mKeyguardStatusViewController.setClipBounds(clipStatusView ? mLastQsClipBounds : null); - // Increase the height of the notifications scrim when not in split shade - // (e.g. portrait tablet) so the rounded corners are not visible at the bottom, - // in this case they are rendered off-screen - final int notificationsScrimBottom = mSplitShadeEnabled ? bottom : bottom + radius; - mScrimController.setNotificationsBounds(left, top, right, notificationsScrimBottom); - - if (mSplitShadeEnabled) { - mKeyguardStatusBarViewController.setNoTopClipping(); - } else { - mKeyguardStatusBarViewController.updateTopClipping(top); - } - - mScrimController.setScrimCornerRadius(radius); - - // Convert global clipping coordinates to local ones, - // relative to NotificationStackScrollLayout - int nsslLeft = calculateNsslLeft(left); - int nsslRight = calculateNsslRight(right); - int nsslTop = getNotificationsClippingTopBounds(top); - int nsslBottom = bottom - mNotificationStackScrollLayoutController.getTop(); - int bottomRadius = mSplitShadeEnabled ? radius : 0; - int topRadius = mSplitShadeEnabled && mExpandingFromHeadsUp ? 0 : radius; - mNotificationStackScrollLayoutController.setRoundedClippingBounds( - nsslLeft, nsslTop, nsslRight, nsslBottom, topRadius, bottomRadius); - } - - private int calculateNsslLeft(int nsslLeftAbsolute) { - int left = nsslLeftAbsolute - mNotificationStackScrollLayoutController.getLeft(); - if (mIsFullWidth) { - return left; - } - return left - mDisplayLeftInset; - } - - private int calculateNsslRight(int nsslRightAbsolute) { - int right = nsslRightAbsolute - mNotificationStackScrollLayoutController.getLeft(); - if (mIsFullWidth) { - return right; - } - return right - mDisplayLeftInset; - } - - private int getNotificationsClippingTopBounds(int qsTop) { - if (mSplitShadeEnabled && mExpandingFromHeadsUp) { - // in split shade nssl has extra top margin so clipping at top 0 is not enough, we need - // to set top clipping bound to negative value to allow HUN to go up to the top edge of - // the screen without clipping. - return -mAmbientState.getStackTopMargin(); - } else { - return qsTop - mNotificationStackScrollLayoutController.getTop(); - } - } - - private float getQSEdgePosition() { - // TODO: replace StackY with unified calculation - return Math.max(mQuickQsHeaderHeight * mAmbientState.getExpansionFraction(), - mAmbientState.getStackY() - // need to adjust for extra margin introduced by large screen shade header - + mAmbientState.getStackTopMargin() * mAmbientState.getExpansionFraction() - - mAmbientState.getScrollY()); - } - - private int calculateQsBottomPosition(float qsExpansionFraction) { - if (mTransitioningToFullShadeProgress > 0.0f) { - return mTransitionToFullShadeQSPosition; - } else if (mSplitShadeEnabled) { - // in split shade - outside lockscreen transition handled above - we simply jump between - // two qs expansion values - either shade is closed and qs expansion is 0 or shade is - // open and qs expansion is 1 - int qsBottomTarget = mQs.getDesiredHeight() + mLargeScreenShadeHeaderHeight; - return qsExpansionFraction > 0 ? qsBottomTarget : 0; - } else { - int qsBottomYFrom = (int) getHeaderTranslation() + mQs.getQsMinExpansionHeight(); - int expandedTopMargin = mUseLargeScreenShadeHeader ? mLargeScreenShadeHeaderHeight : 0; - int qsBottomYTo = mQs.getDesiredHeight() + expandedTopMargin; - return (int) MathUtils.lerp(qsBottomYFrom, qsBottomYTo, qsExpansionFraction); - } + : mQsController.computeExpansionFraction(); } - private String determineAccessibilityPaneTitle() { - if (mQs != null && mQs.isCustomizing()) { + String determineAccessibilityPaneTitle() { + if (mQsController != null && mQsController.isCustomizing()) { return mResources.getString(R.string.accessibility_desc_quick_settings_edit); - } else if (mQsExpansionHeight != 0.0f && mQsFullyExpanded) { + } else if (mQsController != null && mQsController.getExpansionHeight() != 0.0f + && mQsController.getFullyExpanded()) { // Upon initialisation when we are not layouted yet we don't want to announce that we // are fully expanded, hence the != 0.0f check. - return mResources.getString(R.string.accessibility_desc_quick_settings); + if (mSplitShadeEnabled) { + // In split shade, QS is expanded but it also shows notifications + return mResources.getString(R.string.accessibility_desc_qs_notification_shade); + } else { + return mResources.getString(R.string.accessibility_desc_quick_settings); + } } else if (mBarState == KEYGUARD) { return mResources.getString(R.string.accessibility_desc_lock_screen); } else { @@ -3247,55 +2219,9 @@ public final class NotificationPanelViewController implements Dumpable { } } - float calculateNotificationsTopPadding() { - if (mSplitShadeEnabled) { - return mKeyguardShowing ? getKeyguardNotificationStaticPadding() : 0; - } - if (mKeyguardShowing && (mQsExpandImmediate - || mIsExpanding && mQsExpandedWhenExpandingStarted)) { - - // Either QS pushes the notifications down when fully expanded, or QS is fully above the - // notifications (mostly on tablets). maxNotificationPadding denotes the normal top - // padding on Keyguard, maxQsPadding denotes the top padding from the quick settings - // panel. We need to take the maximum and linearly interpolate with the panel expansion - // for a nice motion. - int maxNotificationPadding = getKeyguardNotificationStaticPadding(); - int maxQsPadding = mQsMaxExpansionHeight; - int max = mBarState == KEYGUARD ? Math.max( - maxNotificationPadding, maxQsPadding) : maxQsPadding; - return (int) MathUtils.lerp((float) mQsMinExpansionHeight, (float) max, - getExpandedFraction()); - } else if (mQsSizeChangeAnimator != null) { - return Math.max( - (int) mQsSizeChangeAnimator.getAnimatedValue(), - getKeyguardNotificationStaticPadding()); - } else if (mKeyguardShowing) { - // We can only do the smoother transition on Keyguard when we also are not collapsing - // from a scrolled quick settings. - return MathUtils.lerp((float) getKeyguardNotificationStaticPadding(), - (float) (mQsMaxExpansionHeight), - computeQsExpansionFraction()); - } else { - return mQsFrameTranslateController.getNotificationsTopPadding(mQsExpansionHeight, - mNotificationStackScrollLayoutController); - } - } - - public boolean getKeyguardShowing() { - return mKeyguardShowing; - } - - public float getKeyguardNotificationTopPadding() { - return mKeyguardNotificationTopPadding; - } - - public float getKeyguardNotificationBottomPadding() { - return mKeyguardNotificationBottomPadding; - } - /** Returns the topPadding of notifications when on keyguard not respecting QS expansion. */ - private int getKeyguardNotificationStaticPadding() { - if (!mKeyguardShowing) { + public int getKeyguardNotificationStaticPadding() { + if (!getKeyguardShowing()) { return 0; } if (!mKeyguardBypassController.getBypassEnabled()) { @@ -3305,79 +2231,34 @@ public final class NotificationPanelViewController implements Dumpable { if (!mNotificationStackScrollLayoutController.isPulseExpanding()) { return collapsedPosition; } else { - int expandedPosition = mClockPositionResult.stackScrollerPadding; + int expandedPosition = + mClockPositionResult.stackScrollerPadding; return (int) MathUtils.lerp(collapsedPosition, expandedPosition, mNotificationStackScrollLayoutController.calculateAppearFractionBypass()); } } - private void requestScrollerTopPaddingUpdate(boolean animate) { - mNotificationStackScrollLayoutController.updateTopPadding( - calculateNotificationsTopPadding(), animate); - if (mKeyguardShowing && mKeyguardBypassController.getBypassEnabled()) { - // update the position of the header - updateQsExpansion(); - } + public boolean getKeyguardShowing() { + return mBarState == KEYGUARD; } - /** - * Set the amount of pixels we have currently dragged down if we're transitioning to the full - * shade. 0.0f means we're not transitioning yet. - */ - public void setTransitionToFullShadeAmount(float pxAmount, boolean animate, long delay) { - if (animate && mIsFullWidth) { - animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE, - delay); - mIsQsTranslationResetAnimator = mQsTranslationForFullShadeTransition > 0.0f; - } - float endPosition = 0; - if (pxAmount > 0.0f) { - if (mSplitShadeEnabled) { - float qsHeight = MathUtils.lerp(mQsMinExpansionHeight, mQsMaxExpansionHeight, - mLockscreenShadeTransitionController.getQSDragProgress()); - setQsExpansionHeight(qsHeight); - } - if (mNotificationStackScrollLayoutController.getVisibleNotificationCount() == 0 - && !mMediaDataManager.hasActiveMediaOrRecommendation()) { - // No notifications are visible, let's animate to the height of qs instead - if (mQs != null) { - // Let's interpolate to the header height instead of the top padding, - // because the toppadding is way too low because of the large clock. - // we still want to take into account the edgePosition though as that nicely - // overshoots in the stackscroller - endPosition = getQSEdgePosition() - - mNotificationStackScrollLayoutController.getTopPadding() - + mQs.getHeader().getHeight(); - } - } else { - // Interpolating to the new bottom edge position! - endPosition = getQSEdgePosition() - + mNotificationStackScrollLayoutController.getFullShadeTransitionInset(); - if (isOnKeyguard()) { - endPosition -= mLockscreenNotificationQSPadding; - } - } - } - - // Calculate the overshoot amount such that we're reaching the target after our desired - // distance, but only reach it fully once we drag a full shade length. - mTransitioningToFullShadeProgress = Interpolators.FAST_OUT_SLOW_IN.getInterpolation( - MathUtils.saturate(pxAmount / mDistanceForQSFullShadeTransition)); + public float getKeyguardNotificationTopPadding() { + return mKeyguardNotificationTopPadding; + } - int position = (int) MathUtils.lerp((float) 0, endPosition, - mTransitioningToFullShadeProgress); - if (mTransitioningToFullShadeProgress > 0.0f) { - // we want at least 1 pixel otherwise the panel won't be clipped - position = Math.max(1, position); - } - mTransitionToFullShadeQSPosition = position; - updateQsExpansion(); + public float getKeyguardNotificationBottomPadding() { + return mKeyguardNotificationBottomPadding; } - /** Called when pulse expansion has finished and this is going to the full shade. */ - public void onPulseExpansionFinished() { - animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE, 0); - mIsPulseExpansionResetAnimator = true; + void requestScrollerTopPaddingUpdate(boolean animate) { + mNotificationStackScrollLayoutController.updateTopPadding( + mQsController.calculateNotificationsTopPadding(mIsExpanding, + getKeyguardNotificationStaticPadding(), mExpandedFraction), animate); + if (getKeyguardShowing() + && mKeyguardBypassController.getBypassEnabled()) { + // update the position of the header + mQsController.updateExpansion(); + } } /** @@ -3404,154 +2285,14 @@ public final class NotificationPanelViewController implements Dumpable { mKeyguardStatusBarViewController.setAlpha(alpha); } - private void trackMovement(MotionEvent event) { - if (mQsVelocityTracker != null) mQsVelocityTracker.addMovement(event); - } - - private void initVelocityTracker() { - if (mQsVelocityTracker != null) { - mQsVelocityTracker.recycle(); - } - mQsVelocityTracker = VelocityTracker.obtain(); - } - - private float getCurrentQSVelocity() { - if (mQsVelocityTracker == null) { - return 0; - } - mQsVelocityTracker.computeCurrentVelocity(1000); - return mQsVelocityTracker.getYVelocity(); - } - - private void cancelQsAnimation() { - if (mQsExpansionAnimator != null) { - mQsExpansionAnimator.cancel(); - } - } - - /** @see #flingSettings(float, int, Runnable, boolean) */ - public void flingSettings(float vel, int type) { - flingSettings(vel, type, null /* onFinishRunnable */, false /* isClick */); - } - - /** - * Animates QS or QQS as if the user had swiped up or down. - * - * @param vel Finger velocity or 0 when not initiated by touch events. - * @param type Either {@link #FLING_EXPAND}, {@link #FLING_COLLAPSE} or {@link - * #FLING_HIDE}. - * @param onFinishRunnable Runnable to be executed at the end of animation. - * @param isClick If originated by click (different interpolator and duration.) - */ - private void flingSettings(float vel, int type, final Runnable onFinishRunnable, - boolean isClick) { - float target; - switch (type) { - case FLING_EXPAND: - target = mQsMaxExpansionHeight; - break; - case FLING_COLLAPSE: - target = mQsMinExpansionHeight; - break; - case FLING_HIDE: - default: - if (mQs != null) { - mQs.closeDetail(); - } - target = 0; - } - if (target == mQsExpansionHeight) { - if (onFinishRunnable != null) { - onFinishRunnable.run(); - } - traceQsJank(false /* startTracing */, type != FLING_EXPAND /* wasCancelled */); - return; - } - - // If we move in the opposite direction, reset velocity and use a different duration. - boolean oppositeDirection = false; - boolean expanding = type == FLING_EXPAND; - if (vel > 0 && !expanding || vel < 0 && expanding) { - vel = 0; - oppositeDirection = true; - } - ValueAnimator animator = ValueAnimator.ofFloat(mQsExpansionHeight, target); - if (isClick) { - animator.setInterpolator(Interpolators.TOUCH_RESPONSE); - animator.setDuration(368); - } else { - mFlingAnimationUtils.apply(animator, mQsExpansionHeight, target, vel); - } - if (oppositeDirection) { - animator.setDuration(350); - } - animator.addUpdateListener( - animation -> setQsExpansionHeight((Float) animation.getAnimatedValue())); - animator.addListener(new AnimatorListenerAdapter() { - private boolean mIsCanceled; - - @Override - public void onAnimationStart(Animator animation) { - notifyExpandingStarted(); - } - - @Override - public void onAnimationCancel(Animator animation) { - mIsCanceled = true; - } - - @Override - public void onAnimationEnd(Animator animation) { - mQSAnimatingHiddenFromCollapsed = false; - mAnimatingQS = false; - notifyExpandingFinished(); - mNotificationStackScrollLayoutController.resetCheckSnoozeLeavebehind(); - mQsExpansionAnimator = null; - if (onFinishRunnable != null) { - onFinishRunnable.run(); - } - traceQsJank(false /* startTracing */, mIsCanceled /* wasCancelled */); - } - }); - // Let's note that we're animating QS. Moving the animator here will cancel it immediately, - // so we need a separate flag. - mAnimatingQS = true; - animator.start(); - mQsExpansionAnimator = animator; - mQsAnimatorExpand = expanding; - mQSAnimatingHiddenFromCollapsed = computeQsExpansionFraction() == 0.0f && target == 0; - } - - /** - * @return Whether we should intercept a gesture to open Quick Settings. - */ - private boolean shouldQuickSettingsIntercept(float x, float y, float yDiff) { - if (!isQsExpansionEnabled() || mCollapsedOnDown - || (mKeyguardShowing && mKeyguardBypassController.getBypassEnabled()) - || mSplitShadeEnabled) { - return false; - } - View header = mKeyguardShowing || mQs == null ? mKeyguardStatusBar : mQs.getHeader(); - int frameTop = mKeyguardShowing || mQs == null ? 0 : mQsFrame.getTop(); - mQsInterceptRegion.set( - /* left= */ (int) mQsFrame.getX(), - /* top= */ header.getTop() + frameTop, - /* right= */ (int) mQsFrame.getX() + mQsFrame.getWidth(), - /* bottom= */ header.getBottom() + frameTop); - // Also allow QS to intercept if the touch is near the notch. - mStatusBarTouchableRegionManager.updateRegionForNotch(mQsInterceptRegion); - final boolean onHeader = mQsInterceptRegion.contains((int) x, (int) y); - - if (mQsExpanded) { - return onHeader || (yDiff < 0 && isInQsArea(x, y)); - } else { - return onHeader; - } + /** */ + public float getKeyguardOnlyContentAlpha() { + return mKeyguardOnlyContentAlpha; } @VisibleForTesting boolean canCollapsePanelOnTouch() { - if (!isInSettings() && mBarState == KEYGUARD) { + if (!mQsController.getExpanded() && mBarState == KEYGUARD) { return true; } @@ -3559,20 +2300,22 @@ public final class NotificationPanelViewController implements Dumpable { return true; } - return !mSplitShadeEnabled && (isInSettings() || mIsPanelCollapseOnQQS); + return !mSplitShadeEnabled && (mQsController.getExpanded() || mIsPanelCollapseOnQQS); } int getMaxPanelHeight() { int min = mStatusBarMinHeight; if (!(mBarState == KEYGUARD) && mNotificationStackScrollLayoutController.getNotGoneChildCount() == 0) { - int minHeight = mQsMinExpansionHeight; + int minHeight = mQsController.getMinExpansionHeight(); min = Math.max(min, minHeight); } int maxHeight; - if (mQsExpandImmediate || mQsExpanded || mIsExpanding && mQsExpandedWhenExpandingStarted + if (mQsController.isExpandImmediate() || mQsController.getExpanded() + || mIsExpanding && mQsController.getExpandedWhenExpandingStarted() || mPulsing || mSplitShadeEnabled) { - maxHeight = calculatePanelHeightQsExpanded(); + maxHeight = mQsController.calculatePanelHeightExpanded( + mClockPositionResult.stackScrollerPadding); } else { maxHeight = calculatePanelHeightShade(); } @@ -3580,17 +2323,15 @@ public final class NotificationPanelViewController implements Dumpable { if (maxHeight == 0) { Log.wtf(TAG, "maxPanelHeight is invalid. mOverExpansion: " + mOverExpansion + ", calculatePanelHeightQsExpanded: " - + calculatePanelHeightQsExpanded() + ", calculatePanelHeightShade: " - + calculatePanelHeightShade() + ", mStatusBarMinHeight = " - + mStatusBarMinHeight + ", mQsMinExpansionHeight = " + mQsMinExpansionHeight); + + mQsController.calculatePanelHeightExpanded( + mClockPositionResult.stackScrollerPadding) + + ", calculatePanelHeightShade: " + calculatePanelHeightShade() + + ", mStatusBarMinHeight = " + mStatusBarMinHeight + + ", mQsMinExpansionHeight = " + mQsController.getMinExpansionHeight()); } return maxHeight; } - public boolean isInSettings() { - return mQsExpanded; - } - public boolean isExpanding() { return mIsExpanding; } @@ -3603,7 +2344,8 @@ public final class NotificationPanelViewController implements Dumpable { mShadeLog.logExpansionChanged("onHeightUpdated: fully expanded.", mExpandedFraction, isExpanded(), mTracking, mExpansionDragDownAmountPx); } - if (!mQsExpanded || mQsExpandImmediate || mIsExpanding && mQsExpandedWhenExpandingStarted) { + if (!mQsController.getExpanded() || mQsController.isExpandImmediate() + || mIsExpanding && mQsController.getExpandedWhenExpandingStarted()) { // Updating the clock position will set the top padding which might // trigger a new panel height and re-position the clock. // This is a circular dependency and should be avoided, otherwise we'll have @@ -3614,14 +2356,8 @@ public final class NotificationPanelViewController implements Dumpable { positionClockAndNotifications(); } } - // Below is true when QS are expanded and we swipe up from the same bottom of panel to - // close the whole shade with one motion. Also this will be always true when closing - // split shade as there QS are always expanded so every collapsing motion is motion from - // expanded QS to closed panel - boolean collapsingShadeFromExpandedQs = mQsExpanded && !mQsTracking - && mQsExpansionAnimator == null && !mQsExpansionFromOverscroll; boolean goingBetweenClosedShadeAndExpandedQs = - mQsExpandImmediate || collapsingShadeFromExpandedQs; + mQsController.isGoingBetweenClosedShadeAndExpandedQs(); // in split shade we react when HUN is visible only if shade height is over HUN start // height - which means user is swiping down. Otherwise shade QS will either not show at all // with HUN movement or it will blink when touching HUN initially @@ -3631,7 +2367,7 @@ public final class NotificationPanelViewController implements Dumpable { float qsExpansionFraction; if (mSplitShadeEnabled) { qsExpansionFraction = 1; - } else if (mKeyguardShowing) { + } else if (getKeyguardShowing()) { // On Keyguard, interpolate the QS expansion linearly to the panel expansion qsExpansionFraction = expandedHeight / (getMaxPanelHeight()); } else { @@ -3640,13 +2376,15 @@ public final class NotificationPanelViewController implements Dumpable { float panelHeightQsCollapsed = mNotificationStackScrollLayoutController.getIntrinsicPadding() + mNotificationStackScrollLayoutController.getLayoutMinHeight(); - float panelHeightQsExpanded = calculatePanelHeightQsExpanded(); + float panelHeightQsExpanded = mQsController.calculatePanelHeightExpanded( + mClockPositionResult.stackScrollerPadding); qsExpansionFraction = (expandedHeight - panelHeightQsCollapsed) / (panelHeightQsExpanded - panelHeightQsCollapsed); } - float targetHeight = mQsMinExpansionHeight - + qsExpansionFraction * (mQsMaxExpansionHeight - mQsMinExpansionHeight); - setQsExpansionHeight(targetHeight); + float targetHeight = mQsController.getMinExpansionHeight() + qsExpansionFraction + * (mQsController.getMaxExpansionHeight() + - mQsController.getMinExpansionHeight()); + mQsController.setExpansionHeight(targetHeight); } updateExpandedHeight(expandedHeight); updateHeader(); @@ -3663,8 +2401,8 @@ public final class NotificationPanelViewController implements Dumpable { if (mPanelExpanded != isExpanded) { mPanelExpanded = isExpanded; mShadeExpansionStateManager.onShadeExpansionFullyChanged(isExpanded); - if (!isExpanded && mQs != null && mQs.isCustomizing()) { - mQs.closeCustomizer(); + if (!isExpanded) { + mQsController.closeQsCustomizer(); } } } @@ -3686,40 +2424,6 @@ public final class NotificationPanelViewController implements Dumpable { } } - int calculatePanelHeightQsExpanded() { - float - notificationHeight = - mNotificationStackScrollLayoutController.getHeight() - - mNotificationStackScrollLayoutController.getEmptyBottomMargin() - - mNotificationStackScrollLayoutController.getTopPadding(); - - // When only empty shade view is visible in QS collapsed state, simulate that we would have - // it in expanded QS state as well so we don't run into troubles when fading the view in/out - // and expanding/collapsing the whole panel from/to quick settings. - if (mNotificationStackScrollLayoutController.getNotGoneChildCount() == 0 - && mNotificationStackScrollLayoutController.isShowingEmptyShadeView()) { - notificationHeight = mNotificationStackScrollLayoutController.getEmptyShadeViewHeight(); - } - int maxQsHeight = mQsMaxExpansionHeight; - - // If an animation is changing the size of the QS panel, take the animated value. - if (mQsSizeChangeAnimator != null) { - maxQsHeight = (int) mQsSizeChangeAnimator.getAnimatedValue(); - } - float totalHeight = Math.max(maxQsHeight, - mBarState == KEYGUARD ? mClockPositionResult.stackScrollerPadding - : 0) + notificationHeight - + mNotificationStackScrollLayoutController.getTopPaddingOverflow(); - if (totalHeight > mNotificationStackScrollLayoutController.getHeight()) { - float - fullyCollapsedHeight = - maxQsHeight + mNotificationStackScrollLayoutController.getLayoutMinHeight(); - totalHeight = Math.max(fullyCollapsedHeight, - mNotificationStackScrollLayoutController.getHeight()); - } - return (int) totalHeight; - } - private void updateNotificationTranslucency() { if (mIsOcclusionTransitionRunning) { return; @@ -3738,10 +2442,10 @@ public final class NotificationPanelViewController implements Dumpable { private float getFadeoutAlpha() { float alpha; - if (mQsMinExpansionHeight == 0) { + if (mQsController.getMinExpansionHeight() == 0) { return 1.0f; } - alpha = getExpandedHeight() / mQsMinExpansionHeight; + alpha = getExpandedHeight() / mQsController.getMinExpansionHeight(); alpha = Math.max(0, Math.min(alpha, 1)); alpha = (float) Math.pow(alpha, 0.75); return alpha; @@ -3752,30 +2456,7 @@ public final class NotificationPanelViewController implements Dumpable { if (mBarState == KEYGUARD) { mKeyguardStatusBarViewController.updateViewState(); } - updateQsExpansion(); - } - - private float getHeaderTranslation() { - if (mSplitShadeEnabled) { - // in split shade QS don't translate, just (un)squish and overshoot - return 0; - } - if (mBarState == KEYGUARD && !mKeyguardBypassController.getBypassEnabled()) { - return -mQs.getQsMinExpansionHeight(); - } - float appearAmount = mNotificationStackScrollLayoutController - .calculateAppearFraction(mExpandedHeight); - float startHeight = -mQsExpansionHeight; - if (mBarState == StatusBarState.SHADE) { - // Small parallax as we pull down and clip QS - startHeight = -mQsExpansionHeight * QS_PARALLAX_AMOUNT; - } - if (mKeyguardBypassController.getBypassEnabled() && isOnKeyguard()) { - appearAmount = mNotificationStackScrollLayoutController.calculateAppearFractionBypass(); - startHeight = -mQs.getQsMinExpansionHeight(); - } - float translation = MathUtils.lerp(startHeight, 0, Math.min(1.0f, appearAmount)); - return Math.min(0, translation); + mQsController.updateExpansion(); } private void updateKeyguardBottomAreaAlpha() { @@ -3792,28 +2473,12 @@ public final class NotificationPanelViewController implements Dumpable { isUnlockHintRunning() ? 0 : KeyguardBouncerConstants.ALPHA_EXPANSION_THRESHOLD, 1f, 0f, 1f, getExpandedFraction()); - float alpha = Math.min(expansionAlpha, 1 - computeQsExpansionFraction()); + float alpha = Math.min(expansionAlpha, 1 - mQsController.computeExpansionFraction()); alpha *= mBottomAreaShadeAlpha; mKeyguardBottomAreaInteractor.setAlpha(alpha); mLockIconViewController.setAlpha(alpha); } - private void onExpandingStarted() { - mNotificationStackScrollLayoutController.onExpansionStarted(); - mIsExpanding = true; - mQsExpandedWhenExpandingStarted = mQsFullyExpanded; - mMediaHierarchyManager.setCollapsingShadeFromQS(mQsExpandedWhenExpandingStarted && - /* We also start expanding when flinging closed Qs. Let's exclude that */ - !mAnimatingQS); - if (mQsExpanded) { - onQsExpansionStarted(); - } - // Since there are QS tiles in the header now, we need to make sure we start listening - // immediately so they can be up to date. - if (mQs == null) return; - mQs.setHeaderListening(true); - } - private void onExpandingFinished() { if (!mUnocclusionTransitionFlagEnabled) { mScrimController.onExpandingFinished(); @@ -3823,7 +2488,7 @@ public final class NotificationPanelViewController implements Dumpable { mConversationNotificationManager.onNotificationPanelExpandStateChanged(isFullyCollapsed()); mIsExpanding = false; mMediaHierarchyManager.setCollapsingShadeFromQS(false); - mMediaHierarchyManager.setQsExpanded(mQsExpanded); + mMediaHierarchyManager.setQsExpanded(mQsController.getExpanded()); if (isFullyCollapsed()) { DejankUtils.postAfterTraversal(() -> setListening(false)); @@ -3838,10 +2503,10 @@ public final class NotificationPanelViewController implements Dumpable { if (mBarState != SHADE) { // updating qsExpandImmediate is done in onPanelStateChanged for unlocked shade but // on keyguard panel state is always OPEN so we need to have that extra update - setQsExpandImmediate(false); + mQsController.setExpandImmediate(false); } setShowShelfOnly(false); - mTwoFingerQsExpandPossible = false; + mQsController.setTwoFingerExpandPossible(false); updateTrackingHeadsUp(null); mExpandingFromHeadsUp = false; setPanelScrimMinFraction(0.0f); @@ -3864,8 +2529,7 @@ public final class NotificationPanelViewController implements Dumpable { private void setListening(boolean listening) { mKeyguardStatusBarViewController.setBatteryListening(listening); - if (mQs == null) return; - mQs.setListening(listening); + mQsController.setListening(listening); } public void expand(boolean animate) { @@ -3899,7 +2563,7 @@ public final class NotificationPanelViewController implements Dumpable { this); if (mAnimateAfterExpanding) { notifyExpandingStarted(); - beginJankMonitoring(); + mQsController.beginJankMonitoring(isFullyCollapsed()); fling(0 /* expand */); } else { mShadeHeightLogger.logFunctionCall("expand"); @@ -3928,16 +2592,10 @@ public final class NotificationPanelViewController implements Dumpable { mOverExpansion = overExpansion; // Translating the quick settings by half the overexpansion to center it in the background // frame - updateQsFrameTranslation(); + mQsController.updateQsFrameTranslation(); mNotificationStackScrollLayoutController.setOverExpansion(overExpansion); } - private void updateQsFrameTranslation() { - mQsFrameTranslateController.translateQsFrame(mQsFrame, mQs, - mNavigationBarBottomHeight + mAmbientState.getStackTopMargin()); - - } - private void falsingAdditionalTapRequired() { if (mStatusBarStateController.getState() == StatusBarState.SHADE_LOCKED) { mTapAgainViewController.show(); @@ -3964,8 +2622,8 @@ public final class NotificationPanelViewController implements Dumpable { notifyExpandingStarted(); updatePanelExpansionAndVisibility(); mScrimController.onTrackingStarted(); - if (mQsFullyExpanded) { - setQsExpandImmediate(true); + if (mQsController.getFullyExpanded()) { + mQsController.setExpandImmediate(true); setShowShelfOnly(true); } mNotificationStackScrollLayoutController.onPanelTrackingStarted(); @@ -4042,8 +2700,8 @@ public final class NotificationPanelViewController implements Dumpable { // the required distance to be a specific and constant value, to make sure the expansion // motion has the expected speed. We also only want this on non-lockscreen for now. if (mSplitShadeEnabled && mBarState == SHADE) { - boolean transitionFromHeadsUp = - mHeadsUpManager.isTrackingHeadsUp() || mExpandingFromHeadsUp; + boolean transitionFromHeadsUp = (mHeadsUpManager != null + && mHeadsUpManager.isTrackingHeadsUp()) || mExpandingFromHeadsUp; // heads-up starting height is too close to mSplitShadeFullTransitionDistance and // when dragging HUN transition is already 90% complete. It makes shade become // immediately visible when starting to drag. We want to set distance so that @@ -4061,25 +2719,6 @@ public final class NotificationPanelViewController implements Dumpable { } } - @VisibleForTesting - boolean isTrackingBlocked() { - return mConflictingQsExpansionGesture && mQsExpanded || mBlockingExpansionForCurrentTouch; - } - - public boolean isQsExpanded() { - return mQsExpanded; - } - - /** Returns whether the QS customizer is currently active. */ - public boolean isQsCustomizing() { - return mQs.isCustomizing(); - } - - /** Close the QS customizer if it is open. */ - public void closeQsCustomizer() { - mQs.closeCustomizer(); - } - public void setIsLaunchAnimationRunning(boolean running) { boolean wasRunning = mIsLaunchAnimationRunning; mIsLaunchAnimationRunning = running; @@ -4104,14 +2743,6 @@ public final class NotificationPanelViewController implements Dumpable { } } - public void setQsScrimEnabled(boolean qsScrimEnabled) { - boolean changed = mQsScrimEnabled != qsScrimEnabled; - mQsScrimEnabled = qsScrimEnabled; - if (changed) { - updateQsState(); - } - } - public void onScreenTurningOn() { mKeyguardStatusViewController.dozeTimeTick(); } @@ -4140,7 +2771,7 @@ public final class NotificationPanelViewController implements Dumpable { } break; case StatusBarState.SHADE_LOCKED: - if (!mQsExpanded) { + if (!mQsController.getExpanded()) { mStatusBarStateController.setState(KEYGUARD); } break; @@ -4289,66 +2920,6 @@ public final class NotificationPanelViewController implements Dumpable { return !mShowIconsWhenExpanded; } - private void onQsPanelScrollChanged(int scrollY) { - mLargeScreenShadeHeaderController.setQsScrollY(scrollY); - if (scrollY > 0 && !mQsFullyExpanded) { - debugLog("Scrolling while not expanded. Forcing expand"); - // If we are scrolling QS, we should be fully expanded. - expandWithQs(); - } - } - - private final class QsFragmentListener implements FragmentListener { - @Override - public void onFragmentViewCreated(String tag, Fragment fragment) { - mQs = (QS) fragment; - mQs.setPanelView(mHeightListener); - mQs.setCollapseExpandAction(mCollapseExpandAction); - mQs.setHeaderClickable(isQsExpansionEnabled()); - mQs.setOverscrolling(mStackScrollerOverscrolling); - mQs.setInSplitShade(mSplitShadeEnabled); - mQs.setIsNotificationPanelFullWidth(mIsFullWidth); - - // recompute internal state when qspanel height changes - mQs.getView().addOnLayoutChangeListener( - (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> { - final int height = bottom - top; - final int oldHeight = oldBottom - oldTop; - if (height != oldHeight) { - onQsHeightChanged(); - } - }); - mQs.setCollapsedMediaVisibilityChangedListener((visible) -> { - if (mQs.getHeader().isShown()) { - animateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_STANDARD, - 0 /* delay */); - mNotificationStackScrollLayoutController.animateNextTopPaddingChange(); - } - }); - mLockscreenShadeTransitionController.setQS(mQs); - mShadeTransitionController.setQs(mQs); - mNotificationStackScrollLayoutController.setQsHeader((ViewGroup) mQs.getHeader()); - mQs.setScrollListener(mQsScrollListener); - updateQsExpansion(); - } - - @Override - public void onFragmentViewDestroyed(String tag, Fragment fragment) { - // Manual handling of fragment lifecycle is only required because this bridges - // non-fragment and fragment code. Once we are using a fragment for the notification - // panel, mQs will not need to be null cause it will be tied to the same lifecycle. - if (fragment == mQs) { - mQs = null; - } - } - } - - private void animateNextNotificationBounds(long duration, long delay) { - mAnimateNextNotificationBounds = true; - mNotificationBoundsAnimationDuration = duration; - mNotificationBoundsAnimationDelay = delay; - } - public void setTouchAndAnimationDisabled(boolean disabled) { mTouchDisabled = disabled; if (mTouchDisabled) { @@ -4371,9 +2942,11 @@ public final class NotificationPanelViewController implements Dumpable { if (dozing == mDozing) return; mView.setDozing(dozing); mDozing = dozing; + // TODO (b/) make listeners for this mNotificationStackScrollLayoutController.setDozing(mDozing, animate); mKeyguardBottomAreaInteractor.setAnimateDozingTransitions(animate); mKeyguardStatusBarViewController.setDozing(mDozing); + mQsController.setDozing(mDozing); if (dozing) { mBottomAreaShadeAlphaAnimator.cancel(); @@ -4564,33 +3137,13 @@ public final class NotificationPanelViewController implements Dumpable { ipw.print("mMaxAllowedKeyguardNotifications="); ipw.println(mMaxAllowedKeyguardNotifications); ipw.print("mAnimateNextPositionUpdate="); ipw.println(mAnimateNextPositionUpdate); - ipw.print("mQuickQsHeaderHeight="); ipw.println(mQuickQsHeaderHeight); - ipw.print("mQsTrackingPointer="); ipw.println(mQsTrackingPointer); - ipw.print("mQsTracking="); ipw.println(mQsTracking); - ipw.print("mConflictingQsExpansionGesture="); ipw.println(mConflictingQsExpansionGesture); ipw.print("mPanelExpanded="); ipw.println(mPanelExpanded); - ipw.print("mQsExpanded="); ipw.println(mQsExpanded); - ipw.print("mQsExpandedWhenExpandingStarted="); ipw.println(mQsExpandedWhenExpandingStarted); - ipw.print("mQsFullyExpanded="); ipw.println(mQsFullyExpanded); - ipw.print("mKeyguardShowing="); ipw.println(mKeyguardShowing); ipw.print("mKeyguardQsUserSwitchEnabled="); ipw.println(mKeyguardQsUserSwitchEnabled); ipw.print("mKeyguardUserSwitcherEnabled="); ipw.println(mKeyguardUserSwitcherEnabled); ipw.print("mDozing="); ipw.println(mDozing); ipw.print("mDozingOnDown="); ipw.println(mDozingOnDown); ipw.print("mBouncerShowing="); ipw.println(mBouncerShowing); ipw.print("mBarState="); ipw.println(mBarState); - ipw.print("mInitialHeightOnTouch="); ipw.println(mInitialHeightOnTouch); - ipw.print("mInitialTouchX="); ipw.println(mInitialTouchX); - ipw.print("mInitialTouchY="); ipw.println(mInitialTouchY); - ipw.print("mQsExpansionHeight="); ipw.println(mQsExpansionHeight); - ipw.print("mQsMinExpansionHeight="); ipw.println(mQsMinExpansionHeight); - ipw.print("mQsMaxExpansionHeight="); ipw.println(mQsMaxExpansionHeight); - ipw.print("mQsPeekHeight="); ipw.println(mQsPeekHeight); - ipw.print("mStackScrollerOverscrolling="); ipw.println(mStackScrollerOverscrolling); - ipw.print("mQsExpansionFromOverscroll="); ipw.println(mQsExpansionFromOverscroll); - ipw.print("mLastOverscroll="); ipw.println(mLastOverscroll); - ipw.print("mQsExpansionEnabledPolicy="); ipw.println(mQsExpansionEnabledPolicy); - ipw.print("mQsExpansionEnabledAmbient="); ipw.println(mQsExpansionEnabledAmbient); ipw.print("mStatusBarMinHeight="); ipw.println(mStatusBarMinHeight); ipw.print("mStatusBarHeaderHeightKeyguard="); ipw.println(mStatusBarHeaderHeightKeyguard); ipw.print("mOverStretchAmount="); ipw.println(mOverStretchAmount); @@ -4599,17 +3152,8 @@ public final class NotificationPanelViewController implements Dumpable { ipw.print("mDisplayTopInset="); ipw.println(mDisplayTopInset); ipw.print("mDisplayRightInset="); ipw.println(mDisplayRightInset); ipw.print("mDisplayLeftInset="); ipw.println(mDisplayLeftInset); - ipw.print("mLargeScreenShadeHeaderHeight="); ipw.println(mLargeScreenShadeHeaderHeight); - ipw.print("mSplitShadeNotificationsScrimMarginBottom="); - ipw.println(mSplitShadeNotificationsScrimMarginBottom); ipw.print("mIsExpanding="); ipw.println(mIsExpanding); - ipw.print("mQsExpandImmediate="); ipw.println(mQsExpandImmediate); - ipw.print("mTwoFingerQsExpandPossible="); ipw.println(mTwoFingerQsExpandPossible); ipw.print("mHeaderDebugInfo="); ipw.println(mHeaderDebugInfo); - ipw.print("mQsAnimatorExpand="); ipw.println(mQsAnimatorExpand); - ipw.print("mQsScrimEnabled="); ipw.println(mQsScrimEnabled); - ipw.print("mQsTouchAboveFalsingThreshold="); ipw.println(mQsTouchAboveFalsingThreshold); - ipw.print("mQsFalsingThreshold="); ipw.println(mQsFalsingThreshold); ipw.print("mHeadsUpStartHeight="); ipw.println(mHeadsUpStartHeight); ipw.print("mListenForHeadsUp="); ipw.println(mListenForHeadsUp); ipw.print("mNavigationBarBottomHeight="); ipw.println(mNavigationBarBottomHeight); @@ -4625,7 +3169,6 @@ public final class NotificationPanelViewController implements Dumpable { ipw.println(mBlockingExpansionForCurrentTouch); ipw.print("mExpectingSynthesizedDown="); ipw.println(mExpectingSynthesizedDown); ipw.print("mLastEventSynthesizedDown="); ipw.println(mLastEventSynthesizedDown); - ipw.print("mLastFlingWasExpanding="); ipw.println(mLastFlingWasExpanding); ipw.print("mInterpolatedDarkAmount="); ipw.println(mInterpolatedDarkAmount); ipw.print("mLinearDarkAmount="); ipw.println(mLinearDarkAmount); ipw.print("mPulsing="); ipw.println(mPulsing); @@ -4636,40 +3179,14 @@ public final class NotificationPanelViewController implements Dumpable { ipw.print("mHeadsUpInset="); ipw.println(mHeadsUpInset); ipw.print("mHeadsUpPinnedMode="); ipw.println(mHeadsUpPinnedMode); ipw.print("mAllowExpandForSmallExpansion="); ipw.println(mAllowExpandForSmallExpansion); - ipw.print("mLockscreenNotificationQSPadding="); - ipw.println(mLockscreenNotificationQSPadding); - ipw.print("mTransitioningToFullShadeProgress="); - ipw.println(mTransitioningToFullShadeProgress); - ipw.print("mTransitionToFullShadeQSPosition="); - ipw.println(mTransitionToFullShadeQSPosition); - ipw.print("mDistanceForQSFullShadeTransition="); - ipw.println(mDistanceForQSFullShadeTransition); - ipw.print("mQsTranslationForFullShadeTransition="); - ipw.println(mQsTranslationForFullShadeTransition); ipw.print("mMaxOverscrollAmountForPulse="); ipw.println(mMaxOverscrollAmountForPulse); - ipw.print("mAnimateNextNotificationBounds="); ipw.println(mAnimateNextNotificationBounds); - ipw.print("mNotificationBoundsAnimationDelay="); - ipw.println(mNotificationBoundsAnimationDelay); - ipw.print("mNotificationBoundsAnimationDuration="); - ipw.println(mNotificationBoundsAnimationDuration); ipw.print("mIsPanelCollapseOnQQS="); ipw.println(mIsPanelCollapseOnQQS); - ipw.print("mAnimatingQS="); ipw.println(mAnimatingQS); - ipw.print("mIsQsTranslationResetAnimator="); ipw.println(mIsQsTranslationResetAnimator); - ipw.print("mIsPulseExpansionResetAnimator="); ipw.println(mIsPulseExpansionResetAnimator); ipw.print("mKeyguardOnlyContentAlpha="); ipw.println(mKeyguardOnlyContentAlpha); ipw.print("mKeyguardOnlyTransitionTranslationY="); ipw.println(mKeyguardOnlyTransitionTranslationY); ipw.print("mUdfpsMaxYBurnInOffset="); ipw.println(mUdfpsMaxYBurnInOffset); ipw.print("mIsGestureNavigation="); ipw.println(mIsGestureNavigation); ipw.print("mOldLayoutDirection="); ipw.println(mOldLayoutDirection); - ipw.print("mScrimCornerRadius="); ipw.println(mScrimCornerRadius); - ipw.print("mScreenCornerRadius="); ipw.println(mScreenCornerRadius); - ipw.print("mQSAnimatingHiddenFromCollapsed="); ipw.println(mQSAnimatingHiddenFromCollapsed); - ipw.print("mUseLargeScreenShadeHeader="); ipw.println(mUseLargeScreenShadeHeader); - ipw.print("mEnableQsClipping="); ipw.println(mEnableQsClipping); - ipw.print("mQsClipTop="); ipw.println(mQsClipTop); - ipw.print("mQsClipBottom="); ipw.println(mQsClipBottom); - ipw.print("mQsVisible="); ipw.println(mQsVisible); ipw.print("mMinFraction="); ipw.println(mMinFraction); ipw.print("mStatusViewCentered="); ipw.println(mStatusViewCentered); ipw.print("mSplitShadeFullTransitionDistance="); @@ -4854,12 +3371,12 @@ public final class NotificationPanelViewController implements Dumpable { public void updateSystemUiStateFlags() { if (SysUiState.DEBUG) { Log.d(TAG, "Updating panel sysui state flags: fullyExpanded=" - + isFullyExpanded() + " inQs=" + isInSettings()); + + isFullyExpanded() + " inQs=" + mQsController.getExpanded()); } mSysUiState.setFlag(SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED, - isFullyExpanded() && !isInSettings()) - .setFlag(SYSUI_STATE_QUICK_SETTINGS_EXPANDED, isFullyExpanded() && isInSettings()) - .commitUpdate(mDisplayId); + isFullyExpanded() && !mQsController.getExpanded()) + .setFlag(SYSUI_STATE_QUICK_SETTINGS_EXPANDED, + isFullyExpanded() && mQsController.getExpanded()).commitUpdate(mDisplayId); } private void debugLog(String fmt, Object... args) { @@ -4872,11 +3389,11 @@ public final class NotificationPanelViewController implements Dumpable { void notifyExpandingStarted() { if (!mExpanding) { mExpanding = true; - onExpandingStarted(); + mIsExpanding = true; + mQsController.onExpandingStarted(mQsController.getFullyExpanded()); } } - @VisibleForTesting void notifyExpandingFinished() { endClosing(); if (mExpanding) { @@ -4885,7 +3402,7 @@ public final class NotificationPanelViewController implements Dumpable { } } - private float getTouchSlop(MotionEvent event) { + float getTouchSlop(MotionEvent event) { // Adjust the touch slop if another gesture may be being performed. return event.getClassification() == MotionEvent.CLASSIFICATION_AMBIGUOUS_GESTURE ? mTouchSlop * mSlopMultiplier @@ -4959,7 +3476,7 @@ public final class NotificationPanelViewController implements Dumpable { public void startExpandMotion(float newX, float newY, boolean startTracking, float expandedHeight) { if (!mHandlingPointerUp && !mStatusBarStateController.isDozing()) { - beginJankMonitoring(); + mQsController.beginJankMonitoring(isFullyCollapsed()); } mInitialOffsetOnTouch = expandedHeight; if (!mTracking || isFullyCollapsed()) { @@ -5121,7 +3638,8 @@ public final class NotificationPanelViewController implements Dumpable { setExpandedHeightInternal(height); } - private void updateExpandedHeightToMaxHeight() { + /** Try to set expanded height to max. */ + void updateExpandedHeightToMaxHeight() { float currentMaxPanelHeight = getMaxPanelHeight(); if (isFullyCollapsed()) { @@ -5132,7 +3650,8 @@ public final class NotificationPanelViewController implements Dumpable { return; } - if (mTracking && !isTrackingBlocked()) { + if (mTracking && !(mBlockingExpansionForCurrentTouch + || mQsController.isTrackingBlocked())) { return; } @@ -5174,6 +3693,7 @@ public final class NotificationPanelViewController implements Dumpable { mHeightAnimator.end(); } } + mQsController.setShadeExpandedHeight(mExpandedHeight); mExpansionDragDownAmountPx = h; mExpandedFraction = Math.min(1f, maxPanelHeight == 0 ? 0 : mExpandedHeight / maxPanelHeight); @@ -5213,7 +3733,7 @@ public final class NotificationPanelViewController implements Dumpable { return mExpandedHeight; } - private float getExpandedFraction() { + float getExpandedFraction() { return mExpandedFraction; } @@ -5244,7 +3764,7 @@ public final class NotificationPanelViewController implements Dumpable { return true; } else { // case of two finger swipe from the top of keyguard - return computeQsExpansionFraction() == 1; + return mQsController.computeExpansionFraction() == 1; } } @@ -5342,7 +3862,7 @@ public final class NotificationPanelViewController implements Dumpable { } /** Returns whether a shade or QS expansion animation is running */ - private boolean isShadeOrQsHeightAnimationRunning() { + public boolean isShadeOrQsHeightAnimationRunning() { return mHeightAnimator != null && !mHintAnimationRunning && !mIsSpringBackAnimation; } @@ -5477,36 +3997,119 @@ public final class NotificationPanelViewController implements Dumpable { return mView.isEnabled(); } - private void beginJankMonitoring() { - if (mInteractionJankMonitor == null) { - return; + int getDisplayRightInset() { + return mDisplayRightInset; + } + + int getDisplayLeftInset() { + return mDisplayLeftInset; + } + + float getOverStretchAmount() { + return mOverStretchAmount; + } + + float getMinFraction() { + return mMinFraction; + } + + boolean getCollapsedOnDown() { + return mCollapsedOnDown; + } + + int getNavigationBarBottomHeight() { + return mNavigationBarBottomHeight; + } + + boolean isExpandingFromHeadsUp() { + return mExpandingFromHeadsUp; + } + + /** TODO: remove need for this delegate (b/254870148) */ + public void closeQs() { + mQsController.closeQs(); + } + + /** TODO: remove need for this delegate (b/254870148) */ + public void setQsScrimEnabled(boolean qsScrimEnabled) { + mQsController.setScrimEnabled(qsScrimEnabled); + } + + private ShadeExpansionStateManager getShadeExpansionStateManager() { + return mShadeExpansionStateManager; + } + + private void onQsExpansionChanged(boolean expanded) { + updateExpandedHeightToMaxHeight(); + setStatusAccessibilityImportance(expanded + ? View.IMPORTANT_FOR_ACCESSIBILITY_NO_HIDE_DESCENDANTS + : View.IMPORTANT_FOR_ACCESSIBILITY_AUTO); + updateSystemUiStateFlags(); + NavigationBarView navigationBarView = + mNavigationBarController.getNavigationBarView(mDisplayId); + if (navigationBarView != null) { + navigationBarView.onStatusBarPanelStateChanged(); } - InteractionJankMonitor.Configuration.Builder builder = - InteractionJankMonitor.Configuration.Builder.withView( - InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, - mView) - .setTag(isFullyCollapsed() ? "Expand" : "Collapse"); - mInteractionJankMonitor.begin(builder); } - private void endJankMonitoring() { - if (mInteractionJankMonitor == null) { - return; + @VisibleForTesting + void onQsSetExpansionHeightCalled(boolean qsFullyExpanded) { + requestScrollerTopPaddingUpdate(false); + mKeyguardStatusBarViewController.updateViewState(); + int barState = getBarState(); + if (barState == SHADE_LOCKED || barState == KEYGUARD) { + updateKeyguardBottomAreaAlpha(); + positionClockAndNotifications(); + } + + if (mAccessibilityManager.isEnabled()) { + mView.setAccessibilityPaneTitle(determineAccessibilityPaneTitle()); + } + + if (!mFalsingManager.isUnlockingDisabled() && qsFullyExpanded + && mFalsingCollector.shouldEnforceBouncer()) { + mCentralSurfaces.executeRunnableDismissingKeyguard(null, null, + false, true, false); + } + if (DEBUG_DRAWABLE) { + mView.invalidate(); } - InteractionJankMonitor.getInstance().end( - InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); } - private void cancelJankMonitoring() { - if (mInteractionJankMonitor == null) { - return; + private void onQsStateUpdated(boolean qsExpanded, boolean isStackScrollerOverscrolling) { + if (mKeyguardUserSwitcherController != null && qsExpanded + && !isStackScrollerOverscrolling) { + mKeyguardUserSwitcherController.closeSwitcherIfOpenAndNotSimple(true); } - InteractionJankMonitor.getInstance().cancel( - InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); } - private ShadeExpansionStateManager getShadeExpansionStateManager() { - return mShadeExpansionStateManager; + private void onQsClippingImmediatelyApplied(boolean clipStatusView, + Rect lastQsClipBounds, int top, boolean qsFragmentCreated, boolean qsVisible) { + if (qsFragmentCreated) { + mKeyguardInteractor.setQuickSettingsVisible(qsVisible); + } + + // The padding on this area is large enough that + // we can use a cheaper clipping strategy + mKeyguardStatusViewController.setClipBounds( + clipStatusView ? lastQsClipBounds : null); + if (mSplitShadeEnabled) { + mKeyguardStatusBarViewController.setNoTopClipping(); + } else { + mKeyguardStatusBarViewController.updateTopClipping(top); + } + } + + private void onFlingQsWithoutClick(ValueAnimator animator, float qsExpansionHeight, + float target, float vel) { + mFlingAnimationUtils.apply(animator, qsExpansionHeight, target, vel); + } + + private void onExpansionHeightSetToMax(boolean requestPaddingUpdate) { + if (requestPaddingUpdate) { + requestScrollerTopPaddingUpdate(false /* animate */); + } + updateExpandedHeightToMaxHeight(); } private final class NsslHeightChangedListener implements @@ -5514,7 +4117,7 @@ public final class NotificationPanelViewController implements Dumpable { @Override public void onHeightChanged(ExpandableView view, boolean needsAnimation) { // Block update if we are in QS and just the top padding changed (i.e. view == null). - if (view == null && mQsExpanded) { + if (view == null && mQsController.getExpanded()) { return; } if (needsAnimation && mInterpolatedDarkAmount == 0) { @@ -5530,7 +4133,7 @@ public final class NotificationPanelViewController implements Dumpable { == firstRow))) { requestScrollerTopPaddingUpdate(false /* animate */); } - if (mKeyguardShowing) { + if (getKeyguardShowing()) { updateMaxDisplayedNotifications(true); } updateExpandedHeightToMaxHeight(); @@ -5540,62 +4143,6 @@ public final class NotificationPanelViewController implements Dumpable { public void onReset(ExpandableView view) {} } - private void collapseOrExpand() { - onQsExpansionStarted(); - if (mQsExpanded) { - flingSettings(0 /* vel */, FLING_COLLAPSE, null /* onFinishRunnable */, - true /* isClick */); - } else if (isQsExpansionEnabled()) { - mLockscreenGestureLogger.write(MetricsEvent.ACTION_SHADE_QS_TAP, 0, 0); - flingSettings(0 /* vel */, FLING_EXPAND, null /* onFinishRunnable */, - true /* isClick */); - } - } - - private final class NsslOverscrollTopChangedListener implements - NotificationStackScrollLayout.OnOverscrollTopChangedListener { - @Override - public void onOverscrollTopChanged(float amount, boolean isRubberbanded) { - // When in split shade, overscroll shouldn't carry through to QS - if (mSplitShadeEnabled) { - return; - } - cancelQsAnimation(); - if (!isQsExpansionEnabled()) { - amount = 0f; - } - float rounded = amount >= 1f ? amount : 0f; - setOverScrolling(rounded != 0f && isRubberbanded); - mQsExpansionFromOverscroll = rounded != 0f; - mLastOverscroll = rounded; - updateQsState(); - setQsExpansionHeight(mQsMinExpansionHeight + rounded); - } - - @Override - public void flingTopOverscroll(float velocity, boolean open) { - // in split shade touches affect QS only when touch happens within QS - if (isSplitShadeAndTouchXOutsideQs(mInitialTouchX)) { - return; - } - mLastOverscroll = 0f; - mQsExpansionFromOverscroll = false; - if (open) { - // During overscrolling, qsExpansion doesn't actually change that the qs is - // becoming expanded. Any layout could therefore reset the position again. Let's - // make sure we can expand - setOverScrolling(false); - } - setQsExpansionHeight(mQsExpansionHeight); - boolean canExpand = isQsExpansionEnabled(); - flingSettings(!canExpand && open ? 0f : velocity, - open && canExpand ? FLING_EXPAND : FLING_COLLAPSE, () -> { - setOverScrolling(false); - updateQsState(); - }, false /* isClick */); - } - } - private void onDynamicPrivacyChanged() { // Do not request animation when pulsing or waking up, otherwise the clock will be out // of sync with the notification panel. @@ -5645,19 +4192,6 @@ public final class NotificationPanelViewController implements Dumpable { } } - private void onQsHeightChanged() { - mQsMaxExpansionHeight = mQs != null ? mQs.getDesiredHeight() : 0; - if (mQsExpanded && mQsFullyExpanded) { - mQsExpansionHeight = mQsMaxExpansionHeight; - requestScrollerTopPaddingUpdate(false /* animate */); - updateExpandedHeightToMaxHeight(); - } - if (mAccessibilityManager.isEnabled()) { - mView.setAccessibilityPaneTitle(determineAccessibilityPaneTitle()); - } - mNotificationStackScrollLayoutController.setMaxTopPadding(mQsMaxExpansionHeight); - } - private final class ConfigurationListener implements ConfigurationController.ConfigurationListener { @Override @@ -5733,8 +4267,9 @@ public final class NotificationPanelViewController implements Dumpable { setKeyguardBottomAreaVisibility(statusBarState, goingToFullShade); + // TODO: maybe add a listener for barstate mBarState = statusBarState; - mKeyguardShowing = keyguardShowing; + mQsController.setBarState(statusBarState); boolean fromShadeToKeyguard = statusBarState == KEYGUARD && (oldState == SHADE || oldState == SHADE_LOCKED); @@ -5742,7 +4277,7 @@ public final class NotificationPanelViewController implements Dumpable { // user can go to keyguard from different shade states and closing animation // may not fully run - we always want to make sure we close QS when that happens // as we never need QS open in fresh keyguard state - closeQs(); + mQsController.closeQs(); } if (oldState == KEYGUARD && (goingToFullShade @@ -5758,7 +4293,7 @@ public final class NotificationPanelViewController implements Dumpable { duration = StackStateAnimator.ANIMATION_DURATION_STANDARD; } mKeyguardStatusBarViewController.animateKeyguardStatusBarOut(startDelay, duration); - updateQSMinHeight(); + mQsController.updateMinHeight(); } else if (oldState == StatusBarState.SHADE_LOCKED && statusBarState == KEYGUARD) { mKeyguardStatusBarViewController.animateKeyguardStatusBarIn(); @@ -5786,9 +4321,7 @@ public final class NotificationPanelViewController implements Dumpable { keyguardShowing ? View.VISIBLE : View.INVISIBLE); } if (keyguardShowing && oldState != mBarState) { - if (mQs != null) { - mQs.hideImmediately(); - } + mQsController.hideQsImmediately(); } } mKeyguardStatusBarViewController.updateForHeadsUp(); @@ -5800,7 +4333,7 @@ public final class NotificationPanelViewController implements Dumpable { // The update needs to happen after the headerSlide in above, otherwise the translation // would reset maybeAnimateBottomAreaAlpha(); - updateQsState(); + mQsController.updateQsState(); } @Override @@ -5877,7 +4410,7 @@ public final class NotificationPanelViewController implements Dumpable { @Override public void onViewAttachedToWindow(View v) { mFragmentService.getFragmentHostManager(mView) - .addTagListener(QS.TAG, mQsFragmentListener); + .addTagListener(QS.TAG, mQsController.getQsFragmentListener()); mStatusBarStateController.addCallback(mStatusBarStateListener); mStatusBarStateListener.onStateChanged(mStatusBarStateController.getState()); mConfigurationController.addCallback(mConfigurationListener); @@ -5894,7 +4427,7 @@ public final class NotificationPanelViewController implements Dumpable { public void onViewDetachedFromWindow(View v) { mContentResolver.unregisterContentObserver(mSettingsChangeObserver); mFragmentService.getFragmentHostManager(mView) - .removeTagListener(QS.TAG, mQsFragmentListener); + .removeTagListener(QS.TAG, mQsController.getQsFragmentListener()); mStatusBarStateController.removeCallback(mStatusBarStateListener); mConfigurationController.removeCallback(mConfigurationListener); mFalsingManager.removeTapListener(mFalsingTapListener); @@ -5919,28 +4452,9 @@ public final class NotificationPanelViewController implements Dumpable { // Update Clock Pivot (used by anti-burnin transformations) mKeyguardStatusViewController.updatePivot(mView.getWidth(), mView.getHeight()); - // Calculate quick setting heights. - int oldMaxHeight = mQsMaxExpansionHeight; - if (mQs != null) { - updateQSMinHeight(); - mQsMaxExpansionHeight = mQs.getDesiredHeight(); - mNotificationStackScrollLayoutController.setMaxTopPadding(mQsMaxExpansionHeight); - } + int oldMaxHeight = mQsController.updateHeightsOnShadeLayoutChange(); positionClockAndNotifications(); - if (mQsExpanded && mQsFullyExpanded) { - mQsExpansionHeight = mQsMaxExpansionHeight; - requestScrollerTopPaddingUpdate(false /* animate */); - updateExpandedHeightToMaxHeight(); - - // Size has changed, start an animation. - if (mQsMaxExpansionHeight != oldMaxHeight) { - startQsSizeChangeAnimation(oldMaxHeight, mQsMaxExpansionHeight); - } - } else if (!mQsExpanded && mQsExpansionAnimator == null) { - setQsExpansionHeight(mQsMinExpansionHeight + mLastOverscroll); - } else { - mShadeLog.v("onLayoutChange: qs expansion not set"); - } + mQsController.handleShadeLayoutChanged(oldMaxHeight); updateExpandedHeight(getExpandedHeight()); updateHeader(); @@ -5949,9 +4463,8 @@ public final class NotificationPanelViewController implements Dumpable { // container the desired height so when closing the QS detail, it stays smaller after // the size change animation is finished but the detail view is still being animated // away (this animation takes longer than the size change animation). - if (mQsSizeChangeAnimator == null && mQs != null) { - mQs.setHeightOverride(mQs.getDesiredHeight()); - } + mQsController.setHeightOverrideToDesiredHeight(); + updateMaxHeadsUpTranslation(); updateGestureExclusionRect(); if (mExpandAfterLayoutRunnable != null) { @@ -5962,18 +4475,6 @@ public final class NotificationPanelViewController implements Dumpable { } } - private void updateQSMinHeight() { - float previousMin = mQsMinExpansionHeight; - if (mKeyguardShowing || mSplitShadeEnabled) { - mQsMinExpansionHeight = 0; - } else { - mQsMinExpansionHeight = mQs.getQsMinExpansionHeight(); - } - if (mQsExpansionHeight == previousMin) { - mQsExpansionHeight = mQsMinExpansionHeight; - } - } - @NonNull private WindowInsets onApplyShadeWindowInsets(WindowInsets insets) { // the same types of insets that are handled in NotificationShadeWindowView @@ -5982,6 +4483,7 @@ public final class NotificationPanelViewController implements Dumpable { mDisplayTopInset = combinedInsets.top; mDisplayRightInset = combinedInsets.right; mDisplayLeftInset = combinedInsets.left; + mQsController.setDisplayInsets(mDisplayRightInset, mDisplayLeftInset); mNavigationBarBottomHeight = insets.getStableInsetBottom(); updateMaxHeadsUpTranslation(); @@ -5994,10 +4496,10 @@ public final class NotificationPanelViewController implements Dumpable { } private void onPanelStateChanged(@PanelState int state) { - updateQSExpansionEnabledAmbient(); + mQsController.updateExpansionEnabledAmbient(); if (state == STATE_OPEN && mCurrentPanelState != state) { - setQsExpandImmediate(false); + mQsController.setExpandImmediate(false); mView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); } if (state == STATE_OPENING) { @@ -6005,12 +4507,12 @@ public final class NotificationPanelViewController implements Dumpable { // to locked will trigger this event and we're not actually in the process of opening // the shade, lockscreen is just always expanded if (mSplitShadeEnabled && !isOnKeyguard()) { - setQsExpandImmediate(true); + mQsController.setExpandImmediate(true); } mOpenCloseListener.onOpenStarted(); } if (state == STATE_CLOSED) { - setQsExpandImmediate(false); + mQsController.setExpandImmediate(false); // Close the status bar in the next frame so we can show the end of the // animation. mView.post(mMaybeHideExpandedRunnable); @@ -6076,7 +4578,7 @@ public final class NotificationPanelViewController implements Dumpable { /** @see ViewGroup#onInterceptTouchEvent(MotionEvent) */ public boolean onInterceptTouchEvent(MotionEvent event) { mShadeLog.logMotionEvent(event, "NPVC onInterceptTouchEvent"); - if (mQs.disallowPanelTouches()) { + if (mQsController.disallowTouches()) { mShadeLog.logMotionEvent(event, "NPVC not intercepting touch, panel touches disallowed"); return false; @@ -6098,14 +4600,14 @@ public final class NotificationPanelViewController implements Dumpable { + "HeadsUpTouchHelper"); return true; } - if (!shouldQuickSettingsIntercept(mDownX, mDownY, 0) + if (!mQsController.shouldQuickSettingsIntercept(mDownX, mDownY, 0) && mPulseExpansionHandler.onInterceptTouchEvent(event)) { mShadeLog.v("NotificationPanelViewController MotionEvent intercepted: " + "PulseExpansionHandler"); return true; } - if (!isFullyCollapsed() && onQsIntercept(event)) { + if (!isFullyCollapsed() && mQsController.onIntercept(event)) { debugLog("onQsIntercept true"); mShadeLog.v("NotificationPanelViewController MotionEvent intercepted: " + "QsIntercept"); @@ -6139,11 +4641,6 @@ public final class NotificationPanelViewController implements Dumpable { switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: - if (mTracking) { - // TODO(b/247126247) fix underlying issue. Should be ACTION_POINTER_DOWN. - mShadeLog.d("Don't intercept down event while already tracking"); - return false; - } mCentralSurfaces.userActivity(); mAnimatingOnDown = mHeightAnimator != null && !mIsSpringBackAnimation; mMinExpandHeight = 0.0f; @@ -6231,16 +4728,10 @@ public final class NotificationPanelViewController implements Dumpable { "onTouch: duplicate down event detected... ignoring"); return true; } - if (mTracking) { - // TODO(b/247126247) fix underlying issue. Should be ACTION_POINTER_DOWN. - mShadeLog.d("Don't handle down event while already tracking"); - return true; - } mLastTouchDownTime = event.getDownTime(); } - - if (mQsFullyExpanded && mQs != null && mQs.disallowPanelTouches()) { + if (mQsController.isFullyExpandedAndTouchesDisallowed()) { mShadeLog.logMotionEvent(event, "onTouch: ignore touch, panel touches disallowed and qs fully expanded"); return false; @@ -6271,7 +4762,7 @@ public final class NotificationPanelViewController implements Dumpable { // If pulse is expanding already, let's give it the touch. There are situations // where the panel starts expanding even though we're also pulsing boolean pulseShouldGetTouch = (!mIsExpanding - && !shouldQuickSettingsIntercept(mDownX, mDownY, 0)) + && !mQsController.shouldQuickSettingsIntercept(mDownX, mDownY, 0)) || mPulseExpansionHandler.isExpanding(); if (pulseShouldGetTouch && mPulseExpansionHandler.onTouchEvent(event)) { // We're expanding all the other ones shouldn't get this anymore @@ -6289,7 +4780,8 @@ public final class NotificationPanelViewController implements Dumpable { } boolean handled = mHeadsUpTouchHelper.onTouchEvent(event); - if (!mHeadsUpTouchHelper.isTrackingHeadsUp() && handleQsTouch(event)) { + if (!mHeadsUpTouchHelper.isTrackingHeadsUp() && mQsController.handleTouch( + event, isFullyCollapsed(), isShadeOrQsHeightAnimationRunning())) { mShadeLog.logMotionEvent(event, "onTouch: handleQsTouch handled event"); return true; } @@ -6444,7 +4936,9 @@ public final class NotificationPanelViewController implements Dumpable { mTouchAboveFalsingThreshold = true; mUpwardsWhenThresholdReached = isDirectionUpwards(x, y); } - if ((!mGestureWaitForTouchSlop || mTracking) && !isTrackingBlocked()) { + if ((!mGestureWaitForTouchSlop || mTracking) + && !(mBlockingExpansionForCurrentTouch + || mQsController.isTrackingBlocked())) { // Count h==0 as part of swipe-up, // otherwise {@link NotificationStackScrollLayout} // wrongly enables stack height updates at the start of lockscreen swipe-up @@ -6462,9 +4956,9 @@ public final class NotificationPanelViewController implements Dumpable { // mHeightAnimator is null, there is no remaining frame, ends instrumenting. if (mHeightAnimator == null) { if (event.getActionMasked() == MotionEvent.ACTION_UP) { - endJankMonitoring(); + mQsController.endJankMonitoring(); } else { - cancelJankMonitoring(); + mQsController.cancelJankMonitoring(); } } break; diff --git a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java index 1f0cbf9af51c..74a61a3efebe 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java +++ b/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowView.java @@ -16,7 +16,7 @@ package com.android.systemui.shade; -import static android.os.Trace.TRACE_TAG_ALWAYS; +import static android.os.Trace.TRACE_TAG_APP; import static android.view.WindowInsets.Type.systemBars; import static com.android.systemui.statusbar.phone.CentralSurfaces.DEBUG; @@ -328,7 +328,7 @@ public class NotificationShadeWindowView extends FrameLayout { @Override public void requestLayout() { - Trace.instant(TRACE_TAG_ALWAYS, "NotificationShadeWindowView#requestLayout"); + Trace.instant(TRACE_TAG_APP, "NotificationShadeWindowView#requestLayout"); super.requestLayout(); } diff --git a/packages/SystemUI/src/com/android/systemui/shade/QsBatteryModeController.kt b/packages/SystemUI/src/com/android/systemui/shade/QsBatteryModeController.kt new file mode 100644 index 000000000000..3eec7fa0e84a --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/shade/QsBatteryModeController.kt @@ -0,0 +1,70 @@ +package com.android.systemui.shade + +import android.content.Context +import android.view.DisplayCutout +import com.android.systemui.R +import com.android.systemui.battery.BatteryMeterView +import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider +import javax.inject.Inject + +/** + * Controls [BatteryMeterView.BatteryPercentMode]. It takes into account cutout and qs-qqs + * transition fraction when determining the mode. + */ +class QsBatteryModeController +@Inject +constructor( + private val context: Context, + private val insetsProvider: StatusBarContentInsetsProvider, +) { + + private companion object { + // MotionLayout frames are in [0, 100]. Where 0 and 100 are reserved for start and end + // frames. + const val MOTION_LAYOUT_MAX_FRAME = 100 + // We add a single buffer frame to ensure that battery view faded out completely when we are + // about to change it's state + const val BUFFER_FRAME_COUNT = 1 + } + + private var fadeInStartFraction: Float = 0f + private var fadeOutCompleteFraction: Float = 0f + + init { + updateResources() + } + + /** + * Returns an appropriate [BatteryMeterView.BatteryPercentMode] for the [qsExpandedFraction] and + * [cutout]. We don't show battery estimation in qqs header on the devices with center cutout. + * The result might be null when the battery icon is invisible during the qs-qqs transition + * animation. + */ + @BatteryMeterView.BatteryPercentMode + fun getBatteryMode(cutout: DisplayCutout?, qsExpandedFraction: Float): Int? = + when { + qsExpandedFraction > fadeInStartFraction -> BatteryMeterView.MODE_ESTIMATE + qsExpandedFraction < fadeOutCompleteFraction -> + if (hasCenterCutout(cutout)) { + BatteryMeterView.MODE_ON + } else { + BatteryMeterView.MODE_ESTIMATE + } + else -> null + } + + fun updateResources() { + fadeInStartFraction = + (context.resources.getInteger(R.integer.fade_in_start_frame) - BUFFER_FRAME_COUNT) / + MOTION_LAYOUT_MAX_FRAME.toFloat() + fadeOutCompleteFraction = + (context.resources.getInteger(R.integer.fade_out_complete_frame) + BUFFER_FRAME_COUNT) / + MOTION_LAYOUT_MAX_FRAME.toFloat() + } + + private fun hasCenterCutout(cutout: DisplayCutout?): Boolean = + cutout?.let { + !insetsProvider.currentRotationHasCornerCutout() && !it.boundingRectTop.isEmpty + } + ?: false +} diff --git a/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java new file mode 100644 index 000000000000..c0ef4c1a872a --- /dev/null +++ b/packages/SystemUI/src/com/android/systemui/shade/QuickSettingsController.java @@ -0,0 +1,2050 @@ +/* + * Copyright (C) 2022 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.systemui.shade; + +import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE; +import static com.android.systemui.classifier.Classifier.QS_COLLAPSE; +import static com.android.systemui.shade.NotificationPanelViewController.COUNTER_PANEL_OPEN_QS; +import static com.android.systemui.shade.NotificationPanelViewController.FLING_COLLAPSE; +import static com.android.systemui.shade.NotificationPanelViewController.FLING_EXPAND; +import static com.android.systemui.shade.NotificationPanelViewController.FLING_HIDE; +import static com.android.systemui.shade.NotificationPanelViewController.QS_PARALLAX_AMOUNT; +import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; + +import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; +import android.animation.ValueAnimator; +import android.app.Fragment; +import android.content.res.Resources; +import android.graphics.Rect; +import android.graphics.Region; +import android.util.Log; +import android.util.MathUtils; +import android.view.MotionEvent; +import android.view.VelocityTracker; +import android.view.View; +import android.view.ViewConfiguration; +import android.view.ViewGroup; +import android.view.accessibility.AccessibilityManager; +import android.widget.FrameLayout; + +import com.android.internal.annotations.VisibleForTesting; +import com.android.internal.jank.InteractionJankMonitor; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.nano.MetricsProto; +import com.android.internal.policy.ScreenDecorationsUtils; +import com.android.internal.policy.SystemBarUtils; +import com.android.keyguard.FaceAuthApiRequestReason; +import com.android.keyguard.KeyguardUpdateMonitor; +import com.android.systemui.R; +import com.android.systemui.animation.Interpolators; +import com.android.systemui.classifier.Classifier; +import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.flags.FeatureFlags; +import com.android.systemui.flags.Flags; +import com.android.systemui.fragments.FragmentHostManager; +import com.android.systemui.media.controls.pipeline.MediaDataManager; +import com.android.systemui.media.controls.ui.MediaHierarchyManager; +import com.android.systemui.plugins.FalsingManager; +import com.android.systemui.plugins.qs.QS; +import com.android.systemui.screenrecord.RecordingController; +import com.android.systemui.shade.transition.ShadeTransitionController; +import com.android.systemui.statusbar.LockscreenShadeTransitionController; +import com.android.systemui.statusbar.NotificationRemoteInputManager; +import com.android.systemui.statusbar.NotificationShadeDepthController; +import com.android.systemui.statusbar.PulseExpansionHandler; +import com.android.systemui.statusbar.QsFrameTranslateController; +import com.android.systemui.statusbar.StatusBarState; +import com.android.systemui.statusbar.notification.stack.AmbientState; +import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout; +import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; +import com.android.systemui.statusbar.notification.stack.StackStateAnimator; +import com.android.systemui.statusbar.phone.KeyguardBypassController; +import com.android.systemui.statusbar.phone.KeyguardStatusBarView; +import com.android.systemui.statusbar.phone.LockscreenGestureLogger; +import com.android.systemui.statusbar.phone.ScrimController; +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; +import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager; +import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent; +import com.android.systemui.statusbar.policy.KeyguardStateController; +import com.android.systemui.util.LargeScreenUtils; + +import javax.inject.Inject; + +import dagger.Lazy; + +/** Handles QuickSettings touch handling, expansion and animation state + * TODO (b/264460656) make this dumpable + */ +@CentralSurfacesComponent.CentralSurfacesScope +public class QuickSettingsController { + public static final String TAG = "QuickSettingsController"; + + private QS mQs; + private final Lazy<NotificationPanelViewController> mPanelViewControllerLazy; + + private final NotificationPanelView mPanelView; + private final KeyguardStatusBarView mKeyguardStatusBar; + private final FrameLayout mQsFrame; + + private final QsFrameTranslateController mQsFrameTranslateController; + private final ShadeTransitionController mShadeTransitionController; + private final PulseExpansionHandler mPulseExpansionHandler; + private final ShadeExpansionStateManager mShadeExpansionStateManager; + private final StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; + private final NotificationStackScrollLayoutController mNotificationStackScrollLayoutController; + private final LockscreenShadeTransitionController mLockscreenShadeTransitionController; + private final NotificationShadeDepthController mDepthController; + private final LargeScreenShadeHeaderController mLargeScreenShadeHeaderController; + private final StatusBarTouchableRegionManager mStatusBarTouchableRegionManager; + private final KeyguardStateController mKeyguardStateController; + private final KeyguardBypassController mKeyguardBypassController; + private final NotificationRemoteInputManager mRemoteInputManager; + private VelocityTracker mQsVelocityTracker; + private final KeyguardUpdateMonitor mKeyguardUpdateMonitor; + private final ScrimController mScrimController; + private final MediaDataManager mMediaDataManager; + private final MediaHierarchyManager mMediaHierarchyManager; + private final AmbientState mAmbientState; + private final RecordingController mRecordingController; + private final FalsingCollector mFalsingCollector; + private final LockscreenGestureLogger mLockscreenGestureLogger; + private final ShadeLogger mShadeLog; + private final FeatureFlags mFeatureFlags; + private final InteractionJankMonitor mInteractionJankMonitor; + private final FalsingManager mFalsingManager; + private final AccessibilityManager mAccessibilityManager; + private final MetricsLogger mMetricsLogger; + private final Resources mResources; + + /** Whether the notifications are displayed full width (no margins on the side). */ + private boolean mIsFullWidth; + private int mTouchSlop; + private float mSlopMultiplier; + /** the current {@link StatusBarState} */ + private int mBarState; + private int mStatusBarMinHeight; + private boolean mScrimEnabled = true; + private int mScrimCornerRadius; + private int mScreenCornerRadius; + private boolean mUseLargeScreenShadeHeader; + private int mLargeScreenShadeHeaderHeight; + private int mDisplayRightInset = 0; // in pixels + private int mDisplayLeftInset = 0; // in pixels + private boolean mSplitShadeEnabled; + /** + * The padding between the start of notifications and the qs boundary on the lockscreen. + * On lockscreen, notifications aren't inset this extra amount, but we still want the + * qs boundary to be padded. + */ + private int mLockscreenNotificationPadding; + private int mSplitShadeNotificationsScrimMarginBottom; + private boolean mDozing; + private boolean mEnableClipping; + private int mFalsingThreshold; + /** + * Position of the qs bottom during the full shade transition. This is needed as the toppadding + * can change during state changes, which makes it much harder to do animations + */ + private int mTransitionToFullShadePosition; + private boolean mCollapsedOnDown; + private float mShadeExpandedHeight = 0; + private boolean mLastShadeFlingWasExpanding; + + private float mInitialHeightOnTouch; + private float mInitialTouchX; + private float mInitialTouchY; + /** whether current touch Y delta is above falsing threshold */ + private boolean mTouchAboveFalsingThreshold; + /** whether we are tracking a touch on QS container */ + private boolean mTracking; + /** pointerId of the pointer we're currently tracking */ + private int mTrackingPointer; + + /** + * Indicates that QS is in expanded state which can happen by: + * - single pane shade: expanding shade and then expanding QS + * - split shade: just expanding shade (QS are expanded automatically) + */ + private boolean mExpanded; + /** Indicates QS is at its max height */ + private boolean mFullyExpanded; + /** + * Determines if QS should be already expanded when expanding shade. + * Used for split shade, two finger gesture as well as accessibility shortcut to QS. + * It needs to be set when movement starts as it resets at the end of expansion/collapse. + */ + private boolean mExpandImmediate; + private boolean mExpandedWhenExpandingStarted; + private boolean mAnimatingHiddenFromCollapsed; + private boolean mVisible; + private float mExpansionHeight; + private int mMinExpansionHeight; + private int mMaxExpansionHeight; + /** Expansion fraction of the notification shade */ + private float mShadeExpandedFraction; + private int mPeekHeight; + private float mLastOverscroll; + private boolean mExpansionFromOverscroll; + private boolean mExpansionEnabledPolicy = true; + private boolean mExpansionEnabledAmbient = true; + private float mQuickQsHeaderHeight; + /** + * Determines if QS should be already expanded when expanding shade. + * Used for split shade, two finger gesture as well as accessibility shortcut to QS. + * It needs to be set when movement starts as it resets at the end of expansion/collapse. + */ + private boolean mTwoFingerExpandPossible; + /** Whether the ongoing gesture might both trigger the expansion in both the view and QS. */ + private boolean mConflictingExpansionGesture; + /** + * If we are in a panel collapsing motion, we reset scrollY of our scroll view but still + * need to take this into account in our panel height calculation. + */ + private boolean mAnimatorExpand; + + /** + * The amount of progress we are currently in if we're transitioning to the full shade. + * 0.0f means we're not transitioning yet, while 1 means we're all the way in the full + * shade. This value can also go beyond 1.1 when we're overshooting! + */ + private float mTransitioningToFullShadeProgress; + /** Distance a full shade transition takes in order for qs to fully transition to the shade. */ + private int mDistanceForFullShadeTransition; + private boolean mStackScrollerOverscrolling; + /** Indicates QS is animating - set by flingQs */ + private boolean mAnimating; + /** Whether the current animator is resetting the qs translation. */ + private boolean mIsTranslationResettingAnimator; + /** Whether the current animator is resetting the pulse expansion after a drag down. */ + private boolean mIsPulseExpansionResettingAnimator; + /** The translation amount for QS for the full shade transition. */ + private float mTranslationForFullShadeTransition; + /** Should we animate the next bounds update. */ + private boolean mAnimateNextNotificationBounds; + /** The delay for the next bounds animation. */ + private long mNotificationBoundsAnimationDelay; + /** The duration of the notification bounds animation. */ + private long mNotificationBoundsAnimationDuration; + + private final Region mInterceptRegion = new Region(); + /** The end bounds of a clipping animation. */ + private final Rect mClippingAnimationEndBounds = new Rect(); + private final Rect mLastClipBounds = new Rect(); + + /** The animator for the qs clipping bounds. */ + private ValueAnimator mClippingAnimator = null; + /** The main animator for QS expansion */ + private ValueAnimator mExpansionAnimator; + /** The animator for QS size change */ + private ValueAnimator mSizeChangeAnimator; + + private ExpansionHeightListener mExpansionHeightListener; + private QsStateUpdateListener mQsStateUpdateListener; + private ApplyClippingImmediatelyListener mApplyClippingImmediatelyListener; + private FlingQsWithoutClickListener mFlingQsWithoutClickListener; + private ExpansionHeightSetToMaxListener mExpansionHeightSetToMaxListener; + private final QS.HeightListener mQsHeightListener = this::onHeightChanged; + private final Runnable mQsCollapseExpandAction = this::collapseOrExpandQs; + private final QS.ScrollListener mQsScrollListener = this::onScroll; + + @Inject + public QuickSettingsController( + Lazy<NotificationPanelViewController> panelViewControllerLazy, + NotificationPanelView panelView, + QsFrameTranslateController qsFrameTranslateController, + ShadeTransitionController shadeTransitionController, + PulseExpansionHandler pulseExpansionHandler, + NotificationRemoteInputManager remoteInputManager, + ShadeExpansionStateManager shadeExpansionStateManager, + StatusBarKeyguardViewManager statusBarKeyguardViewManager, + NotificationStackScrollLayoutController notificationStackScrollLayoutController, + LockscreenShadeTransitionController lockscreenShadeTransitionController, + NotificationShadeDepthController notificationShadeDepthController, + LargeScreenShadeHeaderController largeScreenShadeHeaderController, + StatusBarTouchableRegionManager statusBarTouchableRegionManager, + KeyguardStateController keyguardStateController, + KeyguardBypassController keyguardBypassController, + KeyguardUpdateMonitor keyguardUpdateMonitor, + ScrimController scrimController, + MediaDataManager mediaDataManager, + MediaHierarchyManager mediaHierarchyManager, + AmbientState ambientState, + RecordingController recordingController, + FalsingManager falsingManager, + FalsingCollector falsingCollector, + AccessibilityManager accessibilityManager, + LockscreenGestureLogger lockscreenGestureLogger, + MetricsLogger metricsLogger, + FeatureFlags featureFlags, + InteractionJankMonitor interactionJankMonitor, + ShadeLogger shadeLog + ) { + mPanelViewControllerLazy = panelViewControllerLazy; + mPanelView = panelView; + mQsFrame = mPanelView.findViewById(R.id.qs_frame); + mKeyguardStatusBar = mPanelView.findViewById(R.id.keyguard_header); + mResources = mPanelView.getResources(); + mSplitShadeEnabled = LargeScreenUtils.shouldUseSplitNotificationShade(mResources); + mQsFrameTranslateController = qsFrameTranslateController; + mShadeTransitionController = shadeTransitionController; + mPulseExpansionHandler = pulseExpansionHandler; + pulseExpansionHandler.setPulseExpandAbortListener(() -> { + if (mQs != null) { + mQs.animateHeaderSlidingOut(); + } + }); + mRemoteInputManager = remoteInputManager; + mShadeExpansionStateManager = shadeExpansionStateManager; + mStatusBarKeyguardViewManager = statusBarKeyguardViewManager; + mNotificationStackScrollLayoutController = notificationStackScrollLayoutController; + mLockscreenShadeTransitionController = lockscreenShadeTransitionController; + mDepthController = notificationShadeDepthController; + mLargeScreenShadeHeaderController = largeScreenShadeHeaderController; + mStatusBarTouchableRegionManager = statusBarTouchableRegionManager; + mKeyguardStateController = keyguardStateController; + mKeyguardBypassController = keyguardBypassController; + mKeyguardUpdateMonitor = keyguardUpdateMonitor; + mScrimController = scrimController; + mMediaDataManager = mediaDataManager; + mMediaHierarchyManager = mediaHierarchyManager; + mAmbientState = ambientState; + mRecordingController = recordingController; + mFalsingManager = falsingManager; + mFalsingCollector = falsingCollector; + mAccessibilityManager = accessibilityManager; + + mLockscreenGestureLogger = lockscreenGestureLogger; + mMetricsLogger = metricsLogger; + mShadeLog = shadeLog; + mFeatureFlags = featureFlags; + mInteractionJankMonitor = interactionJankMonitor; + + mShadeExpansionStateManager.addExpansionListener(this::onPanelExpansionChanged); + mLockscreenShadeTransitionController.addCallback(new LockscreenShadeTransitionCallback()); + } + + @VisibleForTesting + void setQs(QS qs) { + mQs = qs; + } + + public void setExpansionHeightListener(ExpansionHeightListener listener) { + mExpansionHeightListener = listener; + } + + public void setQsStateUpdateListener(QsStateUpdateListener listener) { + mQsStateUpdateListener = listener; + } + + public void setApplyClippingImmediatelyListener(ApplyClippingImmediatelyListener listener) { + mApplyClippingImmediatelyListener = listener; + } + + public void setFlingQsWithoutClickListener(FlingQsWithoutClickListener listener) { + mFlingQsWithoutClickListener = listener; + } + + public void setExpansionHeightSetToMaxListener(ExpansionHeightSetToMaxListener callback) { + mExpansionHeightSetToMaxListener = callback; + } + + void loadDimens() { + final ViewConfiguration configuration = ViewConfiguration.get(this.mPanelView.getContext()); + mTouchSlop = configuration.getScaledTouchSlop(); + mSlopMultiplier = configuration.getScaledAmbiguousGestureMultiplier(); + mPeekHeight = mResources.getDimensionPixelSize(R.dimen.qs_peek_height); + mStatusBarMinHeight = SystemBarUtils.getStatusBarHeight(mPanelView.getContext()); + mScrimCornerRadius = mResources.getDimensionPixelSize( + R.dimen.notification_scrim_corner_radius); + mScreenCornerRadius = (int) ScreenDecorationsUtils.getWindowCornerRadius( + mPanelView.getContext()); + mFalsingThreshold = mResources.getDimensionPixelSize(R.dimen.qs_falsing_threshold); + mLockscreenNotificationPadding = mResources.getDimensionPixelSize( + R.dimen.notification_side_paddings); + mDistanceForFullShadeTransition = mResources.getDimensionPixelSize( + R.dimen.lockscreen_shade_qs_transition_distance); + } + + void updateResources() { + mSplitShadeEnabled = LargeScreenUtils.shouldUseSplitNotificationShade(mResources); + if (mQs != null) { + mQs.setInSplitShade(mSplitShadeEnabled); + } + mSplitShadeNotificationsScrimMarginBottom = + mResources.getDimensionPixelSize( + R.dimen.split_shade_notifications_scrim_margin_bottom); + + mUseLargeScreenShadeHeader = + LargeScreenUtils.shouldUseLargeScreenShadeHeader(mPanelView.getResources()); + mLargeScreenShadeHeaderHeight = + mResources.getDimensionPixelSize(R.dimen.large_screen_shade_header_height); + int topMargin = mUseLargeScreenShadeHeader ? mLargeScreenShadeHeaderHeight : + mResources.getDimensionPixelSize(R.dimen.notification_panel_margin_top); + mLargeScreenShadeHeaderController.setLargeScreenActive(mUseLargeScreenShadeHeader); + mAmbientState.setStackTopMargin(topMargin); + + // TODO: When the flag is eventually removed, it means that we have a single view that is + // the same height in QQS and in Large Screen (large_screen_shade_header_height). Eventually + // the concept of largeScreenHeader or quickQsHeader will disappear outside of the class + // that controls the view as the offset needs to be the same regardless. + if (mUseLargeScreenShadeHeader || mFeatureFlags.isEnabled(Flags.COMBINED_QS_HEADERS)) { + mQuickQsHeaderHeight = mLargeScreenShadeHeaderHeight; + } else { + mQuickQsHeaderHeight = SystemBarUtils.getQuickQsOffsetHeight(mPanelView.getContext()); + } + + mEnableClipping = mResources.getBoolean(R.bool.qs_enable_clipping); + } + + // TODO (b/265054088): move this and others to a CoreStartable + void initNotificationStackScrollLayoutController() { + mNotificationStackScrollLayoutController.setOverscrollTopChangedListener( + new NsslOverscrollTopChangedListener()); + mNotificationStackScrollLayoutController.setOnStackYChanged(this::onStackYChanged); + mNotificationStackScrollLayoutController.setOnScrollListener(this::onNotificationScrolled); + } + + private void onStackYChanged(boolean shouldAnimate) { + if (isQsFragmentCreated()) { + if (shouldAnimate) { + setAnimateNextNotificationBounds(StackStateAnimator.ANIMATION_DURATION_STANDARD, + 0 /* delay */); + } + setClippingBounds(); + } + } + + private void onNotificationScrolled(int newScrollPosition) { + updateExpansionEnabledAmbient(); + } + + int getHeaderHeight() { + return mQs.getHeader().getHeight(); + } + + /** Returns the padding of the stackscroller when unlocked */ + int getUnlockedStackScrollerPadding() { + return (mQs != null ? mQs.getHeader().getHeight() : 0) + mPeekHeight; + } + + public boolean isExpansionEnabled() { + return mExpansionEnabledPolicy && mExpansionEnabledAmbient + && !mRemoteInputManager.isRemoteInputActive(); + } + + public float getTransitioningToFullShadeProgress() { + return mTransitioningToFullShadeProgress; + } + + /** */ + @VisibleForTesting + boolean isExpandImmediate() { + return mExpandImmediate; + } + + float getInitialTouchY() { + return mInitialTouchY; + } + + /** Returns whether split shade is enabled and an x coordinate is outside of the QS frame. */ + private boolean isSplitShadeAndTouchXOutsideQs(float touchX) { + return mSplitShadeEnabled && touchX < mQsFrame.getX() + || touchX > mQsFrame.getX() + mQsFrame.getWidth(); + } + + /** Returns whether touch is within QS area */ + private boolean isTouchInQsArea(float x, float y) { + if (isSplitShadeAndTouchXOutsideQs(x)) { + return false; + } + // TODO (b/265193930): remove dependency on NPVC + // Let's reject anything at the very bottom around the home handle in gesture nav + if (mPanelViewControllerLazy.get().isInGestureNavHomeHandleArea(x, y)) { + return false; + } + return y <= mNotificationStackScrollLayoutController.getBottomMostNotificationBottom() + || y <= mQs.getView().getY() + mQs.getView().getHeight(); + } + + /** Returns whether or not event should open QS */ + private boolean isOpenQsEvent(MotionEvent event) { + final int pointerCount = event.getPointerCount(); + final int action = event.getActionMasked(); + + final boolean + twoFingerDrag = + action == MotionEvent.ACTION_POINTER_DOWN && pointerCount == 2; + + final boolean + stylusButtonClickDrag = + action == MotionEvent.ACTION_DOWN && (event.isButtonPressed( + MotionEvent.BUTTON_STYLUS_PRIMARY) || event.isButtonPressed( + MotionEvent.BUTTON_STYLUS_SECONDARY)); + + final boolean + mouseButtonClickDrag = + action == MotionEvent.ACTION_DOWN && (event.isButtonPressed( + MotionEvent.BUTTON_SECONDARY) || event.isButtonPressed( + MotionEvent.BUTTON_TERTIARY)); + + return twoFingerDrag || stylusButtonClickDrag || mouseButtonClickDrag; + } + + + public boolean getExpanded() { + return mExpanded; + } + + @VisibleForTesting + boolean isTracking() { + return mTracking; + } + + public boolean getFullyExpanded() { + return mFullyExpanded; + } + + boolean isGoingBetweenClosedShadeAndExpandedQs() { + // Below is true when QS are expanded and we swipe up from the same bottom of panel to + // close the whole shade with one motion. Also this will be always true when closing + // split shade as there QS are always expanded so every collapsing motion is motion from + // expanded QS to closed panel + return mExpandImmediate || (mExpanded + && !mTracking && !isExpansionAnimating() + && !mExpansionFromOverscroll); + } + + private boolean isQsFragmentCreated() { + return mQs != null; + } + + public boolean isCustomizing() { + return isQsFragmentCreated() && mQs.isCustomizing(); + } + + public float getExpansionHeight() { + return mExpansionHeight; + } + + public boolean getExpandedWhenExpandingStarted() { + return mExpandedWhenExpandingStarted; + } + + public int getMinExpansionHeight() { + return mMinExpansionHeight; + } + + public boolean isFullyExpandedAndTouchesDisallowed() { + return isQsFragmentCreated() && getFullyExpanded() && disallowTouches(); + } + + public int getMaxExpansionHeight() { + return mMaxExpansionHeight; + } + + private boolean isQsFalseTouch() { + if (mFalsingManager.isClassifierEnabled()) { + return mFalsingManager.isFalseTouch(Classifier.QUICK_SETTINGS); + } + return !mTouchAboveFalsingThreshold; + } + + public int getFalsingThreshold() { + return mFalsingThreshold; + } + + /** + * Returns Whether we should intercept a gesture to open Quick Settings. + */ + public boolean shouldQuickSettingsIntercept(float x, float y, float yDiff) { + boolean keyguardShowing = mBarState == KEYGUARD; + if (!isExpansionEnabled() || mCollapsedOnDown || (keyguardShowing + && mKeyguardBypassController.getBypassEnabled()) || mSplitShadeEnabled) { + return false; + } + View header = keyguardShowing || mQs == null ? mKeyguardStatusBar : mQs.getHeader(); + int frameTop = keyguardShowing + || mQs == null ? 0 : mQsFrame.getTop(); + mInterceptRegion.set( + /* left= */ (int) mQsFrame.getX(), + /* top= */ header.getTop() + frameTop, + /* right= */ (int) mQsFrame.getX() + mQsFrame.getWidth(), + /* bottom= */ header.getBottom() + frameTop); + // Also allow QS to intercept if the touch is near the notch. + mStatusBarTouchableRegionManager.updateRegionForNotch(mInterceptRegion); + final boolean onHeader = mInterceptRegion.contains((int) x, (int) y); + + if (getExpanded()) { + return onHeader || (yDiff < 0 && isTouchInQsArea(x, y)); + } else { + return onHeader; + } + } + + /** Returns amount header should be translated */ + private float getHeaderTranslation() { + if (mSplitShadeEnabled) { + // in split shade QS don't translate, just (un)squish and overshoot + return 0; + } + if (mBarState == KEYGUARD && !mKeyguardBypassController.getBypassEnabled()) { + return -mQs.getQsMinExpansionHeight(); + } + float appearAmount = mNotificationStackScrollLayoutController + .calculateAppearFraction(mShadeExpandedHeight); + float startHeight = -getExpansionHeight(); + if (mBarState == StatusBarState.SHADE) { + // Small parallax as we pull down and clip QS + startHeight = -getExpansionHeight() * QS_PARALLAX_AMOUNT; + } + if (mKeyguardBypassController.getBypassEnabled() && mBarState == KEYGUARD) { + appearAmount = mNotificationStackScrollLayoutController.calculateAppearFractionBypass(); + startHeight = -mQs.getQsMinExpansionHeight(); + } + float translation = MathUtils.lerp(startHeight, 0, Math.min(1.0f, appearAmount)); + return Math.min(0, translation); + } + + /** + * Can the panel collapse in this motion because it was started on QQS? + * + * @param downX the x location where the touch started + * @param downY the y location where the touch started + * Returns true if the panel could be collapsed because it stared on QQS + */ + public boolean canPanelCollapseOnQQS(float downX, float downY) { + if (mCollapsedOnDown || mBarState == KEYGUARD || getExpanded()) { + return false; + } + View header = mQs == null ? mKeyguardStatusBar : mQs.getHeader(); + return downX >= mQsFrame.getX() && downX <= mQsFrame.getX() + mQsFrame.getWidth() + && downY <= header.getBottom(); + } + + /** Closes the Qs customizer. */ + public void closeQsCustomizer() { + mQs.closeCustomizer(); + } + + /** Returns whether touches from the notification panel should be disallowed */ + public boolean disallowTouches() { + return mQs.disallowPanelTouches(); + } + + void setListening(boolean listening) { + if (mQs != null) { + mQs.setListening(listening); + } + } + + void hideQsImmediately() { + if (mQs != null) { + mQs.hideImmediately(); + } + } + + public void setDozing(boolean dozing) { + mDozing = dozing; + } + + /** set QS state to closed */ + public void closeQs() { + cancelExpansionAnimation(); + setExpansionHeight(getMinExpansionHeight()); + // qsExpandImmediate is a safety latch in case we're calling closeQS while we're in the + // middle of animation - we need to make sure that value is always false when shade if + // fully collapsed or expanded + setExpandImmediate(false); + } + + @VisibleForTesting + void setExpanded(boolean expanded) { + boolean changed = mExpanded != expanded; + if (changed) { + mExpanded = expanded; + updateQsState(); + mShadeExpansionStateManager.onQsExpansionChanged(expanded); + mShadeLog.logQsExpansionChanged("QS Expansion Changed.", expanded, + getMinExpansionHeight(), getMaxExpansionHeight(), + mStackScrollerOverscrolling, mAnimatorExpand, mAnimating); + } + } + + void setLastShadeFlingWasExpanding(boolean expanding) { + mLastShadeFlingWasExpanding = expanding; + mShadeLog.logLastFlingWasExpanding(expanding); + } + + /** update Qs height state */ + public void setExpansionHeight(float height) { + int maxHeight = getMaxExpansionHeight(); + height = Math.min(Math.max( + height, getMinExpansionHeight()), maxHeight); + mFullyExpanded = height == maxHeight && maxHeight != 0; + boolean qsAnimatingAway = !mAnimatorExpand && mAnimating; + if (height > getMinExpansionHeight() && !getExpanded() + && !mStackScrollerOverscrolling + && !mDozing && !qsAnimatingAway) { + setExpanded(true); + } else if (height <= getMinExpansionHeight() + && getExpanded()) { + setExpanded(false); + } + mExpansionHeight = height; + updateExpansion(); + + if (mExpansionHeightListener != null) { + mExpansionHeightListener.onQsSetExpansionHeightCalled(getFullyExpanded()); + } + } + + /** */ + public void setHeightOverrideToDesiredHeight() { + if (isSizeChangeAnimationRunning() && isQsFragmentCreated()) { + mQs.setHeightOverride(mQs.getDesiredHeight()); + } + } + + /** Updates quick setting heights and returns old max height. */ + int updateHeightsOnShadeLayoutChange() { + int oldMaxHeight = getMaxExpansionHeight(); + if (isQsFragmentCreated()) { + updateMinHeight(); + mMaxExpansionHeight = mQs.getDesiredHeight(); + mNotificationStackScrollLayoutController.setMaxTopPadding( + getMaxExpansionHeight()); + } + return oldMaxHeight; + } + + /** Called when Shade view layout changed. Updates QS expansion or + * starts size change animation if height has changed. */ + void handleShadeLayoutChanged(int oldMaxHeight) { + if (mExpanded && mFullyExpanded) { + mExpansionHeight = mMaxExpansionHeight; + if (mExpansionHeightSetToMaxListener != null) { + mExpansionHeightSetToMaxListener.onExpansionHeightSetToMax(true); + } + + // Size has changed, start an animation. + if (getMaxExpansionHeight() != oldMaxHeight) { + startSizeChangeAnimation(oldMaxHeight, + getMaxExpansionHeight()); + } + } else if (!getExpanded() + && !isExpansionAnimating()) { + setExpansionHeight(getMinExpansionHeight() + mLastOverscroll); + } else { + mShadeLog.v("onLayoutChange: qs expansion not set"); + } + } + + private boolean isSizeChangeAnimationRunning() { + return mSizeChangeAnimator != null; + } + + private void startSizeChangeAnimation(int oldHeight, final int newHeight) { + if (mSizeChangeAnimator != null) { + oldHeight = (int) mSizeChangeAnimator.getAnimatedValue(); + mSizeChangeAnimator.cancel(); + } + mSizeChangeAnimator = ValueAnimator.ofInt(oldHeight, newHeight); + mSizeChangeAnimator.setDuration(300); + mSizeChangeAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); + mSizeChangeAnimator.addUpdateListener(animation -> { + if (mExpansionHeightSetToMaxListener != null) { + mExpansionHeightSetToMaxListener.onExpansionHeightSetToMax(true); + } + + int height = (int) mSizeChangeAnimator.getAnimatedValue(); + mQs.setHeightOverride(height); + }); + mSizeChangeAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mSizeChangeAnimator = null; + } + }); + mSizeChangeAnimator.start(); + } + + void setNotificationPanelFullWidth(boolean isFullWidth) { + mIsFullWidth = isFullWidth; + if (mQs != null) { + mQs.setIsNotificationPanelFullWidth(isFullWidth); + } + } + + void setBarState(int barState) { + mBarState = barState; + } + + /** */ + public void setExpansionEnabledPolicy(boolean expansionEnabledPolicy) { + mExpansionEnabledPolicy = expansionEnabledPolicy; + if (mQs != null) { + mQs.setHeaderClickable(isExpansionEnabled()); + } + } + + private void setOverScrolling(boolean overscrolling) { + mStackScrollerOverscrolling = overscrolling; + if (mQs != null) { + mQs.setOverscrolling(overscrolling); + } + } + + /** Sets Qs ScrimEnabled and updates QS state. */ + public void setScrimEnabled(boolean scrimEnabled) { + boolean changed = mScrimEnabled != scrimEnabled; + mScrimEnabled = scrimEnabled; + if (changed) { + updateQsState(); + } + } + + void setCollapsedOnDown(boolean collapsedOnDown) { + mCollapsedOnDown = collapsedOnDown; + } + + void setShadeExpandedHeight(float shadeExpandedHeight) { + mShadeExpandedHeight = shadeExpandedHeight; + } + + @VisibleForTesting + float getShadeExpandedHeight() { + return mShadeExpandedHeight; + } + + @VisibleForTesting + void setExpandImmediate(boolean expandImmediate) { + if (expandImmediate != mExpandImmediate) { + mExpandImmediate = expandImmediate; + mShadeExpansionStateManager.notifyExpandImmediateChange(expandImmediate); + } + } + + void setTwoFingerExpandPossible(boolean expandPossible) { + mTwoFingerExpandPossible = expandPossible; + } + + /** Called when Qs starts expanding */ + private void onExpansionStarted() { + cancelExpansionAnimation(); + // TODO (b/265193930): remove dependency on NPVC + mPanelViewControllerLazy.get().cancelHeightAnimator(); + // end + + // Reset scroll position and apply that position to the expanded height. + float height = mExpansionHeight; + setExpansionHeight(height); + mNotificationStackScrollLayoutController.checkSnoozeLeavebehind(); + + // When expanding QS, let's authenticate the user if possible, + // this will speed up notification actions. + if (height == 0 && !mKeyguardStateController.canDismissLockScreen()) { + mKeyguardUpdateMonitor.requestFaceAuth(FaceAuthApiRequestReason.QS_EXPANDED); + } + } + + void updateQsState() { + boolean qsFullScreen = mExpanded && !mSplitShadeEnabled; + mNotificationStackScrollLayoutController.setQsFullScreen(qsFullScreen); + mNotificationStackScrollLayoutController.setScrollingEnabled( + mBarState != KEYGUARD && (!qsFullScreen || mExpansionFromOverscroll)); + + if (mQsStateUpdateListener != null) { + mQsStateUpdateListener.onQsStateUpdated(mExpanded, mStackScrollerOverscrolling); + } + + if (mQs == null) return; + mQs.setExpanded(mExpanded); + } + + /** update expanded state of QS */ + public void updateExpansion() { + if (mQs == null) return; + final float squishiness; + if ((mExpandImmediate || mExpanded) && !mSplitShadeEnabled) { + squishiness = 1; + } else if (mTransitioningToFullShadeProgress > 0.0f) { + squishiness = mLockscreenShadeTransitionController.getQsSquishTransitionFraction(); + } else { + squishiness = mNotificationStackScrollLayoutController + .getNotificationSquishinessFraction(); + } + final float qsExpansionFraction = computeExpansionFraction(); + final float adjustedExpansionFraction = mSplitShadeEnabled + ? 1f : computeExpansionFraction(); + mQs.setQsExpansion( + adjustedExpansionFraction, + mShadeExpandedFraction, + getHeaderTranslation(), + squishiness + ); + mMediaHierarchyManager.setQsExpansion(qsExpansionFraction); + int qsPanelBottomY = calculateBottomPosition(qsExpansionFraction); + mScrimController.setQsPosition(qsExpansionFraction, qsPanelBottomY); + setClippingBounds(); + + if (mSplitShadeEnabled) { + // In split shade we want to pretend that QS are always collapsed so their behaviour and + // interactions don't influence notifications as they do in portrait. But we want to set + // 0 explicitly in case we're rotating from non-split shade with QS expansion of 1. + mNotificationStackScrollLayoutController.setQsExpansionFraction(0); + } else { + mNotificationStackScrollLayoutController.setQsExpansionFraction(qsExpansionFraction); + } + + mDepthController.setQsPanelExpansion(qsExpansionFraction); + mStatusBarKeyguardViewManager.setQsExpansion(qsExpansionFraction); + + // TODO (b/265193930): remove dependency on NPVC + float shadeExpandedFraction = mBarState == KEYGUARD + ? mPanelViewControllerLazy.get().getLockscreenShadeDragProgress() + : mShadeExpandedFraction; + mLargeScreenShadeHeaderController.setShadeExpandedFraction(shadeExpandedFraction); + mLargeScreenShadeHeaderController.setQsExpandedFraction(qsExpansionFraction); + mLargeScreenShadeHeaderController.setQsVisible(mVisible); + } + + /** */ + public void updateExpansionEnabledAmbient() { + final float scrollRangeToTop = mAmbientState.getTopPadding() - mQuickQsHeaderHeight; + mExpansionEnabledAmbient = mSplitShadeEnabled + || (mAmbientState.getScrollY() <= scrollRangeToTop); + if (mQs != null) { + mQs.setHeaderClickable(isExpansionEnabled()); + } + } + + /** Calculate y value of bottom of QS */ + private int calculateBottomPosition(float qsExpansionFraction) { + if (mTransitioningToFullShadeProgress > 0.0f) { + return mTransitionToFullShadePosition; + } else { + int qsBottomYFrom = (int) getHeaderTranslation() + mQs.getQsMinExpansionHeight(); + int expandedTopMargin = mUseLargeScreenShadeHeader ? mLargeScreenShadeHeaderHeight : 0; + int qsBottomYTo = mQs.getDesiredHeight() + expandedTopMargin; + return (int) MathUtils.lerp(qsBottomYFrom, qsBottomYTo, qsExpansionFraction); + } + } + + /** Calculate fraction of current QS expansion state */ + public float computeExpansionFraction() { + if (mAnimatingHiddenFromCollapsed) { + // When hiding QS from collapsed state, the expansion can sometimes temporarily + // be larger than 0 because of the timing, leading to flickers. + return 0.0f; + } + return Math.min( + 1f, (mExpansionHeight - mMinExpansionHeight) / (mMaxExpansionHeight + - mMinExpansionHeight)); + } + + void updateMinHeight() { + float previousMin = mMinExpansionHeight; + if (mBarState == KEYGUARD || mSplitShadeEnabled) { + mMinExpansionHeight = 0; + } else { + mMinExpansionHeight = mQs.getQsMinExpansionHeight(); + } + if (mExpansionHeight == previousMin) { + mExpansionHeight = mMinExpansionHeight; + } + } + + void updateQsFrameTranslation() { + // TODO (b/265193930): remove dependency on NPVC + mQsFrameTranslateController.translateQsFrame(mQsFrame, mQs, + mPanelViewControllerLazy.get().getNavigationBarBottomHeight() + + mAmbientState.getStackTopMargin()); + } + + /** Called when shade starts expanding. */ + public void onExpandingStarted(boolean qsFullyExpanded) { + mNotificationStackScrollLayoutController.onExpansionStarted(); + mExpandedWhenExpandingStarted = qsFullyExpanded; + mMediaHierarchyManager.setCollapsingShadeFromQS(mExpandedWhenExpandingStarted + /* We also start expanding when flinging closed Qs. Let's exclude that */ + && !mAnimating); + if (mExpanded) { + onExpansionStarted(); + } + // Since there are QS tiles in the header now, we need to make sure we start listening + // immediately so they can be up to date. + if (mQs == null) return; + mQs.setHeaderListening(true); + } + + /** Set animate next notification bounds. */ + private void setAnimateNextNotificationBounds(long duration, long delay) { + mAnimateNextNotificationBounds = true; + mNotificationBoundsAnimationDuration = duration; + mNotificationBoundsAnimationDelay = delay; + } + + /** + * Updates scrim bounds, QS clipping, notifications clipping and keyguard status view clipping + * as well based on the bounds of the shade and QS state. + */ + private void setClippingBounds() { + float qsExpansionFraction = computeExpansionFraction(); + final int qsPanelBottomY = calculateBottomPosition(qsExpansionFraction); + final boolean qsVisible = (qsExpansionFraction > 0 || qsPanelBottomY > 0); + checkCorrectScrimVisibility(qsExpansionFraction); + + int top = calculateTopClippingBound(qsPanelBottomY); + int bottom = calculateBottomClippingBound(top); + int left = calculateLeftClippingBound(); + int right = calculateRightClippingBound(); + // top should never be lower than bottom, otherwise it will be invisible. + top = Math.min(top, bottom); + applyClippingBounds(left, top, right, bottom, qsVisible); + } + + /** + * Applies clipping to quick settings, notifications layout and + * updates bounds of the notifications background (notifications scrim). + * + * The parameters are bounds of the notifications area rectangle, this function + * calculates bounds for the QS clipping based on the notifications bounds. + */ + private void applyClippingBounds(int left, int top, int right, int bottom, + boolean qsVisible) { + if (!mAnimateNextNotificationBounds || mLastClipBounds.isEmpty()) { + if (mClippingAnimator != null) { + // update the end position of the animator + mClippingAnimationEndBounds.set(left, top, right, bottom); + } else { + applyClippingImmediately(left, top, right, bottom, qsVisible); + } + } else { + mClippingAnimationEndBounds.set(left, top, right, bottom); + final int startLeft = mLastClipBounds.left; + final int startTop = mLastClipBounds.top; + final int startRight = mLastClipBounds.right; + final int startBottom = mLastClipBounds.bottom; + if (mClippingAnimator != null) { + mClippingAnimator.cancel(); + } + mClippingAnimator = ValueAnimator.ofFloat(0.0f, 1.0f); + mClippingAnimator.setInterpolator(Interpolators.FAST_OUT_SLOW_IN); + mClippingAnimator.setDuration(mNotificationBoundsAnimationDuration); + mClippingAnimator.setStartDelay(mNotificationBoundsAnimationDelay); + mClippingAnimator.addUpdateListener(animation -> { + float fraction = animation.getAnimatedFraction(); + int animLeft = (int) MathUtils.lerp(startLeft, + mClippingAnimationEndBounds.left, fraction); + int animTop = (int) MathUtils.lerp(startTop, + mClippingAnimationEndBounds.top, fraction); + int animRight = (int) MathUtils.lerp(startRight, + mClippingAnimationEndBounds.right, fraction); + int animBottom = (int) MathUtils.lerp(startBottom, + mClippingAnimationEndBounds.bottom, fraction); + applyClippingImmediately(animLeft, animTop, animRight, animBottom, + qsVisible /* qsVisible */); + }); + mClippingAnimator.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationEnd(Animator animation) { + mClippingAnimator = null; + mIsTranslationResettingAnimator = false; + mIsPulseExpansionResettingAnimator = false; + } + }); + mClippingAnimator.start(); + } + mAnimateNextNotificationBounds = false; + mNotificationBoundsAnimationDelay = 0; + } + + private void applyClippingImmediately(int left, int top, int right, int bottom, + boolean qsVisible) { + int radius = mScrimCornerRadius; + boolean clipStatusView = false; + mLastClipBounds.set(left, top, right, bottom); + if (mIsFullWidth) { + clipStatusView = qsVisible; + float screenCornerRadius = mRecordingController.isRecording() ? 0 : mScreenCornerRadius; + radius = (int) MathUtils.lerp(screenCornerRadius, mScrimCornerRadius, + Math.min(top / (float) mScrimCornerRadius, 1f)); + } + if (isQsFragmentCreated()) { + float qsTranslation = 0; + boolean pulseExpanding = mPulseExpansionHandler.isExpanding(); + if (mTransitioningToFullShadeProgress > 0.0f + || pulseExpanding || (mClippingAnimator != null + && (mIsTranslationResettingAnimator || mIsPulseExpansionResettingAnimator))) { + if (pulseExpanding || mIsPulseExpansionResettingAnimator) { + // qsTranslation should only be positive during pulse expansion because it's + // already translating in from the top + qsTranslation = Math.max(0, (top - getHeaderHeight()) / 2.0f); + } else if (!mSplitShadeEnabled) { + qsTranslation = (top - getHeaderHeight()) * QS_PARALLAX_AMOUNT; + } + } + mTranslationForFullShadeTransition = qsTranslation; + updateQsFrameTranslation(); + float currentTranslation = mQsFrame.getTranslationY(); + int clipTop = mEnableClipping + ? (int) (top - currentTranslation - mQsFrame.getTop()) : 0; + int clipBottom = mEnableClipping + ? (int) (bottom - currentTranslation - mQsFrame.getTop()) : 0; + mVisible = qsVisible; + mQs.setQsVisible(qsVisible); + mQs.setFancyClipping( + clipTop, + clipBottom, + radius, + qsVisible && !mSplitShadeEnabled); + + } + + // Increase the height of the notifications scrim when not in split shade + // (e.g. portrait tablet) so the rounded corners are not visible at the bottom, + // in this case they are rendered off-screen + final int notificationsScrimBottom = mSplitShadeEnabled ? bottom : bottom + radius; + mScrimController.setNotificationsBounds(left, top, right, notificationsScrimBottom); + + if (mApplyClippingImmediatelyListener != null) { + mApplyClippingImmediatelyListener.onQsClippingImmediatelyApplied(clipStatusView, + mLastClipBounds, top, isQsFragmentCreated(), mVisible); + } + + mScrimController.setScrimCornerRadius(radius); + + // Convert global clipping coordinates to local ones, + // relative to NotificationStackScrollLayout + int nsslLeft = calculateNsslLeft(left); + int nsslRight = calculateNsslRight(right); + int nsslTop = getNotificationsClippingTopBounds(top); + int nsslBottom = bottom - mNotificationStackScrollLayoutController.getTop(); + int bottomRadius = mSplitShadeEnabled ? radius : 0; + // TODO (b/265193930): remove dependency on NPVC + int topRadius = mSplitShadeEnabled + && mPanelViewControllerLazy.get().isExpandingFromHeadsUp() ? 0 : radius; + mNotificationStackScrollLayoutController.setRoundedClippingBounds( + nsslLeft, nsslTop, nsslRight, nsslBottom, topRadius, bottomRadius); + } + + void setDisplayInsets(int leftInset, int rightInset) { + mDisplayLeftInset = leftInset; + mDisplayRightInset = rightInset; + } + + private int calculateNsslLeft(int nsslLeftAbsolute) { + int left = nsslLeftAbsolute - mNotificationStackScrollLayoutController.getLeft(); + if (mIsFullWidth) { + return left; + } + return left - mDisplayLeftInset; + } + + private int calculateNsslRight(int nsslRightAbsolute) { + int right = nsslRightAbsolute - mNotificationStackScrollLayoutController.getLeft(); + if (mIsFullWidth) { + return right; + } + return right - mDisplayLeftInset; + } + + private int getNotificationsClippingTopBounds(int qsTop) { + // TODO (b/265193930): remove dependency on NPVC + if (mSplitShadeEnabled && mPanelViewControllerLazy.get().isExpandingFromHeadsUp()) { + // in split shade nssl has extra top margin so clipping at top 0 is not enough, we need + // to set top clipping bound to negative value to allow HUN to go up to the top edge of + // the screen without clipping. + return -mAmbientState.getStackTopMargin(); + } else { + return qsTop - mNotificationStackScrollLayoutController.getTop(); + } + } + + private void checkCorrectScrimVisibility(float expansionFraction) { + // issues with scrims visible on keyguard occur only in split shade + if (mSplitShadeEnabled) { + // TODO (b/265193930): remove dependency on NPVC + boolean keyguardViewsVisible = mBarState == KEYGUARD + && mPanelViewControllerLazy.get().getKeyguardOnlyContentAlpha() == 1; + // expansionFraction == 1 means scrims are fully visible as their size/visibility depend + // on QS expansion + if (expansionFraction == 1 && keyguardViewsVisible) { + Log.wtf(TAG, + "Incorrect state, scrim is visible at the same time when clock is visible"); + } + } + } + + /** Calculate top padding for notifications */ + public float calculateNotificationsTopPadding(boolean isShadeExpanding, + int keyguardNotificationStaticPadding, float expandedFraction) { + boolean keyguardShowing = mBarState == KEYGUARD; + if (mSplitShadeEnabled) { + return keyguardShowing + ? keyguardNotificationStaticPadding : 0; + } + if (keyguardShowing && (isExpandImmediate() + || isShadeExpanding && getExpandedWhenExpandingStarted())) { + + // Either QS pushes the notifications down when fully expanded, or QS is fully above the + // notifications (mostly on tablets). maxNotificationPadding denotes the normal top + // padding on Keyguard, maxQsPadding denotes the top padding from the quick settings + // panel. We need to take the maximum and linearly interpolate with the panel expansion + // for a nice motion. + int maxQsPadding = getMaxExpansionHeight(); + int max = keyguardShowing ? Math.max( + keyguardNotificationStaticPadding, maxQsPadding) : maxQsPadding; + return (int) MathUtils.lerp((float) getMinExpansionHeight(), + (float) max, expandedFraction); + } else if (isSizeChangeAnimationRunning()) { + return Math.max((int) mSizeChangeAnimator.getAnimatedValue(), + keyguardNotificationStaticPadding); + } else if (keyguardShowing) { + // We can only do the smoother transition on Keyguard when we also are not collapsing + // from a scrolled quick settings. + return MathUtils.lerp((float) keyguardNotificationStaticPadding, + (float) (getMaxExpansionHeight()), computeExpansionFraction()); + } else { + return mQsFrameTranslateController.getNotificationsTopPadding( + mExpansionHeight, mNotificationStackScrollLayoutController); + } + } + + /** Calculate height of QS panel */ + public int calculatePanelHeightExpanded(int stackScrollerPadding) { + float + notificationHeight = + mNotificationStackScrollLayoutController.getHeight() + - mNotificationStackScrollLayoutController.getEmptyBottomMargin() + - mNotificationStackScrollLayoutController.getTopPadding(); + + // When only empty shade view is visible in QS collapsed state, simulate that we would have + // it in expanded QS state as well so we don't run into troubles when fading the view in/out + // and expanding/collapsing the whole panel from/to quick settings. + if (mNotificationStackScrollLayoutController.getNotGoneChildCount() == 0 + && mNotificationStackScrollLayoutController.isShowingEmptyShadeView()) { + notificationHeight = mNotificationStackScrollLayoutController.getEmptyShadeViewHeight(); + } + int maxQsHeight = mMaxExpansionHeight; + + // If an animation is changing the size of the QS panel, take the animated value. + if (mSizeChangeAnimator != null) { + maxQsHeight = (int) mSizeChangeAnimator.getAnimatedValue(); + } + float totalHeight = Math.max(maxQsHeight, mBarState == KEYGUARD ? stackScrollerPadding : 0) + + notificationHeight + + mNotificationStackScrollLayoutController.getTopPaddingOverflow(); + if (totalHeight > mNotificationStackScrollLayoutController.getHeight()) { + float + fullyCollapsedHeight = + maxQsHeight + mNotificationStackScrollLayoutController.getLayoutMinHeight(); + totalHeight = Math.max(fullyCollapsedHeight, + mNotificationStackScrollLayoutController.getHeight()); + } + return (int) totalHeight; + } + + private float getEdgePosition() { + // TODO: replace StackY with unified calculation + return Math.max(mQuickQsHeaderHeight * mAmbientState.getExpansionFraction(), + mAmbientState.getStackY() + // need to adjust for extra margin introduced by large screen shade header + + mAmbientState.getStackTopMargin() * mAmbientState.getExpansionFraction() + - mAmbientState.getScrollY()); + } + + private int calculateTopClippingBound(int qsPanelBottomY) { + int top; + if (mSplitShadeEnabled) { + top = Math.min(qsPanelBottomY, mLargeScreenShadeHeaderHeight); + } else { + if (mTransitioningToFullShadeProgress > 0.0f) { + // If we're transitioning, let's use the actual value. The else case + // can be wrong during transitions when waiting for the keyguard to unlock + top = mTransitionToFullShadePosition; + } else { + final float notificationTop = getEdgePosition(); + if (mBarState == KEYGUARD) { + if (mKeyguardBypassController.getBypassEnabled()) { + // When bypassing on the keyguard, let's use the panel bottom. + // this should go away once we unify the stackY position and don't have + // to do this min anymore below. + top = qsPanelBottomY; + } else { + top = (int) Math.min(qsPanelBottomY, notificationTop); + } + } else { + top = (int) notificationTop; + } + } + // TODO (b/265193930): remove dependency on NPVC + top += mPanelViewControllerLazy.get().getOverStretchAmount(); + // Correction for instant expansion caused by HUN pull down/ + float minFraction = mPanelViewControllerLazy.get().getMinFraction(); + if (minFraction > 0f && minFraction < 1f) { + float realFraction = (mShadeExpandedFraction + - minFraction) / (1f - minFraction); + top *= MathUtils.saturate(realFraction / minFraction); + } + } + return top; + } + + private int calculateBottomClippingBound(int top) { + if (mSplitShadeEnabled) { + return top + mNotificationStackScrollLayoutController.getHeight() + + mSplitShadeNotificationsScrimMarginBottom; + } else { + return mPanelView.getBottom(); + } + } + + private int calculateLeftClippingBound() { + if (mIsFullWidth) { + // left bounds can ignore insets, it should always reach the edge of the screen + return 0; + } else { + return mNotificationStackScrollLayoutController.getLeft() + + mDisplayLeftInset; + } + } + + private int calculateRightClippingBound() { + if (mIsFullWidth) { + return mPanelView.getRight() + + mDisplayRightInset; + } else { + return mNotificationStackScrollLayoutController.getRight() + + mDisplayLeftInset; + } + } + + private void trackMovement(MotionEvent event) { + if (mQsVelocityTracker != null) mQsVelocityTracker.addMovement(event); + } + + private void initVelocityTracker() { + if (mQsVelocityTracker != null) { + mQsVelocityTracker.recycle(); + } + mQsVelocityTracker = VelocityTracker.obtain(); + } + + private float getCurrentVelocity() { + if (mQsVelocityTracker == null) { + return 0; + } + mQsVelocityTracker.computeCurrentVelocity(1000); + return mQsVelocityTracker.getYVelocity(); + } + + boolean updateAndGetTouchAboveFalsingThreshold() { + mTouchAboveFalsingThreshold = mFullyExpanded; + return mTouchAboveFalsingThreshold; + } + + private void onHeightChanged() { + mMaxExpansionHeight = isQsFragmentCreated() ? mQs.getDesiredHeight() : 0; + if (mExpanded && mFullyExpanded) { + mExpansionHeight = mMaxExpansionHeight; + if (mExpansionHeightSetToMaxListener != null) { + mExpansionHeightSetToMaxListener.onExpansionHeightSetToMax(true); + } + } + if (mAccessibilityManager.isEnabled()) { + // TODO (b/265193930): remove dependency on NPVC + mPanelView.setAccessibilityPaneTitle( + mPanelViewControllerLazy.get().determineAccessibilityPaneTitle()); + } + mNotificationStackScrollLayoutController.setMaxTopPadding(mMaxExpansionHeight); + } + + private void collapseOrExpandQs() { + onExpansionStarted(); + if (getExpanded()) { + flingQs(0, FLING_COLLAPSE, null, true); + } else if (isExpansionEnabled()) { + mLockscreenGestureLogger.write(MetricsProto.MetricsEvent.ACTION_SHADE_QS_TAP, 0, 0); + flingQs(0, FLING_EXPAND, null, true); + } + } + + private void onScroll(int scrollY) { + mLargeScreenShadeHeaderController.setQsScrollY(scrollY); + if (scrollY > 0 && !mFullyExpanded) { + // TODO (b/265193930): remove dependency on NPVC + // If we are scrolling QS, we should be fully expanded. + mPanelViewControllerLazy.get().expandWithQs(); + } + } + + @VisibleForTesting + boolean isTrackingBlocked() { + return mConflictingExpansionGesture && getExpanded(); + } + + boolean isExpansionAnimating() { + return mExpansionAnimator != null; + } + + @VisibleForTesting + boolean isConflictingExpansionGesture() { + return mConflictingExpansionGesture; + } + + /** handles touches in Qs panel area */ + public boolean handleTouch(MotionEvent event, boolean isFullyCollapsed, + boolean isShadeOrQsHeightAnimationRunning) { + if (isSplitShadeAndTouchXOutsideQs(event.getX())) { + return false; + } + final int action = event.getActionMasked(); + boolean collapsedQs = !getExpanded() && !mSplitShadeEnabled; + boolean expandedShadeCollapsedQs = mShadeExpandedFraction == 1f + && mBarState != KEYGUARD && collapsedQs && isExpansionEnabled(); + if (action == MotionEvent.ACTION_DOWN && expandedShadeCollapsedQs) { + // Down in the empty area while fully expanded - go to QS. + mShadeLog.logMotionEvent(event, "handleQsTouch: down action, QS tracking enabled"); + mTracking = true; + traceQsJank(true, false); + mConflictingExpansionGesture = true; + onExpansionStarted(); + mInitialHeightOnTouch = mExpansionHeight; + mInitialTouchY = event.getY(); + mInitialTouchX = event.getX(); + } + if (!isFullyCollapsed && !isShadeOrQsHeightAnimationRunning) { + handleDown(event); + } + // defer touches on QQS to shade while shade is collapsing. Added margin for error + // as sometimes the qsExpansionFraction can be a tiny value instead of 0 when in QQS. + if (!mSplitShadeEnabled && !mLastShadeFlingWasExpanding + && computeExpansionFraction() <= 0.01 && mShadeExpandedFraction < 1.0) { + mShadeLog.logMotionEvent(event, + "handleQsTouch: shade touched while shade collapsing, QS tracking disabled"); + mTracking = false; + } + if (!isExpandImmediate() && mTracking) { + onTouch(event); + if (!mConflictingExpansionGesture && !mSplitShadeEnabled) { + mShadeLog.logMotionEvent(event, + "handleQsTouch: not immediate expand or conflicting gesture"); + return true; + } + } + if (action == MotionEvent.ACTION_CANCEL || action == MotionEvent.ACTION_UP) { + mConflictingExpansionGesture = false; + } + if (action == MotionEvent.ACTION_DOWN && isFullyCollapsed && isExpansionEnabled()) { + mTwoFingerExpandPossible = true; + } + if (mTwoFingerExpandPossible && isOpenQsEvent(event) + && event.getY(event.getActionIndex()) + < mStatusBarMinHeight) { + mMetricsLogger.count(COUNTER_PANEL_OPEN_QS, 1); + setExpandImmediate(true); + mNotificationStackScrollLayoutController.setShouldShowShelfOnly(!mSplitShadeEnabled); + if (mExpansionHeightSetToMaxListener != null) { + mExpansionHeightSetToMaxListener.onExpansionHeightSetToMax(false); + } + + // Normally, we start listening when the panel is expanded, but here we need to start + // earlier so the state is already up to date when dragging down. + setListening(true); + } + return false; + } + + private void handleDown(MotionEvent event) { + if (event.getActionMasked() == MotionEvent.ACTION_DOWN + && shouldQuickSettingsIntercept(event.getX(), event.getY(), -1)) { + mFalsingCollector.onQsDown(); + mShadeLog.logMotionEvent(event, "handleQsDown: down action, QS tracking enabled"); + mTracking = true; + onExpansionStarted(); + mInitialHeightOnTouch = mExpansionHeight; + mInitialTouchY = event.getY(); + mInitialTouchX = event.getX(); + // TODO (b/265193930): remove dependency on NPVC + // If we interrupt an expansion gesture here, make sure to update the state correctly. + mPanelViewControllerLazy.get().notifyExpandingFinished(); + } + } + + private void onTouch(MotionEvent event) { + int pointerIndex = event.findPointerIndex(mTrackingPointer); + if (pointerIndex < 0) { + pointerIndex = 0; + mTrackingPointer = event.getPointerId(pointerIndex); + } + final float y = event.getY(pointerIndex); + final float x = event.getX(pointerIndex); + final float h = y - mInitialTouchY; + + switch (event.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + mShadeLog.logMotionEvent(event, "onQsTouch: down action, QS tracking enabled"); + mTracking = true; + traceQsJank(true, false); + mInitialTouchY = y; + mInitialTouchX = x; + onExpansionStarted(); + mInitialHeightOnTouch = mExpansionHeight; + initVelocityTracker(); + trackMovement(event); + break; + + case MotionEvent.ACTION_POINTER_UP: + final int upPointer = event.getPointerId(event.getActionIndex()); + if (mTrackingPointer == upPointer) { + // gesture is ongoing, find a new pointer to track + final int newIndex = event.getPointerId(0) != upPointer ? 0 : 1; + final float newY = event.getY(newIndex); + final float newX = event.getX(newIndex); + mTrackingPointer = event.getPointerId(newIndex); + mInitialHeightOnTouch = mExpansionHeight; + mInitialTouchY = newY; + mInitialTouchX = newX; + } + break; + + case MotionEvent.ACTION_MOVE: + mShadeLog.logMotionEvent(event, "onQsTouch: move action, setting QS expansion"); + setExpansionHeight(h + mInitialHeightOnTouch); + // TODO (b/265193930): remove dependency on NPVC + if (h >= mPanelViewControllerLazy.get().getFalsingThreshold()) { + mTouchAboveFalsingThreshold = true; + } + trackMovement(event); + break; + + case MotionEvent.ACTION_UP: + case MotionEvent.ACTION_CANCEL: + mShadeLog.logMotionEvent(event, + "onQsTouch: up/cancel action, QS tracking disabled"); + mTracking = false; + mTrackingPointer = -1; + trackMovement(event); + float fraction = computeExpansionFraction(); + if (fraction != 0f || y >= mInitialTouchY) { + flingQsWithCurrentVelocity(y, + event.getActionMasked() == MotionEvent.ACTION_CANCEL); + } else { + traceQsJank(false, + event.getActionMasked() == MotionEvent.ACTION_CANCEL); + } + if (mQsVelocityTracker != null) { + mQsVelocityTracker.recycle(); + mQsVelocityTracker = null; + } + break; + } + } + + /** intercepts touches on Qs panel area. */ + public boolean onIntercept(MotionEvent event) { + int pointerIndex = event.findPointerIndex(mTrackingPointer); + if (pointerIndex < 0) { + pointerIndex = 0; + mTrackingPointer = event.getPointerId(pointerIndex); + } + final float x = event.getX(pointerIndex); + final float y = event.getY(pointerIndex); + + switch (event.getActionMasked()) { + case MotionEvent.ACTION_DOWN: + mInitialTouchY = y; + mInitialTouchX = x; + initVelocityTracker(); + trackMovement(event); + float qsExpansionFraction = computeExpansionFraction(); + // Intercept the touch if QS is between fully collapsed and fully expanded state + if (!mSplitShadeEnabled + && qsExpansionFraction > 0.0 && qsExpansionFraction < 1.0) { + mShadeLog.logMotionEvent(event, + "onQsIntercept: down action, QS partially expanded/collapsed"); + return true; + } + // TODO (b/265193930): remove dependency on NPVC + if (mPanelViewControllerLazy.get().getKeyguardShowing() + && shouldQuickSettingsIntercept(mInitialTouchX, mInitialTouchY, 0)) { + // Dragging down on the lockscreen statusbar should prohibit other interactions + // immediately, otherwise we'll wait on the touchslop. This is to allow + // dragging down to expanded quick settings directly on the lockscreen. + mPanelView.getParent().requestDisallowInterceptTouchEvent(true); + } + if (mExpansionAnimator != null) { + mInitialHeightOnTouch = mExpansionHeight; + mShadeLog.logMotionEvent(event, + "onQsIntercept: down action, QS tracking enabled"); + mTracking = true; + traceQsJank(true, false); + mNotificationStackScrollLayoutController.cancelLongPress(); + } + break; + case MotionEvent.ACTION_POINTER_UP: + final int upPointer = event.getPointerId(event.getActionIndex()); + if (mTrackingPointer == upPointer) { + // gesture is ongoing, find a new pointer to track + final int newIndex = event.getPointerId(0) != upPointer ? 0 : 1; + mTrackingPointer = event.getPointerId(newIndex); + mInitialTouchX = event.getX(newIndex); + mInitialTouchY = event.getY(newIndex); + } + break; + + case MotionEvent.ACTION_MOVE: + final float h = y - mInitialTouchY; + trackMovement(event); + if (mTracking) { + + // Already tracking because onOverscrolled was called. We need to update here + // so we don't stop for a frame until the next touch event gets handled in + // onTouchEvent. + setExpansionHeight(h + mInitialHeightOnTouch); + trackMovement(event); + return true; + } else { + mShadeLog.logMotionEvent(event, + "onQsIntercept: move ignored because qs tracking disabled"); + } + // TODO (b/265193930): remove dependency on NPVC + float touchSlop = event.getClassification() + == MotionEvent.CLASSIFICATION_AMBIGUOUS_GESTURE + ? mTouchSlop * mSlopMultiplier + : mTouchSlop; + if ((h > touchSlop || (h < -touchSlop && getExpanded())) + && Math.abs(h) > Math.abs(x - mInitialTouchX) + && shouldQuickSettingsIntercept( + mInitialTouchX, mInitialTouchY, h)) { + mPanelView.getParent().requestDisallowInterceptTouchEvent(true); + mShadeLog.onQsInterceptMoveQsTrackingEnabled(h); + mTracking = true; + traceQsJank(true, false); + onExpansionStarted(); + mPanelViewControllerLazy.get().notifyExpandingFinished(); + mInitialHeightOnTouch = mExpansionHeight; + mInitialTouchY = y; + mInitialTouchX = x; + mNotificationStackScrollLayoutController.cancelLongPress(); + return true; + } else { + mShadeLog.logQsTrackingNotStarted(mInitialTouchY, y, h, touchSlop, + getExpanded(), mPanelViewControllerLazy.get().getKeyguardShowing(), + isExpansionEnabled()); + } + break; + + case MotionEvent.ACTION_CANCEL: + case MotionEvent.ACTION_UP: + trackMovement(event); + mShadeLog.logMotionEvent(event, "onQsIntercept: up action, QS tracking disabled"); + mTracking = false; + break; + } + return false; + } + + private void onPanelExpansionChanged(ShadeExpansionChangeEvent event) { + mShadeExpandedFraction = event.getFraction(); + } + + /** + * Animate QS closing by flinging it. + * If QS is expanded, it will collapse into QQS and stop. + * If in split shade, it will collapse the whole shade. + * + * @param animateAway Do not stop when QS becomes QQS. Fling until QS isn't visible anymore. + */ + public void animateCloseQs(boolean animateAway) { + if (mExpansionAnimator != null) { + if (!mAnimatorExpand) { + return; + } + float height = mExpansionHeight; + mExpansionAnimator.cancel(); + setExpansionHeight(height); + } + flingQs(0 /* vel */, animateAway ? FLING_HIDE : FLING_COLLAPSE); + } + + private void cancelExpansionAnimation() { + if (mExpansionAnimator != null) { + mExpansionAnimator.cancel(); + } + } + + /** @see #flingQs(float, int, Runnable, boolean) */ + public void flingQs(float vel, int type) { + flingQs(vel, type, null /* onFinishRunnable */, false /* isClick */); + } + + /** + * Animates QS or QQS as if the user had swiped up or down. + * + * @param vel Finger velocity or 0 when not initiated by touch events. + * @param type Either FLING_EXPAND, FLING_COLLAPSE or FLING_HIDE. + * @param onFinishRunnable Runnable to be executed at the end of animation. + * @param isClick If originated by click (different interpolator and duration.) + */ + private void flingQs(float vel, int type, final Runnable onFinishRunnable, + boolean isClick) { + float target; + switch (type) { + case FLING_EXPAND: + target = getMaxExpansionHeight(); + break; + case FLING_COLLAPSE: + target = getMinExpansionHeight(); + break; + case FLING_HIDE: + default: + if (isQsFragmentCreated()) { + mQs.closeDetail(); + } + target = 0; + } + if (target == mExpansionHeight) { + if (onFinishRunnable != null) { + onFinishRunnable.run(); + } + traceQsJank(false, type != FLING_EXPAND); + return; + } + + // If we move in the opposite direction, reset velocity and use a different duration. + boolean oppositeDirection = false; + boolean expanding = type == FLING_EXPAND; + if (vel > 0 && !expanding || vel < 0 && expanding) { + vel = 0; + oppositeDirection = true; + } + ValueAnimator animator = ValueAnimator.ofFloat( + mExpansionHeight, target); + if (isClick) { + animator.setInterpolator(Interpolators.TOUCH_RESPONSE); + animator.setDuration(368); + } else { + if (mFlingQsWithoutClickListener != null) { + mFlingQsWithoutClickListener.onFlingQsWithoutClick(animator, mExpansionHeight, + target, vel); + } + } + if (oppositeDirection) { + animator.setDuration(350); + } + animator.addUpdateListener( + animation -> setExpansionHeight((Float) animation.getAnimatedValue())); + animator.addListener(new AnimatorListenerAdapter() { + private boolean mIsCanceled; + + @Override + public void onAnimationStart(Animator animation) { + mPanelViewControllerLazy.get().notifyExpandingStarted(); + } + + @Override + public void onAnimationCancel(Animator animation) { + mIsCanceled = true; + } + + @Override + public void onAnimationEnd(Animator animation) { + mAnimatingHiddenFromCollapsed = false; + mAnimating = false; + mPanelViewControllerLazy.get().notifyExpandingFinished(); + mNotificationStackScrollLayoutController.resetCheckSnoozeLeavebehind(); + mExpansionAnimator = null; + if (onFinishRunnable != null) { + onFinishRunnable.run(); + } + traceQsJank(false, mIsCanceled); + } + }); + // Let's note that we're animating QS. Moving the animator here will cancel it immediately, + // so we need a separate flag. + mAnimating = true; + animator.start(); + mExpansionAnimator = animator; + mAnimatorExpand = expanding; + mAnimatingHiddenFromCollapsed = + computeExpansionFraction() == 0.0f && target == 0; + } + + private void flingQsWithCurrentVelocity(float y, boolean isCancelMotionEvent) { + float vel = getCurrentVelocity(); + // TODO (b/265193930): remove dependency on NPVC + boolean expandsQs = mPanelViewControllerLazy.get().flingExpandsQs(vel); + if (expandsQs) { + if (mFalsingManager.isUnlockingDisabled() || isQsFalseTouch()) { + expandsQs = false; + } else { + logQsSwipeDown(y); + } + } else if (vel < 0) { + mFalsingManager.isFalseTouch(QS_COLLAPSE); + } + + int flingType; + if (expandsQs && !isCancelMotionEvent) { + flingType = FLING_EXPAND; + } else if (mSplitShadeEnabled) { + flingType = FLING_HIDE; + } else { + flingType = FLING_COLLAPSE; + } + flingQs(vel, flingType); + } + + private void logQsSwipeDown(float y) { + float vel = getCurrentVelocity(); + final int gesture = mBarState == KEYGUARD ? MetricsProto.MetricsEvent.ACTION_LS_QS + : MetricsProto.MetricsEvent.ACTION_SHADE_QS_PULL; + // TODO (b/265193930): remove dependency on NPVC + float displayDensity = mPanelViewControllerLazy.get().getDisplayDensity(); + mLockscreenGestureLogger.write(gesture, + (int) ((y - getInitialTouchY()) / displayDensity), (int) (vel / displayDensity)); + } + + /** */ + public FragmentHostManager.FragmentListener getQsFragmentListener() { + return new QsFragmentListener(); + } + + /** */ + public final class QsFragmentListener implements FragmentHostManager.FragmentListener { + /** */ + @Override + public void onFragmentViewCreated(String tag, Fragment fragment) { + mQs = (QS) fragment; + mQs.setPanelView(mQsHeightListener); + mQs.setCollapseExpandAction(mQsCollapseExpandAction); + mQs.setHeaderClickable(isExpansionEnabled()); + mQs.setOverscrolling(mStackScrollerOverscrolling); + mQs.setInSplitShade(mSplitShadeEnabled); + mQs.setIsNotificationPanelFullWidth(mIsFullWidth); + + // recompute internal state when qspanel height changes + mQs.getView().addOnLayoutChangeListener( + (v, left, top, right, bottom, oldLeft, oldTop, oldRight, oldBottom) -> { + final int height = bottom - top; + final int oldHeight = oldBottom - oldTop; + if (height != oldHeight) { + onHeightChanged(); + } + }); + mQs.setCollapsedMediaVisibilityChangedListener((visible) -> { + if (mQs.getHeader().isShown()) { + setAnimateNextNotificationBounds( + StackStateAnimator.ANIMATION_DURATION_STANDARD, 0); + mNotificationStackScrollLayoutController.animateNextTopPaddingChange(); + } + }); + mLockscreenShadeTransitionController.setQS(mQs); + mShadeTransitionController.setQs(mQs); + mNotificationStackScrollLayoutController.setQsHeader((ViewGroup) mQs.getHeader()); + mQs.setScrollListener(mQsScrollListener); + updateExpansion(); + } + + /** */ + @Override + public void onFragmentViewDestroyed(String tag, Fragment fragment) { + // Manual handling of fragment lifecycle is only required because this bridges + // non-fragment and fragment code. Once we are using a fragment for the notification + // panel, mQs will not need to be null cause it will be tied to the same lifecycle. + if (fragment == mQs) { + mQs = null; + } + } + } + + private final class LockscreenShadeTransitionCallback + implements LockscreenShadeTransitionController.Callback { + /** Called when pulse expansion has finished and this is going to the full shade. */ + @Override + public void onPulseExpansionFinished() { + setAnimateNextNotificationBounds( + StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE, 0); + mIsPulseExpansionResettingAnimator = true; + } + + @Override + public void setTransitionToFullShadeAmount(float pxAmount, boolean animate, long delay) { + if (animate && mIsFullWidth) { + setAnimateNextNotificationBounds( + StackStateAnimator.ANIMATION_DURATION_GO_TO_FULL_SHADE, delay); + mIsTranslationResettingAnimator = mTranslationForFullShadeTransition > 0.0f; + } + float endPosition = 0; + if (pxAmount > 0.0f) { + if (mSplitShadeEnabled) { + float qsHeight = MathUtils.lerp(getMinExpansionHeight(), + getMaxExpansionHeight(), + mLockscreenShadeTransitionController.getQSDragProgress()); + setExpansionHeight(qsHeight); + } + if (mNotificationStackScrollLayoutController.getVisibleNotificationCount() == 0 + && !mMediaDataManager.hasActiveMediaOrRecommendation()) { + // No notifications are visible, let's animate to the height of qs instead + if (isQsFragmentCreated()) { + // Let's interpolate to the header height instead of the top padding, + // because the toppadding is way too low because of the large clock. + // we still want to take into account the edgePosition though as that nicely + // overshoots in the stackscroller + endPosition = getEdgePosition() + - mNotificationStackScrollLayoutController.getTopPadding() + + getHeaderHeight(); + } + } else { + // Interpolating to the new bottom edge position! + endPosition = getEdgePosition() + mNotificationStackScrollLayoutController + .getFullShadeTransitionInset(); + if (mBarState == KEYGUARD) { + endPosition -= mLockscreenNotificationPadding; + } + } + } + + // Calculate the overshoot amount such that we're reaching the target after our desired + // distance, but only reach it fully once we drag a full shade length. + mTransitioningToFullShadeProgress = Interpolators.FAST_OUT_SLOW_IN.getInterpolation( + MathUtils.saturate(pxAmount / mDistanceForFullShadeTransition)); + + int position = (int) MathUtils.lerp((float) 0, endPosition, + mTransitioningToFullShadeProgress); + if (mTransitioningToFullShadeProgress > 0.0f) { + // we want at least 1 pixel otherwise the panel won't be clipped + position = Math.max(1, position); + } + mTransitionToFullShadePosition = position; + updateExpansion(); + } + } + + private final class NsslOverscrollTopChangedListener implements + NotificationStackScrollLayout.OnOverscrollTopChangedListener { + @Override + public void onOverscrollTopChanged(float amount, boolean isRubberbanded) { + // When in split shade, overscroll shouldn't carry through to QS + if (mSplitShadeEnabled) { + return; + } + cancelExpansionAnimation(); + if (!isExpansionEnabled()) { + amount = 0f; + } + float rounded = amount >= 1f ? amount : 0f; + setOverScrolling(rounded != 0f && isRubberbanded); + mExpansionFromOverscroll = rounded != 0f; + mLastOverscroll = rounded; + updateQsState(); + setExpansionHeight(getMinExpansionHeight() + rounded); + } + + @Override + public void flingTopOverscroll(float velocity, boolean open) { + // in split shade mode we want to expand/collapse QS only when touch happens within QS + if (isSplitShadeAndTouchXOutsideQs(mInitialTouchX)) { + return; + } + mLastOverscroll = 0f; + mExpansionFromOverscroll = false; + if (open) { + // During overscrolling, qsExpansion doesn't actually change that the qs is + // becoming expanded. Any layout could therefore reset the position again. Let's + // make sure we can expand + setOverScrolling(false); + } + setExpansionHeight(getExpansionHeight()); + boolean canExpand = isExpansionEnabled(); + flingQs(!canExpand && open ? 0f : velocity, + open && canExpand ? FLING_EXPAND : FLING_COLLAPSE, () -> { + setOverScrolling(false); + updateQsState(); + }, false); + } + } + + void beginJankMonitoring(boolean isFullyCollapsed) { + if (mInteractionJankMonitor == null) { + return; + } + // TODO (b/265193930): remove dependency on NPVC + InteractionJankMonitor.Configuration.Builder builder = + InteractionJankMonitor.Configuration.Builder.withView( + InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE, + mPanelView).setTag(isFullyCollapsed ? "Expand" : "Collapse"); + mInteractionJankMonitor.begin(builder); + } + + void endJankMonitoring() { + if (mInteractionJankMonitor == null) { + return; + } + InteractionJankMonitor.getInstance().end( + InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + } + + void cancelJankMonitoring() { + if (mInteractionJankMonitor == null) { + return; + } + InteractionJankMonitor.getInstance().cancel( + InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_EXPAND_COLLAPSE); + } + + void traceQsJank(boolean startTracing, boolean wasCancelled) { + if (mInteractionJankMonitor == null) { + return; + } + if (startTracing) { + mInteractionJankMonitor.begin(mPanelView, CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); + } else { + if (wasCancelled) { + mInteractionJankMonitor.cancel(CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); + } else { + mInteractionJankMonitor.end(CUJ_NOTIFICATION_SHADE_QS_EXPAND_COLLAPSE); + } + } + } + + interface ExpansionHeightSetToMaxListener { + void onExpansionHeightSetToMax(boolean requestPaddingUpdate); + } + + interface ExpansionHeightListener { + void onQsSetExpansionHeightCalled(boolean qsFullyExpanded); + } + + interface QsStateUpdateListener { + void onQsStateUpdated(boolean qsExpanded, boolean isStackScrollerOverscrolling); + } + + interface ApplyClippingImmediatelyListener { + void onQsClippingImmediatelyApplied(boolean clipStatusView, Rect lastQsClipBounds, + int top, boolean qsFragmentCreated, boolean qsVisible); + } + + interface FlingQsWithoutClickListener { + void onFlingQsWithoutClick(ValueAnimator animator, float qsExpansionHeight, + float target, float vel); + } +} diff --git a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt index 26c839de08a1..b28509e8fbf5 100644 --- a/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt +++ b/packages/SystemUI/src/com/android/systemui/shade/ShadeLogger.kt @@ -50,7 +50,6 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) { h: Float, touchSlop: Float, qsExpanded: Boolean, - collapsedOnDown: Boolean, keyguardShowing: Boolean, qsExpansionEnabled: Boolean ) { @@ -63,13 +62,12 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) { long1 = h.toLong() double1 = touchSlop.toDouble() bool1 = qsExpanded - bool2 = collapsedOnDown - bool3 = keyguardShowing - bool4 = qsExpansionEnabled + bool2 = keyguardShowing + bool3 = qsExpansionEnabled }, { "QsTrackingNotStarted: initTouchY=$int1,y=$int2,h=$long1,slop=$double1,qsExpanded" + - "=$bool1,collapsedDown=$bool2,keyguardShowing=$bool3,qsExpansion=$bool4" + "=$bool1,keyguardShowing=$bool2,qsExpansion=$bool3" } ) } @@ -158,7 +156,6 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) { qsMinExpansionHeight: Int, qsMaxExpansionHeight: Int, stackScrollerOverscrolling: Boolean, - dozing: Boolean, qsAnimatorExpand: Boolean, animatingQs: Boolean ) { @@ -171,14 +168,13 @@ class ShadeLogger @Inject constructor(@ShadeLog private val buffer: LogBuffer) { int1 = qsMinExpansionHeight int2 = qsMaxExpansionHeight bool2 = stackScrollerOverscrolling - bool3 = dozing - bool4 = qsAnimatorExpand + bool3 = qsAnimatorExpand // 0 = false, 1 = true long1 = animatingQs.compareTo(false).toLong() }, { "$str1 qsExpanded=$bool1,qsMinExpansionHeight=$int1,qsMaxExpansionHeight=$int2," + - "stackScrollerOverscrolling=$bool2,dozing=$bool3,qsAnimatorExpand=$bool4," + + "stackScrollerOverscrolling=$bool2,qsAnimatorExpand=$bool3," + "animatingQs=$long1" } ) diff --git a/packages/SystemUI/src/com/android/systemui/smartspace/dagger/SmartspaceViewComponent.kt b/packages/SystemUI/src/com/android/systemui/smartspace/dagger/SmartspaceViewComponent.kt index 236ba1f92d1f..5736a5cdc05a 100644 --- a/packages/SystemUI/src/com/android/systemui/smartspace/dagger/SmartspaceViewComponent.kt +++ b/packages/SystemUI/src/com/android/systemui/smartspace/dagger/SmartspaceViewComponent.kt @@ -21,6 +21,7 @@ import android.view.View import android.view.ViewGroup import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.BcSmartspaceDataPlugin +import com.android.systemui.plugins.BcSmartspaceDataPlugin.UI_SURFACE_DREAM import com.android.systemui.plugins.FalsingManager import com.android.systemui.smartspace.dagger.SmartspaceViewComponent.SmartspaceViewModule.PLUGIN import dagger.BindsInstance @@ -57,7 +58,7 @@ interface SmartspaceViewComponent { BcSmartspaceDataPlugin.SmartspaceView { val ssView = plugin.getView(parent) // Currently, this is only used to provide SmartspaceView on Dream surface. - ssView.setIsDreaming(true) + ssView.setUiSurface(UI_SURFACE_DREAM) ssView.registerDataProvider(plugin) ssView.setIntentStarter(object : BcSmartspaceDataPlugin.IntentStarter { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt index afa60fbe70ab..f0d064b42d9c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/LockscreenShadeTransitionController.kt @@ -187,6 +187,8 @@ class LockscreenShadeTransitionController @Inject constructor( private val qsTransitionController = qsTransitionControllerFactory.create { qS } + private val callbacks = mutableListOf<Callback>() + /** See [LockscreenShadeQsTransitionController.qsTransitionFraction].*/ @get:FloatRange(from = 0.0, to = 1.0) val qSDragProgress: Float @@ -319,8 +321,8 @@ class LockscreenShadeTransitionController @Inject constructor( true /* drag down is always an open */) } notificationPanelController.animateToFullShade(delay) - notificationPanelController.setTransitionToFullShadeAmount(0f, - true /* animated */, delay) + callbacks.forEach { it.setTransitionToFullShadeAmount(0f, + true /* animated */, delay) } // Let's reset ourselves, ready for the next animation @@ -424,8 +426,8 @@ class LockscreenShadeTransitionController @Inject constructor( qsTransitionController.dragDownAmount = value - notificationPanelController.setTransitionToFullShadeAmount(field, - false /* animate */, 0 /* delay */) + callbacks.forEach { it.setTransitionToFullShadeAmount(field, + false /* animate */, 0 /* delay */) } mediaHierarchyManager.setTransitionToFullShadeAmount(field) scrimTransitionController.dragDownAmount = value @@ -688,7 +690,7 @@ class LockscreenShadeTransitionController @Inject constructor( if (cancelled) { setPulseHeight(0f, animate = true) } else { - notificationPanelController.onPulseExpansionFinished() + callbacks.forEach { it.onPulseExpansionFinished() } setPulseHeight(0f, animate = false) } } @@ -720,6 +722,27 @@ class LockscreenShadeTransitionController @Inject constructor( "${animationHandlerOnKeyguardDismiss != null}") } } + + + fun addCallback(callback: Callback) { + if (!callbacks.contains(callback)) { + callbacks.add(callback) + } + } + + /** + * Callback for authentication events. + */ + interface Callback { + /** TODO: comment here */ + fun onPulseExpansionFinished() {} + + /** + * Sets the amount of pixels we have currently dragged down if we're transitioning + * to the full shade. 0.0f means we're not transitioning yet. + */ + fun setTransitionToFullShadeAmount(pxAmount: Float, animate: Boolean, delay: Long) {} + } } /** diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java index df35c9e6832a..aa9a6c2c4cc6 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java @@ -164,6 +164,11 @@ public class NotifCollection implements Dumpable, PipelineDumpable { private Queue<NotifEvent> mEventQueue = new ArrayDeque<>(); + private final Runnable mRebuildListRunnable = () -> { + if (mBuildListener != null) { + mBuildListener.onBuildList(mReadOnlyNotificationSet, "asynchronousUpdate"); + } + }; private boolean mAttached = false; private boolean mAmDispatchingToOtherCode; @@ -458,7 +463,7 @@ public class NotifCollection implements Dumpable, PipelineDumpable { int modificationType) { Assert.isMainThread(); mEventQueue.add(new ChannelChangedEvent(pkgName, user, channel, modificationType)); - dispatchEventsAndRebuildList("onNotificationChannelModified"); + dispatchEventsAndAsynchronouslyRebuildList(); } private void onNotificationsInitialized() { @@ -613,15 +618,39 @@ public class NotifCollection implements Dumpable, PipelineDumpable { private void dispatchEventsAndRebuildList(String reason) { Trace.beginSection("NotifCollection.dispatchEventsAndRebuildList"); + if (mMainHandler.hasCallbacks(mRebuildListRunnable)) { + mMainHandler.removeCallbacks(mRebuildListRunnable); + } + + dispatchEvents(); + + if (mBuildListener != null) { + mBuildListener.onBuildList(mReadOnlyNotificationSet, reason); + } + Trace.endSection(); + } + + private void dispatchEventsAndAsynchronouslyRebuildList() { + Trace.beginSection("NotifCollection.dispatchEventsAndAsynchronouslyRebuildList"); + + dispatchEvents(); + + if (!mMainHandler.hasCallbacks(mRebuildListRunnable)) { + mMainHandler.postDelayed(mRebuildListRunnable, 1000L); + } + + Trace.endSection(); + } + + private void dispatchEvents() { + Trace.beginSection("NotifCollection.dispatchEvents"); + mAmDispatchingToOtherCode = true; while (!mEventQueue.isEmpty()) { mEventQueue.remove().dispatchTo(mNotifCollectionListeners); } mAmDispatchingToOtherCode = false; - if (mBuildListener != null) { - mBuildListener.onBuildList(mReadOnlyNotificationSet, reason); - } Trace.endSection(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java index 9275e2b603c3..64c1a595483e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java @@ -1196,6 +1196,22 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return getShowingLayout().getVisibleWrapper(); } + /** + * @return whether the notification row is long clickable or not. + */ + public boolean isNotificationRowLongClickable() { + if (mLongPressListener == null) { + return false; + } + + if (!areGutsExposed()) { // guts is not opened + return true; + } + + // if it is leave behind, it shouldn't be long clickable. + return !isGutsLeaveBehind(); + } + public void setLongPressListener(LongPressListener longPressListener) { mLongPressListener = longPressListener; } @@ -2947,6 +2963,10 @@ public class ExpandableNotificationRow extends ActivatableNotificationView return (mGuts != null && mGuts.isExposed()); } + private boolean isGutsLeaveBehind() { + return (mGuts != null && mGuts.isLeavebehind()); + } + @Override public boolean isContentExpandable() { if (mIsSummaryWithChildren && !shouldShowPublic()) { @@ -3394,7 +3414,12 @@ public class ExpandableNotificationRow extends ActivatableNotificationView @Override public void onInitializeAccessibilityNodeInfoInternal(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfoInternal(info); - info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK); + final boolean isLongClickable = isNotificationRowLongClickable(); + if (isLongClickable) { + info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_LONG_CLICK); + } + info.setLongClickable(isLongClickable); + if (canViewBeDismissed() && !mIsSnoozed) { info.addAction(AccessibilityNodeInfo.AccessibilityAction.ACTION_DISMISS); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java index 21f4cb566e28..49f17b664a20 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java @@ -88,6 +88,7 @@ public class FooterView extends StackScrollerDecorView { mSeenNotifsFooterTextView = findViewById(R.id.unlock_prompt_footer); updateResources(); updateText(); + updateColors(); } public void setFooterLabelTextAndIcon(@StringRes int text, @DrawableRes int icon) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java index 37ff11db81e3..06d40803052e 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java @@ -586,7 +586,9 @@ public class NotificationGutsManager implements NotifGutsViewManager { } final ExpandableNotificationRow row = (ExpandableNotificationRow) view; - view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + if (row.isNotificationRowLongClickable()) { + view.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS); + } if (row.areGutsExposed()) { closeAndSaveGuts(false /* removeLeavebehind */, false /* force */, true /* removeControls */, -1 /* x */, -1 /* y */, diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java index 1fb7eb5106e6..d2087ba6ca1c 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayout.java @@ -16,7 +16,7 @@ package com.android.systemui.statusbar.notification.stack; -import static android.os.Trace.TRACE_TAG_ALWAYS; +import static android.os.Trace.TRACE_TAG_APP; import static com.android.internal.jank.InteractionJankMonitor.CUJ_NOTIFICATION_SHADE_SCROLL_FLING; import static com.android.internal.jank.InteractionJankMonitor.CUJ_SHADE_CLEAR_ALL; @@ -1121,7 +1121,7 @@ public class NotificationStackScrollLayout extends ViewGroup implements Dumpable @Override public void requestLayout() { - Trace.instant(TRACE_TAG_ALWAYS, "NotificationStackScrollLayout#requestLayout"); + Trace.instant(TRACE_TAG_APP, "NotificationStackScrollLayout#requestLayout"); super.requestLayout(); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java index 3170f34bcebd..a425792f6523 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/StackScrollAlgorithm.java @@ -894,20 +894,19 @@ public class StackScrollAlgorithm { ExpandableViewState childViewState = child.getViewState(); float baseZ = ambientState.getBaseZHeight(); - // Handles HUN shadow when Shade is opened - if (child.mustStayOnScreen() && !childViewState.headsUpIsVisible && !ambientState.isDozingAndNotPulsing(child) && childViewState.getYTranslation() < ambientState.getTopPadding() + ambientState.getStackTranslation()) { - // Handles HUN shadow when Shade is opened, and AmbientState.mScrollY > 0 - // Calculate the HUN's z-value based on its overlapping fraction with QQS Panel. - // When scrolling down shade to make HUN back to in-position in Notification Panel, - // The over-lapping fraction goes to 0, and shadows hides gradually. + if (childrenOnTop != 0.0f) { - // To elevate the later HUN over previous HUN + // To elevate the later HUN over previous HUN when multiple HUNs exist childrenOnTop++; } else { + // Handles HUN shadow when Shade is opened, and AmbientState.mScrollY > 0 + // Calculate the HUN's z-value based on its overlapping fraction with QQS Panel. + // When scrolling down shade to make HUN back to in-position in Notification Panel, + // The overlapping fraction goes to 0, and shadows hides gradually. float overlap = ambientState.getTopPadding() + ambientState.getStackTranslation() - childViewState.getYTranslation(); // To prevent over-shadow during HUN entry @@ -915,7 +914,6 @@ public class StackScrollAlgorithm { 1.0f, overlap / childViewState.height ); - MathUtils.saturate(childrenOnTop); } childViewState.setZTranslation(baseZ + childrenOnTop * mPinnedZTranslationExtra); @@ -945,7 +943,6 @@ public class StackScrollAlgorithm { childViewState.setZTranslation(baseZ); } - // Handles HUN shadow when shade is closed. // While HUN is showing and Shade is closed: headerVisibleAmount stays 0, shadow stays. // During HUN-to-Shade (eg. dragging down HUN to open Shade): headerVisibleAmount goes // gradually from 0 to 1, shadow hides gradually. diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java index ccde3c21798e..b8ab956b32d3 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacks.java @@ -57,6 +57,7 @@ import com.android.systemui.qs.QSPanelController; import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.CameraLauncher; import com.android.systemui.shade.NotificationPanelViewController; +import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.shade.ShadeController; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.DisableFlagsLogger; @@ -104,6 +105,7 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba private final VibrationEffect mCameraLaunchGestureVibrationEffect; private final SystemBarAttributesListener mSystemBarAttributesListener; private final Lazy<CameraLauncher> mCameraLauncherLazy; + private final QuickSettingsController mQsController; private static final VibrationAttributes HARDWARE_FEEDBACK_VIBRATION_ATTRIBUTES = VibrationAttributes.createForUsage(VibrationAttributes.USAGE_HARDWARE_FEEDBACK); @@ -111,6 +113,7 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba @Inject CentralSurfacesCommandQueueCallbacks( CentralSurfaces centralSurfaces, + QuickSettingsController quickSettingsController, Context context, @Main Resources resources, ShadeController shadeController, @@ -137,6 +140,7 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba Lazy<CameraLauncher> cameraLauncherLazy, UserTracker userTracker) { mCentralSurfaces = centralSurfaces; + mQsController = quickSettingsController; mContext = context; mShadeController = shadeController; mCommandQueue = commandQueue; @@ -334,9 +338,9 @@ public class CentralSurfacesCommandQueueCallbacks implements CommandQueue.Callba mNotificationStackScrollLayoutController.setWillExpand(true); mHeadsUpManager.unpinAll(true /* userUnpinned */); mMetricsLogger.count("panel_open", 1); - } else if (!mNotificationPanelViewController.isInSettings() + } else if (!mQsController.getExpanded() && !mNotificationPanelViewController.isExpanding()) { - mNotificationPanelViewController.flingSettings(0 /* velocity */, + mQsController.flingQs(0 /* velocity */, NotificationPanelViewController.FLING_EXPAND); mMetricsLogger.count("panel_open_qs", 1); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java index 85399ca22d96..378b74a62024 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java @@ -185,6 +185,7 @@ import com.android.systemui.shade.CameraLauncher; import com.android.systemui.shade.NotificationPanelViewController; import com.android.systemui.shade.NotificationShadeWindowView; import com.android.systemui.shade.NotificationShadeWindowViewController; +import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeExpansionChangeEvent; import com.android.systemui.shade.ShadeExpansionStateManager; @@ -488,6 +489,8 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { // settings private QSPanelController mQSPanelController; + @VisibleForTesting + QuickSettingsController mQsController; KeyguardIndicationController mKeyguardIndicationController; @@ -1419,7 +1422,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { || isOccluded() || !mKeyguardStateController.canDismissLockScreen() || mKeyguardViewMediator.isAnySimPinSecure() - || (mNotificationPanelViewController.isQsExpanded() && trackingTouch) + || (mQsController.getExpanded() && trackingTouch) || mNotificationPanelViewController.getBarState() == StatusBarState.SHADE_LOCKED) { return; } @@ -1580,6 +1583,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mCentralSurfacesComponent.getLockIconViewController().init(); mStackScrollerController = mCentralSurfacesComponent.getNotificationStackScrollLayoutController(); + mQsController = mCentralSurfacesComponent.getQuickSettingsController(); mStackScroller = mStackScrollerController.getView(); mNotifListContainer = mCentralSurfacesComponent.getNotificationListContainer(); mPresenter = mCentralSurfacesComponent.getNotificationPresenter(); @@ -1699,7 +1703,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { && !isShadeDisabled() && ((mDisabled2 & StatusBarManager.DISABLE2_QUICK_SETTINGS) == 0) && !mDozing; - mNotificationPanelViewController.setQsExpansionEnabledPolicy(expandEnabled); + mQsController.setExpansionEnabledPolicy(expandEnabled); Log.d(TAG, "updateQsExpansionEnabled - QS Expand enabled: " + expandEnabled); } @@ -3234,12 +3238,12 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mStatusBarKeyguardViewManager.onBackPressed(); return true; } - if (mNotificationPanelViewController.isQsCustomizing()) { - mNotificationPanelViewController.closeQsCustomizer(); + if (mQsController.isCustomizing()) { + mQsController.closeQsCustomizer(); return true; } - if (mNotificationPanelViewController.isQsExpanded()) { - mNotificationPanelViewController.animateCloseQs(false /* animateAway */); + if (mQsController.getExpanded()) { + mNotificationPanelViewController.animateCloseQs(false); return true; } if (mNotificationPanelViewController.closeUserSwitcherIfOpen()) { @@ -3600,7 +3604,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { mFalsingCollector.onScreenOff(); mScrimController.onScreenTurnedOff(); if (mCloseQsBeforeScreenOff) { - mNotificationPanelViewController.closeQs(); + mQsController.closeQs(); mCloseQsBeforeScreenOff = false; } updateIsKeyguard(); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java index da1c361bced7..4eed48739b40 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java @@ -40,6 +40,7 @@ import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.shade.NotificationPanelViewController; import com.android.systemui.shade.NotificationShadeWindowView; +import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.KeyguardIndicationController; import com.android.systemui.statusbar.LockscreenShadeTransitionController; @@ -102,6 +103,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, private final IStatusBarService mBarService; private final DynamicPrivacyController mDynamicPrivacyController; private final NotificationListContainer mNotifListContainer; + private final QuickSettingsController mQsController; protected boolean mVrMode; @@ -109,6 +111,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, StatusBarNotificationPresenter( Context context, NotificationPanelViewController panel, + QuickSettingsController quickSettingsController, HeadsUpManagerPhone headsUp, NotificationShadeWindowView statusBarWindow, ActivityStarter activityStarter, @@ -136,6 +139,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, mActivityStarter = activityStarter; mKeyguardStateController = keyguardStateController; mNotificationPanel = panel; + mQsController = quickSettingsController; mHeadsUpManager = headsUp; mDynamicPrivacyController = dynamicPrivacyController; mKeyguardIndicationController = keyguardIndicationController; @@ -191,7 +195,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, private void maybeClosePanelForShadeEmptied() { if (CLOSE_PANEL_WHEN_EMPTIED && !mNotificationPanel.isTracking() - && !mNotificationPanel.isQsExpanded() + && !mQsController.getExpanded() && mStatusBarStateController.getState() == StatusBarState.SHADE_LOCKED && !isCollapsing()) { mStatusBarStateController.setState(StatusBarState.KEYGUARD); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java index 64b04e93e69c..aec196fc90f0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/dagger/CentralSurfacesComponent.java @@ -26,6 +26,7 @@ import com.android.systemui.shade.LargeScreenShadeHeaderController; import com.android.systemui.shade.NotificationPanelViewController; import com.android.systemui.shade.NotificationShadeWindowView; import com.android.systemui.shade.NotificationShadeWindowViewController; +import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.statusbar.NotificationPresenter; import com.android.systemui.statusbar.NotificationShelfController; import com.android.systemui.statusbar.core.StatusBarInitializer; @@ -113,6 +114,9 @@ public interface CentralSurfacesComponent { */ NotificationPanelViewController getNotificationPanelViewController(); + /** Creates a QuickSettingsController. */ + QuickSettingsController getQuickSettingsController(); + /** * Creates a LockIconViewController. Must be init after creation. */ diff --git a/packages/SystemUI/tests/src/com/android/keyguard/ActiveUnlockConfigTest.kt b/packages/SystemUI/tests/src/com/android/keyguard/ActiveUnlockConfigTest.kt index badeb27e7696..e84a975d84e2 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/ActiveUnlockConfigTest.kt +++ b/packages/SystemUI/tests/src/com/android/keyguard/ActiveUnlockConfigTest.kt @@ -31,6 +31,7 @@ import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_UNLOCK_INTENT import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_UNLOCK_INTENT_WHEN_BIOMETRIC_ENROLLED import android.provider.Settings.Secure.ACTIVE_UNLOCK_ON_WAKE import android.provider.Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_CONSIDERED_UNLOCK_INTENTS +import android.provider.Settings.Secure.ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD import androidx.test.filters.SmallTest import com.android.systemui.SysuiTestCase import com.android.systemui.dump.DumpManager @@ -51,6 +52,7 @@ import java.io.PrintWriter @SmallTest class ActiveUnlockConfigTest : SysuiTestCase() { + private lateinit var secureSettings: FakeSettings @Mock private lateinit var contentResolver: ContentResolver @@ -71,7 +73,6 @@ class ActiveUnlockConfigTest : SysuiTestCase() { @Before fun setUp() { MockitoAnnotations.initMocks(this) - currentUser = KeyguardUpdateMonitor.getCurrentUser() secureSettings = FakeSettings() activeUnlockConfig = ActiveUnlockConfig( @@ -313,10 +314,6 @@ class ActiveUnlockConfigTest : SysuiTestCase() { assertFalse(activeUnlockConfig.isWakeupConsideredUnlockIntent(wakeReason)) } } - assertTrue(activeUnlockConfig.isWakeupConsideredUnlockIntent(PowerManager.WAKE_REASON_LIFT)) - assertTrue(activeUnlockConfig.isWakeupConsideredUnlockIntent(PowerManager.WAKE_REASON_TAP)) - assertFalse(activeUnlockConfig.isWakeupConsideredUnlockIntent( - PowerManager.WAKE_REASON_UNFOLD_DEVICE)) } @Test @@ -330,11 +327,70 @@ class ActiveUnlockConfigTest : SysuiTestCase() { for (wakeReason in 0..WAKE_REASON_BIOMETRIC) { assertFalse(activeUnlockConfig.isWakeupConsideredUnlockIntent(wakeReason)) } - assertFalse(activeUnlockConfig.isWakeupConsideredUnlockIntent( - PowerManager.WAKE_REASON_LIFT)) - assertFalse(activeUnlockConfig.isWakeupConsideredUnlockIntent(PowerManager.WAKE_REASON_TAP)) - assertFalse(activeUnlockConfig.isWakeupConsideredUnlockIntent( - PowerManager.WAKE_REASON_UNFOLD_DEVICE)) + } + + @Test + fun isWakeupForceDismissKeyguard_singleValue() { + verifyRegisterSettingObserver() + + // GIVEN lift is considered an unlock intent + secureSettings.putStringForUser(ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD, + PowerManager.WAKE_REASON_LIFT.toString(), currentUser) + updateSetting(secureSettings.getUriFor( + ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD + )) + + // THEN only WAKE_REASON_LIFT is considered an unlock intent + for (wakeReason in 0..WAKE_REASON_BIOMETRIC) { + if (wakeReason == PowerManager.WAKE_REASON_LIFT) { + assertTrue(activeUnlockConfig.shouldWakeupForceDismissKeyguard(wakeReason)) + } else { + assertFalse(activeUnlockConfig.shouldWakeupForceDismissKeyguard(wakeReason)) + } + } + } + + @Test + fun isWakeupForceDismissKeyguard_emptyValues() { + verifyRegisterSettingObserver() + + // GIVEN lift and tap are considered an unlock intent + secureSettings.putStringForUser(ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD, + " ", currentUser) + updateSetting(secureSettings.getUriFor( + ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD + )) + + // THEN no wake up gestures are considered an unlock intent + for (wakeReason in 0..WAKE_REASON_BIOMETRIC) { + assertFalse(activeUnlockConfig.shouldWakeupForceDismissKeyguard(wakeReason)) + } + } + + @Test + fun isWakeupForceDismissKeyguard_multiValue() { + verifyRegisterSettingObserver() + + // GIVEN lift and tap are considered an unlock intent + secureSettings.putStringForUser(ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD, + PowerManager.WAKE_REASON_LIFT.toString() + + "|" + + PowerManager.WAKE_REASON_TAP.toString(), + currentUser + ) + updateSetting(secureSettings.getUriFor( + ACTIVE_UNLOCK_WAKEUPS_TO_FORCE_DISMISS_KEYGUARD + )) + + // THEN WAKE_REASON_LIFT and WAKE_REASON TAP are considered an unlock intent + for (wakeReason in 0..WAKE_REASON_BIOMETRIC) { + if (wakeReason == PowerManager.WAKE_REASON_LIFT || + wakeReason == PowerManager.WAKE_REASON_TAP) { + assertTrue(activeUnlockConfig.shouldWakeupForceDismissKeyguard(wakeReason)) + } else { + assertFalse(activeUnlockConfig.shouldWakeupForceDismissKeyguard(wakeReason)) + } + } } @Test diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardHostViewControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardHostViewControllerTest.java deleted file mode 100644 index 4021652295c1..000000000000 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardHostViewControllerTest.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright (C) 2018 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.keyguard; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.any; -import static org.mockito.Mockito.inOrder; -import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.when; - -import android.media.AudioManager; -import android.telephony.TelephonyManager; -import android.test.suitebuilder.annotation.SmallTest; -import android.testing.AndroidTestingRunner; -import android.testing.TestableLooper; -import android.testing.TestableResources; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.widget.FrameLayout; - -import com.android.systemui.R; -import com.android.systemui.SysuiTestCase; -import com.android.systemui.plugins.ActivityStarter.OnDismissAction; - -import org.junit.Before; -import org.junit.Rule; -import org.junit.Test; -import org.junit.runner.RunWith; -import org.mockito.InOrder; -import org.mockito.Mock; -import org.mockito.junit.MockitoJUnit; -import org.mockito.junit.MockitoRule; - -@SmallTest -@RunWith(AndroidTestingRunner.class) -@TestableLooper.RunWithLooper -public class KeyguardHostViewControllerTest extends SysuiTestCase { - @Mock - private KeyguardUpdateMonitor mKeyguardUpdateMonitor; - - private KeyguardHostView mKeyguardHostView; - @Mock - private AudioManager mAudioManager; - @Mock - private TelephonyManager mTelephonyManager; - @Mock - private ViewMediatorCallback mViewMediatorCallback; - @Mock - KeyguardSecurityContainerController.Factory mKeyguardSecurityContainerControllerFactory; - @Mock - private KeyguardSecurityContainerController mKeyguardSecurityContainerController; - - @Rule - public MockitoRule mMockitoRule = MockitoJUnit.rule(); - - private TestableResources mTestableResources; - private KeyguardHostViewController mKeyguardHostViewController; - - @Before - public void setup() { - mTestableResources = mContext.getOrCreateTestableResources(); - - mKeyguardHostView = new KeyguardHostView(mContext); - - // Explicitly disable one handed keyguard. - mTestableResources.addOverride( - R.bool.can_use_one_handed_bouncer, false); - - when(mKeyguardSecurityContainerControllerFactory.create(any( - KeyguardSecurityContainer.SecurityCallback.class))) - .thenReturn(mKeyguardSecurityContainerController); - mKeyguardHostViewController = new KeyguardHostViewController( - mKeyguardHostView, mKeyguardUpdateMonitor, mAudioManager, mTelephonyManager, - mViewMediatorCallback, mKeyguardSecurityContainerControllerFactory); - } - - @Test - public void testHasDismissActions() { - assertFalse("Action not set yet", mKeyguardHostViewController.hasDismissActions()); - mKeyguardHostViewController.setOnDismissAction(mock(OnDismissAction.class), - null /* cancelAction */); - assertTrue("Action should exist", mKeyguardHostViewController.hasDismissActions()); - } - - @Test - public void testOnStartingToHide() { - mKeyguardHostViewController.onStartingToHide(); - verify(mKeyguardSecurityContainerController).onStartingToHide(); - } - - @Test - public void onBouncerVisible_propagatesToKeyguardSecurityContainerController() { - mKeyguardHostViewController.onBouncerVisibilityChanged(ViewGroup.VISIBLE); - mKeyguardHostViewController.onBouncerVisibilityChanged(ViewGroup.INVISIBLE); - - InOrder order = inOrder(mKeyguardSecurityContainerController); - order.verify(mKeyguardSecurityContainerController).onBouncerVisibilityChanged(View.VISIBLE); - order.verify(mKeyguardSecurityContainerController).onBouncerVisibilityChanged( - View.INVISIBLE); - } - - @Test - public void testGravityReappliedOnConfigurationChange() { - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT); - mKeyguardHostView.setLayoutParams(lp); - - // Set initial gravity - mTestableResources.addOverride(R.integer.keyguard_host_view_gravity, - Gravity.CENTER); - - // Kick off the initial pass... - mKeyguardHostViewController.init(); - assertEquals( - ((FrameLayout.LayoutParams) mKeyguardHostView.getLayoutParams()).gravity, - Gravity.CENTER); - - // Now simulate a config change - mTestableResources.addOverride(R.integer.keyguard_host_view_gravity, - Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); - - mKeyguardHostViewController.updateResources(); - assertEquals( - ((FrameLayout.LayoutParams) mKeyguardHostView.getLayoutParams()).gravity, - Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); - } - - @Test - public void testGravityUsesOneHandGravityWhenApplicable() { - FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams( - ViewGroup.LayoutParams.MATCH_PARENT, - ViewGroup.LayoutParams.MATCH_PARENT); - mKeyguardHostView.setLayoutParams(lp); - - mTestableResources.addOverride( - R.integer.keyguard_host_view_gravity, - Gravity.CENTER); - mTestableResources.addOverride( - R.integer.keyguard_host_view_one_handed_gravity, - Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); - - // Start disabled. - mTestableResources.addOverride( - R.bool.can_use_one_handed_bouncer, false); - - mKeyguardHostViewController.init(); - assertEquals( - ((FrameLayout.LayoutParams) mKeyguardHostView.getLayoutParams()).gravity, - Gravity.CENTER); - - // And enable - mTestableResources.addOverride( - R.bool.can_use_one_handed_bouncer, true); - - mKeyguardHostViewController.updateResources(); - assertEquals( - ((FrameLayout.LayoutParams) mKeyguardHostView.getLayoutParams()).gravity, - Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); - } - - @Test - public void testUpdateKeyguardPositionDelegatesToSecurityContainer() { - mKeyguardHostViewController.updateKeyguardPosition(1.0f); - - verify(mKeyguardSecurityContainerController).updateKeyguardPosition(1.0f); - } -} diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java index 4a1c1cf96830..bffbe17fb2eb 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardSecurityContainerControllerTest.java @@ -23,12 +23,17 @@ import static com.android.keyguard.KeyguardSecurityContainer.MODE_ONE_HANDED; import static com.google.common.truth.Truth.assertThat; +import static junit.framework.Assert.assertFalse; +import static junit.framework.Assert.assertTrue; + import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.anyInt; import static org.mockito.ArgumentMatchers.anyLong; +import static org.mockito.ArgumentMatchers.argThat; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.atLeastOnce; +import static org.mockito.Mockito.clearInvocations; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; import static org.mockito.Mockito.reset; @@ -40,12 +45,17 @@ import android.content.res.Configuration; import android.content.res.Resources; import android.hardware.biometrics.BiometricOverlayConstants; import android.hardware.biometrics.BiometricSourceType; +import android.media.AudioManager; +import android.telephony.TelephonyManager; import android.testing.AndroidTestingRunner; import android.testing.TestableLooper; +import android.testing.TestableResources; +import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.WindowInsetsController; +import android.widget.FrameLayout; import androidx.test.filters.SmallTest; @@ -61,6 +71,7 @@ import com.android.systemui.classifier.FalsingA11yDelegate; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.log.SessionTracker; +import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.statusbar.policy.ConfigurationController; import com.android.systemui.statusbar.policy.KeyguardStateController; @@ -72,6 +83,7 @@ import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; +import org.mockito.ArgumentMatcher; import org.mockito.Captor; import org.mockito.Mock; import org.mockito.junit.MockitoJUnit; @@ -109,8 +121,6 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { @Mock private KeyguardInputViewController mInputViewController; @Mock - private KeyguardSecurityContainer.SecurityCallback mSecurityCallback; - @Mock private WindowInsetsController mWindowInsetsController; @Mock private KeyguardSecurityViewFlipper mSecurityViewFlipper; @@ -127,8 +137,6 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { @Mock private EmergencyButtonController mEmergencyButtonController; @Mock - private Resources mResources; - @Mock private FalsingCollector mFalsingCollector; @Mock private FalsingManager mFalsingManager; @@ -148,6 +156,12 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { private KeyguardPasswordViewController mKeyguardPasswordViewControllerMock; @Mock private FalsingA11yDelegate mFalsingA11yDelegate; + @Mock + private TelephonyManager mTelephonyManager; + @Mock + private ViewMediatorCallback mViewMediatorCallback; + @Mock + private AudioManager mAudioManager; @Captor private ArgumentCaptor<KeyguardUpdateMonitorCallback> mKeyguardUpdateMonitorCallback; @@ -159,18 +173,25 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { private KeyguardSecurityContainerController mKeyguardSecurityContainerController; private KeyguardPasswordViewController mKeyguardPasswordViewController; private KeyguardPasswordView mKeyguardPasswordView; + private TestableResources mTestableResources; @Before public void setup() { mConfiguration = new Configuration(); mConfiguration.setToDefaults(); // Defaults to ORIENTATION_UNDEFINED. + mTestableResources = mContext.getOrCreateTestableResources(); - when(mResources.getConfiguration()).thenReturn(mConfiguration); when(mView.getContext()).thenReturn(mContext); - when(mView.getResources()).thenReturn(mResources); + when(mView.getResources()).thenReturn(mContext.getResources()); + FrameLayout.LayoutParams lp = new FrameLayout.LayoutParams(/* width= */ 0, /* height= */ + 0); + lp.gravity = 0; + when(mView.getLayoutParams()).thenReturn(lp); when(mAdminSecondaryLockScreenControllerFactory.create(any(KeyguardSecurityCallback.class))) .thenReturn(mAdminSecondaryLockScreenController); when(mSecurityViewFlipper.getWindowInsetsController()).thenReturn(mWindowInsetsController); + when(mKeyguardSecurityViewFlipperController.getSecurityView(any(SecurityMode.class), + any(KeyguardSecurityCallback.class))).thenReturn(mInputViewController); mKeyguardPasswordView = spy((KeyguardPasswordView) LayoutInflater.from(mContext).inflate( R.layout.keyguard_password_view, null)); when(mKeyguardPasswordView.getRootView()).thenReturn(mSecurityViewFlipper); @@ -179,20 +200,21 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { when(mKeyguardMessageAreaControllerFactory.create(any(KeyguardMessageArea.class))) .thenReturn(mKeyguardMessageAreaController); when(mKeyguardPasswordView.getWindowInsetsController()).thenReturn(mWindowInsetsController); + when(mKeyguardSecurityModel.getSecurityMode(anyInt())).thenReturn(SecurityMode.PIN); mKeyguardPasswordViewController = new KeyguardPasswordViewController( (KeyguardPasswordView) mKeyguardPasswordView, mKeyguardUpdateMonitor, SecurityMode.Password, mLockPatternUtils, null, mKeyguardMessageAreaControllerFactory, null, null, mEmergencyButtonController, null, mock(Resources.class), null, mKeyguardViewController); - mKeyguardSecurityContainerController = new KeyguardSecurityContainerController.Factory( + mKeyguardSecurityContainerController = new KeyguardSecurityContainerController( mView, mAdminSecondaryLockScreenControllerFactory, mLockPatternUtils, mKeyguardUpdateMonitor, mKeyguardSecurityModel, mMetricsLogger, mUiEventLogger, mKeyguardStateController, mKeyguardSecurityViewFlipperController, mConfigurationController, mFalsingCollector, mFalsingManager, mUserSwitcherController, mFeatureFlags, mGlobalSettings, - mSessionTracker, Optional.of(mSideFpsController), mFalsingA11yDelegate).create( - mSecurityCallback); + mSessionTracker, Optional.of(mSideFpsController), mFalsingA11yDelegate, + mTelephonyManager, mViewMediatorCallback, mAudioManager); } @Test @@ -244,7 +266,8 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { eq(mFalsingA11yDelegate)); // Update rotation. Should trigger update - mConfiguration.orientation = Configuration.ORIENTATION_LANDSCAPE; + mTestableResources.getResources().getConfiguration().orientation = + Configuration.ORIENTATION_LANDSCAPE; mKeyguardSecurityContainerController.updateResources(); verify(mView).initMode(eq(MODE_DEFAULT), eq(mGlobalSettings), eq(mFalsingManager), @@ -278,7 +301,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { @Test public void showSecurityScreen_oneHandedMode_flagDisabled_noOneHandedMode() { - when(mResources.getBoolean(R.bool.can_use_one_handed_bouncer)).thenReturn(false); + mTestableResources.addOverride(R.bool.can_use_one_handed_bouncer, false); when(mKeyguardSecurityViewFlipperController.getSecurityView( eq(SecurityMode.Pattern), any(KeyguardSecurityCallback.class))) .thenReturn((KeyguardInputViewController) mKeyguardPasswordViewController); @@ -292,7 +315,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { @Test public void showSecurityScreen_oneHandedMode_flagEnabled_oneHandedMode() { - when(mResources.getBoolean(R.bool.can_use_one_handed_bouncer)).thenReturn(true); + mTestableResources.addOverride(R.bool.can_use_one_handed_bouncer, true); when(mKeyguardSecurityViewFlipperController.getSecurityView( eq(SecurityMode.Pattern), any(KeyguardSecurityCallback.class))) .thenReturn((KeyguardInputViewController) mKeyguardPasswordViewController); @@ -306,7 +329,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { @Test public void showSecurityScreen_twoHandedMode_flagEnabled_noOneHandedMode() { - when(mResources.getBoolean(R.bool.can_use_one_handed_bouncer)).thenReturn(true); + mTestableResources.addOverride(R.bool.can_use_one_handed_bouncer, true); setupGetSecurityView(); mKeyguardSecurityContainerController.showSecurityScreen(SecurityMode.Password); @@ -488,7 +511,9 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { SecurityMode.SimPin); // THEN the next security method of PIN is set, and the keyguard is not marked as done - verify(mSecurityCallback, never()).finish(anyBoolean(), anyInt()); + + verify(mViewMediatorCallback, never()).keyguardDonePending(anyBoolean(), anyInt()); + verify(mViewMediatorCallback, never()).keyguardDone(anyBoolean(), anyInt()); assertThat(mKeyguardSecurityContainerController.getCurrentSecurityMode()) .isEqualTo(SecurityMode.PIN); } @@ -562,17 +587,19 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { } @Test - public void onDensityorFontScaleChanged() { + public void onDensityOrFontScaleChanged() { ArgumentCaptor<ConfigurationController.ConfigurationListener> configurationListenerArgumentCaptor = ArgumentCaptor.forClass( ConfigurationController.ConfigurationListener.class); mKeyguardSecurityContainerController.onViewAttached(); verify(mConfigurationController).addCallback(configurationListenerArgumentCaptor.capture()); + clearInvocations(mKeyguardSecurityViewFlipperController); + configurationListenerArgumentCaptor.getValue().onDensityOrFontScaleChanged(); verify(mView).onDensityOrFontScaleChanged(); verify(mKeyguardSecurityViewFlipperController).clearViews(); - verify(mKeyguardSecurityViewFlipperController).getSecurityView(any(SecurityMode.class), + verify(mKeyguardSecurityViewFlipperController).getSecurityView(eq(SecurityMode.PIN), any(KeyguardSecurityCallback.class)); } @@ -583,11 +610,13 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { ConfigurationController.ConfigurationListener.class); mKeyguardSecurityContainerController.onViewAttached(); verify(mConfigurationController).addCallback(configurationListenerArgumentCaptor.capture()); + clearInvocations(mKeyguardSecurityViewFlipperController); + configurationListenerArgumentCaptor.getValue().onThemeChanged(); verify(mView).reloadColors(); verify(mKeyguardSecurityViewFlipperController).clearViews(); - verify(mKeyguardSecurityViewFlipperController).getSecurityView(any(SecurityMode.class), + verify(mKeyguardSecurityViewFlipperController).getSecurityView(eq(SecurityMode.PIN), any(KeyguardSecurityCallback.class)); } @@ -598,15 +627,91 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { ConfigurationController.ConfigurationListener.class); mKeyguardSecurityContainerController.onViewAttached(); verify(mConfigurationController).addCallback(configurationListenerArgumentCaptor.capture()); + clearInvocations(mKeyguardSecurityViewFlipperController); + configurationListenerArgumentCaptor.getValue().onUiModeChanged(); verify(mView).reloadColors(); verify(mKeyguardSecurityViewFlipperController).clearViews(); - verify(mKeyguardSecurityViewFlipperController).getSecurityView(any(SecurityMode.class), + verify(mKeyguardSecurityViewFlipperController).getSecurityView(eq(SecurityMode.PIN), any(KeyguardSecurityCallback.class)); } @Test + public void testHasDismissActions() { + assertFalse("Action not set yet", mKeyguardSecurityContainerController.hasDismissActions()); + mKeyguardSecurityContainerController.setOnDismissAction(mock( + ActivityStarter.OnDismissAction.class), + null /* cancelAction */); + assertTrue("Action should exist", mKeyguardSecurityContainerController.hasDismissActions()); + } + + @Test + public void testOnStartingToHide() { + mKeyguardSecurityContainerController.onStartingToHide(); + verify(mInputViewController).onStartingToHide(); + } + + @Test + public void testGravityReappliedOnConfigurationChange() { + // Set initial gravity + mTestableResources.addOverride(R.integer.keyguard_host_view_gravity, + Gravity.CENTER); + + // Kick off the initial pass... + mKeyguardSecurityContainerController.onInit(); + verify(mView).setLayoutParams(argThat( + (ArgumentMatcher<FrameLayout.LayoutParams>) argument -> + argument.gravity == Gravity.CENTER)); + clearInvocations(mView); + + // Now simulate a config change + mTestableResources.addOverride(R.integer.keyguard_host_view_gravity, + Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); + + mKeyguardSecurityContainerController.updateResources(); + verify(mView).setLayoutParams(argThat( + (ArgumentMatcher<FrameLayout.LayoutParams>) argument -> + argument.gravity == (Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM))); + } + + @Test + public void testGravityUsesOneHandGravityWhenApplicable() { + mTestableResources.addOverride( + R.integer.keyguard_host_view_gravity, + Gravity.CENTER); + mTestableResources.addOverride( + R.integer.keyguard_host_view_one_handed_gravity, + Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM); + + // Start disabled. + mTestableResources.addOverride( + R.bool.can_use_one_handed_bouncer, false); + + mKeyguardSecurityContainerController.onInit(); + verify(mView).setLayoutParams(argThat( + (ArgumentMatcher<FrameLayout.LayoutParams>) argument -> + argument.gravity == Gravity.CENTER)); + clearInvocations(mView); + + // And enable + mTestableResources.addOverride( + R.bool.can_use_one_handed_bouncer, true); + + mKeyguardSecurityContainerController.updateResources(); + verify(mView).setLayoutParams(argThat( + (ArgumentMatcher<FrameLayout.LayoutParams>) argument -> + argument.gravity == (Gravity.CENTER_HORIZONTAL | Gravity.BOTTOM))); + } + + @Test + public void testUpdateKeyguardPositionDelegatesToSecurityContainer() { + mKeyguardSecurityContainerController.updateKeyguardPosition(1.0f); + verify(mView).updatePositionByTouchX(1.0f); + } + + + @Test public void testReinflateViewFlipper() { mKeyguardSecurityContainerController.reinflateViewFlipper(); verify(mKeyguardSecurityViewFlipperController).clearViews(); @@ -639,7 +744,7 @@ public class KeyguardSecurityContainerControllerTest extends SysuiTestCase { } private void setSideFpsHintEnabledFromResources(boolean enabled) { - when(mResources.getBoolean(R.bool.config_show_sidefps_hint_on_bouncer)).thenReturn( + mTestableResources.addOverride(R.bool.config_show_sidefps_hint_on_bouncer, enabled); } diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java index 849d0bba59ab..6b80494a0c30 100644 --- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java +++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java @@ -2393,6 +2393,56 @@ public class KeyguardUpdateMonitorTest extends SysuiTestCase { assertThat(mKeyguardUpdateMonitor.shouldListenForFace()).isTrue(); } + @Test + public void unfoldWakeup_requestActiveUnlock_forceDismissKeyguard() + throws RemoteException { + // GIVEN shouldTriggerActiveUnlock + keyguardIsVisible(); + when(mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser())).thenReturn(true); + + // GIVEN active unlock triggers on wakeup + when(mActiveUnlockConfig.shouldAllowActiveUnlockFromOrigin( + ActiveUnlockConfig.ActiveUnlockRequestOrigin.WAKE)) + .thenReturn(true); + + // GIVEN an unfold should force dismiss the keyguard + when(mActiveUnlockConfig.shouldWakeupForceDismissKeyguard( + PowerManager.WAKE_REASON_UNFOLD_DEVICE)).thenReturn(true); + + // WHEN device wakes up from an unfold + mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_UNFOLD_DEVICE); + mTestableLooper.processAllMessages(); + + // THEN request unlock with a keyguard dismissal + verify(mTrustManager).reportUserRequestedUnlock(eq(KeyguardUpdateMonitor.getCurrentUser()), + eq(true)); + } + + @Test + public void unfoldWakeup_requestActiveUnlock_noDismissKeyguard() + throws RemoteException { + // GIVEN shouldTriggerActiveUnlock on wake from UNFOLD_DEVICE + keyguardIsVisible(); + when(mLockPatternUtils.isSecure(KeyguardUpdateMonitor.getCurrentUser())).thenReturn(true); + + // GIVEN active unlock triggers on wakeup + when(mActiveUnlockConfig.shouldAllowActiveUnlockFromOrigin( + ActiveUnlockConfig.ActiveUnlockRequestOrigin.WAKE)) + .thenReturn(true); + + // GIVEN an unfold should NOT force dismiss the keyguard + when(mActiveUnlockConfig.shouldWakeupForceDismissKeyguard( + PowerManager.WAKE_REASON_UNFOLD_DEVICE)).thenReturn(false); + + // WHEN device wakes up from an unfold + mKeyguardUpdateMonitor.dispatchStartedWakingUp(PowerManager.WAKE_REASON_UNFOLD_DEVICE); + mTestableLooper.processAllMessages(); + + // THEN request unlock WITHOUT a keyguard dismissal + verify(mTrustManager).reportUserRequestedUnlock(eq(KeyguardUpdateMonitor.getCurrentUser()), + eq(false)); + } + private void userDeviceLockDown() { when(mStrongAuthTracker.isUnlockingWithBiometricAllowed(anyBoolean())).thenReturn(false); when(mStrongAuthTracker.getStrongAuthForUser(mCurrentUserId)) diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java index ace0ccb6a25b..489efd71b1c1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthControllerTest.java @@ -25,6 +25,7 @@ import static com.android.systemui.keyguard.WakefulnessLifecycle.WAKEFULNESS_AWA import static com.google.common.truth.Truth.assertThat; import static junit.framework.Assert.assertEquals; +import static junit.framework.Assert.assertNotSame; import static junit.framework.Assert.assertNull; import static org.mockito.ArgumentMatchers.any; @@ -33,6 +34,7 @@ import static org.mockito.ArgumentMatchers.anyLong; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.never; @@ -49,6 +51,7 @@ import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.content.res.Configuration; +import android.content.res.Resources; import android.graphics.Point; import android.hardware.biometrics.BiometricAuthenticator; import android.hardware.biometrics.BiometricConstants; @@ -166,6 +169,8 @@ public class AuthControllerTest extends SysuiTestCase { private ArgumentCaptor<StatusBarStateController.StateListener> mStatusBarStateListenerCaptor; @Captor private ArgumentCaptor<WakefulnessLifecycle.Observer> mWakefullnessObserverCaptor; + @Mock + private Resources mResources; private TestableContext mContextSpy; private Execution mExecution; @@ -879,6 +884,25 @@ public class AuthControllerTest extends SysuiTestCase { ); } + @Test + public void testUpdateFingerprintLocation_defaultPointChanges_whenConfigChanges() { + when(mContextSpy.getResources()).thenReturn(mResources); + + doReturn(500).when(mResources) + .getDimensionPixelSize(eq(com.android.systemui.R.dimen + .physical_fingerprint_sensor_center_screen_location_y)); + mAuthController.onConfigurationChanged(null /* newConfig */); + + final Point firstFpLocation = mAuthController.getFingerprintSensorLocation(); + + doReturn(1000).when(mResources) + .getDimensionPixelSize(eq(com.android.systemui.R.dimen + .physical_fingerprint_sensor_center_screen_location_y)); + mAuthController.onConfigurationChanged(null /* newConfig */); + + assertNotSame(firstFpLocation, mAuthController.getFingerprintSensorLocation()); + } + private void showDialog(int[] sensorIds, boolean credentialAllowed) { mAuthController.showAuthenticationDialog(createTestPromptInfo(), mReceiver /* receiver */, diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt index 85f9961bf449..aa90e2a45f10 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/controls/ui/ControlsUiControllerImplTest.kt @@ -29,6 +29,7 @@ import android.testing.TestableLooper import android.util.AttributeSet import android.view.LayoutInflater import android.view.View +import android.view.ViewGroup import android.widget.FrameLayout import androidx.test.filters.SmallTest import com.android.systemui.R @@ -328,7 +329,7 @@ class ControlsUiControllerImplTest : SysuiTestCase() { ) .isTrue() - underTest.hide() + underTest.hide(parent) clearInvocations(controlsListingController, taskViewFactory) controlsSettingsRepository.setAllowActionOnTrivialControlsInLockscreen(false) @@ -387,6 +388,28 @@ class ControlsUiControllerImplTest : SysuiTestCase() { assertThat(underTest.resolveActivity()).isEqualTo(ControlsActivity::class.java) } + @Test + fun testRemoveViewsOnlyForParentPassedInHide() { + underTest.show(parent, {}, context) + parent.addView(View(context)) + + val mockParent: ViewGroup = mock() + + underTest.hide(mockParent) + + verify(mockParent).removeAllViews() + assertThat(parent.childCount).isGreaterThan(0) + } + + @Test + fun testHideDifferentParentDoesntCancelListeners() { + underTest.show(parent, {}, context) + underTest.hide(mock()) + + verify(controlsController, never()).unsubscribe() + verify(controlsListingController, never()).removeCallback(any()) + } + private fun setUpPanel(panel: SelectedItem.PanelItem): ControlsServiceInfo { val activity = ComponentName("pkg", "activity") sharedPreferences diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/RestartDozeListenerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/RestartDozeListenerTest.kt new file mode 100644 index 000000000000..de0e5113571f --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/RestartDozeListenerTest.kt @@ -0,0 +1,85 @@ +/* + * Copyright (C) 2023 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.systemui.flags + +import android.os.PowerManager +import android.test.suitebuilder.annotation.SmallTest +import com.android.systemui.SysuiTestCase +import com.android.systemui.plugins.statusbar.StatusBarStateController +import com.android.systemui.util.settings.FakeSettings +import com.android.systemui.util.time.FakeSystemClock +import com.google.common.truth.Truth.assertThat +import org.junit.Before +import org.junit.Test +import org.mockito.ArgumentCaptor +import org.mockito.Mock +import org.mockito.Mockito.anyLong +import org.mockito.Mockito.never +import org.mockito.Mockito.verify +import org.mockito.MockitoAnnotations + +@SmallTest +class RestartDozeListenerTest : SysuiTestCase() { + + lateinit var restartDozeListener: RestartDozeListener + + val settings = FakeSettings() + @Mock lateinit var statusBarStateController: StatusBarStateController + @Mock lateinit var powerManager: PowerManager + val clock = FakeSystemClock() + lateinit var listener: StatusBarStateController.StateListener + + @Before + fun setup() { + MockitoAnnotations.initMocks(this) + restartDozeListener = + RestartDozeListener(settings, statusBarStateController, powerManager, clock) + + val captor = ArgumentCaptor.forClass(StatusBarStateController.StateListener::class.java) + restartDozeListener.init() + verify(statusBarStateController).addCallback(captor.capture()) + listener = captor.value + } + + @Test + fun testStoreDreamState_onDreamingStarted() { + listener.onDreamingChanged(true) + assertThat(settings.getBool(RestartDozeListener.RESTART_NAP_KEY)).isTrue() + } + + @Test + fun testStoreDreamState_onDreamingStopped() { + listener.onDreamingChanged(false) + assertThat(settings.getBool(RestartDozeListener.RESTART_NAP_KEY)).isFalse() + } + + @Test + fun testRestoreDreamState_dreamingShouldStart() { + settings.putBool(RestartDozeListener.RESTART_NAP_KEY, true) + restartDozeListener.maybeRestartSleep() + verify(powerManager).wakeUp(clock.uptimeMillis()) + verify(powerManager).goToSleep(clock.uptimeMillis()) + } + + @Test + fun testRestoreDreamState_dreamingShouldNot() { + settings.putBool(RestartDozeListener.RESTART_NAP_KEY, false) + restartDozeListener.maybeRestartSleep() + verify(powerManager, never()).wakeUp(anyLong()) + verify(powerManager, never()).goToSleep(anyLong()) + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt index 4ebf9741ce22..2e9800606edf 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/flags/ServerFlagReaderImplTest.kt @@ -26,6 +26,7 @@ import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations @@ -50,12 +51,24 @@ class ServerFlagReaderImplTest : SysuiTestCase() { @Test fun testChange_alertsListener() { + val flag = ReleasedFlag(1, "flag_1", "test") + serverFlagReader.listenForChanges(listOf(flag), changeListener) + + deviceConfig.setProperty(NAMESPACE, "flag_1", "1", false) + executor.runAllReady() + + verify(changeListener).onChange(flag) + } + + @Test + fun testChange_ignoresListenersDuringTest() { + val serverFlagReader = ServerFlagReaderImpl(NAMESPACE, deviceConfig, executor, true) val flag = ReleasedFlag(1, "1", "test") serverFlagReader.listenForChanges(listOf(flag), changeListener) deviceConfig.setProperty(NAMESPACE, "flag_override_1", "1", false) executor.runAllReady() - verify(changeListener).onChange(flag) + verify(changeListener, never()).onChange(flag) } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt index 15a454b3a24e..a4e5bcaecde4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/CustomizationProviderTest.kt @@ -17,6 +17,7 @@ package com.android.systemui.keyguard +import android.app.admin.DevicePolicyManager import android.content.ContentValues import android.content.pm.PackageManager import android.content.pm.ProviderInfo @@ -61,7 +62,6 @@ import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.FakeSettings import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi -import kotlinx.coroutines.test.StandardTestDispatcher import kotlinx.coroutines.test.TestScope import kotlinx.coroutines.test.UnconfinedTestDispatcher import kotlinx.coroutines.test.runTest @@ -90,6 +90,7 @@ class CustomizationProviderTest : SysuiTestCase() { @Mock private lateinit var previewSurfacePackage: SurfaceControlViewHost.SurfacePackage @Mock private lateinit var launchAnimator: DialogLaunchAnimator @Mock private lateinit var commandQueue: CommandQueue + @Mock private lateinit var devicePolicyManager: DevicePolicyManager private lateinit var underTest: CustomizationProvider private lateinit var testScope: TestScope @@ -102,7 +103,7 @@ class CustomizationProviderTest : SysuiTestCase() { whenever(backgroundHandler.looper).thenReturn(TestableLooper.get(this).looper) underTest = CustomizationProvider() - val testDispatcher = StandardTestDispatcher() + val testDispatcher = UnconfinedTestDispatcher() testScope = TestScope(testDispatcher) val localUserSelectionManager = KeyguardQuickAffordanceLocalUserSelectionManager( @@ -183,6 +184,8 @@ class CustomizationProviderTest : SysuiTestCase() { featureFlags = featureFlags, repository = { quickAffordanceRepository }, launchAnimator = launchAnimator, + devicePolicyManager = devicePolicyManager, + backgroundDispatcher = testDispatcher, ) underTest.previewManager = KeyguardRemotePreviewManager( diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardFaceAuthManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardFaceAuthManagerTest.kt new file mode 100644 index 000000000000..7c604f760681 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/data/repository/KeyguardFaceAuthManagerTest.kt @@ -0,0 +1,428 @@ +/* + * Copyright (C) 2023 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.systemui.keyguard.data.repository + +import android.app.StatusBarManager.SESSION_KEYGUARD +import android.content.pm.UserInfo +import android.hardware.biometrics.BiometricFaceConstants.FACE_ERROR_CANCELED +import android.hardware.biometrics.BiometricFaceConstants.FACE_ERROR_LOCKOUT_PERMANENT +import android.hardware.biometrics.ComponentInfoInternal +import android.hardware.face.FaceManager +import android.hardware.face.FaceSensorProperties +import android.hardware.face.FaceSensorPropertiesInternal +import android.os.CancellationSignal +import androidx.test.filters.SmallTest +import com.android.internal.logging.InstanceId.fakeInstanceId +import com.android.internal.logging.UiEventLogger +import com.android.keyguard.FaceAuthUiEvent +import com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_TRIGGERED_ALTERNATE_BIOMETRIC_BOUNCER_SHOWN +import com.android.keyguard.FaceAuthUiEvent.FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER +import com.android.systemui.R +import com.android.systemui.SysuiTestCase +import com.android.systemui.coroutines.FlowValue +import com.android.systemui.coroutines.collectLastValue +import com.android.systemui.dump.DumpManager +import com.android.systemui.dump.logcatLogBuffer +import com.android.systemui.keyguard.shared.model.AuthenticationStatus +import com.android.systemui.keyguard.shared.model.DetectionStatus +import com.android.systemui.keyguard.shared.model.ErrorAuthenticationStatus +import com.android.systemui.keyguard.shared.model.HelpAuthenticationStatus +import com.android.systemui.keyguard.shared.model.SuccessAuthenticationStatus +import com.android.systemui.log.FaceAuthenticationLogger +import com.android.systemui.log.SessionTracker +import com.android.systemui.statusbar.phone.KeyguardBypassController +import com.android.systemui.user.data.repository.FakeUserRepository +import com.android.systemui.util.mockito.whenever +import com.google.common.truth.Truth.assertThat +import java.io.PrintWriter +import java.io.StringWriter +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.TestDispatcher +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.advanceTimeBy +import kotlinx.coroutines.test.runTest +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.junit.runners.JUnit4 +import org.mockito.ArgumentCaptor +import org.mockito.ArgumentMatchers.any +import org.mockito.ArgumentMatchers.anyInt +import org.mockito.ArgumentMatchers.eq +import org.mockito.Captor +import org.mockito.Mock +import org.mockito.Mockito.clearInvocations +import org.mockito.Mockito.isNull +import org.mockito.Mockito.never +import org.mockito.Mockito.verify +import org.mockito.Mockito.verifyNoMoreInteractions +import org.mockito.MockitoAnnotations + +@OptIn(ExperimentalCoroutinesApi::class) +@SmallTest +@RunWith(JUnit4::class) +class KeyguardFaceAuthManagerTest : SysuiTestCase() { + private lateinit var underTest: KeyguardFaceAuthManagerImpl + + @Mock private lateinit var faceManager: FaceManager + @Mock private lateinit var bypassController: KeyguardBypassController + @Mock private lateinit var sessionTracker: SessionTracker + @Mock private lateinit var uiEventLogger: UiEventLogger + @Mock private lateinit var dumpManager: DumpManager + + @Captor + private lateinit var authenticationCallback: ArgumentCaptor<FaceManager.AuthenticationCallback> + @Captor + private lateinit var detectionCallback: ArgumentCaptor<FaceManager.FaceDetectionCallback> + @Captor private lateinit var cancellationSignal: ArgumentCaptor<CancellationSignal> + @Captor + private lateinit var faceLockoutResetCallback: ArgumentCaptor<FaceManager.LockoutResetCallback> + private lateinit var testDispatcher: TestDispatcher + + private lateinit var testScope: TestScope + private lateinit var fakeUserRepository: FakeUserRepository + private lateinit var authStatus: FlowValue<AuthenticationStatus?> + private lateinit var detectStatus: FlowValue<DetectionStatus?> + private lateinit var authRunning: FlowValue<Boolean?> + private lateinit var lockedOut: FlowValue<Boolean?> + + @Before + fun setup() { + MockitoAnnotations.initMocks(this) + fakeUserRepository = FakeUserRepository() + fakeUserRepository.setUserInfos(listOf(currentUser)) + testDispatcher = StandardTestDispatcher() + testScope = TestScope(testDispatcher) + whenever(sessionTracker.getSessionId(SESSION_KEYGUARD)).thenReturn(keyguardSessionId) + whenever(bypassController.bypassEnabled).thenReturn(true) + underTest = createFaceAuthManagerImpl(faceManager) + } + + private fun createFaceAuthManagerImpl( + fmOverride: FaceManager? = faceManager, + bypassControllerOverride: KeyguardBypassController? = bypassController + ) = + KeyguardFaceAuthManagerImpl( + mContext, + fmOverride, + fakeUserRepository, + bypassControllerOverride, + testScope.backgroundScope, + testDispatcher, + sessionTracker, + uiEventLogger, + FaceAuthenticationLogger(logcatLogBuffer("KeyguardFaceAuthManagerLog")), + dumpManager, + ) + + @Test + fun faceAuthRunsAndProvidesAuthStatusUpdates() = + testScope.runTest { + testSetup(this) + + FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER.extraInfo = 10 + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + uiEventIsLogged(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + + assertThat(authRunning()).isTrue() + + val successResult = successResult() + authenticationCallback.value.onAuthenticationSucceeded(successResult) + + assertThat(authStatus()).isEqualTo(SuccessAuthenticationStatus(successResult)) + + assertThat(authRunning()).isFalse() + } + + private fun uiEventIsLogged(faceAuthUiEvent: FaceAuthUiEvent) { + verify(uiEventLogger) + .logWithInstanceIdAndPosition( + faceAuthUiEvent, + 0, + null, + keyguardSessionId, + faceAuthUiEvent.extraInfo + ) + } + + @Test + fun faceAuthDoesNotRunWhileItIsAlreadyRunning() = + testScope.runTest { + testSetup(this) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + clearInvocations(faceManager) + clearInvocations(uiEventLogger) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + verifyNoMoreInteractions(faceManager) + verifyNoMoreInteractions(uiEventLogger) + } + + @Test + fun faceLockoutStatusIsPropagated() = + testScope.runTest { + testSetup(this) + verify(faceManager).addLockoutResetCallback(faceLockoutResetCallback.capture()) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + + authenticationCallback.value.onAuthenticationError( + FACE_ERROR_LOCKOUT_PERMANENT, + "face locked out" + ) + + assertThat(lockedOut()).isTrue() + + faceLockoutResetCallback.value.onLockoutReset(0) + assertThat(lockedOut()).isFalse() + } + + @Test + fun faceDetectionSupportIsTheCorrectValue() = + testScope.runTest { + assertThat(createFaceAuthManagerImpl(fmOverride = null).isDetectionSupported).isFalse() + + whenever(faceManager.sensorPropertiesInternal).thenReturn(null) + assertThat(createFaceAuthManagerImpl().isDetectionSupported).isFalse() + + whenever(faceManager.sensorPropertiesInternal).thenReturn(listOf()) + assertThat(createFaceAuthManagerImpl().isDetectionSupported).isFalse() + + whenever(faceManager.sensorPropertiesInternal) + .thenReturn(listOf(createFaceSensorProperties(supportsFaceDetection = false))) + assertThat(createFaceAuthManagerImpl().isDetectionSupported).isFalse() + + whenever(faceManager.sensorPropertiesInternal) + .thenReturn( + listOf( + createFaceSensorProperties(supportsFaceDetection = false), + createFaceSensorProperties(supportsFaceDetection = true) + ) + ) + assertThat(createFaceAuthManagerImpl().isDetectionSupported).isFalse() + + whenever(faceManager.sensorPropertiesInternal) + .thenReturn( + listOf( + createFaceSensorProperties(supportsFaceDetection = true), + createFaceSensorProperties(supportsFaceDetection = false) + ) + ) + assertThat(createFaceAuthManagerImpl().isDetectionSupported).isTrue() + } + + @Test + fun cancelStopsFaceAuthentication() = + testScope.runTest { + testSetup(this) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + + var wasAuthCancelled = false + cancellationSignal.value.setOnCancelListener { wasAuthCancelled = true } + + underTest.cancel() + assertThat(wasAuthCancelled).isTrue() + assertThat(authRunning()).isFalse() + } + + @Test + fun cancelInvokedWithoutFaceAuthRunningIsANoop() = testScope.runTest { underTest.cancel() } + + @Test + fun faceDetectionRunsAndPropagatesDetectionStatus() = + testScope.runTest { + whenever(faceManager.sensorPropertiesInternal) + .thenReturn(listOf(createFaceSensorProperties(supportsFaceDetection = true))) + underTest = createFaceAuthManagerImpl() + testSetup(this) + + underTest.detect() + faceDetectIsCalled() + + detectionCallback.value.onFaceDetected(1, 1, true) + + assertThat(detectStatus()).isEqualTo(DetectionStatus(1, 1, true)) + } + + @Test + fun faceDetectDoesNotRunIfDetectionIsNotSupported() = + testScope.runTest { + whenever(faceManager.sensorPropertiesInternal) + .thenReturn(listOf(createFaceSensorProperties(supportsFaceDetection = false))) + underTest = createFaceAuthManagerImpl() + testSetup(this) + clearInvocations(faceManager) + + underTest.detect() + + verify(faceManager, never()).detectFace(any(), any(), anyInt()) + } + + @Test + fun faceAuthShouldWaitAndRunIfTriggeredWhileCancelling() = + testScope.runTest { + testSetup(this) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + + // Enter cancelling state + underTest.cancel() + clearInvocations(faceManager) + + // Auth is while cancelling. + underTest.authenticate(FACE_AUTH_TRIGGERED_ALTERNATE_BIOMETRIC_BOUNCER_SHOWN) + // Auth is not started + verifyNoMoreInteractions(faceManager) + + // Auth is done cancelling. + authenticationCallback.value.onAuthenticationError( + FACE_ERROR_CANCELED, + "First auth attempt cancellation completed" + ) + assertThat(authStatus()) + .isEqualTo( + ErrorAuthenticationStatus( + FACE_ERROR_CANCELED, + "First auth attempt cancellation completed" + ) + ) + + faceAuthenticateIsCalled() + uiEventIsLogged(FACE_AUTH_TRIGGERED_ALTERNATE_BIOMETRIC_BOUNCER_SHOWN) + } + + @Test + fun faceAuthAutoCancelsAfterDefaultCancellationTimeout() = + testScope.runTest { + testSetup(this) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + + clearInvocations(faceManager) + underTest.cancel() + advanceTimeBy(KeyguardFaceAuthManagerImpl.DEFAULT_CANCEL_SIGNAL_TIMEOUT + 1) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + } + + @Test + fun faceHelpMessagesAreIgnoredBasedOnConfig() = + testScope.runTest { + overrideResource( + R.array.config_face_acquire_device_entry_ignorelist, + intArrayOf(10, 11) + ) + underTest = createFaceAuthManagerImpl() + testSetup(this) + + underTest.authenticate(FACE_AUTH_TRIGGERED_SWIPE_UP_ON_BOUNCER) + faceAuthenticateIsCalled() + + authenticationCallback.value.onAuthenticationHelp(9, "help msg") + authenticationCallback.value.onAuthenticationHelp(10, "Ignored help msg") + authenticationCallback.value.onAuthenticationHelp(11, "Ignored help msg") + + assertThat(authStatus()).isEqualTo(HelpAuthenticationStatus(9, "help msg")) + } + + @Test + fun dumpDoesNotErrorOutWhenFaceManagerOrBypassControllerIsNull() = + testScope.runTest { + fakeUserRepository.setSelectedUserInfo(currentUser) + underTest.dump(PrintWriter(StringWriter()), emptyArray()) + + underTest = + createFaceAuthManagerImpl(fmOverride = null, bypassControllerOverride = null) + fakeUserRepository.setSelectedUserInfo(currentUser) + + underTest.dump(PrintWriter(StringWriter()), emptyArray()) + } + + private suspend fun testSetup(testScope: TestScope) { + with(testScope) { + authStatus = collectLastValue(underTest.authenticationStatus) + detectStatus = collectLastValue(underTest.detectionStatus) + authRunning = collectLastValue(underTest.isAuthRunning) + lockedOut = collectLastValue(underTest.isLockedOut) + fakeUserRepository.setSelectedUserInfo(currentUser) + } + } + + private fun successResult() = FaceManager.AuthenticationResult(null, null, currentUserId, false) + + private fun faceDetectIsCalled() { + verify(faceManager) + .detectFace( + cancellationSignal.capture(), + detectionCallback.capture(), + eq(currentUserId) + ) + } + + private fun faceAuthenticateIsCalled() { + verify(faceManager) + .authenticate( + isNull(), + cancellationSignal.capture(), + authenticationCallback.capture(), + isNull(), + eq(currentUserId), + eq(true) + ) + } + + private fun createFaceSensorProperties( + supportsFaceDetection: Boolean + ): FaceSensorPropertiesInternal { + val componentInfo = + listOf( + ComponentInfoInternal( + "faceSensor" /* componentId */, + "vendor/model/revision" /* hardwareVersion */, + "1.01" /* firmwareVersion */, + "00000001" /* serialNumber */, + "" /* softwareVersion */ + ) + ) + return FaceSensorPropertiesInternal( + 0 /* id */, + FaceSensorProperties.STRENGTH_STRONG, + 1 /* maxTemplatesAllowed */, + componentInfo, + FaceSensorProperties.TYPE_UNKNOWN, + supportsFaceDetection /* supportsFaceDetection */, + true /* supportsSelfIllumination */, + false /* resetLockoutRequiresChallenge */ + ) + } + + companion object { + const val currentUserId = 1 + val keyguardSessionId = fakeInstanceId(10)!! + val currentUser = UserInfo(currentUserId, "test user", 0) + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt index 23e06ec181c0..84ec125bfa55 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorParameterizedTest.kt @@ -17,6 +17,7 @@ package com.android.systemui.keyguard.domain.interactor +import android.app.admin.DevicePolicyManager import android.content.Intent import android.os.UserHandle import androidx.test.filters.SmallTest @@ -54,7 +55,10 @@ import com.android.systemui.util.mockito.whenever import com.android.systemui.util.settings.FakeSettings import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.test.runBlockingTest +import kotlinx.coroutines.ExperimentalCoroutinesApi +import kotlinx.coroutines.test.StandardTestDispatcher +import kotlinx.coroutines.test.TestScope +import kotlinx.coroutines.test.runTest import org.junit.Before import org.junit.Test import org.junit.runner.RunWith @@ -70,6 +74,7 @@ import org.mockito.Mockito.verify import org.mockito.Mockito.verifyZeroInteractions import org.mockito.MockitoAnnotations +@OptIn(ExperimentalCoroutinesApi::class) @SmallTest @RunWith(Parameterized::class) class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() { @@ -219,8 +224,10 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() { @Mock private lateinit var expandable: Expandable @Mock private lateinit var launchAnimator: DialogLaunchAnimator @Mock private lateinit var commandQueue: CommandQueue + @Mock private lateinit var devicePolicyManager: DevicePolicyManager private lateinit var underTest: KeyguardQuickAffordanceInteractor + private lateinit var testScope: TestScope @JvmField @Parameter(0) var needStrongAuthAfterBoot: Boolean = false @JvmField @Parameter(1) var canShowWhileLocked: Boolean = false @@ -292,6 +299,8 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() { set(Flags.CUSTOMIZABLE_LOCK_SCREEN_QUICK_AFFORDANCES, false) set(Flags.FACE_AUTH_REFACTOR, true) } + val testDispatcher = StandardTestDispatcher() + testScope = TestScope(testDispatcher) underTest = KeyguardQuickAffordanceInteractor( keyguardInteractor = @@ -322,58 +331,61 @@ class KeyguardQuickAffordanceInteractorParameterizedTest : SysuiTestCase() { featureFlags = featureFlags, repository = { quickAffordanceRepository }, launchAnimator = launchAnimator, + devicePolicyManager = devicePolicyManager, + backgroundDispatcher = testDispatcher, ) } @Test - fun onQuickAffordanceTriggered() = runBlockingTest { - setUpMocks( - needStrongAuthAfterBoot = needStrongAuthAfterBoot, - keyguardIsUnlocked = keyguardIsUnlocked, - ) + fun onQuickAffordanceTriggered() = + testScope.runTest { + setUpMocks( + needStrongAuthAfterBoot = needStrongAuthAfterBoot, + keyguardIsUnlocked = keyguardIsUnlocked, + ) - homeControls.setState( - lockScreenState = - KeyguardQuickAffordanceConfig.LockScreenState.Visible( - icon = DRAWABLE, - ) - ) - homeControls.onTriggeredResult = - if (startActivity) { - KeyguardQuickAffordanceConfig.OnTriggeredResult.StartActivity( - intent = INTENT, - canShowWhileLocked = canShowWhileLocked, - ) - } else { - KeyguardQuickAffordanceConfig.OnTriggeredResult.Handled - } + homeControls.setState( + lockScreenState = + KeyguardQuickAffordanceConfig.LockScreenState.Visible( + icon = DRAWABLE, + ) + ) + homeControls.onTriggeredResult = + if (startActivity) { + KeyguardQuickAffordanceConfig.OnTriggeredResult.StartActivity( + intent = INTENT, + canShowWhileLocked = canShowWhileLocked, + ) + } else { + KeyguardQuickAffordanceConfig.OnTriggeredResult.Handled + } - underTest.onQuickAffordanceTriggered( - configKey = BuiltInKeyguardQuickAffordanceKeys.HOME_CONTROLS, - expandable = expandable, - ) + underTest.onQuickAffordanceTriggered( + configKey = BuiltInKeyguardQuickAffordanceKeys.HOME_CONTROLS, + expandable = expandable, + ) - if (startActivity) { - if (needsToUnlockFirst) { - verify(activityStarter) - .postStartActivityDismissingKeyguard( - any(), - /* delay= */ eq(0), - same(animationController), - ) + if (startActivity) { + if (needsToUnlockFirst) { + verify(activityStarter) + .postStartActivityDismissingKeyguard( + any(), + /* delay= */ eq(0), + same(animationController), + ) + } else { + verify(activityStarter) + .startActivity( + any(), + /* dismissShade= */ eq(true), + same(animationController), + /* showOverLockscreenWhenLocked= */ eq(true), + ) + } } else { - verify(activityStarter) - .startActivity( - any(), - /* dismissShade= */ eq(true), - same(animationController), - /* showOverLockscreenWhenLocked= */ eq(true), - ) + verifyZeroInteractions(activityStarter) } - } else { - verifyZeroInteractions(activityStarter) } - } private fun setUpMocks( needStrongAuthAfterBoot: Boolean = true, diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt index 1b8c6273e2d8..62c9e5ffbb51 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/domain/interactor/KeyguardQuickAffordanceInteractorTest.kt @@ -17,6 +17,7 @@ package com.android.systemui.keyguard.domain.interactor +import android.app.admin.DevicePolicyManager import android.os.UserHandle import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest @@ -78,6 +79,7 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { @Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var launchAnimator: DialogLaunchAnimator @Mock private lateinit var commandQueue: CommandQueue + @Mock private lateinit var devicePolicyManager: DevicePolicyManager private lateinit var underTest: KeyguardQuickAffordanceInteractor @@ -184,6 +186,8 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { featureFlags = featureFlags, repository = { quickAffordanceRepository }, launchAnimator = launchAnimator, + devicePolicyManager = devicePolicyManager, + backgroundDispatcher = testDispatcher, ) } @@ -239,6 +243,44 @@ class KeyguardQuickAffordanceInteractorTest : SysuiTestCase() { } @Test + fun `quickAffordance - hidden when all features are disabled by device policy`() = + testScope.runTest { + whenever(devicePolicyManager.getKeyguardDisabledFeatures(null, userTracker.userId)) + .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_ALL) + quickAccessWallet.setState( + KeyguardQuickAffordanceConfig.LockScreenState.Visible( + icon = ICON, + ) + ) + + val collectedValue by + collectLastValue( + underTest.quickAffordance(KeyguardQuickAffordancePosition.BOTTOM_END) + ) + + assertThat(collectedValue).isInstanceOf(KeyguardQuickAffordanceModel.Hidden::class.java) + } + + @Test + fun `quickAffordance - hidden when shortcuts feature is disabled by device policy`() = + testScope.runTest { + whenever(devicePolicyManager.getKeyguardDisabledFeatures(null, userTracker.userId)) + .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_SHORTCUTS_ALL) + quickAccessWallet.setState( + KeyguardQuickAffordanceConfig.LockScreenState.Visible( + icon = ICON, + ) + ) + + val collectedValue by + collectLastValue( + underTest.quickAffordance(KeyguardQuickAffordancePosition.BOTTOM_END) + ) + + assertThat(collectedValue).isInstanceOf(KeyguardQuickAffordanceModel.Hidden::class.java) + } + + @Test fun `quickAffordance - bottom start affordance hidden while dozing`() = testScope.runTest { repository.setDozing(true) diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt index 6afeddda18ab..8bd8be565eee 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/ui/viewmodel/KeyguardBottomAreaViewModelTest.kt @@ -16,6 +16,7 @@ package com.android.systemui.keyguard.ui.viewmodel +import android.app.admin.DevicePolicyManager import android.content.Intent import android.os.UserHandle import androidx.test.filters.SmallTest @@ -87,6 +88,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() { @Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var launchAnimator: DialogLaunchAnimator @Mock private lateinit var commandQueue: CommandQueue + @Mock private lateinit var devicePolicyManager: DevicePolicyManager private lateinit var underTest: KeyguardBottomAreaViewModel @@ -140,6 +142,7 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() { bouncerRepository = FakeKeyguardBouncerRepository(), ) whenever(userTracker.userHandle).thenReturn(mock()) + whenever(userTracker.userId).thenReturn(10) whenever(lockPatternUtils.getStrongAuthForUser(anyInt())) .thenReturn(LockPatternUtils.StrongAuthTracker.STRONG_AUTH_NOT_REQUIRED) val testDispatcher = StandardTestDispatcher() @@ -205,6 +208,8 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() { featureFlags = featureFlags, repository = { quickAffordanceRepository }, launchAnimator = launchAnimator, + devicePolicyManager = devicePolicyManager, + backgroundDispatcher = testDispatcher, ), bottomAreaInteractor = KeyguardBottomAreaInteractor(repository = repository), burnInHelperWrapper = burnInHelperWrapper, @@ -240,6 +245,39 @@ class KeyguardBottomAreaViewModelTest : SysuiTestCase() { } @Test + fun `startButton - hidden when device policy disables all keyguard features`() = + testScope.runTest { + whenever(devicePolicyManager.getKeyguardDisabledFeatures(null, userTracker.userId)) + .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FEATURES_ALL) + repository.setKeyguardShowing(true) + val latest by collectLastValue(underTest.startButton) + + val testConfig = + TestConfig( + isVisible = true, + isClickable = true, + isActivated = true, + icon = mock(), + canShowWhileLocked = false, + intent = Intent("action"), + ) + val configKey = + setUpQuickAffordanceModel( + position = KeyguardQuickAffordancePosition.BOTTOM_START, + testConfig = testConfig, + ) + + assertQuickAffordanceViewModel( + viewModel = latest, + testConfig = + TestConfig( + isVisible = false, + ), + configKey = configKey, + ) + } + + @Test fun `startButton - in preview mode - visible even when keyguard not showing`() = testScope.runTest { underTest.enablePreviewMode( diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt index 6cf642cb7fd2..09156d6d6752 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelControllerTest.kt @@ -70,7 +70,7 @@ class QSPanelControllerTest : SysuiTestCase() { whenever(brightnessSliderFactory.create(any(), any())).thenReturn(brightnessSlider) whenever(brightnessControllerFactory.create(any())).thenReturn(brightnessController) - testableResources.addOverride(R.bool.config_use_split_notification_shade, false) + setShouldUseSplitShade(false) whenever(qsPanel.resources).thenReturn(testableResources.resources) whenever(qsPanel.getOrCreateTileLayout()).thenReturn(pagedTileLayout) whenever(statusBarKeyguardViewManager.isPrimaryBouncerInTransit()).thenReturn(false) @@ -133,12 +133,31 @@ class QSPanelControllerTest : SysuiTestCase() { @Test fun configurationChange_onlySplitShadeConfigChanges_tileAreRedistributed() { - testableResources.addOverride(R.bool.config_use_split_notification_shade, false) + setShouldUseSplitShade(false) controller.mOnConfigurationChangedListener.onConfigurationChange(configuration) verify(pagedTileLayout, never()).forceTilesRedistribution(any()) - testableResources.addOverride(R.bool.config_use_split_notification_shade, true) + setShouldUseSplitShade(true) controller.mOnConfigurationChangedListener.onConfigurationChange(configuration) verify(pagedTileLayout).forceTilesRedistribution("Split shade state changed") } + + @Test + fun configurationChange_onlySplitShadeConfigChanges_qsPanelCanBeCollapsed() { + setShouldUseSplitShade(false) + controller.mOnConfigurationChangedListener.onConfigurationChange(configuration) + verify(qsPanel, never()).setCanCollapse(anyBoolean()) + + setShouldUseSplitShade(true) + controller.mOnConfigurationChangedListener.onConfigurationChange(configuration) + verify(qsPanel).setCanCollapse(false) + + setShouldUseSplitShade(false) + controller.mOnConfigurationChangedListener.onConfigurationChange(configuration) + verify(qsPanel).setCanCollapse(true) + } + + private fun setShouldUseSplitShade(shouldUse: Boolean) { + testableResources.addOverride(R.bool.config_use_split_notification_shade, shouldUse) + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt index d52b29642acf..a8cfb256bc7c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.kt @@ -37,6 +37,7 @@ import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock import org.mockito.Mockito.mock +import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations @@ -196,6 +197,16 @@ class QSPanelTest : SysuiTestCase() { qsPanel.setSquishinessFraction(0.5f) } + @Test + fun testSplitShade_CollapseAccessibilityActionNotAnnounced() { + qsPanel.setCanCollapse(false) + val accessibilityInfo = mock(AccessibilityNodeInfo::class.java) + qsPanel.onInitializeAccessibilityNodeInfo(accessibilityInfo) + + val actionCollapse = AccessibilityNodeInfo.AccessibilityAction.ACTION_COLLAPSE + verify(accessibilityInfo, never()).addAction(actionCollapse) + } + private infix fun View.isLeftOf(other: View): Boolean { val rect = Rect() getBoundsOnScreen(rect) diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/FontScalingTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt index 57abae0889ca..257d42a83ba4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/dialog/FontScalingTileTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/FontScalingTileTest.kt @@ -13,27 +13,35 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.systemui.qs.tiles.dialog +package com.android.systemui.qs.tiles import android.os.Handler import android.testing.AndroidTestingRunner import android.testing.TestableLooper +import android.view.View import androidx.test.filters.SmallTest import com.android.internal.logging.MetricsLogger +import com.android.internal.logging.UiEventLogger import com.android.systemui.SysuiTestCase import com.android.systemui.animation.DialogLaunchAnimator import com.android.systemui.classifier.FalsingManagerFake +import com.android.systemui.flags.FakeFeatureFlags +import com.android.systemui.flags.Flags import com.android.systemui.plugins.ActivityStarter import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.qs.QSTileHost import com.android.systemui.qs.logging.QSLogger -import com.android.systemui.qs.tiles.FontScalingTile +import com.android.systemui.util.mockito.any +import com.android.systemui.util.mockito.eq +import com.android.systemui.util.mockito.nullable import com.android.systemui.util.settings.FakeSettings import com.google.common.truth.Truth.assertThat import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mock +import org.mockito.Mockito.anyBoolean +import org.mockito.Mockito.verify import org.mockito.Mockito.`when` import org.mockito.MockitoAnnotations @@ -47,15 +55,20 @@ class FontScalingTileTest : SysuiTestCase() { @Mock private lateinit var activityStarter: ActivityStarter @Mock private lateinit var qsLogger: QSLogger @Mock private lateinit var dialogLaunchAnimator: DialogLaunchAnimator + @Mock private lateinit var uiEventLogger: UiEventLogger private lateinit var testableLooper: TestableLooper private lateinit var fontScalingTile: FontScalingTile + val featureFlags = FakeFeatureFlags() + @Before fun setUp() { MockitoAnnotations.initMocks(this) testableLooper = TestableLooper.get(this) `when`(qsHost.getContext()).thenReturn(mContext) + `when`(qsHost.uiEventLogger).thenReturn(uiEventLogger) + fontScalingTile = FontScalingTile( qsHost, @@ -67,15 +80,37 @@ class FontScalingTileTest : SysuiTestCase() { activityStarter, qsLogger, dialogLaunchAnimator, - FakeSettings() + FakeSettings(), + featureFlags ) fontScalingTile.initialize() + testableLooper.processAllMessages() } @Test - fun isNotAvailable_whenNotSupportedDevice_returnsFalse() { + fun isAvailable_whenFlagIsFalse_returnsFalse() { + featureFlags.set(Flags.ENABLE_FONT_SCALING_TILE, false) + val isAvailable = fontScalingTile.isAvailable() assertThat(isAvailable).isFalse() } + + @Test + fun isAvailable_whenFlagIsTrue_returnsTrue() { + featureFlags.set(Flags.ENABLE_FONT_SCALING_TILE, true) + + val isAvailable = fontScalingTile.isAvailable() + + assertThat(isAvailable).isTrue() + } + + @Test + fun clickTile_showDialog() { + val view = View(context) + fontScalingTile.click(view) + testableLooper.processAllMessages() + + verify(dialogLaunchAnimator).showFromView(any(), eq(view), nullable(), anyBoolean()) + } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt index 91fef1daaf86..ee5f61c835da 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerCombinedTest.kt @@ -21,6 +21,7 @@ import android.content.res.Resources import android.content.res.XmlResourceParser import android.graphics.Rect import android.testing.AndroidTestingRunner +import android.view.Display import android.view.DisplayCutout import android.view.View import android.view.ViewPropertyAnimator @@ -77,9 +78,11 @@ import org.mockito.Mockito.clearInvocations import org.mockito.Mockito.inOrder import org.mockito.Mockito.never import org.mockito.Mockito.reset +import org.mockito.Mockito.same +import org.mockito.Mockito.spy import org.mockito.Mockito.verify -import org.mockito.Mockito.`when` as whenever import org.mockito.junit.MockitoJUnit +import org.mockito.Mockito.`when` as whenever private val EMPTY_CHANGES = ConstraintsChanges() @@ -133,6 +136,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { @Mock private lateinit var mockedContext: Context + private lateinit var viewContext: Context @Mock(answer = Answers.RETURNS_MOCKS) private lateinit var view: MotionLayout @@ -143,6 +147,7 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { @Mock private lateinit var largeScreenConstraints: ConstraintSet @Mock private lateinit var demoModeController: DemoModeController + @Mock private lateinit var qsBatteryModeController: QsBatteryModeController @JvmField @Rule val mockitoRule = MockitoJUnit.rule() @@ -175,7 +180,8 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { .thenReturn(qsCarrierGroupControllerBuilder) whenever(qsCarrierGroupControllerBuilder.build()).thenReturn(qsCarrierGroupController) - whenever(view.context).thenReturn(context) + viewContext = spy(context) + whenever(view.context).thenReturn(viewContext) whenever(view.resources).thenReturn(context.resources) whenever(view.setVisibility(ArgumentMatchers.anyInt())).then { viewVisibility = it.arguments[0] as Int @@ -192,19 +198,20 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { setUpMotionLayout(view) controller = LargeScreenShadeHeaderController( - view, - statusBarIconController, - iconManagerFactory, - privacyIconsController, - insetsProvider, - configurationController, - variableDateViewControllerFactory, - batteryMeterViewController, - dumpManager, - featureFlags, - qsCarrierGroupControllerBuilder, - combinedShadeHeadersConstraintManager, - demoModeController + view, + statusBarIconController, + iconManagerFactory, + privacyIconsController, + insetsProvider, + configurationController, + variableDateViewControllerFactory, + batteryMeterViewController, + dumpManager, + featureFlags, + qsCarrierGroupControllerBuilder, + combinedShadeHeadersConstraintManager, + demoModeController, + qsBatteryModeController, ) whenever(view.isAttachedToWindow).thenReturn(true) controller.init() @@ -218,7 +225,6 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { verify(batteryMeterViewController).init() verify(batteryMeterViewController).ignoreTunerUpdates() - verify(batteryMeterView).setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) val inOrder = inOrder(qsCarrierGroupControllerBuilder) inOrder.verify(qsCarrierGroupControllerBuilder).setQSCarrierGroup(carrierGroup) @@ -226,6 +232,23 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { } @Test + fun `battery mode controller called when qsExpandedFraction changes`() { + whenever(qsBatteryModeController.getBatteryMode(same(null), eq(0f))) + .thenReturn(BatteryMeterView.MODE_ON) + whenever(qsBatteryModeController.getBatteryMode(same(null), eq(1f))) + .thenReturn(BatteryMeterView.MODE_ESTIMATE) + controller.qsVisible = true + + val times = 10 + repeat(times) { + controller.qsExpandedFraction = it / (times - 1).toFloat() + } + + verify(batteryMeterView).setPercentShowMode(BatteryMeterView.MODE_ON) + verify(batteryMeterView).setPercentShowMode(BatteryMeterView.MODE_ESTIMATE) + } + + @Test fun testClockPivotLtr() { val width = 200 whenever(clock.width).thenReturn(width) @@ -684,11 +707,11 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { configurationController.notifyDensityOrFontScaleChanged() val captor = ArgumentCaptor.forClass(XmlResourceParser::class.java) - verify(qqsConstraints).load(eq(context), capture(captor)) + verify(qqsConstraints).load(eq(viewContext), capture(captor)) assertThat(captor.value.getResId()).isEqualTo(R.xml.qqs_header) - verify(qsConstraints).load(eq(context), capture(captor)) + verify(qsConstraints).load(eq(viewContext), capture(captor)) assertThat(captor.value.getResId()).isEqualTo(R.xml.qs_header) - verify(largeScreenConstraints).load(eq(context), capture(captor)) + verify(largeScreenConstraints).load(eq(viewContext), capture(captor)) assertThat(captor.value.getResId()).isEqualTo(R.xml.large_screen_shade_header) } @@ -786,6 +809,13 @@ class LargeScreenShadeHeaderControllerCombinedTest : SysuiTestCase() { whenever(insetsProvider.getStatusBarContentInsetsForCurrentRotation()) .thenReturn(Pair(0, 0).toAndroidPair()) whenever(insetsProvider.currentRotationHasCornerCutout()).thenReturn(false) + setupCurrentInsets(null) + } + + private fun setupCurrentInsets(cutout: DisplayCutout?) { + val mockedDisplay = + mock<Display>().also { display -> whenever(display.cutout).thenReturn(cutout) } + whenever(viewContext.display).thenReturn(mockedDisplay) } private fun<T, U> Pair<T, U>.toAndroidPair(): android.util.Pair<T, U> { diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt index 2bf2a81fe13e..e684007cb7c1 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/LargeScreenShadeHeaderControllerTest.kt @@ -1,7 +1,6 @@ package com.android.systemui.shade import android.animation.Animator -import android.animation.ValueAnimator import android.app.StatusBarManager import android.content.Context import android.testing.AndroidTestingRunner @@ -44,6 +43,7 @@ import org.mockito.ArgumentMatchers.anyFloat import org.mockito.ArgumentMatchers.anyInt import org.mockito.Mock import org.mockito.Mockito.mock +import org.mockito.Mockito.reset import org.mockito.Mockito.verify import org.mockito.Mockito.verifyZeroInteractions import org.mockito.junit.MockitoJUnit @@ -76,6 +76,7 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { @Mock private lateinit var mockedContext: Context @Mock private lateinit var demoModeController: DemoModeController + @Mock private lateinit var qsBatteryModeController: QsBatteryModeController @JvmField @Rule val mockitoRule = MockitoJUnit.rule() var viewVisibility = View.GONE @@ -130,8 +131,9 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { featureFlags, qsCarrierGroupControllerBuilder, combinedShadeHeadersConstraintManager, - demoModeController - ) + demoModeController, + qsBatteryModeController, + ) whenever(view.isAttachedToWindow).thenReturn(true) mLargeScreenShadeHeaderController.init() carrierIconSlots = listOf( @@ -156,24 +158,24 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { fun updateListeners_registersWhenVisible() { makeShadeVisible() verify(qsCarrierGroupController).setListening(true) + } + + @Test + fun statusIconsAddedWhenAttached() { verify(statusBarIconController).addIconGroup(any()) } @Test - fun shadeExpandedFraction_updatesAlpha() { - makeShadeVisible() - mLargeScreenShadeHeaderController.shadeExpandedFraction = 0.5f - verify(view).setAlpha(ShadeInterpolation.getContentAlpha(0.5f)) + fun statusIconsRemovedWhenDettached() { + mLargeScreenShadeHeaderController.simulateViewDetached() + verify(statusBarIconController).removeIconGroup(any()) } @Test - fun alphaChangesUpdateVisibility() { + fun shadeExpandedFraction_updatesAlpha() { makeShadeVisible() - mLargeScreenShadeHeaderController.shadeExpandedFraction = 0f - assertThat(viewVisibility).isEqualTo(View.INVISIBLE) - - mLargeScreenShadeHeaderController.shadeExpandedFraction = 1f - assertThat(viewVisibility).isEqualTo(View.VISIBLE) + mLargeScreenShadeHeaderController.shadeExpandedFraction = 0.5f + verify(view).setAlpha(ShadeInterpolation.getContentAlpha(0.5f)) } @Test @@ -261,54 +263,32 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { } @Test - fun testShadeExpanded_true_alpha_zero_invisible() { - view.alpha = 0f - mLargeScreenShadeHeaderController.largeScreenActive = true - mLargeScreenShadeHeaderController.qsVisible = true - - assertThat(viewVisibility).isEqualTo(View.INVISIBLE) - } + fun customizerAnimatorChangesViewVisibility() { + makeShadeVisible() - @Test - fun animatorCallsUpdateVisibilityOnUpdate() { val animator = mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF) + val duration = 1000L whenever(view.animate()).thenReturn(animator) + val listenerCaptor = argumentCaptor<Animator.AnimatorListener>() - mLargeScreenShadeHeaderController.startCustomizingAnimation(show = false, 0L) - - val updateCaptor = argumentCaptor<ValueAnimator.AnimatorUpdateListener>() - verify(animator).setUpdateListener(capture(updateCaptor)) - - mLargeScreenShadeHeaderController.largeScreenActive = true - mLargeScreenShadeHeaderController.qsVisible = true - - view.alpha = 1f - updateCaptor.value.onAnimationUpdate(mock()) - - assertThat(viewVisibility).isEqualTo(View.VISIBLE) - - view.alpha = 0f - updateCaptor.value.onAnimationUpdate(mock()) - + mLargeScreenShadeHeaderController.startCustomizingAnimation(show = true, duration) + verify(animator).setListener(capture(listenerCaptor)) + // Start and end the animation + listenerCaptor.value.onAnimationStart(mock()) + listenerCaptor.value.onAnimationEnd(mock()) assertThat(viewVisibility).isEqualTo(View.INVISIBLE) - } - - @Test - fun animatorListenersClearedAtEnd() { - val animator = mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF) - whenever(view.animate()).thenReturn(animator) - mLargeScreenShadeHeaderController.startCustomizingAnimation(show = true, 0L) - val listenerCaptor = argumentCaptor<Animator.AnimatorListener>() + reset(animator) + mLargeScreenShadeHeaderController.startCustomizingAnimation(show = false, duration) verify(animator).setListener(capture(listenerCaptor)) - + // Start and end the animation + listenerCaptor.value.onAnimationStart(mock()) listenerCaptor.value.onAnimationEnd(mock()) - verify(animator).setListener(null) - verify(animator).setUpdateListener(null) + assertThat(viewVisibility).isEqualTo(View.VISIBLE) } @Test - fun animatorListenersClearedOnCancel() { + fun animatorListenerClearedAtEnd() { val animator = mock(ViewPropertyAnimator::class.java, Answers.RETURNS_SELF) whenever(view.animate()).thenReturn(animator) @@ -316,9 +296,8 @@ class LargeScreenShadeHeaderControllerTest : SysuiTestCase() { val listenerCaptor = argumentCaptor<Animator.AnimatorListener>() verify(animator).setListener(capture(listenerCaptor)) - listenerCaptor.value.onAnimationCancel(mock()) + listenerCaptor.value.onAnimationEnd(mock()) verify(animator).setListener(null) - verify(animator).setUpdateListener(null) } @Test diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java index 28f7edf4ffb9..996d9fb5bfb8 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationPanelViewControllerTest.java @@ -196,6 +196,7 @@ import org.mockito.stubbing.Answer; import java.util.List; import java.util.Optional; +import dagger.Lazy; import kotlinx.coroutines.CoroutineDispatcher; @SmallTest @@ -270,6 +271,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { @Mock private KeyguardMediaController mKeyguardMediaController; @Mock private NavigationModeController mNavigationModeController; @Mock private NavigationBarController mNavigationBarController; + @Mock private QuickSettingsController mQsController; @Mock private LargeScreenShadeHeaderController mLargeScreenShadeHeaderController; @Mock private ContentResolver mContentResolver; @Mock private TapAgainViewController mTapAgainViewController; @@ -329,6 +331,10 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { private final DisplayMetrics mDisplayMetrics = new DisplayMetrics(); private final ShadeExpansionStateManager mShadeExpansionStateManager = new ShadeExpansionStateManager(); + + private QuickSettingsController mQuickSettingsController; + @Mock private Lazy<NotificationPanelViewController> mNotificationPanelViewControllerLazy; + private FragmentHostManager.FragmentListener mFragmentListener; @Before @@ -506,6 +512,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { mTapAgainViewController, mNavigationModeController, mNavigationBarController, + mQsController, mFragmentService, mContentResolver, mRecordingController, @@ -515,8 +522,6 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { mShadeExpansionStateManager, mNotificationRemoteInputManager, mSysUIUnfoldComponent, - mInteractionJankMonitor, - mQsFrameTranslateController, mSysUiState, () -> mKeyguardBottomAreaViewController, mKeyguardUnlockAnimationController, @@ -572,6 +577,40 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { .setOnEmptySpaceClickListener(mEmptySpaceClickListenerCaptor.capture()); verify(mKeyguardStatusViewController).displayClock(LARGE, /* animate */ true); reset(mKeyguardStatusViewController); + + when(mNotificationPanelViewControllerLazy.get()) + .thenReturn(mNotificationPanelViewController); + mQuickSettingsController = new QuickSettingsController( + mNotificationPanelViewControllerLazy, + mView, + mQsFrameTranslateController, + mShadeTransitionController, + expansionHandler, + mNotificationRemoteInputManager, + mShadeExpansionStateManager, + mStatusBarKeyguardViewManager, + mNotificationStackScrollLayoutController, + mLockscreenShadeTransitionController, + mNotificationShadeDepthController, + mLargeScreenShadeHeaderController, + mStatusBarTouchableRegionManager, + mKeyguardStateController, + mKeyguardBypassController, + mUpdateMonitor, + mScrimController, + mMediaDataManager, + mMediaHierarchyManager, + mAmbientState, + mRecordingController, + mFalsingManager, + new FalsingCollectorFake(), + mAccessibilityManager, + mLockscreenGestureLogger, + mMetricsLogger, + mFeatureFlags, + mInteractionJankMonitor, + mShadeLog + ); } @After @@ -755,27 +794,14 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { @Test public void testOnTouchEvent_expansionCanBeBlocked() { - onTouchEvent(MotionEvent.obtain(0L /* downTime */, - 0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */, - 0 /* metaState */)); - onTouchEvent(MotionEvent.obtain(0L /* downTime */, - 0L /* eventTime */, MotionEvent.ACTION_MOVE, 0f /* x */, 200f /* y */, - 0 /* metaState */)); + onTouchEvent(MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_DOWN, 0f, 0f, 0)); + onTouchEvent(MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_MOVE, 0f, 200f, 0)); assertThat((int) mNotificationPanelViewController.getExpandedHeight()).isEqualTo(200); - assertThat(mNotificationPanelViewController.isTrackingBlocked()).isFalse(); mNotificationPanelViewController.blockExpansionForCurrentTouch(); - onTouchEvent(MotionEvent.obtain(0L /* downTime */, - 0L /* eventTime */, MotionEvent.ACTION_MOVE, 0f /* x */, 300f /* y */, - 0 /* metaState */)); + onTouchEvent(MotionEvent.obtain(0L, 0L, MotionEvent.ACTION_MOVE, 0f, 300f, 0)); // Expansion should not have changed because it was blocked assertThat((int) mNotificationPanelViewController.getExpandedHeight()).isEqualTo(200); - assertThat(mNotificationPanelViewController.isTrackingBlocked()).isTrue(); - - onTouchEvent(MotionEvent.obtain(0L /* downTime */, - 0L /* eventTime */, MotionEvent.ACTION_UP, 0f /* x */, 300f /* y */, - 0 /* metaState */)); - assertThat(mNotificationPanelViewController.isTrackingBlocked()).isFalse(); } @Test @@ -1045,7 +1071,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { @Test public void testCanCollapsePanelOnTouch_trueWhenInSettings() { mStatusBarStateController.setState(SHADE); - mNotificationPanelViewController.setQsExpanded(true); + when(mQsController.getExpanded()).thenReturn(true); assertThat(mNotificationPanelViewController.canCollapsePanelOnTouch()).isTrue(); } @@ -1054,7 +1080,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { public void testCanCollapsePanelOnTouch_falseInDualPaneShade() { mStatusBarStateController.setState(SHADE); enableSplitShade(/* enabled= */ true); - mNotificationPanelViewController.setQsExpanded(true); + when(mQsController.getExpanded()).thenReturn(true); assertThat(mNotificationPanelViewController.canCollapsePanelOnTouch()).isFalse(); } @@ -1125,7 +1151,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { @Test public void testRotatingToSplitShadeWithQsExpanded_transitionsToShadeLocked() { mStatusBarStateController.setState(KEYGUARD); - mNotificationPanelViewController.setQsExpanded(true); + when(mQsController.getExpanded()).thenReturn(true); enableSplitShade(true); @@ -1136,24 +1162,18 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { public void testUnlockedSplitShadeTransitioningToKeyguard_closesQS() { enableSplitShade(true); mStatusBarStateController.setState(SHADE); - mNotificationPanelViewController.setQsExpanded(true); - mStatusBarStateController.setState(KEYGUARD); - assertThat(mNotificationPanelViewController.isQsExpanded()).isEqualTo(false); - assertThat(mNotificationPanelViewController.isQsExpandImmediate()).isEqualTo(false); + verify(mQsController).closeQs(); } @Test public void testLockedSplitShadeTransitioningToKeyguard_closesQS() { enableSplitShade(true); mStatusBarStateController.setState(SHADE_LOCKED); - mNotificationPanelViewController.setQsExpanded(true); - mStatusBarStateController.setState(KEYGUARD); - assertThat(mNotificationPanelViewController.isQsExpanded()).isEqualTo(false); - assertThat(mNotificationPanelViewController.isQsExpandImmediate()).isEqualTo(false); + verify(mQsController).closeQs(); } @Test @@ -1165,7 +1185,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { verify(mKeyguardStatusViewController).displayClock(LARGE, /* animate */ true); when(mNotificationStackScrollLayoutController.getVisibleNotificationCount()).thenReturn(1); - mNotificationPanelViewController.closeQs(); + triggerPositionClockAndNotifications(); verify(mKeyguardStatusViewController).displayClock(SMALL, /* animate */ true); } @@ -1293,18 +1313,6 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { } @Test - public void testLargeScreenHeaderMadeActiveForLargeScreen() { - mStatusBarStateController.setState(SHADE); - when(mResources.getBoolean(R.bool.config_use_large_screen_shade_header)).thenReturn(true); - mNotificationPanelViewController.updateResources(); - verify(mLargeScreenShadeHeaderController).setLargeScreenActive(true); - - when(mResources.getBoolean(R.bool.config_use_large_screen_shade_header)).thenReturn(false); - mNotificationPanelViewController.updateResources(); - verify(mLargeScreenShadeHeaderController).setLargeScreenActive(false); - } - - @Test public void testExpandWithQsMethodIsUsingLockscreenTransitionController() { enableSplitShade(/* enabled= */ true); mStatusBarStateController.setState(KEYGUARD); @@ -1358,12 +1366,14 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { @Test public void testQsToBeImmediatelyExpandedWhenOpeningPanelInSplitShade() { enableSplitShade(/* enabled= */ true); + mShadeExpansionStateManager.updateState(STATE_OPEN); + verify(mQsController).setExpandImmediate(false); + mShadeExpansionStateManager.updateState(STATE_CLOSED); - assertThat(mNotificationPanelViewController.isQsExpandImmediate()).isFalse(); + verify(mQsController, times(2)).setExpandImmediate(false); mShadeExpansionStateManager.updateState(STATE_OPENING); - - assertThat(mNotificationPanelViewController.isQsExpandImmediate()).isTrue(); + verify(mQsController).setExpandImmediate(true); } @Test @@ -1375,33 +1385,28 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { // going to lockscreen would trigger STATE_OPENING mShadeExpansionStateManager.updateState(STATE_OPENING); - assertThat(mNotificationPanelViewController.isQsExpandImmediate()).isFalse(); + verify(mQsController, never()).setExpandImmediate(true); } @Test public void testQsImmediateResetsWhenPanelOpensOrCloses() { - mNotificationPanelViewController.setQsExpandImmediate(true); mShadeExpansionStateManager.updateState(STATE_OPEN); - assertThat(mNotificationPanelViewController.isQsExpandImmediate()).isFalse(); - - mNotificationPanelViewController.setQsExpandImmediate(true); mShadeExpansionStateManager.updateState(STATE_CLOSED); - assertThat(mNotificationPanelViewController.isQsExpandImmediate()).isFalse(); + verify(mQsController, times(2)).setExpandImmediate(false); } @Test public void testQsExpansionChangedToDefaultWhenRotatingFromOrToSplitShade() { // to make sure shade is in expanded state mNotificationPanelViewController.startWaitingForOpenPanelGesture(); - assertThat(mNotificationPanelViewController.isQsExpanded()).isFalse(); // switch to split shade from portrait (default state) enableSplitShade(/* enabled= */ true); - assertThat(mNotificationPanelViewController.isQsExpanded()).isTrue(); + verify(mQsController).setExpanded(true); // switch to portrait from split shade enableSplitShade(/* enabled= */ false); - assertThat(mNotificationPanelViewController.isQsExpanded()).isFalse(); + verify(mQsController).setExpanded(false); } @Test @@ -1413,57 +1418,8 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { assertThat(mNotificationPanelViewController.isClosing()).isFalse(); mNotificationPanelViewController.animateCloseQs(false); - assertThat(mNotificationPanelViewController.isClosing()).isTrue(); - } - - @Test - public void testPanelStaysOpenWhenClosingQs() { - mShadeExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1, - /* expanded= */ true, /* tracking= */ false, /* dragDownPxAmount= */ 0); - mNotificationPanelViewController.setExpandedFraction(1f); - - assertThat(mNotificationPanelViewController.isClosing()).isFalse(); - mNotificationPanelViewController.animateCloseQs(false); - assertThat(mNotificationPanelViewController.isClosing()).isFalse(); - } - @Test - public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() { - mNotificationPanelViewController.setQs(mQs); - when(mQsFrame.getX()).thenReturn(0f); - when(mQsFrame.getWidth()).thenReturn(1000); - when(mQsHeader.getTop()).thenReturn(0); - when(mQsHeader.getBottom()).thenReturn(1000); - NotificationPanelViewController.TouchHandler touchHandler = - mNotificationPanelViewController.createTouchHandler(); - - mNotificationPanelViewController.setExpandedFraction(1f); - touchHandler.onInterceptTouchEvent( - createMotionEvent(/* x= */ 0, /* y= */ 0, MotionEvent.ACTION_DOWN)); - touchHandler.onInterceptTouchEvent( - createMotionEvent(/* x= */ 0, /* y= */ 500, MotionEvent.ACTION_MOVE)); - - assertThat(mNotificationPanelViewController.isQsTracking()).isTrue(); - } - - @Test - public void interceptTouchEvent_withinQs_shadeExpanded_inSplitShade_doesNotStartQsTracking() { - enableSplitShade(true); - mNotificationPanelViewController.setQs(mQs); - when(mQsFrame.getX()).thenReturn(0f); - when(mQsFrame.getWidth()).thenReturn(1000); - when(mQsHeader.getTop()).thenReturn(0); - when(mQsHeader.getBottom()).thenReturn(1000); - NotificationPanelViewController.TouchHandler touchHandler = - mNotificationPanelViewController.createTouchHandler(); - - mNotificationPanelViewController.setExpandedFraction(1f); - touchHandler.onInterceptTouchEvent( - createMotionEvent(/* x= */ 0, /* y= */ 0, MotionEvent.ACTION_DOWN)); - touchHandler.onInterceptTouchEvent( - createMotionEvent(/* x= */ 0, /* y= */ 500, MotionEvent.ACTION_MOVE)); - - assertThat(mNotificationPanelViewController.isQsTracking()).isFalse(); + assertThat(mNotificationPanelViewController.isClosing()).isTrue(); } @Test @@ -1494,11 +1450,14 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { enableSplitShade(true); mNotificationPanelViewController.expandWithQs(); when(mHeadsUpManager.isTrackingHeadsUp()).thenReturn(true); + when(mQsController.calculatePanelHeightExpanded(anyInt())).thenReturn(10000); mNotificationPanelViewController.setHeadsUpDraggingStartingHeight( SPLIT_SHADE_FULL_TRANSITION_DISTANCE); int maxDistance = mNotificationPanelViewController.getMaxPanelTransitionDistance(); + // make sure we're ignoring the placeholder value for Qs max height + assertThat(maxDistance).isLessThan(10000); assertThat(maxDistance).isGreaterThan(SPLIT_SHADE_FULL_TRANSITION_DISTANCE); } @@ -1525,95 +1484,26 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { @Test public void onLayoutChange_fullWidth_updatesQSWithFullWithTrue() { - mNotificationPanelViewController.setQs(mQs); - setIsFullWidth(true); - verify(mQs).setIsNotificationPanelFullWidth(true); + verify(mQsController).setNotificationPanelFullWidth(true); } @Test public void onLayoutChange_notFullWidth_updatesQSWithFullWithFalse() { - mNotificationPanelViewController.setQs(mQs); - setIsFullWidth(false); - verify(mQs).setIsNotificationPanelFullWidth(false); + verify(mQsController).setNotificationPanelFullWidth(false); } @Test public void onLayoutChange_qsNotSet_doesNotCrash() { - mNotificationPanelViewController.setQs(null); + mQuickSettingsController.setQs(null); triggerLayoutChange(); } @Test - public void onQsFragmentAttached_fullWidth_setsFullWidthTrueOnQS() { - setIsFullWidth(true); - givenViewAttached(); - mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); - - verify(mQSFragment).setIsNotificationPanelFullWidth(true); - } - - @Test - public void onQsFragmentAttached_notFullWidth_setsFullWidthFalseOnQS() { - setIsFullWidth(false); - givenViewAttached(); - mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); - - verify(mQSFragment).setIsNotificationPanelFullWidth(false); - } - - @Test - public void setQsExpansion_lockscreenShadeTransitionInProgress_usesLockscreenSquishiness() { - float squishinessFraction = 0.456f; - mNotificationPanelViewController.setQs(mQs); - when(mLockscreenShadeTransitionController.getQsSquishTransitionFraction()) - .thenReturn(squishinessFraction); - when(mNotificationStackScrollLayoutController.getNotificationSquishinessFraction()) - .thenReturn(0.987f); - // Call setTransitionToFullShadeAmount to get into the full shade transition in progress - // state. - mNotificationPanelViewController.setTransitionToFullShadeAmount( - /* pxAmount= */ 234, - /* animate= */ false, - /* delay= */ 0 - ); - - mNotificationPanelViewController.setQsExpansionHeight(/* height= */ 123); - - // First for setTransitionToFullShadeAmount and then setQsExpansion - verify(mQs, times(2)).setQsExpansion( - /* expansion= */ anyFloat(), - /* panelExpansionFraction= */ anyFloat(), - /* proposedTranslation= */ anyFloat(), - eq(squishinessFraction) - ); - } - - @Test - public void setQsExpansion_lockscreenShadeTransitionNotInProgress_usesStandardSquishiness() { - float lsSquishinessFraction = 0.456f; - float nsslSquishinessFraction = 0.987f; - mNotificationPanelViewController.setQs(mQs); - when(mLockscreenShadeTransitionController.getQsSquishTransitionFraction()) - .thenReturn(lsSquishinessFraction); - when(mNotificationStackScrollLayoutController.getNotificationSquishinessFraction()) - .thenReturn(nsslSquishinessFraction); - - mNotificationPanelViewController.setQsExpansionHeight(/* height= */ 123); - - verify(mQs).setQsExpansion( - /* expansion= */ anyFloat(), - /* panelExpansionFraction= */ anyFloat(), - /* proposedTranslation= */ anyFloat(), - eq(nsslSquishinessFraction) - ); - } - - @Test public void onEmptySpaceClicked_notDozingAndOnKeyguard_requestsFaceAuth() { StatusBarStateController.StateListener statusBarStateListener = mNotificationPanelViewController.getStatusBarStateListener(); @@ -1738,15 +1628,6 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { int transitionDistance = mNotificationPanelViewController.getMaxPanelTransitionDistance(); mNotificationPanelViewController.setExpandedHeight(transitionDistance); assertThat(mNotificationPanelViewController.isShadeFullyOpen()).isFalse(); - - // set maxQsExpansion in NPVC - int maxQsExpansion = 123; - mNotificationPanelViewController.setQs(mQs); - when(mQs.getDesiredHeight()).thenReturn(maxQsExpansion); - triggerLayoutChange(); - - mNotificationPanelViewController.setQsExpansionHeight(maxQsExpansion); - assertThat(mNotificationPanelViewController.isShadeFullyOpen()).isTrue(); } @Test @@ -1761,7 +1642,7 @@ public class NotificationPanelViewControllerTest extends SysuiTestCase { } private void triggerPositionClockAndNotifications() { - mNotificationPanelViewController.closeQs(); + mNotificationPanelViewController.onQsSetExpansionHeightCalled(false); } private FalsingManager.FalsingTapListener getFalsingTapListener() { diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt index e5d5e3b8433a..d229a08ad7c4 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewControllerTest.kt @@ -21,7 +21,7 @@ import android.testing.TestableLooper.RunWithLooper import android.view.MotionEvent import android.view.ViewGroup import androidx.test.filters.SmallTest -import com.android.keyguard.KeyguardHostViewController +import com.android.keyguard.KeyguardSecurityContainerController import com.android.keyguard.LockIconViewController import com.android.keyguard.dagger.KeyguardBouncerComponent import com.android.systemui.R @@ -106,7 +106,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { private lateinit var alternateBouncerInteractor: AlternateBouncerInteractor @Mock lateinit var keyguardBouncerComponentFactory: KeyguardBouncerComponent.Factory @Mock lateinit var keyguardBouncerComponent: KeyguardBouncerComponent - @Mock lateinit var keyguardHostViewController: KeyguardHostViewController + @Mock lateinit var keyguardSecurityContainerController: KeyguardSecurityContainerController @Mock lateinit var keyguardTransitionInteractor: KeyguardTransitionInteractor private lateinit var interactionEventHandlerCaptor: ArgumentCaptor<InteractionEventHandler> @@ -122,8 +122,8 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() { .thenReturn(mock(ViewGroup::class.java)) whenever(keyguardBouncerComponentFactory.create(any(ViewGroup::class.java))) .thenReturn(keyguardBouncerComponent) - whenever(keyguardBouncerComponent.keyguardHostViewController) - .thenReturn(keyguardHostViewController) + whenever(keyguardBouncerComponent.securityContainerController) + .thenReturn(keyguardSecurityContainerController) underTest = NotificationShadeWindowViewController( lockscreenShadeTransitionController, FalsingCollectorFake(), diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java index 5cc3ef1def9e..5e9c2199897d 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/NotificationShadeWindowViewTest.java @@ -33,7 +33,7 @@ import android.view.ViewGroup; import androidx.test.filters.SmallTest; -import com.android.keyguard.KeyguardHostViewController; +import com.android.keyguard.KeyguardSecurityContainerController; import com.android.keyguard.LockIconViewController; import com.android.keyguard.dagger.KeyguardBouncerComponent; import com.android.systemui.R; @@ -97,7 +97,7 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase { @Mock private KeyguardBouncerViewModel mKeyguardBouncerViewModel; @Mock private KeyguardBouncerComponent.Factory mKeyguardBouncerComponentFactory; @Mock private KeyguardBouncerComponent mKeyguardBouncerComponent; - @Mock private KeyguardHostViewController mKeyguardHostViewController; + @Mock private KeyguardSecurityContainerController mKeyguardSecurityContainerController; @Mock private NotificationInsetsController mNotificationInsetsController; @Mock private AlternateBouncerInteractor mAlternateBouncerInteractor; @Mock private KeyguardTransitionInteractor mKeyguardTransitionInteractor; @@ -117,8 +117,8 @@ public class NotificationShadeWindowViewTest extends SysuiTestCase { when(mView.findViewById(R.id.keyguard_bouncer_container)).thenReturn(mock(ViewGroup.class)); when(mKeyguardBouncerComponentFactory.create(any(ViewGroup.class))).thenReturn( mKeyguardBouncerComponent); - when(mKeyguardBouncerComponent.getKeyguardHostViewController()).thenReturn( - mKeyguardHostViewController); + when(mKeyguardBouncerComponent.getSecurityContainerController()).thenReturn( + mKeyguardSecurityContainerController); when(mStatusBarStateController.isDozing()).thenReturn(false); mDependency.injectTestDependency(ShadeController.class, mShadeController); diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QsBatteryModeControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/shade/QsBatteryModeControllerTest.kt new file mode 100644 index 000000000000..b547318a99b6 --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QsBatteryModeControllerTest.kt @@ -0,0 +1,100 @@ +package com.android.systemui.shade + +import android.content.Context +import android.content.res.Resources +import android.graphics.Rect +import android.testing.AndroidTestingRunner +import android.view.DisplayCutout +import androidx.test.filters.SmallTest +import com.android.systemui.R +import com.android.systemui.SysuiTestCase +import com.android.systemui.battery.BatteryMeterView +import com.android.systemui.statusbar.phone.StatusBarContentInsetsProvider +import com.android.systemui.util.mockito.mock +import com.android.systemui.util.mockito.whenever +import com.google.common.truth.Truth.assertThat +import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.mockito.Mock +import org.mockito.junit.MockitoJUnit + +@SmallTest +@RunWith(AndroidTestingRunner::class) +class QsBatteryModeControllerTest : SysuiTestCase() { + + private companion object { + val CENTER_TOP_CUTOUT: DisplayCutout = + mock<DisplayCutout>().also { + whenever(it.boundingRectTop).thenReturn(Rect(10, 0, 20, 10)) + } + + const val MOTION_LAYOUT_MAX_FRAME = 100 + const val QQS_START_FRAME = 14 + const val QS_END_FRAME = 58 + } + + @JvmField @Rule val mockitoRule = MockitoJUnit.rule()!! + + @Mock private lateinit var insetsProvider: StatusBarContentInsetsProvider + @Mock private lateinit var mockedContext: Context + @Mock private lateinit var mockedResources: Resources + + private lateinit var controller: QsBatteryModeController // under test + + @Before + fun setup() { + whenever(mockedContext.resources).thenReturn(mockedResources) + whenever(mockedResources.getInteger(R.integer.fade_in_start_frame)).thenReturn(QS_END_FRAME) + whenever(mockedResources.getInteger(R.integer.fade_out_complete_frame)) + .thenReturn(QQS_START_FRAME) + + controller = QsBatteryModeController(mockedContext, insetsProvider) + } + + @Test + fun `returns MODE_ON for qqs with center cutout`() { + assertThat( + controller.getBatteryMode(CENTER_TOP_CUTOUT, QQS_START_FRAME.prevFrameToFraction()) + ) + .isEqualTo(BatteryMeterView.MODE_ON) + } + + @Test + fun `returns MODE_ESTIMATE for qs with center cutout`() { + assertThat(controller.getBatteryMode(CENTER_TOP_CUTOUT, QS_END_FRAME.nextFrameToFraction())) + .isEqualTo(BatteryMeterView.MODE_ESTIMATE) + } + + @Test + fun `returns MODE_ON for qqs with corner cutout`() { + whenever(insetsProvider.currentRotationHasCornerCutout()).thenReturn(true) + + assertThat( + controller.getBatteryMode(CENTER_TOP_CUTOUT, QQS_START_FRAME.prevFrameToFraction()) + ) + .isEqualTo(BatteryMeterView.MODE_ESTIMATE) + } + + @Test + fun `returns MODE_ESTIMATE for qs with corner cutout`() { + whenever(insetsProvider.currentRotationHasCornerCutout()).thenReturn(true) + + assertThat(controller.getBatteryMode(CENTER_TOP_CUTOUT, QS_END_FRAME.nextFrameToFraction())) + .isEqualTo(BatteryMeterView.MODE_ESTIMATE) + } + + @Test + fun `returns null in-between`() { + assertThat( + controller.getBatteryMode(CENTER_TOP_CUTOUT, QQS_START_FRAME.nextFrameToFraction()) + ) + .isNull() + assertThat(controller.getBatteryMode(CENTER_TOP_CUTOUT, QS_END_FRAME.prevFrameToFraction())) + .isNull() + } + + private fun Int.prevFrameToFraction(): Float = (this - 1) / MOTION_LAYOUT_MAX_FRAME.toFloat() + private fun Int.nextFrameToFraction(): Float = (this + 1) / MOTION_LAYOUT_MAX_FRAME.toFloat() +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerTest.java new file mode 100644 index 000000000000..c2fca6f2120b --- /dev/null +++ b/packages/SystemUI/tests/src/com/android/systemui/shade/QuickSettingsControllerTest.java @@ -0,0 +1,415 @@ +/* + * Copyright (C) 2022 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.systemui.shade; + +import static com.android.systemui.statusbar.StatusBarState.KEYGUARD; +import static com.android.systemui.statusbar.StatusBarState.SHADE; + +import static com.google.common.truth.Truth.assertThat; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyFloat; +import static org.mockito.ArgumentMatchers.anyInt; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doAnswer; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.times; +import static org.mockito.Mockito.verify; +import static org.mockito.Mockito.when; + +import android.content.res.Resources; +import android.os.Handler; +import android.os.Looper; +import android.testing.AndroidTestingRunner; +import android.testing.TestableLooper; +import android.view.MotionEvent; +import android.view.ViewGroup; +import android.view.ViewParent; +import android.view.accessibility.AccessibilityManager; + +import androidx.test.filters.SmallTest; + +import com.android.internal.jank.InteractionJankMonitor; +import com.android.internal.logging.MetricsLogger; +import com.android.internal.logging.UiEventLogger; +import com.android.keyguard.KeyguardStatusView; +import com.android.keyguard.KeyguardUpdateMonitor; +import com.android.systemui.R; +import com.android.systemui.SysuiTestCase; +import com.android.systemui.classifier.FalsingCollector; +import com.android.systemui.dump.DumpManager; +import com.android.systemui.flags.FeatureFlags; +import com.android.systemui.fragments.FragmentHostManager; +import com.android.systemui.media.controls.pipeline.MediaDataManager; +import com.android.systemui.media.controls.ui.MediaHierarchyManager; +import com.android.systemui.plugins.FalsingManager; +import com.android.systemui.plugins.qs.QS; +import com.android.systemui.qs.QSFragment; +import com.android.systemui.screenrecord.RecordingController; +import com.android.systemui.shade.transition.ShadeTransitionController; +import com.android.systemui.statusbar.LockscreenShadeTransitionController; +import com.android.systemui.statusbar.NotificationRemoteInputManager; +import com.android.systemui.statusbar.NotificationShadeDepthController; +import com.android.systemui.statusbar.PulseExpansionHandler; +import com.android.systemui.statusbar.QsFrameTranslateController; +import com.android.systemui.statusbar.StatusBarStateControllerImpl; +import com.android.systemui.statusbar.SysuiStatusBarStateController; +import com.android.systemui.statusbar.notification.stack.AmbientState; +import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayoutController; +import com.android.systemui.statusbar.phone.DozeParameters; +import com.android.systemui.statusbar.phone.HeadsUpManagerPhone; +import com.android.systemui.statusbar.phone.KeyguardBottomAreaView; +import com.android.systemui.statusbar.phone.KeyguardBypassController; +import com.android.systemui.statusbar.phone.KeyguardStatusBarView; +import com.android.systemui.statusbar.phone.LockscreenGestureLogger; +import com.android.systemui.statusbar.phone.ScreenOffAnimationController; +import com.android.systemui.statusbar.phone.ScrimController; +import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager; +import com.android.systemui.statusbar.phone.StatusBarTouchableRegionManager; +import com.android.systemui.statusbar.policy.KeyguardStateController; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; + +import dagger.Lazy; + +@SmallTest +@RunWith(AndroidTestingRunner.class) +@TestableLooper.RunWithLooper(setAsMainLooper = true) +public class QuickSettingsControllerTest extends SysuiTestCase { + + private static final int SPLIT_SHADE_FULL_TRANSITION_DISTANCE = 400; + + private QuickSettingsController mQsController; + + @Mock private Resources mResources; + @Mock private KeyguardBottomAreaView mQsFrame; + @Mock private KeyguardStatusBarView mKeyguardStatusBar; + @Mock private QS mQs; + @Mock private QSFragment mQSFragment; + + @Mock private Lazy<NotificationPanelViewController> mPanelViewControllerLazy; + @Mock private NotificationPanelViewController mNotificationPanelViewController; + @Mock private NotificationPanelView mPanelView; + @Mock private ViewGroup mQsHeader; + @Mock private ViewParent mPanelViewParent; + @Mock private QsFrameTranslateController mQsFrameTranslateController; + @Mock private ShadeTransitionController mShadeTransitionController; + @Mock private PulseExpansionHandler mPulseExpansionHandler; + @Mock private NotificationRemoteInputManager mNotificationRemoteInputManager; + @Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager; + @Mock private NotificationStackScrollLayoutController mNotificationStackScrollLayoutController; + @Mock private LockscreenShadeTransitionController mLockscreenShadeTransitionController; + @Mock private NotificationShadeDepthController mNotificationShadeDepthController; + @Mock private LargeScreenShadeHeaderController mLargeScreenShadeHeaderController; + @Mock private StatusBarTouchableRegionManager mStatusBarTouchableRegionManager; + @Mock private KeyguardStateController mKeyguardStateController; + @Mock private KeyguardBypassController mKeyguardBypassController; + @Mock private KeyguardUpdateMonitor mKeyguardUpdateMonitor; + @Mock private ScrimController mScrimController; + @Mock private MediaDataManager mMediaDataManager; + @Mock private MediaHierarchyManager mMediaHierarchyManager; + @Mock private AmbientState mAmbientState; + @Mock private RecordingController mRecordingController; + @Mock private FalsingManager mFalsingManager; + @Mock private FalsingCollector mFalsingCollector; + @Mock private AccessibilityManager mAccessibilityManager; + @Mock private LockscreenGestureLogger mLockscreenGestureLogger; + @Mock private MetricsLogger mMetricsLogger; + @Mock private FeatureFlags mFeatureFlags; + @Mock private InteractionJankMonitor mInteractionJankMonitor; + @Mock private ShadeLogger mShadeLogger; + + @Mock private DumpManager mDumpManager; + @Mock private DozeParameters mDozeParameters; + @Mock private ScreenOffAnimationController mScreenOffAnimationController; + @Mock private HeadsUpManagerPhone mHeadsUpManager; + @Mock private UiEventLogger mUiEventLogger; + + private SysuiStatusBarStateController mStatusBarStateController; + + private Handler mMainHandler; + private LockscreenShadeTransitionController.Callback mLockscreenShadeTransitionCallback; + + private final ShadeExpansionStateManager mShadeExpansionStateManager = + new ShadeExpansionStateManager(); + + private FragmentHostManager.FragmentListener mFragmentListener; + + @Before + public void setup() { + MockitoAnnotations.initMocks(this); + when(mPanelViewControllerLazy.get()).thenReturn(mNotificationPanelViewController); + mStatusBarStateController = new StatusBarStateControllerImpl(mUiEventLogger, mDumpManager, + mInteractionJankMonitor, mShadeExpansionStateManager); + + KeyguardStatusView keyguardStatusView = new KeyguardStatusView(mContext); + keyguardStatusView.setId(R.id.keyguard_status_view); + + when(mPanelView.getResources()).thenReturn(mResources); + when(mPanelView.getContext()).thenReturn(getContext()); + when(mPanelView.findViewById(R.id.keyguard_header)).thenReturn(mKeyguardStatusBar); + when(mNotificationStackScrollLayoutController.getHeight()).thenReturn(1000); + when(mPanelView.findViewById(R.id.qs_frame)).thenReturn(mQsFrame); + when(mPanelView.findViewById(R.id.keyguard_status_view)) + .thenReturn(mock(KeyguardStatusView.class)); + when(mQs.getView()).thenReturn(mPanelView); + when(mQSFragment.getView()).thenReturn(mPanelView); + + when(mNotificationRemoteInputManager.isRemoteInputActive()) + .thenReturn(false); + when(mInteractionJankMonitor.begin(any(), anyInt())) + .thenReturn(true); + when(mInteractionJankMonitor.end(anyInt())) + .thenReturn(true); + + when(mPanelView.getParent()).thenReturn(mPanelViewParent); + when(mQs.getHeader()).thenReturn(mQsHeader); + + doAnswer(invocation -> { + mLockscreenShadeTransitionCallback = invocation.getArgument(0); + return null; + }).when(mLockscreenShadeTransitionController).addCallback(any()); + + + mMainHandler = new Handler(Looper.getMainLooper()); + + mQsController = new QuickSettingsController( + mPanelViewControllerLazy, + mPanelView, + mQsFrameTranslateController, + mShadeTransitionController, + mPulseExpansionHandler, + mNotificationRemoteInputManager, + mShadeExpansionStateManager, + mStatusBarKeyguardViewManager, + mNotificationStackScrollLayoutController, + mLockscreenShadeTransitionController, + mNotificationShadeDepthController, + mLargeScreenShadeHeaderController, + mStatusBarTouchableRegionManager, + mKeyguardStateController, + mKeyguardBypassController, + mKeyguardUpdateMonitor, + mScrimController, + mMediaDataManager, + mMediaHierarchyManager, + mAmbientState, + mRecordingController, + mFalsingManager, + mFalsingCollector, + mAccessibilityManager, + mLockscreenGestureLogger, + mMetricsLogger, + mFeatureFlags, + mInteractionJankMonitor, + mShadeLogger + ); + + mFragmentListener = mQsController.getQsFragmentListener(); + } + + @After + public void tearDown() { + mNotificationPanelViewController.cancelHeightAnimator(); + mMainHandler.removeCallbacksAndMessages(null); + } + + @Test + public void testOnTouchEvent_isConflictingExpansionGestureSet() { + assertThat(mQsController.isConflictingExpansionGesture()).isFalse(); + mShadeExpansionStateManager.onPanelExpansionChanged(1f, true, false, 0f); + mQsController.handleTouch(MotionEvent.obtain(0L /* downTime */, + 0L /* eventTime */, MotionEvent.ACTION_DOWN, 0f /* x */, 0f /* y */, + 0 /* metaState */), false, false); + assertThat(mQsController.isConflictingExpansionGesture()).isTrue(); + } + + @Test + public void testCloseQsSideEffects() { + enableSplitShade(true); + mQsController.setExpandImmediate(true); + mQsController.setExpanded(true); + mQsController.closeQs(); + + assertThat(mQsController.getExpanded()).isEqualTo(false); + assertThat(mQsController.isExpandImmediate()).isEqualTo(false); + } + + @Test + public void testLargeScreenHeaderMadeActiveForLargeScreen() { + mStatusBarStateController.setState(SHADE); + when(mResources.getBoolean(R.bool.config_use_large_screen_shade_header)).thenReturn(true); + mQsController.updateResources(); + verify(mLargeScreenShadeHeaderController).setLargeScreenActive(true); + + when(mResources.getBoolean(R.bool.config_use_large_screen_shade_header)).thenReturn(false); + mQsController.updateResources(); + verify(mLargeScreenShadeHeaderController).setLargeScreenActive(false); + } + + @Test + public void testPanelStaysOpenWhenClosingQs() { + mShadeExpansionStateManager.onPanelExpansionChanged(/* fraction= */ 1, + /* expanded= */ true, /* tracking= */ false, /* dragDownPxAmount= */ 0); + mNotificationPanelViewController.setExpandedFraction(1f); + + float shadeExpandedHeight = mQsController.getShadeExpandedHeight(); + mQsController.animateCloseQs(false); + + assertThat(mQsController.getShadeExpandedHeight()).isEqualTo(shadeExpandedHeight); + } + + @Test + public void interceptTouchEvent_withinQs_shadeExpanded_startsQsTracking() { + mQsController.setQs(mQs); + when(mQsFrame.getX()).thenReturn(0f); + when(mQsFrame.getWidth()).thenReturn(1000); + when(mQsHeader.getTop()).thenReturn(0); + when(mQsHeader.getBottom()).thenReturn(1000); + + mQsController.setShadeExpandedHeight(1f); + mQsController.onIntercept( + createMotionEvent(0, 0, MotionEvent.ACTION_DOWN)); + mQsController.onIntercept( + createMotionEvent(0, 500, MotionEvent.ACTION_MOVE)); + + assertThat(mQsController.isTracking()).isTrue(); + } + + @Test + public void interceptTouchEvent_withinQs_shadeExpanded_inSplitShade_doesNotStartQsTracking() { + enableSplitShade(true); + mQsController.setQs(mQs); + when(mQsFrame.getX()).thenReturn(0f); + when(mQsFrame.getWidth()).thenReturn(1000); + when(mQsHeader.getTop()).thenReturn(0); + when(mQsHeader.getBottom()).thenReturn(1000); + + mQsController.setShadeExpandedHeight(1f); + mQsController.onIntercept( + createMotionEvent(0, 0, MotionEvent.ACTION_DOWN)); + mQsController.onIntercept( + createMotionEvent(0, 500, MotionEvent.ACTION_MOVE)); + + assertThat(mQsController.isTracking()).isFalse(); + } + + @Test + public void onQsFragmentAttached_fullWidth_setsFullWidthTrueOnQS() { + setIsFullWidth(true); + mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); + + verify(mQSFragment).setIsNotificationPanelFullWidth(true); + } + + @Test + public void onQsFragmentAttached_notFullWidth_setsFullWidthFalseOnQS() { + setIsFullWidth(false); + mFragmentListener.onFragmentViewCreated(QS.TAG, mQSFragment); + + verify(mQSFragment).setIsNotificationPanelFullWidth(false); + } + + @Test + public void getMaxPanelTransitionDistance_inSplitShade_withHeadsUp_returnsBiggerValue() { + enableSplitShade(true); + mNotificationPanelViewController.expandWithQs(); + when(mHeadsUpManager.isTrackingHeadsUp()).thenReturn(true); + + mNotificationPanelViewController.setHeadsUpDraggingStartingHeight( + SPLIT_SHADE_FULL_TRANSITION_DISTANCE); + + assertThat(mQsController.calculatePanelHeightExpanded(0)) + .isGreaterThan(SPLIT_SHADE_FULL_TRANSITION_DISTANCE); + } + + @Test + public void setQsExpansion_lockscreenShadeTransitionInProgress_usesLockscreenSquishiness() { + float squishinessFraction = 0.456f; + mQsController.setQs(mQs); + when(mLockscreenShadeTransitionController.getQsSquishTransitionFraction()) + .thenReturn(squishinessFraction); + when(mNotificationStackScrollLayoutController.getNotificationSquishinessFraction()) + .thenReturn(0.987f); + // Call setTransitionToFullShadeAmount to get into the full shade transition in progress + // state. + mLockscreenShadeTransitionCallback.setTransitionToFullShadeAmount(234, false, 0); + + mQsController.setExpansionHeight(123); + + // First for setTransitionToFullShadeAmount and then setQsExpansion + verify(mQs, times(2)).setQsExpansion(anyFloat(), anyFloat(), anyFloat(), + eq(squishinessFraction) + ); + } + + @Test + public void setQsExpansion_lockscreenShadeTransitionNotInProgress_usesStandardSquishiness() { + float lsSquishinessFraction = 0.456f; + float nsslSquishinessFraction = 0.987f; + mQsController.setQs(mQs); + when(mLockscreenShadeTransitionController.getQsSquishTransitionFraction()) + .thenReturn(lsSquishinessFraction); + when(mNotificationStackScrollLayoutController.getNotificationSquishinessFraction()) + .thenReturn(nsslSquishinessFraction); + + mQsController.setExpansionHeight(123); + + verify(mQs).setQsExpansion(anyFloat(), anyFloat(), anyFloat(), eq(nsslSquishinessFraction) + ); + } + + @Test + public void shadeExpanded_onKeyguard() { + mStatusBarStateController.setState(KEYGUARD); + // set maxQsExpansion in NPVC + int maxQsExpansion = 123; + mQsController.setQs(mQs); + when(mQs.getDesiredHeight()).thenReturn(maxQsExpansion); + + int oldMaxHeight = mQsController.updateHeightsOnShadeLayoutChange(); + mQsController.handleShadeLayoutChanged(oldMaxHeight); + + mQsController.setExpansionHeight(maxQsExpansion); + assertThat(mQsController.computeExpansionFraction()).isEqualTo(1f); + } + + private static MotionEvent createMotionEvent(int x, int y, int action) { + return MotionEvent.obtain( + /* downTime= */ 0, /* eventTime= */ 0, action, x, y, /* metaState= */ 0); + } + + private void enableSplitShade(boolean enabled) { + when(mResources.getBoolean(R.bool.config_use_split_notification_shade)).thenReturn(enabled); + mQsController.updateResources(); + } + + private void setIsFullWidth(boolean fullWidth) { + mQsController.setNotificationPanelFullWidth(fullWidth); + triggerLayoutChange(); + } + + private void triggerLayoutChange() { + int oldMaxHeight = mQsController.updateHeightsOnShadeLayoutChange(); + mQsController.handleShadeLayoutChanged(oldMaxHeight); + } +} diff --git a/packages/SystemUI/tests/src/com/android/systemui/smartspace/DreamSmartspaceControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/smartspace/DreamSmartspaceControllerTest.kt index c5432c5fe330..a280510009a7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/smartspace/DreamSmartspaceControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/smartspace/DreamSmartspaceControllerTest.kt @@ -99,8 +99,6 @@ class DreamSmartspaceControllerTest : SysuiTestCase() { override fun setPrimaryTextColor(color: Int) {} - override fun setIsDreaming(isDreaming: Boolean) {} - override fun setUiSurface(uiSurface: String) {} override fun setDozeAmount(amount: Float) {} diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt index 702f278746be..d99cdd514f37 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/LockscreenShadeTransitionControllerTest.kt @@ -79,6 +79,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() { @Mock lateinit var singleShadeOverScroller: SingleShadeLockScreenOverScroller @Mock lateinit var splitShadeOverScroller: SplitShadeLockScreenOverScroller @Mock lateinit var qsTransitionController: LockscreenShadeQsTransitionController + @Mock lateinit var transitionControllerCallback: LockscreenShadeTransitionController.Callback @JvmField @Rule val mockito = MockitoJUnit.rule() private val configurationController = FakeConfigurationController() @@ -124,6 +125,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() { }, qsTransitionControllerFactory = { qsTransitionController }, ) + transitionController.addCallback(transitionControllerCallback) whenever(nsslController.view).thenReturn(stackscroller) whenever(nsslController.expandHelperCallback).thenReturn(expandHelperCallback) transitionController.notificationPanelController = notificationPanelController @@ -258,7 +260,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() { verify(nsslController, never()).setTransitionToFullShadeAmount(anyFloat()) verify(mediaHierarchyManager, never()).setTransitionToFullShadeAmount(anyFloat()) verify(scrimController, never()).setTransitionToFullShadeProgress(anyFloat(), anyFloat()) - verify(notificationPanelController, never()).setTransitionToFullShadeAmount(anyFloat(), + verify(transitionControllerCallback, never()).setTransitionToFullShadeAmount(anyFloat(), anyBoolean(), anyLong()) verify(qsTransitionController, never()).dragDownAmount = anyFloat() } @@ -269,7 +271,7 @@ class LockscreenShadeTransitionControllerTest : SysuiTestCase() { verify(nsslController).setTransitionToFullShadeAmount(anyFloat()) verify(mediaHierarchyManager).setTransitionToFullShadeAmount(anyFloat()) verify(scrimController).setTransitionToFullShadeProgress(anyFloat(), anyFloat()) - verify(notificationPanelController).setTransitionToFullShadeAmount(anyFloat(), + verify(transitionControllerCallback).setTransitionToFullShadeAmount(anyFloat(), anyBoolean(), anyLong()) verify(qsTransitionController).dragDownAmount = 10f verify(depthController).transitionToFullShadeProgress = anyFloat() diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt index d6225c6748f3..7fdcfb210804 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/lockscreen/LockscreenSmartspaceControllerTest.kt @@ -780,9 +780,6 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { override fun setPrimaryTextColor(color: Int) { } - override fun setIsDreaming(isDreaming: Boolean) { - } - override fun setUiSurface(uiSurface: String) { } @@ -811,9 +808,6 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { override fun setPrimaryTextColor(color: Int) { } - override fun setIsDreaming(isDreaming: Boolean) { - } - override fun setUiSurface(uiSurface: String) { } @@ -838,9 +832,6 @@ class LockscreenSmartspaceControllerTest : SysuiTestCase() { override fun setPrimaryTextColor(color: Int) { } - override fun setIsDreaming(isDreaming: Boolean) { - } - override fun setUiSurface(uiSurface: String) { } diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java index 94e3e6cb5f8e..edb2965eabfa 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java @@ -105,6 +105,7 @@ import org.mockito.InOrder; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.mockito.Spy; +import org.mockito.stubbing.Answer; import java.util.Arrays; import java.util.Collection; @@ -376,6 +377,90 @@ public class NotifCollectionTest extends SysuiTestCase { } @Test + public void testScheduleBuildNotificationListWhenChannelChanged() { + // GIVEN + final NotificationEntryBuilder neb = buildNotif(TEST_PACKAGE, 48); + final NotificationChannel channel = new NotificationChannel( + "channelId", + "channelName", + NotificationManager.IMPORTANCE_DEFAULT); + neb.setChannel(channel); + + final NotifEvent notif = mNoMan.postNotif(neb); + final NotificationEntry entry = mCollectionListener.getEntry(notif.key); + + when(mMainHandler.hasCallbacks(any())).thenReturn(false); + + clearInvocations(mBuildListener); + + // WHEN + mNotifHandler.onNotificationChannelModified(TEST_PACKAGE, + entry.getSbn().getUser(), channel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED); + + // THEN + verify(mMainHandler).postDelayed(any(), eq(1000L)); + } + + @Test + public void testCancelScheduledBuildNotificationListEventWhenNotifUpdatedSynchronously() { + // GIVEN + final NotificationEntry entry1 = buildNotif(TEST_PACKAGE, 1) + .setGroup(mContext, "group_1") + .build(); + final NotificationEntry entry2 = buildNotif(TEST_PACKAGE, 2) + .setGroup(mContext, "group_1") + .setContentTitle(mContext, "New version") + .build(); + final NotificationEntry entry3 = buildNotif(TEST_PACKAGE, 3) + .setGroup(mContext, "group_1") + .build(); + + final List<CoalescedEvent> entriesToBePosted = Arrays.asList( + new CoalescedEvent(entry1.getKey(), 0, entry1.getSbn(), entry1.getRanking(), null), + new CoalescedEvent(entry2.getKey(), 1, entry2.getSbn(), entry2.getRanking(), null), + new CoalescedEvent(entry3.getKey(), 2, entry3.getSbn(), entry3.getRanking(), null) + ); + + when(mMainHandler.hasCallbacks(any())).thenReturn(true); + + // WHEN + mNotifHandler.onNotificationBatchPosted(entriesToBePosted); + + // THEN + verify(mMainHandler).removeCallbacks(any()); + } + + @Test + public void testBuildNotificationListWhenChannelChanged() { + // GIVEN + final NotificationEntryBuilder neb = buildNotif(TEST_PACKAGE, 48); + final NotificationChannel channel = new NotificationChannel( + "channelId", + "channelName", + NotificationManager.IMPORTANCE_DEFAULT); + neb.setChannel(channel); + + final NotifEvent notif = mNoMan.postNotif(neb); + final NotificationEntry entry = mCollectionListener.getEntry(notif.key); + + when(mMainHandler.hasCallbacks(any())).thenReturn(false); + when(mMainHandler.postDelayed(any(), eq(1000L))).thenAnswer((Answer) invocation -> { + final Runnable runnable = invocation.getArgument(0); + runnable.run(); + return null; + }); + + clearInvocations(mBuildListener); + + // WHEN + mNotifHandler.onNotificationChannelModified(TEST_PACKAGE, + entry.getSbn().getUser(), channel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED); + + // THEN + verifyBuiltList(List.of(entry)); + } + + @Test public void testRankingsAreUpdatedForOtherNotifs() { // GIVEN a collection with one notif NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 3) diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java index b879cf24fcf1..48573c63d728 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesCommandQueueCallbacksTest.java @@ -46,6 +46,7 @@ import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.settings.UserTracker; import com.android.systemui.shade.CameraLauncher; import com.android.systemui.shade.NotificationPanelViewController; +import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.shade.ShadeController; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.DisableFlagsLogger; @@ -73,6 +74,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase { @Mock private CentralSurfaces mCentralSurfaces; @Mock private ShadeController mShadeController; @Mock private CommandQueue mCommandQueue; + @Mock private QuickSettingsController mQuickSettingsController; @Mock private NotificationPanelViewController mNotificationPanelViewController; @Mock private RemoteInputQuickSettingsDisabler mRemoteInputQuickSettingsDisabler; private final MetricsLogger mMetricsLogger = new FakeMetricsLogger(); @@ -101,6 +103,7 @@ public class CentralSurfacesCommandQueueCallbacksTest extends SysuiTestCase { mSbcqCallbacks = new CentralSurfacesCommandQueueCallbacks( mCentralSurfaces, + mQuickSettingsController, mContext, mContext.getResources(), mShadeController, diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java index 06053987202c..dbf416e9d1aa 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/CentralSurfacesImplTest.java @@ -126,6 +126,7 @@ import com.android.systemui.shade.NotificationPanelView; import com.android.systemui.shade.NotificationPanelViewController; import com.android.systemui.shade.NotificationShadeWindowView; import com.android.systemui.shade.NotificationShadeWindowViewController; +import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.shade.ShadeController; import com.android.systemui.shade.ShadeControllerImpl; import com.android.systemui.shade.ShadeExpansionStateManager; @@ -218,6 +219,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase { @Mock private HeadsUpManagerPhone mHeadsUpManager; @Mock private NotificationPanelViewController mNotificationPanelViewController; @Mock private NotificationPanelView mNotificationPanelView; + @Mock private QuickSettingsController mQuickSettingsController; @Mock private IStatusBarService mBarService; @Mock private IDreamManager mDreamManager; @Mock private LightRevealScrimViewModel mLightRevealScrimViewModel; @@ -546,6 +548,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase { // initialized automatically and make NPVC private. mCentralSurfaces.mNotificationShadeWindowView = mNotificationShadeWindowView; mCentralSurfaces.mNotificationPanelViewController = mNotificationPanelViewController; + mCentralSurfaces.mQsController = mQuickSettingsController; mCentralSurfaces.mDozeScrimController = mDozeScrimController; mCentralSurfaces.mPresenter = mNotificationPresenter; mCentralSurfaces.mKeyguardIndicationController = mKeyguardIndicationController; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java index 8841521c19f5..5bb25f5425a7 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java @@ -43,6 +43,7 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.settings.FakeDisplayTracker; import com.android.systemui.shade.NotificationPanelViewController; import com.android.systemui.shade.NotificationShadeWindowView; +import com.android.systemui.shade.QuickSettingsController; import com.android.systemui.shade.ShadeController; import com.android.systemui.statusbar.CommandQueue; import com.android.systemui.statusbar.KeyguardIndicationController; @@ -112,6 +113,7 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase { mStatusBarNotificationPresenter = new StatusBarNotificationPresenter( mContext, mock(NotificationPanelViewController.class), + mock(QuickSettingsController.class), mock(HeadsUpManagerPhone.class), notificationShadeWindowView, mock(ActivityStarter.class), diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java index cf880eba20f7..0589cfc0967b 100644 --- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java +++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java @@ -1512,7 +1512,6 @@ import java.util.concurrent.atomic.AtomicBoolean; case MSG_I_BT_SERVICE_DISCONNECTED_PROFILE: if (msg.arg1 != BluetoothProfile.HEADSET) { synchronized (mDeviceStateLock) { - mBtHelper.onBtProfileDisconnected(msg.arg1); mDeviceInventory.onBtProfileDisconnected(msg.arg1); } } else { diff --git a/services/core/java/com/android/server/audio/BtHelper.java b/services/core/java/com/android/server/audio/BtHelper.java index f95982138564..6cd42f87aede 100644 --- a/services/core/java/com/android/server/audio/BtHelper.java +++ b/services/core/java/com/android/server/audio/BtHelper.java @@ -279,11 +279,7 @@ public class BtHelper { } AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent( AudioServiceEvents.VolumeEvent.VOL_SET_AVRCP_VOL, index)); - try { - mA2dp.setAvrcpAbsoluteVolume(index); - } catch (Exception e) { - Log.e(TAG, "Exception while changing abs volume", e); - } + mA2dp.setAvrcpAbsoluteVolume(index); } /*package*/ synchronized @AudioSystem.AudioFormatNativeEnumForBtCodec int getA2dpCodec( @@ -291,12 +287,7 @@ public class BtHelper { if (mA2dp == null) { return AudioSystem.AUDIO_FORMAT_DEFAULT; } - final BluetoothCodecStatus btCodecStatus = null; - try { - mA2dp.getCodecStatus(device); - } catch (Exception e) { - Log.e(TAG, "Exception while getting status of " + device, e); - } + final BluetoothCodecStatus btCodecStatus = mA2dp.getCodecStatus(device); if (btCodecStatus == null) { return AudioSystem.AUDIO_FORMAT_DEFAULT; } @@ -430,11 +421,7 @@ public class BtHelper { } AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent( AudioServiceEvents.VolumeEvent.VOL_SET_LE_AUDIO_VOL, index, maxIndex)); - try { - mLeAudio.setVolume(volume); - } catch (Exception e) { - Log.e(TAG, "Exception while setting LE volume", e); - } + mLeAudio.setVolume(volume); } /*package*/ synchronized void setHearingAidVolume(int index, int streamType, @@ -460,11 +447,7 @@ public class BtHelper { AudioService.sVolumeLogger.log(new AudioServiceEvents.VolumeEvent( AudioServiceEvents.VolumeEvent.VOL_SET_HEARING_AID_VOL, index, gainDB)); } - try { - mHearingAid.setVolume(gainDB); - } catch (Exception e) { - Log.i(TAG, "Exception while setting hearing aid volume", e); - } + mHearingAid.setVolume(gainDB); } /*package*/ synchronized void onBroadcastScoConnectionState(int state) { @@ -504,35 +487,6 @@ public class BtHelper { mBluetoothHeadset = null; } - //@GuardedBy("AudioDeviceBroker.mDeviceStateLock") - /*package*/ synchronized void onBtProfileDisconnected(int profile) { - switch (profile) { - case BluetoothProfile.A2DP: - mA2dp = null; - break; - case BluetoothProfile.HEARING_AID: - mHearingAid = null; - break; - case BluetoothProfile.LE_AUDIO: - mLeAudio = null; - break; - - case BluetoothProfile.A2DP_SINK: - case BluetoothProfile.LE_AUDIO_BROADCAST: - // shouldn't be received here as profile doesn't involve BtHelper - Log.e(TAG, "onBtProfileDisconnected: Not a profile handled by BtHelper " - + BluetoothProfile.getProfileName(profile)); - break; - - default: - // Not a valid profile to disconnect - Log.e(TAG, "onBtProfileDisconnected: Not a valid profile to disconnect " - + BluetoothProfile.getProfileName(profile)); - break; - } - } - - //@GuardedBy("AudioDeviceBroker.mDeviceStateLock") /*package*/ synchronized void onBtProfileConnected(int profile, BluetoothProfile proxy) { if (profile == BluetoothProfile.HEADSET) { onHeadsetProfileConnected((BluetoothHeadset) proxy); @@ -718,6 +672,7 @@ public class BtHelper { public void onServiceConnected(int profile, BluetoothProfile proxy) { switch(profile) { case BluetoothProfile.A2DP: + case BluetoothProfile.A2DP_SINK: case BluetoothProfile.HEADSET: case BluetoothProfile.HEARING_AID: case BluetoothProfile.LE_AUDIO: @@ -727,10 +682,6 @@ public class BtHelper { mDeviceBroker.postBtProfileConnected(profile, proxy); break; - case BluetoothProfile.A2DP_SINK: - // no A2DP sink functionality handled by BtHelper - case BluetoothProfile.LE_AUDIO_BROADCAST: - // no broadcast functionality handled by BtHelper default: break; } @@ -739,19 +690,14 @@ public class BtHelper { switch (profile) { case BluetoothProfile.A2DP: + case BluetoothProfile.A2DP_SINK: case BluetoothProfile.HEADSET: case BluetoothProfile.HEARING_AID: case BluetoothProfile.LE_AUDIO: - AudioService.sDeviceLogger.log(new AudioEventLogger.StringEvent( - "BT profile service: disconnecting " - + BluetoothProfile.getProfileName(profile) + " profile")); + case BluetoothProfile.LE_AUDIO_BROADCAST: mDeviceBroker.postBtProfileDisconnected(profile); break; - case BluetoothProfile.A2DP_SINK: - // no A2DP sink functionality handled by BtHelper - case BluetoothProfile.LE_AUDIO_BROADCAST: - // no broadcast functionality handled by BtHelper default: break; } diff --git a/services/core/java/com/android/server/devicestate/DeviceStatePolicy.java b/services/core/java/com/android/server/devicestate/DeviceStatePolicy.java index 5c4e2f3426ee..c876a8b76dc1 100644 --- a/services/core/java/com/android/server/devicestate/DeviceStatePolicy.java +++ b/services/core/java/com/android/server/devicestate/DeviceStatePolicy.java @@ -20,6 +20,7 @@ import android.annotation.NonNull; import android.content.Context; import android.content.res.Resources; import android.text.TextUtils; +import android.util.Slog; import com.android.server.policy.DeviceStatePolicyImpl; @@ -92,11 +93,16 @@ public abstract class DeviceStatePolicy { try { return (DeviceStatePolicy.Provider) Class.forName(name).newInstance(); - } catch (ReflectiveOperationException | ClassCastException e) { + } catch (ClassCastException e) { throw new IllegalStateException("Couldn't instantiate class " + name + " for config_deviceSpecificDeviceStatePolicyProvider:" + " make sure it has a public zero-argument constructor" - + " and implements DeviceStatePolicy.Provider", e); + + " and implements DeviceStatePolicy.Provider"); + } catch (ReflectiveOperationException e) { + Slog.e("DeviceStatePolicy", "Couldn't instantiate class " + name + + " for config_deviceSpecificDeviceStatePolicyProvider:" + + " using default provider", e); + return new DeviceStatePolicy.DefaultProvider(); } } } diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java index 4341634fb890..909c531c5e92 100644 --- a/services/core/java/com/android/server/display/DisplayManagerService.java +++ b/services/core/java/com/android/server/display/DisplayManagerService.java @@ -434,6 +434,8 @@ public final class DisplayManagerService extends SystemService { private boolean mIsDocked; private boolean mIsDreaming; + private boolean mBootCompleted = false; + private final BroadcastReceiver mIdleModeReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { @@ -573,6 +575,12 @@ public final class DisplayManagerService extends SystemService { } } } else if (phase == PHASE_BOOT_COMPLETED) { + synchronized (mSyncRoot) { + mBootCompleted = true; + for (int i = 0; i < mDisplayPowerControllers.size(); i++) { + mDisplayPowerControllers.valueAt(i).onBootCompleted(); + } + } mDisplayModeDirector.onBootCompleted(); mLogicalDisplayMapper.onBootCompleted(); } @@ -2680,7 +2688,7 @@ public final class DisplayManagerService extends SystemService { final DisplayPowerController displayPowerController = new DisplayPowerController( mContext, mDisplayPowerCallbacks, mPowerHandler, mSensorManager, mDisplayBlanker, display, mBrightnessTracker, brightnessSetting, - () -> handleBrightnessChange(display), hbmMetadata); + () -> handleBrightnessChange(display), hbmMetadata, mBootCompleted); mDisplayPowerControllers.append(display.getDisplayIdLocked(), displayPowerController); } diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java index b431306e294d..7957ed63a3e2 100644 --- a/services/core/java/com/android/server/display/DisplayPowerController.java +++ b/services/core/java/com/android/server/display/DisplayPowerController.java @@ -132,6 +132,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private static final int MSG_UPDATE_RBC = 11; private static final int MSG_BRIGHTNESS_RAMP_DONE = 12; private static final int MSG_STATSD_HBM_BRIGHTNESS = 13; + private static final int MSG_SWITCH_USER = 14; + private static final int MSG_BOOT_COMPLETED = 15; private static final int PROXIMITY_UNKNOWN = -1; private static final int PROXIMITY_NEGATIVE = 0; @@ -505,6 +507,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call private boolean mIsEnabled; private boolean mIsInTransition; + private boolean mBootCompleted; + /** * Creates the display power controller. */ @@ -512,7 +516,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call DisplayPowerCallbacks callbacks, Handler handler, SensorManager sensorManager, DisplayBlanker blanker, LogicalDisplay logicalDisplay, BrightnessTracker brightnessTracker, BrightnessSetting brightnessSetting, - Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata) { + Runnable onBrightnessChangeRunnable, HighBrightnessModeMetadata hbmMetadata, + boolean bootCompleted) { mLogicalDisplay = logicalDisplay; mDisplayId = mLogicalDisplay.getDisplayIdLocked(); final String displayIdStr = "[" + mDisplayId + "]"; @@ -654,6 +659,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mTemporaryAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT; + mBootCompleted = bootCompleted; } private void applyReduceBrightColorsSplineAdjustment() { @@ -703,6 +709,11 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } public void onSwitchUser(@UserIdInt int newUserId) { + Message msg = mHandler.obtainMessage(MSG_SWITCH_USER, newUserId); + mHandler.sendMessage(msg); + } + + private void handleOnSwitchUser(@UserIdInt int newUserId) { handleSettingsChange(true /* userSwitch */); handleBrightnessModeChange(); if (mBrightnessTracker != null) { @@ -1364,7 +1375,7 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call // Initialize things the first time the power state is changed. if (mustInitialize) { - initialize(state); + initialize(readyToUpdateDisplayState() ? state : Display.STATE_UNKNOWN); } // Animate the screen state change unless already animating. @@ -2044,7 +2055,8 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } } - if (!reportOnly && mPowerState.getScreenState() != state) { + if (!reportOnly && mPowerState.getScreenState() != state + && readyToUpdateDisplayState()) { Trace.traceCounter(Trace.TRACE_TAG_POWER, "ScreenState", state); // TODO(b/153319140) remove when we can get this from the above trace invocation SystemProperties.set("debug.tracing.screen_state", String.valueOf(state)); @@ -2491,6 +2503,10 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call mBrightnessSetting.setBrightness(brightnessValue); } + void onBootCompleted() { + mHandler.obtainMessage(MSG_BOOT_COMPLETED).sendToTarget(); + } + private void updateScreenBrightnessSetting(float brightnessValue) { if (!isValidBrightnessValue(brightnessValue) || brightnessValue == mCurrentScreenBrightnessSetting) { @@ -2636,6 +2652,17 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call } }; + /** + * Indicates whether the display state is ready to update. If this is the default display, we + * want to update it right away so that we can draw the boot animation on it. If it is not + * the default display, drawing the boot animation on it would look incorrect, so we need + * to wait until boot is completed. + * @return True if the display state is ready to update + */ + private boolean readyToUpdateDisplayState() { + return mDisplayId == Display.DEFAULT_DISPLAY || mBootCompleted; + } + public void dump(final PrintWriter pw) { synchronized (mLock) { pw.println(); @@ -3167,6 +3194,15 @@ final class DisplayPowerController implements AutomaticBrightnessController.Call case MSG_STATSD_HBM_BRIGHTNESS: logHbmBrightnessStats(Float.intBitsToFloat(msg.arg1), msg.arg2); break; + + case MSG_SWITCH_USER: + handleOnSwitchUser(msg.arg1); + break; + + case MSG_BOOT_COMPLETED: + mBootCompleted = true; + updatePowerState(); + break; } } } diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java index 78cffa6f4f79..59794f41d1b7 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsService.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java @@ -80,6 +80,7 @@ import android.hardware.fingerprint.Fingerprint; import android.hardware.fingerprint.FingerprintManager; import android.net.Uri; import android.os.Binder; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.IBinder; @@ -117,6 +118,7 @@ import android.text.TextUtils; import android.util.ArrayMap; import android.util.ArraySet; import android.util.EventLog; +import android.util.Log; import android.util.LongSparseArray; import android.util.Slog; import android.util.SparseArray; @@ -203,7 +205,7 @@ public class LockSettingsService extends ILockSettings.Stub { private static final String TAG = "LockSettingsService"; private static final String PERMISSION = ACCESS_KEYGUARD_SECURE_STORAGE; private static final String BIOMETRIC_PERMISSION = MANAGE_BIOMETRIC; - private static final boolean DEBUG = false; + private static final boolean DEBUG = Build.IS_DEBUGGABLE && Log.isLoggable(TAG, Log.DEBUG); private static final int PROFILE_KEY_IV_SIZE = 12; private static final String SEPARATE_PROFILE_CHALLENGE_KEY = "lockscreen.profilechallenge"; diff --git a/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java b/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java index 1203769cb72b..678698b5d32b 100644 --- a/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java +++ b/services/core/java/com/android/server/locksettings/LockSettingsStrongAuth.java @@ -25,6 +25,7 @@ import android.app.AlarmManager.OnAlarmListener; import android.app.admin.DevicePolicyManager; import android.app.trust.IStrongAuthTracker; import android.content.Context; +import android.os.Build; import android.os.Handler; import android.os.Looper; import android.os.Message; @@ -33,6 +34,7 @@ import android.os.RemoteException; import android.os.SystemClock; import android.os.UserHandle; import android.util.ArrayMap; +import android.util.Log; import android.util.Slog; import android.util.SparseBooleanArray; import android.util.SparseIntArray; @@ -46,8 +48,8 @@ import com.android.internal.widget.LockPatternUtils.StrongAuthTracker; */ public class LockSettingsStrongAuth { - private static final String TAG = "LockSettings"; - private static final boolean DEBUG = false; + private static final String TAG = "LockSettingsStrongAuth"; + private static final boolean DEBUG = Build.IS_DEBUGGABLE && Log.isLoggable(TAG, Log.DEBUG); private static final int MSG_REQUIRE_STRONG_AUTH = 1; private static final int MSG_REGISTER_TRACKER = 2; @@ -267,6 +269,7 @@ public class LockSettingsStrongAuth { } private void handleScheduleStrongAuthTimeout(int userId) { + if (DEBUG) Slog.d(TAG, "handleScheduleStrongAuthTimeout for userId=" + userId); rescheduleStrongAuthTimeoutAlarm(mInjector.getElapsedRealtimeMs(), userId); // cancel current non-strong biometric alarm listener for the user (if there was one) diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java index b5fceb50f1dc..ff10cbc19d5f 100755 --- a/services/core/java/com/android/server/notification/NotificationManagerService.java +++ b/services/core/java/com/android/server/notification/NotificationManagerService.java @@ -8543,6 +8543,9 @@ public class NotificationManagerService extends SystemService { if (interceptBefore && !record.isIntercepted() && record.isNewEnoughForAlerting(System.currentTimeMillis())) { buzzBeepBlinkLocked(record); + + // Log alert after change in intercepted state to Zen Log as well + ZenLog.traceAlertOnUpdatedIntercept(record); } } if (changed) { diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java index d3443066155f..1501d69cea3c 100644 --- a/services/core/java/com/android/server/notification/NotificationRecord.java +++ b/services/core/java/com/android/server/notification/NotificationRecord.java @@ -114,6 +114,8 @@ public final class NotificationRecord { // is this notification currently being intercepted by Zen Mode? private boolean mIntercept; + // has the intercept value been set explicitly? we only want to log it if new or changed + private boolean mInterceptSet; // is this notification hidden since the app pkg is suspended? private boolean mHidden; @@ -914,6 +916,7 @@ public final class NotificationRecord { public boolean setIntercepted(boolean intercept) { mIntercept = intercept; + mInterceptSet = true; return mIntercept; } @@ -934,6 +937,10 @@ public final class NotificationRecord { return mIntercept; } + public boolean hasInterceptBeenSet() { + return mInterceptSet; + } + public boolean isNewEnoughForAlerting(long now) { return getFreshnessMs(now) <= MAX_SOUND_DELAY_MS; } diff --git a/services/core/java/com/android/server/notification/ZenLog.java b/services/core/java/com/android/server/notification/ZenLog.java index c0bc474cd8fa..35b94e7ccd63 100644 --- a/services/core/java/com/android/server/notification/ZenLog.java +++ b/services/core/java/com/android/server/notification/ZenLog.java @@ -68,20 +68,23 @@ public class ZenLog { private static final int TYPE_MATCHES_CALL_FILTER = 18; private static final int TYPE_RECORD_CALLER = 19; private static final int TYPE_CHECK_REPEAT_CALLER = 20; + private static final int TYPE_ALERT_ON_UPDATED_INTERCEPT = 21; private static int sNext; private static int sSize; public static void traceIntercepted(NotificationRecord record, String reason) { - if (record != null && record.isIntercepted()) return; // already logged append(TYPE_INTERCEPTED, record.getKey() + "," + reason); } public static void traceNotIntercepted(NotificationRecord record, String reason) { - if (record != null && record.isUpdate) return; // already logged append(TYPE_NOT_INTERCEPTED, record.getKey() + "," + reason); } + public static void traceAlertOnUpdatedIntercept(NotificationRecord record) { + append(TYPE_ALERT_ON_UPDATED_INTERCEPT, record.getKey()); + } + public static void traceSetRingerModeExternal(int ringerModeOld, int ringerModeNew, String caller, int ringerModeInternalIn, int ringerModeInternalOut) { append(TYPE_SET_RINGER_MODE_EXTERNAL, caller + ",e:" + @@ -219,6 +222,7 @@ public class ZenLog { case TYPE_MATCHES_CALL_FILTER: return "matches_call_filter"; case TYPE_RECORD_CALLER: return "record_caller"; case TYPE_CHECK_REPEAT_CALLER: return "check_repeat_caller"; + case TYPE_ALERT_ON_UPDATED_INTERCEPT: return "alert_on_updated_intercept"; default: return "unknown"; } } diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java index db0ce2ef6fe2..5b7b0c12026b 100644 --- a/services/core/java/com/android/server/notification/ZenModeFiltering.java +++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java @@ -155,85 +155,85 @@ public class ZenModeFiltering { if (isCritical(record)) { // Zen mode is ignored for critical notifications. - ZenLog.traceNotIntercepted(record, "criticalNotification"); + maybeLogInterceptDecision(record, false, "criticalNotification"); return false; } // Make an exception to policy for the notification saying that policy has changed if (NotificationManager.Policy.areAllVisualEffectsSuppressed(policy.suppressedVisualEffects) && "android".equals(record.getSbn().getPackageName()) && SystemMessageProto.SystemMessage.NOTE_ZEN_UPGRADE == record.getSbn().getId()) { - ZenLog.traceNotIntercepted(record, "systemDndChangedNotification"); + maybeLogInterceptDecision(record, false, "systemDndChangedNotification"); return false; } switch (zen) { case Global.ZEN_MODE_NO_INTERRUPTIONS: // #notevenalarms - ZenLog.traceIntercepted(record, "none"); + maybeLogInterceptDecision(record, true, "none"); return true; case Global.ZEN_MODE_ALARMS: if (isAlarm(record)) { // Alarms only - ZenLog.traceNotIntercepted(record, "alarm"); + maybeLogInterceptDecision(record, false, "alarm"); return false; } - ZenLog.traceIntercepted(record, "alarmsOnly"); + maybeLogInterceptDecision(record, true, "alarmsOnly"); return true; case Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS: // allow user-prioritized packages through in priority mode if (record.getPackagePriority() == Notification.PRIORITY_MAX) { - ZenLog.traceNotIntercepted(record, "priorityApp"); + maybeLogInterceptDecision(record, false, "priorityApp"); return false; } if (isAlarm(record)) { if (!policy.allowAlarms()) { - ZenLog.traceIntercepted(record, "!allowAlarms"); + maybeLogInterceptDecision(record, true, "!allowAlarms"); return true; } - ZenLog.traceNotIntercepted(record, "allowedAlarm"); + maybeLogInterceptDecision(record, false, "allowedAlarm"); return false; } if (isEvent(record)) { if (!policy.allowEvents()) { - ZenLog.traceIntercepted(record, "!allowEvents"); + maybeLogInterceptDecision(record, true, "!allowEvents"); return true; } - ZenLog.traceNotIntercepted(record, "allowedEvent"); + maybeLogInterceptDecision(record, false, "allowedEvent"); return false; } if (isReminder(record)) { if (!policy.allowReminders()) { - ZenLog.traceIntercepted(record, "!allowReminders"); + maybeLogInterceptDecision(record, true, "!allowReminders"); return true; } - ZenLog.traceNotIntercepted(record, "allowedReminder"); + maybeLogInterceptDecision(record, false, "allowedReminder"); return false; } if (isMedia(record)) { if (!policy.allowMedia()) { - ZenLog.traceIntercepted(record, "!allowMedia"); + maybeLogInterceptDecision(record, true, "!allowMedia"); return true; } - ZenLog.traceNotIntercepted(record, "allowedMedia"); + maybeLogInterceptDecision(record, false, "allowedMedia"); return false; } if (isSystem(record)) { if (!policy.allowSystem()) { - ZenLog.traceIntercepted(record, "!allowSystem"); + maybeLogInterceptDecision(record, true, "!allowSystem"); return true; } - ZenLog.traceNotIntercepted(record, "allowedSystem"); + maybeLogInterceptDecision(record, false, "allowedSystem"); return false; } if (isConversation(record)) { if (policy.allowConversations()) { if (policy.priorityConversationSenders == CONVERSATION_SENDERS_ANYONE) { - ZenLog.traceNotIntercepted(record, "conversationAnyone"); + maybeLogInterceptDecision(record, false, "conversationAnyone"); return false; } else if (policy.priorityConversationSenders == NotificationManager.Policy.CONVERSATION_SENDERS_IMPORTANT && record.getChannel().isImportantConversation()) { - ZenLog.traceNotIntercepted(record, "conversationMatches"); + maybeLogInterceptDecision(record, false, "conversationMatches"); return false; } } @@ -244,31 +244,59 @@ public class ZenModeFiltering { if (policy.allowRepeatCallers() && REPEAT_CALLERS.isRepeat( mContext, extras(record), record.getPhoneNumbers())) { - ZenLog.traceNotIntercepted(record, "repeatCaller"); + maybeLogInterceptDecision(record, false, "repeatCaller"); return false; } if (!policy.allowCalls()) { - ZenLog.traceIntercepted(record, "!allowCalls"); + maybeLogInterceptDecision(record, true, "!allowCalls"); return true; } return shouldInterceptAudience(policy.allowCallsFrom(), record); } if (isMessage(record)) { if (!policy.allowMessages()) { - ZenLog.traceIntercepted(record, "!allowMessages"); + maybeLogInterceptDecision(record, true, "!allowMessages"); return true; } return shouldInterceptAudience(policy.allowMessagesFrom(), record); } - ZenLog.traceIntercepted(record, "!priority"); + maybeLogInterceptDecision(record, true, "!priority"); return true; default: - ZenLog.traceNotIntercepted(record, "unknownZenMode"); + maybeLogInterceptDecision(record, false, "unknownZenMode"); return false; } } + // Consider logging the decision of shouldIntercept for the given record. + // This will log the outcome if one of the following is true: + // - it's the first time the intercept decision is set for the record + // - OR it's not the first time, but the intercept decision changed + private static void maybeLogInterceptDecision(NotificationRecord record, boolean intercept, + String reason) { + boolean interceptBefore = record.isIntercepted(); + if (record.hasInterceptBeenSet() && (interceptBefore == intercept)) { + // this record has already been evaluated for whether it should be intercepted, and + // the decision has not changed. + return; + } + + // add a note to the reason indicating whether it's new or updated + String annotatedReason = reason; + if (!record.hasInterceptBeenSet()) { + annotatedReason = "new:" + reason; + } else if (interceptBefore != intercept) { + annotatedReason = "updated:" + reason; + } + + if (intercept) { + ZenLog.traceIntercepted(record, annotatedReason); + } else { + ZenLog.traceNotIntercepted(record, annotatedReason); + } + } + /** * Check if the notification is too critical to be suppressed. * @@ -285,10 +313,10 @@ public class ZenModeFiltering { private static boolean shouldInterceptAudience(int source, NotificationRecord record) { float affinity = record.getContactAffinity(); if (!audienceMatches(source, affinity)) { - ZenLog.traceIntercepted(record, "!audienceMatches,affinity=" + affinity); + maybeLogInterceptDecision(record, true, "!audienceMatches,affinity=" + affinity); return true; } - ZenLog.traceNotIntercepted(record, "affinity=" + affinity); + maybeLogInterceptDecision(record, false, "affinity=" + affinity); return false; } diff --git a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java index 20c9a211e586..9ed5aa7158ab 100644 --- a/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java +++ b/services/core/java/com/android/server/pm/permission/PermissionManagerServiceImpl.java @@ -3268,7 +3268,7 @@ public class PermissionManagerServiceImpl implements PermissionManagerServiceInt if (Objects.equals(packageName, PLATFORM_PACKAGE_NAME)) { return true; } - if (!pkg.isPrivileged()) { + if (!(pkg.isSystem() && pkg.isPrivileged())) { return true; } if (!mPrivilegedPermissionAllowlistSourcePackageNames diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java index 7370d61b8b50..f913cef99813 100644 --- a/services/core/java/com/android/server/policy/PhoneWindowManager.java +++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java @@ -3324,8 +3324,8 @@ public class PhoneWindowManager implements WindowManagerPolicy { } @Override - public void onKeyguardOccludedChangedLw(boolean occluded) { - if (mKeyguardDelegate != null && mKeyguardDelegate.isShowing()) { + public void onKeyguardOccludedChangedLw(boolean occluded, boolean waitAppTransition) { + if (mKeyguardDelegate != null && waitAppTransition) { mPendingKeyguardOccluded = occluded; mKeyguardOccludedChanged = true; } else { diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java index 4f00992c713e..77007fa229a2 100644 --- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java +++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java @@ -166,9 +166,10 @@ public interface WindowManagerPolicy extends WindowManagerPolicyConstants { /** * Called when the Keyguard occluded state changed. + * * @param occluded Whether Keyguard is currently occluded or not. */ - void onKeyguardOccludedChangedLw(boolean occluded); + void onKeyguardOccludedChangedLw(boolean occluded, boolean waitAppTransition); /** * Applies a keyguard occlusion change if one happened. diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java index 48258a11d13a..1d21b9d8c141 100644 --- a/services/core/java/com/android/server/wm/KeyguardController.java +++ b/services/core/java/com/android/server/wm/KeyguardController.java @@ -403,8 +403,10 @@ class KeyguardController { return; } - mWindowManager.mPolicy.onKeyguardOccludedChangedLw(isDisplayOccluded(DEFAULT_DISPLAY)); - if (isKeyguardLocked(displayId)) { + final boolean waitAppTransition = isKeyguardLocked(displayId); + mWindowManager.mPolicy.onKeyguardOccludedChangedLw(isDisplayOccluded(DEFAULT_DISPLAY), + waitAppTransition); + if (waitAppTransition) { mService.deferWindowLayout(); try { mRootWindowContainer.getDefaultDisplay() diff --git a/services/core/java/com/android/server/wm/LetterboxUiController.java b/services/core/java/com/android/server/wm/LetterboxUiController.java index 5a481f438827..e3437683e957 100644 --- a/services/core/java/com/android/server/wm/LetterboxUiController.java +++ b/services/core/java/com/android/server/wm/LetterboxUiController.java @@ -962,8 +962,8 @@ final class LetterboxUiController { && (parentConfiguration.orientation == ORIENTATION_LANDSCAPE && mActivityRecord.getOrientationForReachability() == ORIENTATION_PORTRAIT) // Check whether the activity fills the parent vertically. - && parentConfiguration.windowConfiguration.getBounds().height() - == mActivityRecord.getBounds().height(); + && parentConfiguration.windowConfiguration.getAppBounds().height() + <= mActivityRecord.getBounds().height(); } @VisibleForTesting diff --git a/services/tests/servicestests/src/com/android/server/devicestate/DeviceStatePolicyProviderTest.java b/services/tests/servicestests/src/com/android/server/devicestate/DeviceStatePolicyProviderTest.java index 0bd81b78ac97..18dc35c9aa18 100644 --- a/services/tests/servicestests/src/com/android/server/devicestate/DeviceStatePolicyProviderTest.java +++ b/services/tests/servicestests/src/com/android/server/devicestate/DeviceStatePolicyProviderTest.java @@ -16,6 +16,8 @@ package com.android.server.devicestate; +import static org.hamcrest.Matchers.instanceOf; +import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.testng.Assert.assertThrows; @@ -24,8 +26,6 @@ import android.content.Context; import android.content.res.Resources; import android.platform.test.annotations.Presubmit; -import org.hamcrest.Matchers; -import org.junit.Assert; import org.junit.Test; /** @@ -39,37 +39,35 @@ public class DeviceStatePolicyProviderTest { @Test public void test_emptyPolicyProvider() { - Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider("")), - Matchers.instanceOf(DeviceStatePolicy.DefaultProvider.class)); + assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider("")), + instanceOf(DeviceStatePolicy.DefaultProvider.class)); } @Test public void test_nullPolicyProvider() { - Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(null)), - Matchers.instanceOf(DeviceStatePolicy.DefaultProvider.class)); + assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider(null)), + instanceOf(DeviceStatePolicy.DefaultProvider.class)); } @Test public void test_customPolicyProvider() { - Assert.assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider( - TestProvider.class.getName())), - Matchers.instanceOf(TestProvider.class)); + assertThat(DeviceStatePolicy.Provider.fromResources(resourcesWithProvider( + TestProvider.class.getName())), + instanceOf(TestProvider.class)); } @Test public void test_badPolicyProvider_notImplementingProviderInterface() { - assertThrows(IllegalStateException.class, () -> { - DeviceStatePolicy.Provider.fromResources(resourcesWithProvider( - Object.class.getName())); - }); + assertThrows(IllegalStateException.class, () -> + DeviceStatePolicy.Provider.fromResources(resourcesWithProvider( + Object.class.getName()))); } @Test - public void test_badPolicyProvider_doesntExist() { - assertThrows(IllegalStateException.class, () -> { - DeviceStatePolicy.Provider.fromResources(resourcesWithProvider( - "com.android.devicestate.nonexistent.policy")); - }); + public void test_badPolicyProvider_returnsDefault() { + assertThat(DeviceStatePolicy.Provider.fromResources( + resourcesWithProvider("com.android.devicestate.nonexistent.policy")), + instanceOf(DeviceStatePolicy.DefaultProvider.class)); } private static Resources resourcesWithProvider(String provider) { diff --git a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java index d2cb7ba5d311..e2db2e6b19e1 100644 --- a/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java +++ b/services/tests/wmtests/src/com/android/server/wm/TestWindowManagerPolicy.java @@ -222,7 +222,7 @@ class TestWindowManagerPolicy implements WindowManagerPolicy { } @Override - public void onKeyguardOccludedChangedLw(boolean occluded) { + public void onKeyguardOccludedChangedLw(boolean occluded, boolean waitAppTransition) { } public void setSafeMode(boolean safeMode) { diff --git a/tools/aapt2/SdkConstants.cpp b/tools/aapt2/SdkConstants.cpp index 8ea43abff895..34e8edb0a47f 100644 --- a/tools/aapt2/SdkConstants.cpp +++ b/tools/aapt2/SdkConstants.cpp @@ -27,7 +27,7 @@ namespace aapt { static ApiVersion sDevelopmentSdkLevel = 10000; static const auto sDevelopmentSdkCodeNames = - std::unordered_set<StringPiece>({"Q", "R", "S", "Sv2", "Tiramisu"}); + std::unordered_set<StringPiece>({"Q", "R", "S", "Sv2", "Tiramisu", "UpsideDownCake"}); static const std::vector<std::pair<uint16_t, ApiVersion>> sAttrIdMap = { {0x021c, 1}, |