Merge "Add pin shortcut to Dock items" into main
diff --git a/app/res/values-af/strings.xml b/app/res/values-af/strings.xml
index 8c185b3..026c73c 100644
--- a/app/res/values-af/strings.xml
+++ b/app/res/values-af/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Geen onlangse items nie"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Vee alles uit"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"App is nie beskikbaar nie"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Kalmmodus"</string>
</resources>
diff --git a/app/res/values-am/strings.xml b/app/res/values-am/strings.xml
index 9475d26..6b1b6c1 100644
--- a/app/res/values-am/strings.xml
+++ b/app/res/values-am/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ምንም የቅርብ ጊዜ ንጥሎች የሉም"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ሁሉንም አጽዳ"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"መተግበሪያ አይገኝም"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"የእርጋታ ሁነታ"</string>
</resources>
diff --git a/app/res/values-ar/strings.xml b/app/res/values-ar/strings.xml
index 13d7128..345de0d 100644
--- a/app/res/values-ar/strings.xml
+++ b/app/res/values-ar/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ما مِن عناصر تم استخدامها مؤخرًا"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"محو الكل"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"التطبيق غير متاح."</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"وضع الهدوء"</string>
</resources>
diff --git a/app/res/values-as/strings.xml b/app/res/values-as/strings.xml
index c752fbd..23500ec 100644
--- a/app/res/values-as/strings.xml
+++ b/app/res/values-as/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"কোনো শেহতীয়া বস্তু নাই"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"আটাইবোৰ মচক"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"এপ্টো উপলব্ধ নহয়"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"শান্ত ম’ড"</string>
</resources>
diff --git a/app/res/values-az/strings.xml b/app/res/values-az/strings.xml
index 1f89465..130ebd6 100644
--- a/app/res/values-az/strings.xml
+++ b/app/res/values-az/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Son element yoxdur"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Hamısını silin"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Tətbiq əlçatan deyil"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Sakit rejim"</string>
</resources>
diff --git a/app/res/values-b+sr+Latn/strings.xml b/app/res/values-b+sr+Latn/strings.xml
index 7f7dc1c..2061112 100644
--- a/app/res/values-b+sr+Latn/strings.xml
+++ b/app/res/values-b+sr+Latn/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nema nedavnih stavki"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Obriši sve"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija nije dostupna"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Režim opuštanja"</string>
</resources>
diff --git a/app/res/values-be/strings.xml b/app/res/values-be/strings.xml
index b430ec4..2e6f4da 100644
--- a/app/res/values-be/strings.xml
+++ b/app/res/values-be/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Няма нядаўніх элементаў"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Ачысціць усё"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Праграма недаступная"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Рэжым спакою"</string>
</resources>
diff --git a/app/res/values-bg/strings.xml b/app/res/values-bg/strings.xml
index 8cb53ba..8425793 100644
--- a/app/res/values-bg/strings.xml
+++ b/app/res/values-bg/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Няма скорошни елементи"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Изчистване на всичко"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Приложението не е налично"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Режим на покой"</string>
</resources>
diff --git a/app/res/values-bn/strings.xml b/app/res/values-bn/strings.xml
index 535fb03..d9b579c 100644
--- a/app/res/values-bn/strings.xml
+++ b/app/res/values-bn/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"কোনও সাম্প্রতিক আইটেম নেই"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"সব মুছে দিন"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"অ্যাপ উপলভ্য নেই"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"\'কাম\' মোড"</string>
</resources>
diff --git a/app/res/values-bs/strings.xml b/app/res/values-bs/strings.xml
index 385eaa2..23c696f 100644
--- a/app/res/values-bs/strings.xml
+++ b/app/res/values-bs/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nema nedavnih stavki"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Obriši sve"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija nije dostupna"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Način rada za opuštanje"</string>
</resources>
diff --git a/app/res/values-ca/strings.xml b/app/res/values-ca/strings.xml
index 7b70215..e2d8eec 100644
--- a/app/res/values-ca/strings.xml
+++ b/app/res/values-ca/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"No hi ha cap element recent"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Esborra-ho tot"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"L\'aplicació no està disponible"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Mode de calma"</string>
</resources>
diff --git a/app/res/values-cs/strings.xml b/app/res/values-cs/strings.xml
index d94ce1c..8fd05bd 100644
--- a/app/res/values-cs/strings.xml
+++ b/app/res/values-cs/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Žádné nedávné položky"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Vymazat vše"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikace není k dispozici"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Klidný režim"</string>
</resources>
diff --git a/app/res/values-da/strings.xml b/app/res/values-da/strings.xml
index ee2a03f..f17d3fa 100644
--- a/app/res/values-da/strings.xml
+++ b/app/res/values-da/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Ingen nye elementer"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Ryd alt"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appen er ikke tilgængelig"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Beroligende tilstand"</string>
</resources>
diff --git a/app/res/values-de/strings.xml b/app/res/values-de/strings.xml
index fe506f3..ef60b01 100644
--- a/app/res/values-de/strings.xml
+++ b/app/res/values-de/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Keine kürzlich verwendeten Elemente"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Alles löschen"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"App nicht verfügbar"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Ruhemodus"</string>
</resources>
diff --git a/app/res/values-el/strings.xml b/app/res/values-el/strings.xml
index 31e20c0..9c9bf06 100644
--- a/app/res/values-el/strings.xml
+++ b/app/res/values-el/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Δεν υπάρχουν πρόσφατα στοιχεία"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Διαγραφή όλων"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Η εφαρμογή δεν είναι διαθέσιμη"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Λειτουργία ηρεμίας"</string>
</resources>
diff --git a/app/res/values-en-rAU/strings.xml b/app/res/values-en-rAU/strings.xml
index 3ede0e4..9c42c4d 100644
--- a/app/res/values-en-rAU/strings.xml
+++ b/app/res/values-en-rAU/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"No recent items"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Clear all"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"App isn\'t available"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string>
</resources>
diff --git a/app/res/values-en-rGB/strings.xml b/app/res/values-en-rGB/strings.xml
index 3ede0e4..9c42c4d 100644
--- a/app/res/values-en-rGB/strings.xml
+++ b/app/res/values-en-rGB/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"No recent items"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Clear all"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"App isn\'t available"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string>
</resources>
diff --git a/app/res/values-en-rIN/strings.xml b/app/res/values-en-rIN/strings.xml
index 3ede0e4..9c42c4d 100644
--- a/app/res/values-en-rIN/strings.xml
+++ b/app/res/values-en-rIN/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"No recent items"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Clear all"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"App isn\'t available"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string>
</resources>
diff --git a/app/res/values-es-rUS/strings.xml b/app/res/values-es-rUS/strings.xml
index ead728c..bc3a90d 100644
--- a/app/res/values-es-rUS/strings.xml
+++ b/app/res/values-es-rUS/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"No hay elementos recientes"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Borrar todo"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"La app no está disponible"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modo calma"</string>
</resources>
diff --git a/app/res/values-es/strings.xml b/app/res/values-es/strings.xml
index b1a7c87..961c95b 100644
--- a/app/res/values-es/strings.xml
+++ b/app/res/values-es/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"No hay elementos recientes"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Borrar todo"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"La aplicación no está disponible"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modo Calma"</string>
</resources>
diff --git a/app/res/values-et/strings.xml b/app/res/values-et/strings.xml
index 2f9fb9d..db6e3e6 100644
--- a/app/res/values-et/strings.xml
+++ b/app/res/values-et/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Hiljutisi üksusi pole"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Kustuta kõik"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Rakendus ei ole saadaval"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Lõõgastusrežiim"</string>
</resources>
diff --git a/app/res/values-eu/strings.xml b/app/res/values-eu/strings.xml
index 4454253..c53b647 100644
--- a/app/res/values-eu/strings.xml
+++ b/app/res/values-eu/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Ez dago azkenaldiko elementurik"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Garbitu guztia"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Ez dago erabilgarri aplikazioa"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modu lasaia"</string>
</resources>
diff --git a/app/res/values-fa/strings.xml b/app/res/values-fa/strings.xml
index 20a4370..c4ceec8 100644
--- a/app/res/values-fa/strings.xml
+++ b/app/res/values-fa/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"مورد جدیدی وجود ندارد"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"پاک کردن همه"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"برنامه دردسترس نیست"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"حالت آرام"</string>
</resources>
diff --git a/app/res/values-fi/strings.xml b/app/res/values-fi/strings.xml
index 5eb8045..8d31ddc 100644
--- a/app/res/values-fi/strings.xml
+++ b/app/res/values-fi/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Ei viimeaikaisia kohteita"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Tyhjennä kaikki"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Sovellus ei ole käytettävissä"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Rauhallinen tila"</string>
</resources>
diff --git a/app/res/values-fr/strings.xml b/app/res/values-fr/strings.xml
index fd74e0f..8573c01 100644
--- a/app/res/values-fr/strings.xml
+++ b/app/res/values-fr/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Aucun élément récent"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Tout effacer"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appli indisponible"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Mode calme"</string>
</resources>
diff --git a/app/res/values-gl/strings.xml b/app/res/values-gl/strings.xml
index 31fbc7b..b581569 100644
--- a/app/res/values-gl/strings.xml
+++ b/app/res/values-gl/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Non hai ningún elemento recente"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Borrar todo"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"A aplicación non está dispoñible"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modo de calma"</string>
</resources>
diff --git a/app/res/values-gu/strings.xml b/app/res/values-gu/strings.xml
index cf3665e..ff9c5b7 100644
--- a/app/res/values-gu/strings.xml
+++ b/app/res/values-gu/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"તાજેતરની કોઈ આઇટમ નથી"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"બધું સાફ કરો"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ઍપ ઉપલબ્ધ નથી"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"શાંત મોડ"</string>
</resources>
diff --git a/app/res/values-hi/strings.xml b/app/res/values-hi/strings.xml
index c7e9594..bbc3ee2 100644
--- a/app/res/values-hi/strings.xml
+++ b/app/res/values-hi/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"हाल ही का कोई आइटम मौजूद नहीं है"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"सभी मिटाएं"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ऐप्लिकेशन उपलब्ध नहीं है"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"काम (शांत) मोड"</string>
</resources>
diff --git a/app/res/values-hr/strings.xml b/app/res/values-hr/strings.xml
index 144c983..1c33dff 100644
--- a/app/res/values-hr/strings.xml
+++ b/app/res/values-hr/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nema nedavnih stavki"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Izbriši sve"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija nije dostupna"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Način opuštanja"</string>
</resources>
diff --git a/app/res/values-hu/strings.xml b/app/res/values-hu/strings.xml
index c5bd0cf..4c08fa7 100644
--- a/app/res/values-hu/strings.xml
+++ b/app/res/values-hu/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nincsenek mostanában használt elemek"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Összes törlése"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Az alkalmazás nem áll rendelkezésre"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Nyugalom mód"</string>
</resources>
diff --git a/app/res/values-hy/strings.xml b/app/res/values-hy/strings.xml
index 1c84bfe..906fb6b 100644
--- a/app/res/values-hy/strings.xml
+++ b/app/res/values-hy/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Նոր տարրեր չկան"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Ջնջել բոլորը"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Հավելվածը հասանելի չէ"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Հանգստի ռեժիմ"</string>
</resources>
diff --git a/app/res/values-in/strings.xml b/app/res/values-in/strings.xml
index 1824ff6..ab9c491 100644
--- a/app/res/values-in/strings.xml
+++ b/app/res/values-in/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Tidak ada item baru"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Hapus Semua"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikasi tidak tersedia"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Mode tenang"</string>
</resources>
diff --git a/app/res/values-is/strings.xml b/app/res/values-is/strings.xml
index d982f53..3362bd4 100644
--- a/app/res/values-is/strings.xml
+++ b/app/res/values-is/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Engin nýleg atriði"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Hreinsa allt"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Forritið er ekki í boði"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Róleg stilling"</string>
</resources>
diff --git a/app/res/values-it/strings.xml b/app/res/values-it/strings.xml
index dcc9e2c..15b9890 100644
--- a/app/res/values-it/strings.xml
+++ b/app/res/values-it/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nessun elemento recente"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Cancella tutto"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"App non disponibile"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modalità Calma"</string>
</resources>
diff --git a/app/res/values-iw/strings.xml b/app/res/values-iw/strings.xml
index fb31d16..050d187 100644
--- a/app/res/values-iw/strings.xml
+++ b/app/res/values-iw/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"אין פריטים מהזמן האחרון"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ניקוי הכול"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"האפליקציה לא זמינה"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"מצב רגיעה"</string>
</resources>
diff --git a/app/res/values-ja/strings.xml b/app/res/values-ja/strings.xml
index a9c6d98..ce968b5 100644
--- a/app/res/values-ja/strings.xml
+++ b/app/res/values-ja/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"最近のアイテムはありません"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"すべて消去"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"このアプリは使用できません"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Calm モード"</string>
</resources>
diff --git a/app/res/values-ka/strings.xml b/app/res/values-ka/strings.xml
index b2679ca..9920b17 100644
--- a/app/res/values-ka/strings.xml
+++ b/app/res/values-ka/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ბოლოდროინდელი ერთეულები არ არის"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ყველას გასუფთავება"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"აპი მიუწვდომელია"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"წყნარი რეჟიმი"</string>
</resources>
diff --git a/app/res/values-kk/strings.xml b/app/res/values-kk/strings.xml
index 623ada8..fe1b8d9 100644
--- a/app/res/values-kk/strings.xml
+++ b/app/res/values-kk/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Cоңғы қосылған элемент жоқ."</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Барлығын өшіру"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Қолданба қолжетімді емес."</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Тыныштық режимі"</string>
</resources>
diff --git a/app/res/values-km/strings.xml b/app/res/values-km/strings.xml
index 33405aa..0ca0780 100644
--- a/app/res/values-km/strings.xml
+++ b/app/res/values-km/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"មិនមានធាតុថ្មីៗទេ"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"សម្អាតទាំងអស់"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"មិនមានកម្មវិធី"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"មុខងារស្ងាត់"</string>
</resources>
diff --git a/app/res/values-kn/strings.xml b/app/res/values-kn/strings.xml
index f1ab3b0..2d42f2f 100644
--- a/app/res/values-kn/strings.xml
+++ b/app/res/values-kn/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ಯಾವುದೇ ಇತ್ತೀಚಿನ ಐಟಂಗಳಿಲ್ಲ"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ಎಲ್ಲವನ್ನೂ ಅಳಿಸಿ"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ಆ್ಯಪ್ ಲಭ್ಯವಿಲ್ಲ"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"ಶಾಂತ ಮೋಡ್"</string>
</resources>
diff --git a/app/res/values-ko/strings.xml b/app/res/values-ko/strings.xml
index 4b74b38..b85a262 100644
--- a/app/res/values-ko/strings.xml
+++ b/app/res/values-ko/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"최근 항목이 없습니다."</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"모두 지우기"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"앱을 사용할 수 없음"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"고요 모드"</string>
</resources>
diff --git a/app/res/values-ky/strings.xml b/app/res/values-ky/strings.xml
index 6699e67..5ff6cb1 100644
--- a/app/res/values-ky/strings.xml
+++ b/app/res/values-ky/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Жакында колдонулган нерселер жок"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Баарын тазалоо"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Колдонмо жеткиликтүү эмес"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Тынчтык режими"</string>
</resources>
diff --git a/app/res/values-lo/strings.xml b/app/res/values-lo/strings.xml
index 4141a8c..6cd8049 100644
--- a/app/res/values-lo/strings.xml
+++ b/app/res/values-lo/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ບໍ່ມີລາຍການຫຼ້າສຸດ"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ລຶບລ້າງທັງໝົດ"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ແອັບບໍ່ພ້ອມໃຫ້ນຳໃຊ້"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"ໂໝດສະຫງົບ"</string>
</resources>
diff --git a/app/res/values-lt/strings.xml b/app/res/values-lt/strings.xml
index 7aeb280..1c0d051 100644
--- a/app/res/values-lt/strings.xml
+++ b/app/res/values-lt/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nėra jokių naujausių elementų"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Išvalyti viską"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Programa nepasiekiama"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Ramybės režimas"</string>
</resources>
diff --git a/app/res/values-lv/strings.xml b/app/res/values-lv/strings.xml
index b30a68c..4d8b539 100644
--- a/app/res/values-lv/strings.xml
+++ b/app/res/values-lv/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nav nesenu vienumu"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Notīrīt visu"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Lietotne nav pieejama"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Miera režīms"</string>
</resources>
diff --git a/app/res/values-mk/strings.xml b/app/res/values-mk/strings.xml
index 1dced8c..a7f5d5c 100644
--- a/app/res/values-mk/strings.xml
+++ b/app/res/values-mk/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Нема неодамнешни ставки"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Избриши ги сите"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Апликацијата не е достапна"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Режим на мирување"</string>
</resources>
diff --git a/app/res/values-ml/strings.xml b/app/res/values-ml/strings.xml
index 3ebb2e2..c65d5bb 100644
--- a/app/res/values-ml/strings.xml
+++ b/app/res/values-ml/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"സമീപകാല ഇനങ്ങൾ ഒന്നുമില്ല"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"എല്ലാം മായ്ക്കുക"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ആപ്പ് ലഭ്യമല്ല"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"\'ശാന്തം\' മോഡ്"</string>
</resources>
diff --git a/app/res/values-mn/strings.xml b/app/res/values-mn/strings.xml
index 7936f09..7a0ec37 100644
--- a/app/res/values-mn/strings.xml
+++ b/app/res/values-mn/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Ямар ч саяхны зүйл байхгүй"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Бүгдийг арилгах"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Апп боломжгүй байна"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Тайван горим"</string>
</resources>
diff --git a/app/res/values-mr/strings.xml b/app/res/values-mr/strings.xml
index 5df4722..dc2bce3 100644
--- a/app/res/values-mr/strings.xml
+++ b/app/res/values-mr/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"कोणतेही अलीकडील आयटम नाहीत"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"सर्व साफ करा"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"अॅप उपलब्ध नाही"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"शांत मोड"</string>
</resources>
diff --git a/app/res/values-ms/strings.xml b/app/res/values-ms/strings.xml
index 9215b1f..fe43262 100644
--- a/app/res/values-ms/strings.xml
+++ b/app/res/values-ms/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Tiada item terbaharu"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Kosongkan Semua"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Apl tidak tersedia"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Mod Calm"</string>
</resources>
diff --git a/app/res/values-my/strings.xml b/app/res/values-my/strings.xml
index 7521f0b..57b5005 100644
--- a/app/res/values-my/strings.xml
+++ b/app/res/values-my/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"မကြာသေးမီက သုံးထားသည်များ မရှိပါ"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"အားလုံးရှင်းရန်"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"အက်ပ် မရနိုင်ပါ"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"အငြိမ်မုဒ်"</string>
</resources>
diff --git a/app/res/values-nb/strings.xml b/app/res/values-nb/strings.xml
index 4de002d..e9f4b4a 100644
--- a/app/res/values-nb/strings.xml
+++ b/app/res/values-nb/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Ingen nylige elementer"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Fjern alt"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appen er ikke tilgjengelig"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Roligmodus"</string>
</resources>
diff --git a/app/res/values-ne/strings.xml b/app/res/values-ne/strings.xml
index 6ad4980..4053971 100644
--- a/app/res/values-ne/strings.xml
+++ b/app/res/values-ne/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"हालसालैको कुनै पनि सामग्री छैन"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"सबै सामग्री मेटाउनुहोस्"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"एप उपलब्ध छैन"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"शान्त मोड"</string>
</resources>
diff --git a/app/res/values-nl/strings.xml b/app/res/values-nl/strings.xml
index bc8f9e6..86a9cdb 100644
--- a/app/res/values-nl/strings.xml
+++ b/app/res/values-nl/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Geen recente items"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Alles wissen"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"App is niet beschikbaar"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Kalme modus"</string>
</resources>
diff --git a/app/res/values-or/strings.xml b/app/res/values-or/strings.xml
index 5c9638e..410bac8 100644
--- a/app/res/values-or/strings.xml
+++ b/app/res/values-or/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"କୌଣସି ସାମ୍ପ୍ରତିକ ଆଇଟମ ନାହିଁ"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ସବୁ ଖାଲି କରନ୍ତୁ"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ଆପ ଉପଲବ୍ଧ ନାହିଁ"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"ଶାନ୍ତ ମୋଡ"</string>
</resources>
diff --git a/app/res/values-pa/strings.xml b/app/res/values-pa/strings.xml
index e522f21..1e52c85 100644
--- a/app/res/values-pa/strings.xml
+++ b/app/res/values-pa/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ਕੋਈ ਹਾਲੀਆ ਆਈਟਮ ਨਹੀਂ"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ਸਭ ਕਲੀਅਰ ਕਰੋ"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"ਸ਼ਾਂਤ ਮੋਡ"</string>
</resources>
diff --git a/app/res/values-pl/strings.xml b/app/res/values-pl/strings.xml
index 02fb6e0..3fbe11a 100644
--- a/app/res/values-pl/strings.xml
+++ b/app/res/values-pl/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Brak ostatnich elementów"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Wyczyść wszystko"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacja jest niedostępna"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Tryb cichy"</string>
</resources>
diff --git a/app/res/values-pt-rPT/strings.xml b/app/res/values-pt-rPT/strings.xml
index 86326b7..ff491a2 100644
--- a/app/res/values-pt-rPT/strings.xml
+++ b/app/res/values-pt-rPT/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nenhum item recente"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Limpar tudo"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"A app não está disponível"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modo Calm"</string>
</resources>
diff --git a/app/res/values-pt/strings.xml b/app/res/values-pt/strings.xml
index 189f97d..daa7dd9 100644
--- a/app/res/values-pt/strings.xml
+++ b/app/res/values-pt/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nenhum item recente"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Limpar tudo"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"O app não está disponível"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modo foco"</string>
</resources>
diff --git a/app/res/values-ro/strings.xml b/app/res/values-ro/strings.xml
index 46b9d9f..5d46cd8 100644
--- a/app/res/values-ro/strings.xml
+++ b/app/res/values-ro/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Niciun element recent"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Șterge tot"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplicația nu este disponibilă"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modul Calm"</string>
</resources>
diff --git a/app/res/values-ru/strings.xml b/app/res/values-ru/strings.xml
index 3370ef0..33dc160 100644
--- a/app/res/values-ru/strings.xml
+++ b/app/res/values-ru/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Нет недавних объектов"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Очистить"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Приложение недоступно"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Режим покоя"</string>
</resources>
diff --git a/app/res/values-si/strings.xml b/app/res/values-si/strings.xml
index c76f8db..c18a55c 100644
--- a/app/res/values-si/strings.xml
+++ b/app/res/values-si/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"මෑත අයිතම නැත"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"සියල්ල හිස් කරන්න"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"යෙදුම නොතිබේ"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"සන්සුන් ප්රකාරය"</string>
</resources>
diff --git a/app/res/values-sk/strings.xml b/app/res/values-sk/strings.xml
index bc4e278..46f6548 100644
--- a/app/res/values-sk/strings.xml
+++ b/app/res/values-sk/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Žiadne nedávne položky"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Vymazať všetko"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikácia nie je k dispozícii"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Pokojný režim"</string>
</resources>
diff --git a/app/res/values-sl/strings.xml b/app/res/values-sl/strings.xml
index 272784c..9a408fc 100644
--- a/app/res/values-sl/strings.xml
+++ b/app/res/values-sl/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Ni nedavnih elementov"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Izbriši vse"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacija ni na voljo"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Umirjeni način"</string>
</resources>
diff --git a/app/res/values-sq/strings.xml b/app/res/values-sq/strings.xml
index 5bb1c56..3d7d39b 100644
--- a/app/res/values-sq/strings.xml
+++ b/app/res/values-sq/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Nuk ka asnjë artikull të fundit"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Pastro të gjitha"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Aplikacioni nuk ofrohet"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Modaliteti i qetësisë"</string>
</resources>
diff --git a/app/res/values-sr/strings.xml b/app/res/values-sr/strings.xml
index b6c2b79..3a3ae8f 100644
--- a/app/res/values-sr/strings.xml
+++ b/app/res/values-sr/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Нема недавних ставки"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Обриши све"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Апликација није доступна"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Режим опуштања"</string>
</resources>
diff --git a/app/res/values-sv/strings.xml b/app/res/values-sv/strings.xml
index 8be8889..af06154 100644
--- a/app/res/values-sv/strings.xml
+++ b/app/res/values-sv/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Listan är tom"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Rensa allt"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Appen är inte tillgänglig"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Lugnt läge"</string>
</resources>
diff --git a/app/res/values-sw/strings.xml b/app/res/values-sw/strings.xml
index 3a2ee2b..9e71a9d 100644
--- a/app/res/values-sw/strings.xml
+++ b/app/res/values-sw/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Hakuna vipengee vya hivi karibuni"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Futa Zote"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Programu haipatikani"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Hali ya utulivu"</string>
</resources>
diff --git a/app/res/values-ta/strings.xml b/app/res/values-ta/strings.xml
index 92bd8a7..fb29415 100644
--- a/app/res/values-ta/strings.xml
+++ b/app/res/values-ta/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"சமீபத்தியவை இல்லை"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"அனைத்தையும் அழி"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ஆப்ஸ் கிடைக்கவில்லை"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"அமைதிப் பயன்முறை"</string>
</resources>
diff --git a/app/res/values-te/strings.xml b/app/res/values-te/strings.xml
index f98c31e..887b13f 100644
--- a/app/res/values-te/strings.xml
+++ b/app/res/values-te/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ఇటీవలి ఐటెమ్లు ఏవీ లేవు"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"అన్నీ తీసివేయండి"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"యాప్ అందుబాటులో లేదు"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"క్లెయిమ్ మోడ్"</string>
</resources>
diff --git a/app/res/values-th/strings.xml b/app/res/values-th/strings.xml
index 95d91e4..f84e327 100644
--- a/app/res/values-th/strings.xml
+++ b/app/res/values-th/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"ไม่มีรายการล่าสุด"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"ล้างทั้งหมด"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"แอปไม่พร้อมใช้งาน"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"โหมด Calm"</string>
</resources>
diff --git a/app/res/values-tl/strings.xml b/app/res/values-tl/strings.xml
index e9f03d7..3c76a8b 100644
--- a/app/res/values-tl/strings.xml
+++ b/app/res/values-tl/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Walang kamakailang item"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"I-clear Lahat"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Hindi available ang app"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Calm mode"</string>
</resources>
diff --git a/app/res/values-tr/strings.xml b/app/res/values-tr/strings.xml
index 4d5479d..eecca89 100644
--- a/app/res/values-tr/strings.xml
+++ b/app/res/values-tr/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Yeni öğe yok"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Tümünü Temizle"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Uygulama kullanılamıyor"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Sakin mod"</string>
</resources>
diff --git a/app/res/values-uk/strings.xml b/app/res/values-uk/strings.xml
index f05ffc5..1aa273e 100644
--- a/app/res/values-uk/strings.xml
+++ b/app/res/values-uk/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Немає нещодавніх об’єктів"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Очистити все"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Додаток недоступний"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Спокійний режим"</string>
</resources>
diff --git a/app/res/values-ur/strings.xml b/app/res/values-ur/strings.xml
index bd25482..230dc64 100644
--- a/app/res/values-ur/strings.xml
+++ b/app/res/values-ur/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"کوئی حالیہ آئٹم نہیں"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"تمام صاف کریں"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"ایپ دستیاب نہیں ہے"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"پُرسکون وضع"</string>
</resources>
diff --git a/app/res/values-uz/strings.xml b/app/res/values-uz/strings.xml
index e629f4a..97bc0cc 100644
--- a/app/res/values-uz/strings.xml
+++ b/app/res/values-uz/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Yaqinda ishlatilgan ilovalar yoʻq"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Hammasini yopish"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"Ilova mavjud emas"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Dam olish rejimi"</string>
</resources>
diff --git a/app/res/values-zh-rCN/strings.xml b/app/res/values-zh-rCN/strings.xml
index 93b4dbb..1992d3b 100644
--- a/app/res/values-zh-rCN/strings.xml
+++ b/app/res/values-zh-rCN/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"没有最近用过的项目"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"全部清除"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"应用无法打开"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"平静模式"</string>
</resources>
diff --git a/app/res/values-zh-rHK/strings.xml b/app/res/values-zh-rHK/strings.xml
index 01837ff..031c0af 100644
--- a/app/res/values-zh-rHK/strings.xml
+++ b/app/res/values-zh-rHK/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"沒有最近項目"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"全部清除"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"目前無法使用這個應用程式"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"平靜模式"</string>
</resources>
diff --git a/app/res/values-zh-rTW/strings.xml b/app/res/values-zh-rTW/strings.xml
index 810bd57..128f739 100644
--- a/app/res/values-zh-rTW/strings.xml
+++ b/app/res/values-zh-rTW/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"沒有最近使用的項目"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"全部清除"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"應用程式目前無法使用"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"平靜模式"</string>
</resources>
diff --git a/app/res/values-zu/strings.xml b/app/res/values-zu/strings.xml
index dda65d6..7abc29f 100644
--- a/app/res/values-zu/strings.xml
+++ b/app/res/values-zu/strings.xml
@@ -34,6 +34,5 @@
<string name="recents_empty_state_text" msgid="8228569970506899117">"Azikho izinto zakamuva"</string>
<string name="recents_clear_all_text" msgid="3594272268167720553">"Sula Konke"</string>
<string name="failure_opening_recent_task_message" msgid="963567570097465902">"I-app ayitholakali"</string>
- <!-- no translation found for calm_mode_title (4364804976931157567) -->
- <skip />
+ <string name="calm_mode_title" msgid="4364804976931157567">"Imodi ezolile"</string>
</resources>
diff --git a/app/src/com/android/car/carlauncher/CarLauncher.java b/app/src/com/android/car/carlauncher/CarLauncher.java
index 05a90db..c686584 100644
--- a/app/src/com/android/car/carlauncher/CarLauncher.java
+++ b/app/src/com/android/car/carlauncher/CarLauncher.java
@@ -20,23 +20,17 @@
import static android.car.settings.CarSettings.Secure.KEY_USER_TOS_ACCEPTED;
import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_TRUSTED_OVERLAY;
+import static com.android.car.carlauncher.CarLauncherViewModel.CarLauncherViewModelFactory;
+
import android.app.ActivityManager;
import android.app.ActivityOptions;
import android.app.TaskStackListener;
import android.car.Car;
-import android.car.app.CarActivityManager;
-import android.car.app.CarTaskViewController;
-import android.car.app.CarTaskViewControllerCallback;
-import android.car.app.ControlledRemoteCarTaskView;
-import android.car.app.ControlledRemoteCarTaskViewCallback;
-import android.car.app.ControlledRemoteCarTaskViewConfig;
import android.car.user.CarUserManager;
import android.content.ComponentName;
import android.content.Intent;
import android.content.res.Configuration;
import android.database.ContentObserver;
-import android.graphics.Color;
-import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.os.UserManager;
@@ -46,7 +40,6 @@
import android.view.ViewGroup;
import android.view.WindowManager;
-import androidx.annotation.NonNull;
import androidx.collection.ArraySet;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentTransaction;
@@ -76,15 +69,13 @@
*/
public class CarLauncher extends FragmentActivity {
public static final String TAG = "CarLauncher";
- private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
- private static boolean sAutoRestartOnCrash = false;
+ public static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
private ActivityManager mActivityManager;
private TaskViewManager mTaskViewManager;
private Car mCar;
private CarTaskView mTaskView;
- private ControlledRemoteCarTaskView mRemoteCarTaskView;
private int mCarLauncherTaskId = INVALID_TASK_ID;
private Set<HomeCardModule> mHomeCardModules;
@@ -93,6 +84,7 @@
private boolean mUseSmallCanvasOptimizedMap;
private boolean mUseRemoteCarTaskView;
private ViewGroup mMapsCard;
+ private CarLauncherViewModel mCarLauncherViewModel;
@VisibleForTesting
ContentObserver mTosContentObserver;
@@ -212,93 +204,17 @@
}
private void setupRemoteCarTaskView(ViewGroup parent) {
- long createCarStartTime = System.nanoTime();
- mCar = Car.createCar(this);
- if (DEBUG) {
- long createCarEndTime = System.nanoTime();
- Log.d(TAG, "Initialization of the CarApi took "
- + (createCarEndTime - createCarStartTime)
- + " nanoseconds");
- }
- CarActivityManager carAM = mCar.getCarManager(CarActivityManager.class);
+ mCarLauncherViewModel = new ViewModelProvider(this,
+ new CarLauncherViewModelFactory(this, getMapsIntent()))
+ .get(CarLauncherViewModel.class);
- if (Build.IS_USER) {
- sAutoRestartOnCrash = true;
- }
+ getLifecycle().addObserver(mCarLauncherViewModel);
- carAM.getCarTaskViewController(
- this,
- getMainExecutor(),
- new CarTaskViewControllerCallback() {
- @Override
- public void onConnected(
- CarTaskViewController carTaskViewController) {
- carTaskViewController.createControlledRemoteCarTaskView(
- new ControlledRemoteCarTaskViewConfig.Builder()
- .setActivityIntent(getMapsIntent())
- .setShouldAutoRestartOnTaskRemoval(sAutoRestartOnCrash)
- .build(),
- getMainExecutor(),
- new ControlledRemoteCarTaskViewCallback() {
- @Override
- public void onTaskViewCreated(
- ControlledRemoteCarTaskView taskView) {
- mRemoteCarTaskView = taskView;
- parent.addView(taskView);
- }
-
- @Override
- public void onTaskViewInitialized() {
- maybeLogReady();
- }
-
- @Override
- public void onTaskViewReleased() {
- mRemoteCarTaskView = null;
- parent.removeAllViews();
- }
-
- @Override
- public void onTaskAppeared(
- @NonNull ActivityManager.RunningTaskInfo taskInfo) {
- if (DEBUG) {
- Log.d(TAG, "MapsTaskView: onTaskAppeared: taskId="
- + taskInfo.taskId + " at "
- + System.currentTimeMillis() + " milliseconds");
- }
- if (!sAutoRestartOnCrash) {
- mRemoteCarTaskView.setBackgroundColor(
- Color.TRANSPARENT);
- }
- }
-
- @Override
- public void onTaskVanished(
- @NonNull ActivityManager.RunningTaskInfo taskInfo) {
- if (DEBUG) {
- Log.d(TAG, "MapsTaskView: onTaskVanished: taskId="
- + taskInfo.taskId + " at "
- + System.currentTimeMillis() + " milliseconds");
- }
- if (!sAutoRestartOnCrash) {
- // RemoteCarTaskView color is set to red to indicate
- // that nothing is wrong with the task view but maps
- // in the task view has crashed. More details in
- // b/247156851.
- mRemoteCarTaskView.setBackgroundColor(Color.RED);
- }
- }
- });
- }
-
- @Override
- public void onDisconnected(
- CarTaskViewController carTaskViewController) {
- Log.d(TAG, "onDisconnected");
- mRemoteCarTaskView = null;
- parent.removeAllViews();
- }
- });
+ mCarLauncherViewModel.getRemoteCarTaskView().observe(this, taskView -> {
+ if (taskView != null && taskView.getParent() == null) {
+ parent.addView(taskView);
+ }
+ });
}
private void setUpTaskView(ViewGroup parent) {
@@ -361,25 +277,22 @@
release();
}
- private boolean isTaskViewInitialized() {
- return (mTaskView != null && mTaskView.isInitialized())
- || (mRemoteCarTaskView != null && mRemoteCarTaskView.isInitialized());
- }
-
private int getTaskViewTaskId() {
if (mTaskView != null) {
return mTaskView.getTaskId();
}
- if (mRemoteCarTaskView != null) {
- return mRemoteCarTaskView.getTaskInfo() == null
- ? INVALID_TASK_ID : mRemoteCarTaskView.getTaskInfo().taskId;
+ if (mCarLauncherViewModel != null) {
+ return mCarLauncherViewModel.getRemoteCarTaskViewTaskId();
}
return INVALID_TASK_ID;
}
private void release() {
mTaskView = null;
- mRemoteCarTaskView = null;
+ // When using a ViewModel for the RemoteCarTaskViews, the task view can still be attached
+ // to the mMapsCard due to which the CarLauncher activity does not get garbage collected
+ // during activity recreation.
+ mMapsCard = null;
if (mCar != null) {
mCar.disconnect();
mCar = null;
@@ -424,7 +337,7 @@
/** Logs that the Activity is ready. Used for startup time diagnostics. */
private void maybeLogReady() {
boolean isResumed = isResumed();
- boolean taskViewInitialized = isTaskViewInitialized();
+ boolean taskViewInitialized = mTaskView != null && mTaskView.isInitialized();
if (DEBUG) {
Log.d(TAG, "maybeLogReady(" + getUserId() + "): mapsReady="
+ taskViewInitialized + ", started=" + isResumed + ", alreadyLogged: "
diff --git a/app/src/com/android/car/carlauncher/CarLauncherViewModel.java b/app/src/com/android/car/carlauncher/CarLauncherViewModel.java
new file mode 100644
index 0000000..3bafbd5
--- /dev/null
+++ b/app/src/com/android/car/carlauncher/CarLauncherViewModel.java
@@ -0,0 +1,214 @@
+/*
+ * 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.car.carlauncher;
+
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
+
+import static java.util.Objects.requireNonNull;
+
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.annotation.UiContext;
+import android.app.ActivityManager;
+import android.car.Car;
+import android.car.app.CarActivityManager;
+import android.car.app.CarTaskViewController;
+import android.car.app.CarTaskViewControllerCallback;
+import android.car.app.CarTaskViewControllerHostLifecycle;
+import android.car.app.ControlledRemoteCarTaskView;
+import android.car.app.ControlledRemoteCarTaskViewCallback;
+import android.car.app.ControlledRemoteCarTaskViewConfig;
+import android.car.app.RemoteCarTaskView;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.os.Build;
+import android.util.Log;
+
+import androidx.lifecycle.DefaultLifecycleObserver;
+import androidx.lifecycle.LifecycleOwner;
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+import androidx.lifecycle.ViewModelProvider;
+
+/**
+ * A car launcher view model to manage the lifecycle of {@link RemoteCarTaskView}.
+ */
+public final class CarLauncherViewModel extends ViewModel implements DefaultLifecycleObserver {
+ private static final String TAG = CarLauncher.TAG;
+ private static final boolean DEBUG = CarLauncher.DEBUG;
+ private static final boolean sAutoRestartOnCrash = Build.IS_USER;
+
+ private final CarActivityManager mCarActivityManager;
+ private final Car mCar;
+ private final CarTaskViewControllerHostLifecycle mHostLifecycle;
+ @SuppressLint("StaticFieldLeak") // We're not leaking this context as it is the window context.
+ private final Context mWindowContext;
+ private final Intent mMapsIntent;
+ private final MutableLiveData<RemoteCarTaskView> mRemoteCarTaskView;
+
+ public CarLauncherViewModel(@UiContext Context context, @NonNull Intent mapsIntent) {
+ mWindowContext = context.createWindowContext(TYPE_APPLICATION_STARTING, /* options */ null);
+ mMapsIntent = mapsIntent;
+ mCar = Car.createCar(mWindowContext);
+ mCarActivityManager = mCar.getCarManager(CarActivityManager.class);
+ mHostLifecycle = new CarTaskViewControllerHostLifecycle();
+ mRemoteCarTaskView = new MutableLiveData<>(null);
+ ControlledRemoteCarTaskViewCallback controlledRemoteCarTaskViewCallback =
+ new ControlledRemoteCarTaskViewCallbackImpl(mRemoteCarTaskView);
+
+ CarTaskViewControllerCallback carTaskViewControllerCallback =
+ new CarTaskViewControllerCallbackImpl(controlledRemoteCarTaskViewCallback);
+
+ mCarActivityManager.getCarTaskViewController(mWindowContext, mHostLifecycle,
+ mWindowContext.getMainExecutor(), carTaskViewControllerCallback);
+ }
+
+ LiveData<RemoteCarTaskView> getRemoteCarTaskView() {
+ return mRemoteCarTaskView;
+ }
+
+ /**
+ * Returns remote car task view task Id.
+ */
+ public int getRemoteCarTaskViewTaskId() {
+ if (mRemoteCarTaskView != null && mRemoteCarTaskView.getValue() != null
+ && mRemoteCarTaskView.getValue().getTaskInfo() != null) {
+ return mRemoteCarTaskView.getValue().getTaskInfo().taskId;
+ }
+ return INVALID_TASK_ID;
+ }
+
+ /**
+ * Shows remote car task view when activity is resumed.
+ */
+ @Override
+ public void onResume(@NonNull LifecycleOwner owner) {
+ DefaultLifecycleObserver.super.onResume(owner);
+ mHostLifecycle.hostAppeared();
+ }
+
+ @Override
+ public void onStop(@NonNull LifecycleOwner owner) {
+ DefaultLifecycleObserver.super.onStop(owner);
+ mHostLifecycle.hostDisappeared();
+ }
+
+ @Override
+ protected void onCleared() {
+ if (mRemoteCarTaskView != null) {
+ mRemoteCarTaskView.setValue(null);
+ }
+ if (mCar != null) {
+ mCar.disconnect();
+ }
+ mHostLifecycle.hostDestroyed();
+ super.onCleared();
+ }
+
+ private static final class ControlledRemoteCarTaskViewCallbackImpl implements
+ ControlledRemoteCarTaskViewCallback {
+ private final MutableLiveData<RemoteCarTaskView> mRemoteCarTaskView;
+
+ private ControlledRemoteCarTaskViewCallbackImpl(
+ MutableLiveData<RemoteCarTaskView> remoteCarTaskView) {
+ mRemoteCarTaskView = remoteCarTaskView;
+ }
+
+ @Override
+ public void onTaskViewCreated(@NonNull ControlledRemoteCarTaskView taskView) {
+ mRemoteCarTaskView.setValue(taskView);
+ }
+
+ @Override
+ public void onTaskViewInitialized() {
+ if (DEBUG) {
+ Log.d(TAG, "MapsTaskView: onTaskViewInitialized");
+ }
+ }
+
+ @Override
+ public void onTaskAppeared(@NonNull ActivityManager.RunningTaskInfo taskInfo) {
+ if (DEBUG) {
+ Log.d(TAG, "MapsTaskView: onTaskAppeared: taskId=" + taskInfo.taskId);
+ }
+ if (!sAutoRestartOnCrash) {
+ mRemoteCarTaskView.getValue().setBackgroundColor(Color.TRANSPARENT);
+ }
+ }
+
+ @Override
+ public void onTaskVanished(@NonNull ActivityManager.RunningTaskInfo taskInfo) {
+ if (DEBUG) {
+ Log.d(TAG, "MapsTaskView: onTaskVanished: taskId=" + taskInfo.taskId);
+ }
+ if (!sAutoRestartOnCrash) {
+ // RemoteCarTaskView color is set to red to indicate
+ // that nothing is wrong with the task view but maps
+ // in the task view has crashed. More details in
+ // b/247156851.
+ mRemoteCarTaskView.getValue().setBackgroundColor(Color.RED);
+ }
+ }
+ }
+
+ private final class CarTaskViewControllerCallbackImpl implements CarTaskViewControllerCallback {
+ private final ControlledRemoteCarTaskViewCallback mControlledRemoteCarTaskViewCallback;
+
+ private CarTaskViewControllerCallbackImpl(
+ ControlledRemoteCarTaskViewCallback controlledRemoteCarTaskViewCallback) {
+ mControlledRemoteCarTaskViewCallback = controlledRemoteCarTaskViewCallback;
+ }
+
+ @Override
+ public void onConnected(@NonNull CarTaskViewController carTaskViewController) {
+ carTaskViewController.createControlledRemoteCarTaskView(
+ new ControlledRemoteCarTaskViewConfig.Builder()
+ .setActivityIntent(mMapsIntent)
+ .setShouldAutoRestartOnTaskRemoval(sAutoRestartOnCrash)
+ .build(),
+ mWindowContext.getMainExecutor(),
+ mControlledRemoteCarTaskViewCallback);
+ }
+
+ @Override
+ public void onDisconnected(@NonNull CarTaskViewController carTaskViewController) {
+ if (DEBUG) {
+ Log.d(TAG, "onDisconnected");
+ }
+ mRemoteCarTaskView.setValue(null);
+ }
+ }
+
+ static final class CarLauncherViewModelFactory implements ViewModelProvider.Factory {
+ private final Context mContext;
+ private final Intent mMapsIntent;
+
+ CarLauncherViewModelFactory(@UiContext Context context, @NonNull Intent mapsIntent) {
+ mMapsIntent = requireNonNull(mapsIntent);
+ mContext = requireNonNull(context);
+ }
+
+ @NonNull
+ @Override
+ public <T extends ViewModel> T create(Class<T> modelClass) {
+ return modelClass.cast(new CarLauncherViewModel(mContext, mMapsIntent));
+ }
+ }
+}
diff --git a/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelFactoryTest.java b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelFactoryTest.java
new file mode 100644
index 0000000..722a3ed
--- /dev/null
+++ b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelFactoryTest.java
@@ -0,0 +1,83 @@
+/*
+ * 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.car.carlauncher;
+
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
+
+import static com.android.car.carlauncher.CarLauncherViewModel.CarLauncherViewModelFactory;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.when;
+
+import android.car.test.mocks.AbstractExtendedMockitoTestCase;
+import android.content.Context;
+import android.content.Intent;
+import android.view.WindowManager;
+
+import androidx.test.ext.junit.rules.ActivityScenarioRule;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import com.android.car.carlauncher.TaskViewManagerTest.TestActivity;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+@RunWith(AndroidJUnit4.class)
+public class CarLauncherViewModelFactoryTest extends AbstractExtendedMockitoTestCase {
+ @Rule
+ public final ActivityScenarioRule<TestActivity> mActivityRule =
+ new ActivityScenarioRule<>(TestActivity.class);
+
+ @Mock
+ private Context mContext;
+ @Mock
+ private Intent mIntent;
+
+ private CarLauncherViewModelFactory mCarLauncherViewModelFactory;
+ private TestActivity mActivity;
+
+ @Before
+ public void setUp() {
+ mActivityRule.getScenario().onActivity(activity -> mActivity = activity);
+ Context windowContext = mActivity
+ .createWindowContext(TYPE_APPLICATION_STARTING, /* options */ null);
+ when(mContext.createWindowContext(eq(WindowManager.LayoutParams.TYPE_APPLICATION_STARTING),
+ any())).thenReturn(windowContext);
+ mCarLauncherViewModelFactory = new CarLauncherViewModelFactory(mContext, mIntent);
+ }
+
+ @After
+ public void tearDown() throws InterruptedException {
+ mCarLauncherViewModelFactory = null;
+ mActivityRule.getScenario().close();
+ mActivity.finishCompletely();
+ }
+
+ @Test
+ public void testCreate_instanceNotNull() {
+ CarLauncherViewModel carLauncherViewModel =
+ mCarLauncherViewModelFactory.create(CarLauncherViewModel.class);
+ assertThat(carLauncherViewModel).isNotNull();
+ }
+}
diff --git a/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelTest.java b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelTest.java
new file mode 100644
index 0000000..087d5a1
--- /dev/null
+++ b/app/tests/src/com/android/car/carlauncher/CarLauncherViewModelTest.java
@@ -0,0 +1,113 @@
+/*
+ * 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.car.carlauncher;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Instrumentation;
+import android.car.app.RemoteCarTaskView;
+import android.car.test.mocks.AbstractExtendedMockitoTestCase;
+import android.content.Context;
+import android.content.Intent;
+
+import androidx.core.app.ActivityCompat;
+import androidx.test.ext.junit.rules.ActivityScenarioRule;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.car.carlauncher.TaskViewManagerTest.TestActivity;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+@RunWith(AndroidJUnit4.class)
+public final class CarLauncherViewModelTest extends AbstractExtendedMockitoTestCase {
+ private final Instrumentation mInstrumentation = InstrumentationRegistry.getInstrumentation();
+ private final Context mContext = mInstrumentation.getContext();
+
+ @Rule
+ public final ActivityScenarioRule<TestActivity> mActivityRule =
+ new ActivityScenarioRule<>(TestActivity.class);
+
+ @Mock
+ private Intent mIntent;
+
+ private RemoteCarTaskView mRemoteCarTaskView;
+ private TestActivity mActivity;
+
+
+ @Before
+ public void setUp() {
+ mActivityRule.getScenario().onActivity(activity -> mActivity = activity);
+ }
+
+ @After
+ public void tearDown() throws InterruptedException {
+ mActivityRule.getScenario().close();
+ mActivity.finishCompletely();
+ mRemoteCarTaskView = null;
+ }
+
+ @Test
+ public void testOnConfigChange_sameRemoteCarTaskView() {
+ // Arrange
+ createCarLauncherViewModel();
+ RemoteCarTaskView oldRemoteCarTaskView = mRemoteCarTaskView;
+
+ // Act
+ triggerActivityRecreation();
+
+ // Assert
+ assertThat(oldRemoteCarTaskView).isSameInstanceAs(mRemoteCarTaskView);
+ }
+
+ @Test
+ public void testViewModelOnCleared_clearsRemoteCarTaskView() {
+ // Arrange
+ CarLauncherViewModel carLauncherViewModel = createCarLauncherViewModel();
+
+ // Act
+ runOnMain(carLauncherViewModel::onCleared);
+ mInstrumentation.waitForIdleSync();
+
+ // Assert
+ assertThat(mRemoteCarTaskView).isNull();
+ }
+
+ private CarLauncherViewModel createCarLauncherViewModel() {
+ CarLauncherViewModel carLauncherViewModel = new CarLauncherViewModel(mActivity, mIntent);
+ runOnMain(() -> carLauncherViewModel.getRemoteCarTaskView().observeForever(
+ remoteCarTaskView -> mRemoteCarTaskView = remoteCarTaskView));
+ mInstrumentation.waitForIdleSync();
+ return carLauncherViewModel;
+ }
+
+ private void triggerActivityRecreation() {
+ // Causes activity recreation with a new instance resulting in the same flow as
+ // activity being recreated due to a configuration change.
+ runOnMain(() -> ActivityCompat.recreate(mActivity));
+ mInstrumentation.waitForIdleSync();
+ }
+
+ private void runOnMain(Runnable runnable) {
+ mContext.getMainExecutor().execute(runnable);
+ }
+}
diff --git a/docklib-util/res/values-en-rXC/strings.xml b/docklib-util/res/values-en-rXC/strings.xml
deleted file mode 100644
index b8409ad..0000000
--- a/docklib-util/res/values-en-rXC/strings.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- ~ 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.
- -->
-
-<resources xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
- <string name="broadcast_sender_permission_label" msgid="5796194170732286003">"Dock broadcast sender"</string>
- <string name="broadcast_sender_permission_desc" msgid="8345272264908051930">"Permission required for package to broadcast events to the Dock."</string>
-</resources>
diff --git a/docklib/res/values-en-rXC/strings.xml b/docklib/res/values-en-rXC/strings.xml
new file mode 100644
index 0000000..a48b2a2
--- /dev/null
+++ b/docklib/res/values-en-rXC/strings.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ 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.
+ -->
+
+<resources xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+ <string name="broadcast_sender_permission_label" msgid="5269973644784898827">"Dock broadcast sender"</string>
+ <string name="broadcast_sender_permission_desc" msgid="5052882219053515363">"Permission required for package to broadcast events to the Dock."</string>
+ <string name="broadcast_receiver_permission_label" msgid="6015991948761587466">"Dock broadcast receiver"</string>
+ <string name="broadcast_receiver_permission_desc" msgid="1623002370607914795">"Permission required for package listen to broadcast events for the Dock."</string>
+</resources>