diff --git a/OWNERS b/OWNERS index 4fd6a503f0..76644b3243 100644 --- a/OWNERS +++ b/OWNERS @@ -11,6 +11,7 @@ sunnygoyal@google.com twickham@google.com vadimt@google.com winsonc@google.com +jonmiranda@google.com per-file FeatureFlags.java, globs = set noparent per-file FeatureFlags.java = sunnygoyal@google.com, winsonc@google.com, adamcohen@google.com, hyunyoungs@google.com, captaincole@google.com diff --git a/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml b/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml index 28875184ab..b2957aad64 100644 --- a/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml +++ b/quickstep/res/layout/redesigned_gesture_tutorial_fragment.xml @@ -42,8 +42,6 @@ android:id="@+id/gesture_tutorial_fake_previous_task_view" android:layout_width="match_parent" android:layout_height="match_parent" - android:scaleX="0.98" - android:scaleY="0.98" android:visibility="invisible"> "Slaan oor" "Draai skerm" "Taakbalkopvoeding" - "Taakbalkopvoeding het verskyn" - "Taakbalkopvoeding is toegemaak" "Sleep ’n app na die kant toe om 2 apps tegelyk te gebruik" "Stadigswiep op om die Taakbalk te wys" "Kry appvoorstelle op grond van jou roetine" "Skakel gebaarnavigasie in Instellings aan om die Taakbalk outomaties te versteek" "Doen meer met die Taakbalk" - "Volgende" - "Terug" "Maak toe" "Klaar" "Tuis" diff --git a/quickstep/res/values-am/strings.xml b/quickstep/res/values-am/strings.xml index f43d78ab61..a226a04359 100644 --- a/quickstep/res/values-am/strings.xml +++ b/quickstep/res/values-am/strings.xml @@ -97,15 +97,11 @@ "ዝለል" "ማያ ገጹን አዙር" "የተግባር አሞሌ ትምህርት" - "የተግባር አሞሌ ትምህርት ይታያል" - "የተግባር አሞሌ ትምህርት ተዘግቷል" "በአንድ ጊዜ 2 መተግበሪያዎችን ለመጠቀም አንድ መተግበሪያን ወደ ጎን ይጎትቱ" "የተግባር አሞሌውን ለማሳየት ቀስ ብለው ወደ ላይ ያንሸራትቱ" "በዕለት ተዕለት ተግባርዎ መሠረት የመተግበሪያ አስተያየቶችን ያግኙ" "የተግባር አሞሌን በራስ ሰር ለመደበቅ የእጅ ምልክት ዳሰሳን በቅንብሮች ውስጥ ያብሩት" "በተግባር አሞሌው ተጨማሪ ነገር ያድርጉ" - "ቀጣይ" - "ተመለስ" "ዝጋ" "ተጠናቅቋል" "መነሻ" diff --git a/quickstep/res/values-ar/strings.xml b/quickstep/res/values-ar/strings.xml index cf5113d604..560f1c2c27 100644 --- a/quickstep/res/values-ar/strings.xml +++ b/quickstep/res/values-ar/strings.xml @@ -97,15 +97,11 @@ "التخطي" "تدوير الشاشة" "التعريف بشريط التطبيقات" - "ظهرت لوحة تعليم استخدام شريط المهام." - "تم إغلاق لوحة تعليم استخدام شريط المهام." "اسحب تطبيقًا إلى جانب الشاشة لاستخدام تطبيقََين في آنٍ واحد." "مرِّر ببطء للأعلى لإظهار شريط التطبيقات" "احصل على اقتراحات التطبيقات بناءً على سلسلة إجراءاتك." "فعِّل خيار \"التنقُّل بالإيماءات\" في \"الإعدادات\" لإخفاء شريط التطبيقات تلقائيًا." "إنجاز المزيد باستخدام شريط التطبيقات" - "الشاشة التالية" - "رجوع" "إغلاق" "تم" "الرئيسية" diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml index 17fa259e8c..c424ca1c52 100644 --- a/quickstep/res/values-as/strings.xml +++ b/quickstep/res/values-as/strings.xml @@ -97,15 +97,11 @@ "এৰি যাওক" "স্ক্ৰীনখন ঘূৰাওক" "টাস্কবাৰৰ শিক্ষা" - "টাস্কবাৰৰ শিক্ষাৰ পেনেলটো প্ৰদর্শিত হৈছে" - "টাস্কবাৰৰ শিক্ষাৰ পেনেলটো বন্ধ হৈছে" "এবাৰতে ২ টা এপ্‌ ব্যৱহাৰ কৰিবলৈ কোনো এপ্‌ কাষলৈ টানি আনি এৰক" "টাস্কবাৰ দেখুৱাবলৈ লাহেকৈ ওপৰলৈ ছোৱাইপ কৰক" "আপোনাৰ ৰুটিনৰ ওপৰত আধাৰিত এপৰ পৰামৰ্শ পাওক" "টাস্কবাৰ স্বয়ংক্ৰিয়ভাৱে লুকুৱাবলৈ ছেটিঙত আঙুলিৰ স্পৰ্শৰ নিৰ্দেশেৰে কৰা নেভিগেশ্বন অন কৰক" "টাস্কবাৰৰ জৰিয়তে অধিক কাৰ্য সম্পাদন কৰক" - "পৰৱৰ্তী" - "উভতি যাওক" "বন্ধ কৰক" "হ’ল" "গৃহপৃষ্ঠা" diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml index 5638379272..096299120a 100644 --- a/quickstep/res/values-az/strings.xml +++ b/quickstep/res/values-az/strings.xml @@ -97,15 +97,11 @@ "Ötürün" "Ekranı fırladın" "Tapşırıq panelində təhsil" - "Tapşırıq panelindəki təlim bölməsi görünür" - "Tapşırıq panelindəki təlim bölməsi bağlanıb" "Eyni anda 2 tətbiqi istifadə etmək üçün bir tətbiqi yan tərəfə çəkin" "Tapşırıq panelini göstərmək üçün astaca yuxarı sürüşdürün" "Rejiminizə əsasən tətbiq təklifləri alın" "Tapşırıq panelini avtomatik gizlətmək üçün Ayarlarda jest naviqasiyasını aktiv edin" "Tapşırıq paneli ilə daha çox şey edin" - "Sonra" - "Geri" "Bağlayın" "Hazırdır" "Ev" diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml index 8d5df4f1aa..23dd072c97 100644 --- a/quickstep/res/values-b+sr+Latn/strings.xml +++ b/quickstep/res/values-b+sr+Latn/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Rotirajte ekran" "Uputstva na traci zadataka" - "Edukativno okno iz trake zadataka se pojavilo" - "Edukativno okno iz trake zadataka je zatvoreno" "Prevucite na stranu da biste koristili 2 aplikacije odjednom" "Nakratko prevucite nagore da biste prikazali traku zadataka" "Dobijajte predloge aplikacija na osnovu rutine" "Uključite navigaciju pomoću pokreta u Podešavanjima radi automatskog skrivanja trake zadataka" "Uradite više pomoću trake zadataka" - "Dalje" - "Nazad" "Zatvori" "Gotovo" "Početna" diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml index 81957ba43c..a5c218b9aa 100644 --- a/quickstep/res/values-be/strings.xml +++ b/quickstep/res/values-be/strings.xml @@ -97,15 +97,11 @@ "Прапусціць" "Павярнуць экран" "Інфармацыя пра панэль задач" - "З\'явілася панэль навучання на панэлі задач" - "Панэль навучання на панэлі задач закрыта" "Каб карыстацца 2 праграмамі, перацягніце адну з іх убок" "Каб паказаць панэль задач, павольна правядзіце пальцам уверх" "Атрымлівайце прапановы праграм з улікам вашых дзеянняў" "Каб аўтаматычна схаваць панэль задач, уключыце ў Наладах навігацыю жэстамі" "Выкарыстоўвайце магчымасці панэлі задач" - "Далей" - "Назад" "Закрыць" "Гатова" "Галоўны экран" diff --git a/quickstep/res/values-bg/strings.xml b/quickstep/res/values-bg/strings.xml index e3265d9ad7..1222afa385 100644 --- a/quickstep/res/values-bg/strings.xml +++ b/quickstep/res/values-bg/strings.xml @@ -97,15 +97,11 @@ "Пропускане" "Завъртане на екрана" "Урок за лентата на задачите" - "Показва се урокът за лентата на задачите" - "Урокът за лентата на задачите бе затворен" "Плъзнете приложение встрани, за да използвате едновременно 2" "Плъзнете бавно нагоре, за да видите лентата на задачите" "Получавайте предложения за приложения според навиците си" "Включете навигирането с жестове от настройките с цел авт. скриване на лентата на задачите" "Правете повече неща с лентата на задачите" - "Напред" - "Назад" "Затваряне" "Готово" "Начало" diff --git a/quickstep/res/values-bn/strings.xml b/quickstep/res/values-bn/strings.xml index 2807f7a662..8f9fbee864 100644 --- a/quickstep/res/values-bn/strings.xml +++ b/quickstep/res/values-bn/strings.xml @@ -97,15 +97,11 @@ "এড়িয়ে যান" "স্ক্রিন ঘোরান" "টাস্কবার এডুকেশন" - "টাস্কবার এডুকেশন দেখানো হয়েছে" - "টাস্কবার এডুকেশন বন্ধ করা আছে" "একসাথে ২টি অ্যাপ ব্যবহার করতে একটি অ্যাপ পাশে টেনে আনুন" "\'টাস্কবার\' দেখানোর জন্য উপরের দিকে আস্তে সোয়াইপ করুন" "আপনার রুটিন অনুযায়ী অ্যাপ থেকে সাজেশন পান" "\'টাস্কবার\' অটোমেটিক লুকানোর জন্য, সেটিংসে জেসচার নেভিগেশন চালু করুন" "\'টাস্কবার\' ফিচারের সাহায্যে আরও অনেক কিছু করুন" - "পরবর্তী" - "ফিরুন" "বন্ধ করুন" "হয়ে গেছে" "হোম" diff --git a/quickstep/res/values-bs/strings.xml b/quickstep/res/values-bs/strings.xml index d857edd750..691c72091e 100644 --- a/quickstep/res/values-bs/strings.xml +++ b/quickstep/res/values-bs/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Rotiranje ekrana" "Edukacija o traci zadataka" - "Edukacija o programskoj traci je prikazana" - "Edukacija o programskoj traci je zatvorena" "Prevucite aplikaciju ustranu da odjednom koristite 2 aplikacije" "Sporo prevucite nagore da vidite traku zadataka" "Dobijajte prijedloge aplikacija zasnovane na vašoj rutini" "Uključite navigaciju pokretima u Postavkama da automatski sakrijete traku zadataka" "Uradite više pomoću trake zadataka" - "Naprijed" - "Nazad" "Zatvori" "Gotovo" "Dom" diff --git a/quickstep/res/values-ca/strings.xml b/quickstep/res/values-ca/strings.xml index 4f0cf15151..919712aaaa 100644 --- a/quickstep/res/values-ca/strings.xml +++ b/quickstep/res/values-ca/strings.xml @@ -97,15 +97,11 @@ "Omet" "Gira la pantalla" "Informació sobre Barra de tasques" - "Ha aparegut el tauler educatiu de la barra de tasques" - "S\'ha tancat el tauler educatiu de la barra de tasques" "Arrossega una app al costat per utilitzar 2 apps alhora" "Llisca lentament cap amunt per mostrar la Barra de tasques" "Obtén suggeriments d\'aplicacions basats en la teva rutina" "A Configuració, activa la navegació amb gestos per amagar la Barra de tasques automàticament" "Fes més coses amb la Barra de tasques" - "Següent" - "Enrere" "Tanca" "Fet" "Inici" diff --git a/quickstep/res/values-cs/strings.xml b/quickstep/res/values-cs/strings.xml index bbfc1d55b0..5ac7e7eaa8 100644 --- a/quickstep/res/values-cs/strings.xml +++ b/quickstep/res/values-cs/strings.xml @@ -97,15 +97,11 @@ "Přeskočit" "Otočit obrazovku" "Informace o panelu aplikací" - "Zobrazila se výuka k hlavnímu panelu" - "Výuka k hlavnímu panelu byla zavřena" "Přetáhněte aplikaci na stranu a používejte tak dvě najednou" "Panel aplikací zobrazíte pomalým přejetím prstem nahoru" "Získejte návrhy aplikací na základě vašeho používání" "Pokud chcete panel aplikací automaticky skrýt, zapněte v Nastavení navigaci gesty" "Pomocí panelu aplikací můžete dělat více věcí" - "Další" - "Zpět" "Zavřít" "Hotovo" "Domů" diff --git a/quickstep/res/values-da/strings.xml b/quickstep/res/values-da/strings.xml index 600d2cf979..d0cea4c874 100644 --- a/quickstep/res/values-da/strings.xml +++ b/quickstep/res/values-da/strings.xml @@ -97,15 +97,11 @@ "Spring over" "Roter skærm" "Oplysninger om proceslinjen" - "Vejledningen om proceslinjen blev åbnet" - "Vejledningen om proceslinjen blev lukket" "Træk en app til siden for at bruge 2 apps på én gang" "Stryg langsomt opad for at se proceslinjen" "Få appforslag baseret på din rutine" "Aktivér navigation med bevægelser under Indstillinger for automatisk at skjule proceslinjen" "Få mere fra hånden med proceslinjen" - "Næste" - "Tilbage" "Luk" "Luk" "Hjem" diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml index 3df50c9d30..d906ab80d4 100644 --- a/quickstep/res/values-de/strings.xml +++ b/quickstep/res/values-de/strings.xml @@ -97,15 +97,11 @@ "Überspringen" "Bildschirm drehen" "Informationen zur Taskleiste" - "Anleitung für Taskleiste eingeblendet" - "Anleitung für Taskleiste geschlossen" "App zur Seite ziehen, um zwei Apps gleichzeitig zu nutzen" "Langsam nach oben wischen, um die Taskleiste anzuzeigen" "App-Vorschläge auf Grundlage deiner Nutzung erhalten" "Taskleiste automatisch ausblenden: Aktiviere in „Einstellungen“ die Bedienung über Gesten." "Mehr Möglichkeiten mit der Taskleiste" - "Weiter" - "Zurück" "Schließen" "Fertig" "Startbildschirm" diff --git a/quickstep/res/values-el/strings.xml b/quickstep/res/values-el/strings.xml index bc57d26a71..0fa67fe972 100644 --- a/quickstep/res/values-el/strings.xml +++ b/quickstep/res/values-el/strings.xml @@ -97,15 +97,11 @@ "Παράβλεψη" "Περιστροφή οθόνης" "Πληροφορίες χρήσης της Γραμμής εργαλείων" - "Η εκπαίδευση για τη γραμμή εργασιών εμφανίστηκε" - "Η εκπαίδευση για τη γραμμή εργασιών έκλεισε" "Σύρετε μια εφαρμ. στην άκρη για χρήση δύο εφαρμ. ταυτόχρονα" "Σύρετε αργά προς τα πάνω για εμφάνιση της Γραμμής εργαλείων" "Λάβετε προτεινόμενες εφαρμογές με βάση τη ρουτίνα σας" "Ενεργοπ. την πλοήγηση με κινήσεις στις Ρυθμίσεις για αυτόμ. απόκρυψη της Γραμμής εργαλείων" "Κάντε περισσότερα με τη Γραμμή εργαλείων" - "Επόμενο" - "Πίσω" "Κλείσιμο" "Τέλος" "Αρχική σελίδα" diff --git a/quickstep/res/values-en-rAU/strings.xml b/quickstep/res/values-en-rAU/strings.xml index ce3b17de04..ec90faf5a8 100644 --- a/quickstep/res/values-en-rAU/strings.xml +++ b/quickstep/res/values-en-rAU/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use two apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rCA/strings.xml b/quickstep/res/values-en-rCA/strings.xml index 85b38bdee3..01599c4ec3 100644 --- a/quickstep/res/values-en-rCA/strings.xml +++ b/quickstep/res/values-en-rCA/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use 2 apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rGB/strings.xml b/quickstep/res/values-en-rGB/strings.xml index ce3b17de04..ec90faf5a8 100644 --- a/quickstep/res/values-en-rGB/strings.xml +++ b/quickstep/res/values-en-rGB/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use two apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rIN/strings.xml b/quickstep/res/values-en-rIN/strings.xml index ce3b17de04..ec90faf5a8 100644 --- a/quickstep/res/values-en-rIN/strings.xml +++ b/quickstep/res/values-en-rIN/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use two apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rXC/strings.xml b/quickstep/res/values-en-rXC/strings.xml index 1c08788b5a..c8f344edc4 100644 --- a/quickstep/res/values-en-rXC/strings.xml +++ b/quickstep/res/values-en-rXC/strings.xml @@ -97,15 +97,11 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎Skip‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎Rotate screen‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‏‎Taskbar education‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎Taskbar education appeared‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‏‎‎Taskbar education closed‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎Drag an app to the side to use 2 apps at once‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎Slow-swipe up to show the Taskbar‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎Get app suggestions based on your routine‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‏‏‏‎Turn on gesture navigation in Settings to auto-hide the Taskbar‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎Do more with the Taskbar‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‏‎‎‎‎‏‎Next‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎Back‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‎Close‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎Done‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎Home‎‏‎‎‏‎" diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml index 4944ce91e6..eb2a2960e5 100644 --- a/quickstep/res/values-es-rUS/strings.xml +++ b/quickstep/res/values-es-rUS/strings.xml @@ -97,15 +97,11 @@ "Omitir" "Girar pantalla" "Información sobre la barra de tareas" - "Se abrió la barra de herramientas Educación" - "Se cerró la barra de herramientas Educación" "Arrastra una app a un lado para usar 2 apps a la vez" "Desliza despacio hacia arriba para ver la Barra de tareas" "Recibe sugerencias de aplicaciones basadas en tu rutina" "Activa la navegación por gestos en la Configuración y la Barra de tareas se ocultará sola" "Haz más con la Barra de tareas" - "Siguiente" - "Atrás" "Cerrar" "Listo" "Botón de inicio" diff --git a/quickstep/res/values-es/strings.xml b/quickstep/res/values-es/strings.xml index e68cab82ac..d8beb80126 100644 --- a/quickstep/res/values-es/strings.xml +++ b/quickstep/res/values-es/strings.xml @@ -97,15 +97,11 @@ "Saltar" "Girar la pantalla" "Información sobre la barra de tareas" - "Ha aparecido una nota sobre la barra de tareas" - "Nota sobre la barra de tareas cerrada" "Arrastra una aplicación hacia un lado para usar 2 a la vez" "Desliza hacia arriba lentamente para ver la barra de tareas" "Obtén sugerencias de aplicaciones basadas en tu rutina" "Activa la navegación por gestos en Ajustes para ocultar la barra de tareas automáticamente" "Sácale más partido a la barra de tareas" - "Siguiente" - "Atrás" "Cerrar" "Hecho" "Inicio" diff --git a/quickstep/res/values-et/strings.xml b/quickstep/res/values-et/strings.xml index 80f1c61310..15943379dc 100644 --- a/quickstep/res/values-et/strings.xml +++ b/quickstep/res/values-et/strings.xml @@ -97,15 +97,11 @@ "Jäta vahele" "Pöörake ekraani" "Tegumiriba tutvustus" - "Tegumiriba juhised kuvati" - "Tegumiriba juhised on suletud" "2 rakenduse korraga kasutamiseks lohistage rakendus kõrvale" "Tegumiriba kuvamiseks pühkige aeglaselt üles" "Hankige oma rutiini põhjal rakenduste soovitusi" "Tegumiriba automaatseks peitmiseks lülitage seadetes sisse liigutustega navigeerimine" "Tehke tegumiriba abil enamat" - "Järgmine" - "Tagasi" "Sule" "Valmis" "Avaleht" diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml index 180e582c06..1eba2b7eeb 100644 --- a/quickstep/res/values-eu/strings.xml +++ b/quickstep/res/values-eu/strings.xml @@ -97,15 +97,11 @@ "Saltatu" "Biratu pantaila" "Zereginen barra erabiltzeko argibideak" - "Agertu egin da zereginen barraren tutoriala" - "Itxi egin da zereginen barraren tutoriala" "Bi aplikazio batera erabiltzeko, arrastatu bat albo batera" "Zereginen barra ikusteko, pasatu hatza motel gora" "Jaso aplikazioen iradokizunak erabileran oinarrituta" "Zereginen barra automatikoki ezkutatzeko, aktibatu keinu bidezko nabigazioa ezarpenetan" "Egin gauza gehiago zereginen barrarekin" - "Hurrengoa" - "Atzera" "Itxi" "Eginda" "Hasiera" diff --git a/quickstep/res/values-fa/strings.xml b/quickstep/res/values-fa/strings.xml index 5050de1798..1a35f9c94e 100644 --- a/quickstep/res/values-fa/strings.xml +++ b/quickstep/res/values-fa/strings.xml @@ -97,15 +97,11 @@ "رد شدن" "چرخاندن صفحه" "آموزش نوار وظیفه" - "پانل آموزشی نوار وظیفه نمایان شد" - "پانل آموزشی نوار وظیفه بسته شد" "برای استفاده هم‌زمان از ۲ برنامه، یک برنامه را به کناری بکشید" "برای نمایش «نوار وظیفه»، انگشتتان را آهسته به‌بالا بکشید" "براساس روال‌هایتان، پیشنهاد برنامه دریافت کنید" "برای پنهان‌سازی خودکار «نوار وظیفه»، پیمایش اشاره‌ای را در «تنظیمات» روشن کنید" "با «نوار وظیفه» می‌توانید کارهای بیشتر انجام دهید" - "بعدی" - "برگشت" "بستن" "تمام" "صفحه اصلی" diff --git a/quickstep/res/values-fi/strings.xml b/quickstep/res/values-fi/strings.xml index a539fac781..428011b180 100644 --- a/quickstep/res/values-fi/strings.xml +++ b/quickstep/res/values-fi/strings.xml @@ -97,15 +97,11 @@ "Ohita" "Käännä näyttö" "Tehtäväpalkin ohje" - "Tehtäväpalkin ohje näkyvissä" - "Tehtäväpalkin ohje suljettu" "Vedä sovellus sivuun, niin voit käyttää samalla 2 sellaista" "Näytä tehtäväpalkki pyyhkäisemällä ylös hitaasti" "Sovellussuosituksia käytön perusteella" "Laita eleillä navigointi päälle Asetuksista Tehtäväpalkin piilottamiseksi automaattisesti" "Vinkkejä tehtäväpalkin tehokkaampaan käyttöön" - "Seuraava" - "Takaisin" "Sulje" "Valmis" "Etusivu" diff --git a/quickstep/res/values-fr-rCA/strings.xml b/quickstep/res/values-fr-rCA/strings.xml index 16828c9d0b..af89ae5c91 100644 --- a/quickstep/res/values-fr-rCA/strings.xml +++ b/quickstep/res/values-fr-rCA/strings.xml @@ -97,15 +97,11 @@ "Ignorer" "Faire pivoter l\'écran" "Informations sur la barre des tâches" - "La barre des tâches éducatives s\'est affichée" - "La barre des tâches éducatives est fermée" "Pour utiliser deux applis, faites-les glisser vers le côté" "Balayez lent. vers le haut pour afficher la barre des tâches" "Obtenez des suggestions d\'applis en fonction de vos routines" "Activez la navigation par gestes dans Paramètres pour masquer auto. la barre des tâches" "Faites-en plus avec la barre des tâches" - "Suivant" - "Retour" "Fermer" "OK" "Accueil" diff --git a/quickstep/res/values-fr/strings.xml b/quickstep/res/values-fr/strings.xml index ce48ab8df6..3b08b8969c 100644 --- a/quickstep/res/values-fr/strings.xml +++ b/quickstep/res/values-fr/strings.xml @@ -97,15 +97,11 @@ "Passer" "Faire pivoter l\'écran" "Fonctionnement de la barre des tâches" - "Infos sur la barre des tâches affichées" - "Infos sur la barre des tâches fermées" "Faites glisser une appli sur le côté pour utiliser 2 applis" "Balayez lentement vers le haut pour l\'afficher" "Obtenez des suggestions d\'applis basées sur vos habitudes" "Activez la navigation par gestes dans paramètres pour masquage auto de la barre des tâches" "Faites-en plus avec la barre des tâches" - "Suivant" - "Retour" "Fermer" "OK" "Accueil" diff --git a/quickstep/res/values-gl/strings.xml b/quickstep/res/values-gl/strings.xml index 2eb4d62a71..d5e7550599 100644 --- a/quickstep/res/values-gl/strings.xml +++ b/quickstep/res/values-gl/strings.xml @@ -97,15 +97,11 @@ "Omitir" "Xira a pantalla" "Información sobre a función Barra de tarefas" - "Panel de información de barra de tarefas aberto" - "Panel de información de barra de tarefas pechado" "Arrastra unha aplicación cara a un lado para usar dúas á vez" "Pasa o dedo amodo cara arriba para ver a barra de tarefas" "Obtén suxestións de aplicacións en función da túa rutina" "Activa navegación con xestos en Configuración e oculta automaticamente a barra de tarefas" "Tira máis proveito da barra de tarefas" - "Seguinte" - "Atrás" "Pechar" "Listo" "Inicio" diff --git a/quickstep/res/values-gu/strings.xml b/quickstep/res/values-gu/strings.xml index 80ec49cb0a..0924b681c8 100644 --- a/quickstep/res/values-gu/strings.xml +++ b/quickstep/res/values-gu/strings.xml @@ -97,15 +97,11 @@ "છોડો" "સ્ક્રીન ફેરવો" "ટાસ્કબાર વિશે શિક્ષણ" - "ટાસ્કબારનું શિક્ષણ આપતી પૅનલ દેખાય છે" - "ટાસ્કબારનું શિક્ષણ આપતી પૅનલ બંધ થઈ છે" "એક સાથે 2 ઍપનો ઉપયોગ કરવા માટે, ઍપને ખેંચીને બાજુ પર લઈ જાઓ" "ટાસ્કબાર બતાવવા માટે ઉપરની તરફ ધીમેથી સ્વાઇપ કરો" "તમારા રૂટિનના આધારે ઍપના સુઝાવો મેળવો" "ટાસ્કબારને ઑટોમૅટિક રીતે છુપાવવા માટે સેટિંગમાં સંકેતથી નૅવિગેશનની સુવિધા ચાલુ કરો" "ટાસ્કબાર વડે બીજું ઘણું કરો" - "આગળ" - "પાછળ" "બંધ કરો" "થઈ ગયું" "હોમ" diff --git a/quickstep/res/values-hi/strings.xml b/quickstep/res/values-hi/strings.xml index 4badb4912a..b108371f21 100644 --- a/quickstep/res/values-hi/strings.xml +++ b/quickstep/res/values-hi/strings.xml @@ -97,15 +97,11 @@ "अभी नहीं" "स्क्रीन घुमाएं" "टास्कबार का ट्यूटोरियल" - "टास्कबार ट्यूटोरियल दिखाया गया" - "टास्कबार ट्यूटोरियल बंद किया गया" "किसी ऐप को किनारे की ओर ड्रैग करके 2 ऐप एक साथ इस्तेमाल करें" "टास्कबार दिखाने के लिए, ऊपर की ओर धीरे से स्वाइप करें" "डिवाइस के इस्तेमाल के आधार पर ऐप्लिकेशन के सुझाव पाएं" "टास्कबार अपने-आप छिपाने वाली सुविधा के लिए, सेटिंग में जाकर जेस्चर वाला नेविगेशन चालू करें" "टास्कबार की मदद से कई और काम करें" - "आगे बढ़ें" - "वापस जाएं" "बंद करें" "हो गया" "होम" diff --git a/quickstep/res/values-hr/strings.xml b/quickstep/res/values-hr/strings.xml index da5fbdc0ef..1aadeeac3a 100644 --- a/quickstep/res/values-hr/strings.xml +++ b/quickstep/res/values-hr/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Zakretanje zaslona" "Upute za traku sa zadacima" - "Upute za programsku traku su se pojavile" - "Upute za programsku traku su zatvorene" "Povucite apl. u stranu radi istodobne upotrebe 2 aplikacije" "Polako prijeđite prstom prema gore za prikaz trake sa zadacima" "Primajte prijedloge aplikacija na temelju svoje rutine" "Uključite navigaciju pokretima u postavkama da bi se traka sa zadacima automatski sakrila" "Učinite više uz pomoć trake sa zadacima" - "Dalje" - "Natrag" "Zatvori" "Gotovo" "Početna" diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml index e7fcb70c53..ba75d4f00a 100644 --- a/quickstep/res/values-hu/strings.xml +++ b/quickstep/res/values-hu/strings.xml @@ -97,15 +97,11 @@ "Kihagyás" "Képernyő elforgatása" "Tálca használatának ismertetése" - "Az eszköztár használatát ismertető panel megjelent" - "Az eszköztár használatát ismertető panel bezárult" "Húzzon egy appot oldalra, ha kettőt használna egyidejűleg" "Csúsztassa ujját lassan fel a Feladatsáv megjelenítéséhez" "Alkalmazásjavaslatokat kaphat a rutinja alapján" "A Feladatsáv automatikus elrejtéséhez aktiválja a navigációs kézmozdulatokat a beállításokban" "Jobban kihasználhatja a Feladatsávot" - "Tovább" - "Vissza" "Bezárás" "Kész" "Kezdőlap" diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml index 5ac931d2a3..43a7c5d4a1 100644 --- a/quickstep/res/values-hy/strings.xml +++ b/quickstep/res/values-hy/strings.xml @@ -97,15 +97,11 @@ "Բաց թողնել" "Պտտել էկրանը" "Խնդրագոտու «Կրթություն» պատուհան" - "Խնդրագոտու «Կրթություն» վահանակը բացվեց" - "Խնդրագոտու «Կրթություն» վահանակը փակվեց" "Միաժամանակ օգտագործեք երկու հավելված՝ մեկը մի կողմ քաշելով" "Հավելվածների վահանակը բացելու համար մատը դանդաղ սահեցրեք վեր" "Ստացեք առաջարկներ ձեր գործողությունների հիման վրա" "Կարգավորումներում միացրեք ժեստերով նավիգացիան՝ հավելվածների վահանակը թաքցնելու համար" "Օգտվեք հավելվածների վահանակի բոլոր հնարավորություններից" - "Առաջ" - "Հետ" "Փակել" "Պատրաստ է" "Սկիզբ" diff --git a/quickstep/res/values-in/strings.xml b/quickstep/res/values-in/strings.xml index ea5c19b1e5..6f9d7c6840 100644 --- a/quickstep/res/values-in/strings.xml +++ b/quickstep/res/values-in/strings.xml @@ -97,15 +97,11 @@ "Lewati" "Putar layar" "Pengantar Taskbar" - "Edukasi taskbar ditampilkan" - "Edukasi taskbar ditutup" "Tarik aplikasi ke samping untuk menggunakan 2 aplikasi sekaligus" "Geser perlahan ke atas untuk menampilkan Taskbar" "Dapatkan saran aplikasi berdasarkan rutinitas Anda" "Aktifkan navigasi gestur di Setelan untuk menyembunyikan otomatis Taskbar" "Lakukan lebih banyak dengan Taskbar" - "Berikutnya" - "Kembali" "Tutup" "Selesai" "Layar utama" diff --git a/quickstep/res/values-is/strings.xml b/quickstep/res/values-is/strings.xml index 52c0b81dd3..f58e6de718 100644 --- a/quickstep/res/values-is/strings.xml +++ b/quickstep/res/values-is/strings.xml @@ -97,15 +97,11 @@ "Sleppa" "Snúa skjánum" "Leiðsögn verkefnastiku" - "Leiðsögn verkefnastiku sýnileg" - "Leiðsögn verkefnastiku lokað" "Dragðu forrit til hliðar til að nota 2 forrit í einu" "Strjúktu hægt upp til að birta forritastikuna" "Fáðu forritatillögur sem byggjast á rútínunni þinni" "Kveiktu á bendingastjórnun í stillingunum til að fela forritastikuna sjálfkrafa" "Nýttu forritastikuna betur" - "Áfram" - "Til baka" "Loka" "Lokið" "Heim" diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml index 75314dc8f5..17e379fe2f 100644 --- a/quickstep/res/values-it/strings.xml +++ b/quickstep/res/values-it/strings.xml @@ -97,15 +97,11 @@ "Salta" "Ruota lo schermo" "Informazioni sulla barra delle applicazioni" - "Riquadro Formazione barra delle applicazioni visualizzato" - "Riquadro Formazione barra delle applicazioni chiuso" "Trascina un\'app di lato per usare due app contemporaneamente" "Scorri lentamente in su per mostrare la barra delle app" "Visualizza le app suggerite in base alla tua routine" "Per nascondere automaticamente la barra delle app, attiva la navigazione tramite gesti" "Fai di più con la barra delle app" - "Avanti" - "Indietro" "Chiudi" "Fine" "Home" diff --git a/quickstep/res/values-iw/strings.xml b/quickstep/res/values-iw/strings.xml index 9f5c2114c7..dc30dc686a 100644 --- a/quickstep/res/values-iw/strings.xml +++ b/quickstep/res/values-iw/strings.xml @@ -97,15 +97,11 @@ "דילוג" "סיבוב המסך" "הסבר על סרגל האפליקציות" - "חלונית ההסברים על שורת המשימות מופיעה" - "חלונית ההסברים על שורת המשימות נסגרה" "כדי להשתמש בשתי אפליקציות בו-זמנית, צריך לגרור אפליקציה לצד" "צריך להחליק לאט כדי להציג את סרגל האפליקציות" "קבלת הצעות לאפליקציות על סמך השימוש השגרתי שלך" "אפשר להפעיל את הניווט באמצעות תנועות ב\'הגדרות\' כדי להסתיר אוטומטית את סרגל האפליקציות" "פעולות נוספות שאפשר לעשות עם סרגל האפליקציות" - "הבא" - "חזרה" "סגירה" "סיום" "בית" diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml index 6f30fe6928..75e3bf8a1d 100644 --- a/quickstep/res/values-ja/strings.xml +++ b/quickstep/res/values-ja/strings.xml @@ -97,15 +97,11 @@ "スキップ" "画面を回転" "タスクバーの説明" - "タスクバーの説明を開きました" - "タスクバーの説明を閉じました" "アプリを横にドラッグして 2 個のアプリを同時に使用できます" "タスクバーを表示するには、上にゆっくりとスワイプします" "毎日の使用状況に基づいてアプリの候補が表示されます" "[設定] でジェスチャー ナビゲーションを ON にすると、タスクバーを自動的に非表示にできます" "タスクバーの各種機能" - "次へ" - "戻る" "閉じる" "完了" "ホーム" diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml index 2916aa4e46..13232da1cd 100644 --- a/quickstep/res/values-ka/strings.xml +++ b/quickstep/res/values-ka/strings.xml @@ -97,15 +97,11 @@ "გამოტოვება" "ეკრანის შეტრიალება" "ამოცანათა ზოლი: განათლება" - "ამოცანების ზოლის სასწავლო არე გამოჩნდა" - "ამოცანების ზოლის სასწავლო არე დაიხურა" "2 აპის ერთდროულად გამოსაყენებლად გადაათრიეთ აპი კიდეზე" "მოკლედ გადაფურცლეთ ზემოთ, რომ ამოცანათა ზოლი გამოაჩინოთ" "მიიღეთ აპის შეთავაზებები თქვენი რუტინის მიხედვით" "ჩართეთ ჟესტებით ნავიგაცია პარამეტრებში, რათა ავტომატურად დაიმალოთ სამუშაო ზოლი" "გააკეთეთ მეტი ამოცანათა ზოლის მეშვეობით" - "შემდეგი" - "უკან" "დახურვა" "მზადაა" "მთავარი" diff --git a/quickstep/res/values-kk/strings.xml b/quickstep/res/values-kk/strings.xml index a88d5e13e3..9f006a9eeb 100644 --- a/quickstep/res/values-kk/strings.xml +++ b/quickstep/res/values-kk/strings.xml @@ -97,15 +97,11 @@ "Өткізіп жіберу" "Экранды бұру" "Тапсырмалар жолағы: үйрену" - "Тапсырмалар тақтасы бойынша нұсқаулық ашылды." - "Тапсырмалар тақтасы бойынша нұсқаулық жабылды." "2 қолданбаны бір мезгілде пайдалану үшін қолданбаны шетке сүйреңіз." "Тапсырмалар жолағын көрсету үшін жоғары қарай ақырын сырғытыңыз." "Іс-әрекеттеріңізге негізделген қолданба ұсыныстарын алыңыз." "Тапсырмалар жолағын автоматты түрде жасыру үшін параметрлерден қимылмен басқаруды қосыңыз." "Тапсырмалар жолағында мүмкіндік көп" - "Келесі" - "Артқа" "Жабу" "Дайын" "Негізгі экран" diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml index 017d139d65..738e454469 100644 --- a/quickstep/res/values-km/strings.xml +++ b/quickstep/res/values-km/strings.xml @@ -97,15 +97,11 @@ "រំលង" "បង្វិលអេក្រង់" "ការអប់រំលើរបារកិច្ចការ" - "ការបង្រៀនអំពីរបារកិច្ចការបានបង្ហាញ" - "ការបង្រៀនអំពីរបារកិច្ចការត្រូវបានបិទ" "អូសកម្មវិធីទៅចំហៀង ដើម្បីប្រើកម្មវិធី 2 ក្នុងពេលតែមួយ" "អូសឡើងលើយឺតៗ ដើម្បីបង្ហាញរបារកិច្ចការ" "ទទួលការណែនាំកម្មវិធីដោយផ្អែកលើទម្លាប់របស់អ្នក" "បើកការរុករក​ដោយប្រើចលនានៅក្នុងការកំណត់ ដើម្បីលាក់របារកិច្ចការដោយស្វ័យប្រវត្តិ" "ធ្វើបានកាន់តែច្រើនដោយប្រើរបារកិច្ចការ" - "បន្ទាប់" - "ថយក្រោយ" "បិទ" "រួចរាល់" "ទំព័រដើម" diff --git a/quickstep/res/values-kn/strings.xml b/quickstep/res/values-kn/strings.xml index fa6e5d2a67..37e0acdf15 100644 --- a/quickstep/res/values-kn/strings.xml +++ b/quickstep/res/values-kn/strings.xml @@ -97,15 +97,11 @@ "ಸ್ಕಿಪ್ ಮಾಡಿ" "ಸ್ಕ್ರೀನ್ ತಿರುಗಿಸಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ" - "ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ ಕಾಣಿಸಿಕೊಂಡಿದೆ" - "ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ ಮುಚ್ಚಿದೆ" "ಒಂದೇ ಬಾರಿಗೆ 2 ಆ್ಯಪ್‌ಗಳನ್ನು ಬಳಸಲು ಆ್ಯಪ್ ಅನ್ನು ಬದಿಗೆ ಎಳೆಯಿರಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಅನ್ನು ತೋರಿಸಲು ನಿಧಾನವಾಗಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ" "ನಿಮ್ಮ ದಿನಚರಿಯ ಆಧಾರದ ಮೇಲೆ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಅನ್ನು ಸ್ವಯಂ-ಮರೆಮಾಡಲು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಗೆಸ್ಚರ್ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ಆನ್ ಮಾಡಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಮೂಲಕ ಹೆಚ್ಚಿನದನ್ನು ಮಾಡಿ" - "ಮುಂದೆ" - "ಹಿಂದೆ" "ಮುಚ್ಚಿರಿ" "ಮುಗಿದಿದೆ" "ಮುಖಪುಟ" diff --git a/quickstep/res/values-ko/strings.xml b/quickstep/res/values-ko/strings.xml index 60a50365cd..cff87a13b9 100644 --- a/quickstep/res/values-ko/strings.xml +++ b/quickstep/res/values-ko/strings.xml @@ -97,15 +97,11 @@ "건너뛰기" "화면 회전" "태스크 바 정보" - "작업 표시줄 튜토리얼 패널 표시됨" - "작업 표시줄 튜토리얼 패널 닫힘" "앱을 옆으로 드래그하여 앱 2개를 동시에 사용합니다." "위로 천천히 스와이프하면 태스크 바가 표시됩니다." "사용 습관에 따라 앱 제안을 받습니다." "태스크 바를 자동 숨김하려면 설정에서 동작 탐색을 켜세요." "태스크 바 최대한 활용하기" - "다음" - "뒤로" "닫기" "완료" "홈" diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml index 34285b7fde..4cb31fddf5 100644 --- a/quickstep/res/values-ky/strings.xml +++ b/quickstep/res/values-ky/strings.xml @@ -97,15 +97,11 @@ "Өткрп жиберүү" "Экранды буруу" "Тапшырмалар тактасы жөнүндө маалымат" - "Тапшырмалар тактасынын окутуу панели көрсөтүлдү" - "Тапшырмалар тактасынын окутуу панели жабылды" "2 колдонмону бир убакта пайдалануу үчүн капталга сүйрөңүз" "Тапшырмалар тактасын көрүү үчүн экранды жай өйдө сүрүңүз" "Программаңыздын негизинде сунушталган колдонмолорду алуу" "Тапшырмалар тактасын автоматтык түрдө жашыруу үчүн Тууралоодон жаңсап чабыттоону күйгүзүңүз" "Тапшырмалар тактасы менен көбүрөөк нерселерди аткарыңыз" - "Кийинки" - "Артка" "Жабуу" "Бүттү" "Башкы бет" diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml index 34f8ced3bc..be5d894c06 100644 --- a/quickstep/res/values-lo/strings.xml +++ b/quickstep/res/values-lo/strings.xml @@ -97,15 +97,11 @@ "ຂ້າມ" "ໝຸນໜ້າຈໍ" "ແຖບໜ້າວຽກ Education" - "ສະແດງການສຶກສາແຖບໜ້າວຽກແລ້ວ" - "ປິດການສຶກສາແຖບໜ້າວຽກແລ້ວ" "ລາກແອັບໄປດ້ານຂ້າງເພື່ອໃຊ້ 2 ແອັບໃນເວລາດຽວກັນ" "ປັດຂຶ້ນຊ້າໆເພື່ອສະແດງແຖບໜ້າວຽກ" "ຮັບການແນະນຳແອັບໂດຍອີງໃສ່ສິ່ງທີ່ເຮັດປະຈຳຂອງທ່ານ" "ເປີດການນຳທາງແບບທ່າທາງໃນການຕັ້ງຄ່າເພື່ອເຊື່ອງແຖບໜ້າວຽກໄວ້ໂດຍອັດຕະໂນມັດ" "ເຮັດສິ່ງຕ່າງໆໄດ້ຫຼາຍຂຶ້ນດ້ວຍແຖບໜ້າວຽກ" - "ຕໍ່ໄປ" - "ກັບຄືນ" "ປິດ" "ແລ້ວໆ" "ໜ້າຫຼັກ" diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml index 0549bd53bc..06c4f79088 100644 --- a/quickstep/res/values-lt/strings.xml +++ b/quickstep/res/values-lt/strings.xml @@ -97,15 +97,11 @@ "Praleisti" "Pasukti ekraną" "Užduočių juostos mokomoji informacija" - "Užduočių juostos patarimai rodomi" - "Užduočių juostos patarimai uždaryti" "Nuvilkę programą į šoną vienu metu naudokite dvi programas" "Trumpai perbraukite, kad būtų rodoma Užduočių juosta" "Gaukite programų pasiūlymų pagal savo veiklą" "Įjungę naršymą gestais „Nustatymų“ skiltyje automatiškai paslėpkite Užduočių juostą" "Atlikite daugiau naudodami Užduočių juostą" - "Kitas" - "Atgal" "Uždaryti" "Atlikta" "Pagrindinis" diff --git a/quickstep/res/values-lv/strings.xml b/quickstep/res/values-lv/strings.xml index 3d9cb10e34..9ab8259c15 100644 --- a/quickstep/res/values-lv/strings.xml +++ b/quickstep/res/values-lv/strings.xml @@ -97,15 +97,11 @@ "Izlaist" "Pagriezt ekrānu" "Informācija par uzdevumu joslu" - "Tika atvērta uzdevumjoslas apmācība" - "Tika aizvērta uzdevumjoslas apmācība" "Velciet lietotni sānis, lai izmantotu 2 lietotnes vienlaikus" "Lai skatītu uzdevumu joslu, lēni velciet augšup" "Skatiet ieteiktās lietotnes, balstoties uz jūsu ieradumiem" "Lai Uzdevumu josla tiktu automātiski paslēpta, iestatījumos ieslēdziet žestu navigāciju." "Plašākas iespējas, izmantojot uzdevumu joslu" - "Tālāk" - "Atpakaļ" "Aizvērt" "Gatavs" "Sākums" diff --git a/quickstep/res/values-mk/strings.xml b/quickstep/res/values-mk/strings.xml index 7b4e7056da..bd6b12a722 100644 --- a/quickstep/res/values-mk/strings.xml +++ b/quickstep/res/values-mk/strings.xml @@ -97,15 +97,11 @@ "Прескокни" "Ротирајте го екранот" "Обука за лентата со задачи" - "Се појави лентата за задачи за образование" - "Затворена е лентата за задачи за образование" "Повлечете апликација настрана за да користите 2 апликации" "Полека повлечете нагоре за да се прикаже „Лентата со задачи“" "Добивајте предлози за апликации според вашата рутина" "Вклучете навигација со движење во „Поставки“ за автоматско сокривање на „Лентата со задачи“" "Правете повеќе со една лента со задачи" - "Следно" - "Назад" "Затвори" "Готово" "Дома" diff --git a/quickstep/res/values-ml/strings.xml b/quickstep/res/values-ml/strings.xml index 17363c4058..74fdd756d1 100644 --- a/quickstep/res/values-ml/strings.xml +++ b/quickstep/res/values-ml/strings.xml @@ -97,15 +97,11 @@ "ഒഴിവാക്കുക" "സ്‌ക്രീൻ റൊട്ടേറ്റ് ചെയ്യുക" "ടാസ്‌ക്ബാർ മാർഗ്ഗനിർദ്ദേശ വിൻഡോ" - "ടാസ്ക്ക്ബാർ വിവര പാനൽ ദൃശ്യമായി" - "ടാസ്ക്ക്ബാർ വിവര പാനൽ അടച്ചു" "ഒരേ സമയം 2 ആപ്പുകൾ ഉപയോഗിക്കാൻ ഒരു ആപ്പ് വശത്തേക്ക് വലിച്ചിടൂ" "ടാസ്‌ക്ബാർ ദൃശ്യമാക്കാൻ മുകളിലേക്ക് പതുക്കെ സ്വൈപ്പ് ചെയ്യൂ" "നിങ്ങളുടെ ദിനചര്യ അനുസരിച്ച് ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക" "ടാസ്‌ക്‌ബാർ സ്വയമേവ മറയ്‌ക്കാൻ ക്രമീകരണത്തിൽ ജെസ്ച്ചർ നാവിഗേഷൻ ഓണാക്കുക" "ടാസ്‌ക്‌ബാർ ഉപയോഗിച്ച് കൂടുതൽ ചെയ്യുക" - "അടുത്തത്" - "മടങ്ങുക" "അടയ്ക്കുക" "പൂർത്തിയായി" "ഹോം" diff --git a/quickstep/res/values-mn/strings.xml b/quickstep/res/values-mn/strings.xml index d8f2015270..7c6314e7ab 100644 --- a/quickstep/res/values-mn/strings.xml +++ b/quickstep/res/values-mn/strings.xml @@ -97,15 +97,11 @@ "Алгасах" "Дэлгэцийг эргүүлэх" "Ажлын хэсгийн боловсрол" - "Боловсролын ажлын талбар гарч ирсэн" - "Боловсролын ажлын талбарыг хаасан" "2 аппыг зэрэг ашиглахын тулд аппыг хажуу тийш чирнэ үү" "Ажлын хэсгийг харуулахын тулд аажмаар дээш шударна уу" "Таны хэвшилд тулгуурлан санал болгож буй аппуудыг аваарай" "Ажлын хэсгийг автоматаар хаахын тулд Тохиргоонд зангааны навигацыг асаана уу" "Ажлын хэсгийн тусламжтай илүү ихийг хийгээрэй" - "Дараах" - "Буцах" "Хаах" "Дууссан" "Гэр" diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml index 646c40c874..cfaf2d8864 100644 --- a/quickstep/res/values-mr/strings.xml +++ b/quickstep/res/values-mr/strings.xml @@ -97,15 +97,11 @@ "वगळा" "स्क्रीन फिरवा" "टास्कबारशी संबंधित माहिती" - "टास्कबारशी संबंधित माहिती देणारे पॅनल उघडले आहे" - "टास्कबारशी संबंधित माहिती देणारे पॅनल बंद केले आहे" "दोन ॲप्स एकत्र वापरण्यासाठी एक अ‍ॅप बाजूला ड्रॅग करा" "टास्कबार दाखवण्यासाठी थोडे हळू वरती स्वाइप करा" "तुमच्या दिनक्रमावर आधारित ॲप सूचना मिळवा" "टास्कबार ऑटो हाइड करण्यासाठी सेटिंग्ज मधून जेश्चर नेव्हिगेशन सुरू करा" "टास्कबार चा पुरेपूर वापर करा" - "पुढे" - "मागे जा" "बंद करा" "पूर्ण झाले" "होम" diff --git a/quickstep/res/values-ms/strings.xml b/quickstep/res/values-ms/strings.xml index d1ae233531..4ed6493b84 100644 --- a/quickstep/res/values-ms/strings.xml +++ b/quickstep/res/values-ms/strings.xml @@ -97,15 +97,11 @@ "Langkau" "Putar skrin" "Pendidikan bar tugas" - "Pendidikan bar tugas muncul" - "Pendidikan bar tugas ditutup" "Seret apl ke tepi untuk menggunakan 2 apl serentak" "Leret perlahan ke atas untuk menunjukkan Bar Tugas" "Dapatkan cadangan apl berdasarkan rutin anda" "Hidupkan navigasi gerak isyarat dalam Tetapan untuk autosembunyi Bar Tugas" "Lakukan lebih banyak perkara dengan Bar Tugas" - "Seterusnya" - "Kembali" "Tutup" "Selesai" "Laman Utama" diff --git a/quickstep/res/values-my/strings.xml b/quickstep/res/values-my/strings.xml index fe4e954e11..617473c66f 100644 --- a/quickstep/res/values-my/strings.xml +++ b/quickstep/res/values-my/strings.xml @@ -97,15 +97,11 @@ "ကျော်ရန်" "ဖန်သားပြင်လှည့်ရန်" "လုပ်ဆောင်စရာဘား ပညာပေး" - "ပညာရေး လုပ်ဆောင်စရာဘား ပြထားသည်" - "ပညာရေး လုပ်ဆောင်စရာဘား ပိတ်ထားသည်" "အက်ပ် ၂ ခု တစ်ပြိုင်တည်းသုံးရန် အက်ပ်ကို ဘေးသို့ ဖိဆွဲပါ" "Taskbar ပြရန် အပေါ်သို့ ဖြည်းဖြည်းပွတ်ဆွဲပါ" "ပုံမှန်အစီအစဉ်ပေါ် အခြေခံ၍ အက်ပ်အကြံပြုချက်များကို ရယူပါ" "Taskbar ကို အော်တိုဝှက်ရန် ဆက်တင်များတွင် လက်ဟန်ဖြင့်လမ်းညွှန်ခြင်း ဖွင့်နိုင်သည်" "Taskbar ဖြင့် ပိုမိုလုပ်ဆောင်နိုင်ခြင်း" - "ရှေ့သို့" - "နောက်သို့" "ပိတ်ရန်" "ပြီးပြီ" "ပင်မစာမျက်နှာ" diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml index a5b90bc724..e4d75bebcd 100644 --- a/quickstep/res/values-nb/strings.xml +++ b/quickstep/res/values-nb/strings.xml @@ -97,15 +97,11 @@ "Hopp over" "Rotér skjermen" "Veiledning for oppgavelinjen" - "Opplæringen for oppgavelinjen vises" - "Opplæringen for oppgavelinjen er lukket" "Dra en app til siden for å bruke 2 apper samtidig" "Sveip langsomt opp for å vise oppgavelinjen" "Få appforslag som er basert på rutinene dine" "Slå på navigasjon med bevegelser i innstillingene for å skjule oppgavelinjen automatisk" "Gjør mer med oppgavelinjen" - "Neste" - "Tilbake" "Lukk" "Ferdig" "Hjem" diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml index 526c6c0399..b9e8e1cb8e 100644 --- a/quickstep/res/values-ne/strings.xml +++ b/quickstep/res/values-ne/strings.xml @@ -97,15 +97,11 @@ "स्किप गर्नु…" "स्क्रिन घुमाउनुहोस्" "टास्कबार एजुकेसन" - "टास्कबार एजुकेसन देखिएको छ" - "टास्कबार एजुकेसन बन्द गरिएको छ" "एपलाई छेउतिर ड्र्याग गरेर एकै पटक २ वटा एप चलाउनुहोस्" "टास्कबार देखाउन माथितिर बिस्तारै स्वाइप गर्नुहोस्" "आफ्नो रुटिनका आधारमा एपसम्बन्धी सुझावहरू प्राप्त गर्नुहोस्" "टास्कबार स्वतः लुकाउन सेटिङमा गई इसारामार्फत गरिने नेभिगेसन अन गर्नुहोस्" "टास्कबार प्रयोग गरेर अझ धेरै कार्य गर्नुहोस्" - "अर्को" - "पछाडि" "बन्द गर्नुहोस्" "सम्पन्न भयो" "होम" diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml index 9f9051cec7..f2a9d88fe0 100644 --- a/quickstep/res/values-nl/strings.xml +++ b/quickstep/res/values-nl/strings.xml @@ -97,15 +97,11 @@ "Overslaan" "Scherm draaien" "Taakbalk Onderwijs" - "Uitleg van taakbalk geopend" - "Uitleg van taakbalk gesloten" "Sleep een app naar de zijkant om 2 apps tegelijk te gebruiken" "Swipe kort omhoog om de taakbalk te tonen" "Krijg app-suggesties op basis van je routine" "Zet navigatie met gebaren aan bij Instellingen om de Taakbalk automatisch te verbergen" "Doe meer met de taakbalk" - "Volgende" - "Terug" "Sluiten" "Klaar" "Home" diff --git a/quickstep/res/values-or/strings.xml b/quickstep/res/values-or/strings.xml index a2a598beef..2affa6f5d9 100644 --- a/quickstep/res/values-or/strings.xml +++ b/quickstep/res/values-or/strings.xml @@ -97,15 +97,11 @@ "ବାଦ୍ ଦିଅନ୍ତୁ" "ସ୍କ୍ରିନ ଘୂରାନ୍ତୁ" "ଟାସ୍କବାର ଶିକ୍ଷା" - "ଟାସ୍କବାର୍ ଶିକ୍ଷା ଦେଖାଯାଇଛି" - "ଟାସ୍କବାର୍ ଶିକ୍ଷା ବନ୍ଦ ହୋଇଯାଇଛି" "ଥରକେ 2ଟି ଆପ୍ସ ବ୍ୟବହାର କରିବା ପାଇଁ ଏକ ଆପକୁ ପାର୍ଶ୍ୱକୁ ଡ୍ରାଗ କର" "ଟାସ୍କବାର ଦେଖାଇବା ପାଇଁ ଉପରକୁ ଧୀରେ-ସ୍ୱାଇପ କରନ୍ତୁ" "ଆପଣଙ୍କ ରୁଟିନ ଆଧାରରେ ଆପ ପରାମର୍ଶଗୁଡ଼ିକୁ ପାଆନ୍ତୁ" "ଟାସ୍କବାରକୁ ସ୍ୱତଃ-ଲୁଚାଇବା ପାଇଁ ସେଟିଂସରେ ଜେଶ୍ଚର ନାଭିଗେସନକୁ ଚାଲୁ କରନ୍ତୁ" "ଟାସ୍କବାର ମାଧ୍ୟମରେ ଆହୁରି ଅନେକ କିଛି କରନ୍ତୁ" - "ପରବର୍ତ୍ତୀ" - "ପଛକୁ ଫେରନ୍ତୁ" "ବନ୍ଦ କରନ୍ତୁ" "ହୋଇଗଲା" "ହୋମ" diff --git a/quickstep/res/values-pa/strings.xml b/quickstep/res/values-pa/strings.xml index bfa881bdca..df9cc35279 100644 --- a/quickstep/res/values-pa/strings.xml +++ b/quickstep/res/values-pa/strings.xml @@ -97,15 +97,11 @@ "ਛੱਡੋ" "ਸਕ੍ਰੀਨ ਘੁਮਾਓ" "ਟਾਸਕਬਾਰ ਸਿੱਖਿਆ" - "ਟਾਸਕਵਾਰ ਸਿੱਖਿਆ ਪੈਨਲ ਦਿਖਾਇਆ ਗਿਆ" - "ਟਾਸਕਵਾਰ ਸਿੱਖਿਆ ਪੈਨਲ ਬੰਦ ਕੀਤਾ ਗਿਆ" "ਇੱਕ ਵਾਰ ਵਿੱਚ 2 ਐਪਾਂ ਵਰਤਣ ਲਈ, ਐਪ ਨੂੰ ਪਾਸੇ ਵੱਲ ਘਸੀਟੋ" "ਟਾਸਕਬਾਰ ਦਿਖਾਉਣ ਲਈ ਥੋੜ੍ਹਾ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ" "ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮ ਦੇ ਆਧਾਰ \'ਤੇ ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ" "ਟਾਸਕਬਾਰ ਨੂੰ ਸਵੈ-ਲੁਕਾਉਣ ਲਈ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਸ਼ਾਰਾ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਚਾਲੂ ਕਰੋ" "ਟਾਸਕਬਾਰ ਦਾ ਹੋਰ ਲਾਹਾ ਲਓ" - "ਅੱਗੇ" - "ਪਿੱਛੇ" "ਬੰਦ ਕਰੋ" "ਸਮਝ ਲਿਆ" "ਘਰ" diff --git a/quickstep/res/values-pl/strings.xml b/quickstep/res/values-pl/strings.xml index 7bb37ba08d..f09e41224a 100644 --- a/quickstep/res/values-pl/strings.xml +++ b/quickstep/res/values-pl/strings.xml @@ -97,15 +97,11 @@ "Pomiń" "Obróć ekran" "Informacje o pasku aplikacji" - "Wskazówki na temat paska zadań zostały wyświetlone" - "Wskazówki na temat paska zadań zostały zamknięte" "Przeciągnij aplikację w bok, aby używać 2 aplikacji naraz" "Przesuń palcem krótko w górę, aby wyświetlić pasek aplikacji" "Otrzymuj sugestie aplikacji na podstawie rutyny" "Włącz nawigację przy użyciu gestów w Ustawieniach, aby automatycznie ukrywać pasek aplikacji" "Wykorzystaj potencjał paska aplikacji" - "Dalej" - "Wstecz" "Zamknij" "Gotowe" "Ekran główny" diff --git a/quickstep/res/values-pt-rPT/strings.xml b/quickstep/res/values-pt-rPT/strings.xml index daa0afeadc..2b287b3bdf 100644 --- a/quickstep/res/values-pt-rPT/strings.xml +++ b/quickstep/res/values-pt-rPT/strings.xml @@ -97,15 +97,11 @@ "Ignorar" "Rodar ecrã" "Educação da Barra de tarefas" - "Informação da barra de tarefas apresentada" - "Informação da barra de tarefas fechada" "Arraste uma app para o lado para usar 2 apps em simultâneo" "Deslize lentamente para cima para mostrar a Barra de tarefas" "Obtenha sugestões de apps baseadas na sua rotina" "Ative a navegação por gestos em Definições para ocultar automaticamente a Barra de tarefas" "Faça mais com a Barra de tarefas" - "Seguinte" - "Anterior" "Fechar" "Concluir" "Início" diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml index 2bc1399f80..4092c06690 100644 --- a/quickstep/res/values-pt/strings.xml +++ b/quickstep/res/values-pt/strings.xml @@ -97,15 +97,11 @@ "Pular" "Girar a tela" "Informações sobre a barra de tarefas" - "As dicas sobre a barra de tarefas foram abertas" - "As dicas sobre a barra de tarefas foram fechadas" "Arraste um app para o lado e use dois apps ao mesmo tempo" "Deslize para cima devagar para mostrar a Barra de tarefas" "Receba sugestões de apps com base na sua rotina" "Ative a navegação por gestos nas configs. para ocultar a Barra de tarefas automaticamente" "Aproveite ainda mais a Barra de tarefas" - "Próxima" - "Voltar" "Fechar" "Concluído" "Início" diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml index a31d227dc8..003b867815 100644 --- a/quickstep/res/values-ro/strings.xml +++ b/quickstep/res/values-ro/strings.xml @@ -97,15 +97,11 @@ "Omite" "Rotește ecranul" "Informații despre bara de activități" - "Panoul cu informații despre bara de activități s-a afișat" - "Panoul cu informații despre bara de activități s-a închis" "Trage în lateral o aplicație ca să folosești 2 aplicații deodată" "Glisează lent în sus pentru a afișa bara de activități" "Primește sugestii de aplicații în funcție de rutina ta" "Activează navigarea prin gesturi în Setări ca să ascunzi automat bara de activități" "Fă mai multe din Bara de activități" - "Înainte" - "Înapoi" "Închide" "Gata" "Ecran de pornire" diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml index 7336b25118..166fe7c66f 100644 --- a/quickstep/res/values-ru/strings.xml +++ b/quickstep/res/values-ru/strings.xml @@ -97,15 +97,11 @@ "Пропустить" "Повернуть экран" "Обучение по работе с панелью задач" - "Обучение по работе с панелью задач показано" - "Обучение по работе с панелью задач скрыто" "Используйте два приложения сразу, перетащив одно в сторону." "Чтобы открыть панель задач, медленно проведите снизу вверх." "Получайте рекомендации, основанные на ваших действиях." "Чтобы панель задач скрывалась автоматически, включите навигацию с помощью жестов." "Используйте все возможности панели задач" - "Далее" - "Назад" "Закрыть" "Готово" "Главный экран" diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml index db0e099664..1b850efe90 100644 --- a/quickstep/res/values-si/strings.xml +++ b/quickstep/res/values-si/strings.xml @@ -97,15 +97,11 @@ "මඟ හරින්න" "තිරය කරකවන්න" "කාර්ය තීරු අධ්‍යාපනය" - "කාර්ය තීරු අධ්‍යාපනය දිස් විය" - "කාර්ය තීරු අධ්‍යාපනය වසා ඇත" "එකවර යෙදුම් 2ක් භාවිතා කිරීමට යෙදුමක් පැත්තට අදින්න" "කාර්ය තීරුව පෙන්වීමට ඉහළට සෙමින් ස්වයිප් කරන්න" "ඔබේ දිනචරියාව මත පදනම්ව යෙදුම් යෝජනා ලබා ගන්න" "කාර්ය තීරුව ස්වයංක්‍රීයව සැඟවීමට සැකසීම් තුළ අභින සංචලනය සක්‍රීය කරන්න" "කාර්ය තීරුව සමග තවත් කරන්න" - "ඊළඟ" - "ආපසු" "වසන්න" "නිමයි" "මුල් පිටුව" diff --git a/quickstep/res/values-sk/strings.xml b/quickstep/res/values-sk/strings.xml index 28687dc9a6..b2dff2e2e6 100644 --- a/quickstep/res/values-sk/strings.xml +++ b/quickstep/res/values-sk/strings.xml @@ -97,15 +97,11 @@ "Preskočiť" "Otočiť obrazovku" "Panel vzdelávacích aplikácií" - "Zobrazila sa výuka k hlavnému panelu" - "Výuka k hlavnému panelu bola zatvorená" "Ak chcete použ. dve aplikácie naraz, presuňte aplik. nabok" "Panel aplikácií zobrazíte pomalým potiahnutím nahor" "Získavajte návrhy aplikácií na základe svojich zvykov" "Ak chcete, aby sa panel aplikácií autom. skrýval, zapnite v Nastaveniach navigáciu gestami" "Panel aplikácií vám ponúka ďalšie možnosti" - "Ďalej" - "Späť" "Zavrieť" "Hotovo" "Plocha" diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml index 9964d00b52..e0f1f92b9e 100644 --- a/quickstep/res/values-sl/strings.xml +++ b/quickstep/res/values-sl/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Sukanje zaslona" "Poučni nasveti o opravilni vrstici" - "Poučni nasveti o opravilni vrstici so prikazani." - "Poučni nasveti o opravilni vrstici so zaprti." "Povlecite aplikacijo na stran za uporabo 2 aplikacij hkrati." "Počasi povlecite navzgor za prikaz opravilne vrstice." "Prejemajte predloge aplikacij na podlagi svojih navad." "V nastavitvah vklopite krmarjenje s potezami, da se bo opravilna vrstica samodejno skrila." "Naredite več z opravilno vrstico" - "Naprej" - "Nazaj" "Zapri" "Končano" "Začetni zaslon" diff --git a/quickstep/res/values-sq/strings.xml b/quickstep/res/values-sq/strings.xml index d234667eee..c0d550be35 100644 --- a/quickstep/res/values-sq/strings.xml +++ b/quickstep/res/values-sq/strings.xml @@ -97,15 +97,11 @@ "Kapërce" "Rrotullo ekranin" "Edukimi për shiritin e detyrave" - "Edukimi i shiritit të detyrave u shfaq" - "Edukimi nga shiriti i detyrave u mbyll" "Zvarrit një aplikacion në anë për të përdorur 2 aplikacione njëherësh" "Rrëshqit lart ngadalë për të shfaqur \"Shiritin e detyrave\"" "Merr sugjerime për aplikacion bazuar në rutinën tënde" "Aktivizo navigimin me gjeste te \"Cilësimet\" për të fshehur \"Shiritin e detyrave\"" "Bëj më shumë me \"Shiritin e detyrave\"" - "Para" - "Pas" "Mbyll" "U krye" "Faqja kryesore" diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml index 44f7ecb695..17802836bc 100644 --- a/quickstep/res/values-sr/strings.xml +++ b/quickstep/res/values-sr/strings.xml @@ -97,15 +97,11 @@ "Прескочи" "Ротирајте екран" "Упутства на траци задатака" - "Едукативно окно из траке задатака се појавило" - "Едукативно окно из траке задатака је затворено" "Превуците на страну да бисте користили 2 апликације одједном" "Накратко превуците нагоре да бисте приказали траку задатака" "Добијајте предлоге апликација на основу рутине" "Укључите навигацију помоћу покрета у Подешавањима ради аутоматског скривања траке задатака" "Урадите више помоћу траке задатака" - "Даље" - "Назад" "Затвори" "Готово" "Почетна" diff --git a/quickstep/res/values-sv/strings.xml b/quickstep/res/values-sv/strings.xml index 2d7bdfd50b..5e8467514d 100644 --- a/quickstep/res/values-sv/strings.xml +++ b/quickstep/res/values-sv/strings.xml @@ -97,15 +97,11 @@ "Hoppa över" "Rotera skärmen" "Aktivitetsfältsutbildning" - "Information om aktivitetsfältet visades" - "Information om aktivitetsfältet stängdes" "Dra en app till sidan om du vill använda två appar samtidigt" "Svep långsamt uppåt för att visa aktivitetsfältet" "Få appförslag utifrån dina rutiner" "Slå på navigering med rörelser i Inställningar för att dölja aktivitetsfältet automatiskt" "Gör mer med aktivitetsfältet" - "Nästa" - "Tillbaka" "Stäng" "Klar" "Startsida" diff --git a/quickstep/res/values-sw/strings.xml b/quickstep/res/values-sw/strings.xml index bd64127f4d..bc7cfb8269 100644 --- a/quickstep/res/values-sw/strings.xml +++ b/quickstep/res/values-sw/strings.xml @@ -97,15 +97,11 @@ "Ruka" "Zungusha skrini" "Elimu ya Upauzana" - "Paneli ya elimu kwenye upau wa shughuli inaonyeshwa" - "Paneli ya elimu kwenye upau wa shughuli imefungwa" "Buruta programu pembeni ili utumie programu 2 kwa wakati mmoja" "Telezesha kidole juu taratibu ili ufungue Upauzana" "Pata mapendekezo ya programu kulingana na ratiba yako" "Washa usogezaji kwa kutumia ishara kwenye Mipangilio ili ufiche Upauzana kiotomatiki" "Kamilisha mengi kwa kutumia Upauzana huu" - "Endelea" - "Nyuma" "Funga" "Imemaliza" "Mwanzo" diff --git a/quickstep/res/values-ta/strings.xml b/quickstep/res/values-ta/strings.xml index b0e52d3827..5ccbc17767 100644 --- a/quickstep/res/values-ta/strings.xml +++ b/quickstep/res/values-ta/strings.xml @@ -97,15 +97,11 @@ "தவிர்" "திரையைச் சுழற்றும்" "செயல் பட்டியைப் பயன்படுத்தும் விதம்" - "பணிப்பட்டியை எவ்வாறு பயன்படுத்துவது என்பது பற்றிய பலகம் காட்டப்படுகிறது" - "பணிப்பட்டியை எவ்வாறு பயன்படுத்துவது என்பது பற்றிய பலகம் மூடப்பட்டது" "ஒரே நேரத்தில் 2 ஆப்ஸைப் பயன்படுத்தப் பக்கவாட்டில் இழுக்கவும்" "செயல் பட்டியைக் காட்ட மேல்நோக்கி மெதுவாக ஸ்வைப் செய்யவும்" "உங்கள் வழக்கத்திற்கேற்ப ஆப்ஸ் பரிந்துரைகளைப் பெறலாம்" "செயல் பட்டியைத் தானாக மறைக்க அமைப்புகளில் சைகை வழிசெலுத்தலை இயக்கவும்" "செயல் பட்டி மூலம் மேலும் பலவற்றைச் செய்யுங்கள்" - "அடுத்து" - "பின்செல்" "மூடுக" "முடிந்தது" "முகப்பு" diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml index 9056325f66..ad0c851ca8 100644 --- a/quickstep/res/values-te/strings.xml +++ b/quickstep/res/values-te/strings.xml @@ -97,15 +97,11 @@ "స్కిప్ చేయండి" "స్క్రీన్‌ను తిప్పండి" "టాస్క్‌బార్ ఎడ్యుకేషన్" - "టాస్క్‌బార్ శిక్షణకు సంబంధించిన ప్యానెల్ కనిపించింది" - "టాస్క్‌బార్ శిక్షణకు సంబంధించిన ప్యానెల్ మూసివేయబడింది" "ఒకేసారి 2 యాప్‌లను ఉపయోగించడానికి యాప్‌ను పక్కకు లాగండి" "టాస్క్‌బార్‌ను చూపడానికి నెమ్మదిగా పైకి స్వైప్ చేయండి" "మీ రొటీన్ ఆధారంగా యాప్ సూచనలను పొందండి" "టాస్క్‌బార్‌ను ఆటోమేటిక్‌గా దాచడానికి, సెట్టింగ్‌లలో సంజ్ఞ నావిగేషన్‌ను ఆన్ చేయండి" "టాస్క్‌బార్‌తో మరిన్ని చేయండి" - "తర్వాత" - "వెనుకకు" "మూసివేయండి" "పూర్తయింది" "మొదటి ట్యాబ్" diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml index 096e1479a7..8cba9b9117 100644 --- a/quickstep/res/values-th/strings.xml +++ b/quickstep/res/values-th/strings.xml @@ -97,15 +97,11 @@ "ข้าม" "หมุนหน้าจอ" "แถบงาน Education" - "แถบงาน Education ปรากฎขึ้น" - "ปิดแถบงาน Education แล้ว" "ลากแอปไปด้านข้างเพื่อใช้ 2 แอปพร้อมกัน" "ปัดขึ้นช้าๆ เพื่อแสดงแถบงาน" "รับคำแนะนำเกี่ยวกับแอปตามกิจวัตรของคุณ" "เปิดการนำทางด้วยท่าทางสัมผัสในการตั้งค่าเพื่อซ่อนแถบงานโดยอัตโนมัติ" "ทำสิ่งต่างๆ ได้มากขึ้นด้วยแถบงาน" - "ถัดไป" - "กลับ" "ปิด" "เสร็จ" "หน้าแรก" diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml index 60ae4456be..ae6dd45e40 100644 --- a/quickstep/res/values-tl/strings.xml +++ b/quickstep/res/values-tl/strings.xml @@ -97,15 +97,11 @@ "Laktawan" "I-rotate ang screen" "Impormasyon sa taskbar" - "Lumabas ang edukasyon sa taskbar" - "Sarado ang edukasyon sa taskbar" "Mag-drag ng app sa gilid para makagamit ng 2 app nang sabay" "Mag-swipe nang mabagal pataas para ipakita ang Taskbar" "Makakuha ng mga iminumungkahing app batay sa iyong routine" "I-on ang navigation gamit ang galaw sa Mga Setting para i-auto hide ang Taskbar" "Mas maraming magawa gamit ang Taskbar" - "Susunod" - "Bumalik" "Isara" "Tapos na" "Home" diff --git a/quickstep/res/values-tr/strings.xml b/quickstep/res/values-tr/strings.xml index b90cc70624..e5d5b6d68f 100644 --- a/quickstep/res/values-tr/strings.xml +++ b/quickstep/res/values-tr/strings.xml @@ -97,15 +97,11 @@ "Atla" "Ekranı döndür" "Görev çubuğu eğitimi" - "Görev çubuğu eğitimi görüntülendi" - "Görev çubuğu eğitimi kapatıldı" "Aynı anda iki uygulama kullanmak için birini yana sürükleyin" "Görev çubuğunu göstermek için yukarı doğru yavaşça kaydırın" "Rutininize göre uygulama önerileri alın" "Görev çubuğunu otomatik olarak gizlemek için Ayarlar\'dan hareketle gezinmeyi etkinleştirin" "Görev çubuğuyla daha fazla şey yapın" - "İleri" - "Geri" "Kapat" "Bitti" "Ana ekran" diff --git a/quickstep/res/values-uk/strings.xml b/quickstep/res/values-uk/strings.xml index d12513debd..36c5bbb6cb 100644 --- a/quickstep/res/values-uk/strings.xml +++ b/quickstep/res/values-uk/strings.xml @@ -97,15 +97,11 @@ "Пропустити" "Обернути екран" "Панель завдань Education" - "Панель завдань Education відкрито" - "Панель завдань Education закрито" "Перетягніть убік, щоб використовувати 2 додатки одночасно" "Щоб відкрити панель завдань, повільно проведіть угору" "Отримуйте рекомендації додатків залежно від їх використання" "Увімкніть навігацію жестами в налаштуваннях, щоб автоматично приховувати панель завдань" "Більше можливостей завдяки панелі завдань" - "Далі" - "Назад" "Закрити" "Готово" "Головний екран" diff --git a/quickstep/res/values-ur/strings.xml b/quickstep/res/values-ur/strings.xml index 63282d1e90..9d1efe49a9 100644 --- a/quickstep/res/values-ur/strings.xml +++ b/quickstep/res/values-ur/strings.xml @@ -97,15 +97,11 @@ "نظر انداز کریں" "اسکرین کو گھمائیں" "ٹاسک بار کی تعلیم" - "ٹاکس بار کا تعلیمی پینل ظاہر ہو گیا" - "ٹاسک بار کا تعلیمی پینل بند ہو گیا" "ایک وقت میں 2 ایپس استعمال کرنے کیلئے ایپ سائیڈ پر گھسیٹیں" "ٹاسک بار دکھانے کے لیے آہستہ سے اوپر سوائپ کریں" "اپنی روٹین پر مبنی ایپس کی تجاویز حاصل کریں" "ٹاسک بار کو خودکار طور پر چھپانے کیلئے \'ترتیبات\' میں اشاروں والی نیویگیشن آن کریں" "ٹاسک بار سے بہت کچھ کریں" - "آگے" - "پیچھے" "بند کریں" "ہو گیا" "ہوم" diff --git a/quickstep/res/values-uz/strings.xml b/quickstep/res/values-uz/strings.xml index 0433177700..cf70ebdde8 100644 --- a/quickstep/res/values-uz/strings.xml +++ b/quickstep/res/values-uz/strings.xml @@ -97,15 +97,11 @@ "Tashlab ketish" "Ekranni burish" "Vazifalar paneli qoʻllanmasi" - "Taʼlim vazifalar paneli chiqdi" - "Taʼlim vazifalar paneli yopildi" "Bitta ilovani yon tomonga sudrab, bir vaqtda 2 ta ilovadan foydalaning." "Vazifalar panelini ochish uchun tepaga asta suring" "Harakatlaringiz asosida tavsiyalar oling." "Vazifalar paneli avtomatik yopilishi uchun ishorali navigatsiyani yoqing" "Vazifalar panelidan maksimal darajada foydalaning" - "Keyingisi" - "Orqaga" "Yopish" "Tayyor" "Bosh ekran" diff --git a/quickstep/res/values-vi/strings.xml b/quickstep/res/values-vi/strings.xml index b225b28c19..ada07bd046 100644 --- a/quickstep/res/values-vi/strings.xml +++ b/quickstep/res/values-vi/strings.xml @@ -97,15 +97,11 @@ "Bỏ qua" "Xoay màn hình" "Cách sử dụng thanh tác vụ" - "Đã hiện bảng hướng dẫn trên thanh tác vụ" - "Đã đóng bảng hướng dẫn trên thanh tác vụ" "Kéo một ứng dụng sang bên để dùng 2 ứng dụng cùng lúc" "Từ từ vuốt lên để Thanh tác vụ xuất hiện" "Nhận ứng dụng đề xuất dựa trên thói quen của bạn" "Bật tính năng thao tác bằng cử chỉ trong phần Cài đặt để tự động ẩn Thanh tác vụ" "Làm nhiều việc hơn qua Thanh tác vụ" - "Tiếp theo" - "Quay lại" "Đóng" "Xong" "Màn hình chính" diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml index 0ea40f30a9..1e3c4ab0e4 100644 --- a/quickstep/res/values-zh-rCN/strings.xml +++ b/quickstep/res/values-zh-rCN/strings.xml @@ -97,15 +97,11 @@ "跳过" "旋转屏幕" "任务栏教程" - "任务栏教程已显示" - "任务栏教程已关闭" "将一个应用拖动到一侧,即可一次使用两个应用" "缓慢向上滑动即可显示任务栏" "根据您的日常安排获取应用建议" "在设置中开启手势导航后,任务栏会自动隐藏" "体验任务栏的更多功能" - "继续" - "返回" "关闭" "完成" "主屏幕" diff --git a/quickstep/res/values-zh-rHK/strings.xml b/quickstep/res/values-zh-rHK/strings.xml index 56ab40b357..432352aa3a 100644 --- a/quickstep/res/values-zh-rHK/strings.xml +++ b/quickstep/res/values-zh-rHK/strings.xml @@ -97,15 +97,11 @@ "略過" "旋轉螢幕" "工作列教學" - "顯示咗工作列教學" - "閂咗工作列教學" "將應用程式拖曳到一邊,即可同時使用 2 個應用程式" "慢慢向上滑動即可顯示工作列" "根據您的日常安排提供應用程式建議" "在「設定」中啟用手勢操作後,工作列就會自動隱藏" "工作列助您事半功倍" - "繼續" - "返回" "關閉" "完成" "住宅" diff --git a/quickstep/res/values-zh-rTW/strings.xml b/quickstep/res/values-zh-rTW/strings.xml index e958c876c7..6926ec5603 100644 --- a/quickstep/res/values-zh-rTW/strings.xml +++ b/quickstep/res/values-zh-rTW/strings.xml @@ -97,15 +97,11 @@ "略過" "旋轉螢幕" "工作列教學課程" - "工作列教學課程已顯示" - "工作列教學課程已關閉" "將應用程式拖曳到一邊即可同時使用 2 個應用程式" "緩慢向上滑動即可讓工作列顯示在畫面上" "根據你的日常安排建議應用程式" "在設定中啟用手勢操作後,工作列就會自動隱藏" "充分發揮工作列的功用" - "繼續" - "返回" "關閉" "完成" "主畫面" diff --git a/quickstep/res/values-zu/strings.xml b/quickstep/res/values-zu/strings.xml index db7919f1f6..246b1216b2 100644 --- a/quickstep/res/values-zu/strings.xml +++ b/quickstep/res/values-zu/strings.xml @@ -97,15 +97,11 @@ "Yeqa" "Zungezisa isikrini" "Imfundo ye-taskbar" - "Imfuno yebha yomsebenzi ivelile" - "Imfundo yebha yomsebenzi ivaliwe" "Hudula i-app ukusebenzisa ama-app ama-2 ngesikhathi esisodwa" "Swayiphela phezulu kancane ukuze ubonise i-Taskbar" "Thola iziphakamiso ze-app ngokusekelwe kumjikelezo wakho" "Vula ukufuna kokuthinta Kumasethingi ukuze ufihle ngokuzenzakalela ibha yomsebenzi" "Yenza okwengeziwe nge-Taskbar" - "Okulandelayo" - "Emuva" "Vala" "Kwenziwe" "Ikhaya" diff --git a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java index 4956fa1b86..726abff5da 100644 --- a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java +++ b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java @@ -21,7 +21,6 @@ import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; import android.content.Context; -import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.model.GridBackupTable; @@ -42,10 +41,7 @@ public class HotseatRestoreHelper { context.getContentResolver(), LauncherSettings.Settings.METHOD_NEW_TRANSACTION) .getBinder(LauncherSettings.Settings.EXTRA_VALUE)) { - InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - GridBackupTable backupTable = new GridBackupTable(context, - transaction.getDb(), idp.numDatabaseHotseatIcons, idp.numColumns, - idp.numRows); + GridBackupTable backupTable = new GridBackupTable(context, transaction.getDb()); backupTable.createCustomBackupTable(HYBRID_HOTSEAT_BACKUP_TABLE); transaction.commit(); LauncherSettings.Settings.call(context.getContentResolver(), @@ -67,10 +63,7 @@ public class HotseatRestoreHelper { if (!tableExists(transaction.getDb(), HYBRID_HOTSEAT_BACKUP_TABLE)) { return; } - InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - GridBackupTable backupTable = new GridBackupTable(context, - transaction.getDb(), idp.numDatabaseHotseatIcons, idp.numColumns, - idp.numRows); + GridBackupTable backupTable = new GridBackupTable(context, transaction.getDb()); backupTable.restoreFromCustomBackupTable(HYBRID_HOTSEAT_BACKUP_TABLE, true); transaction.commit(); LauncherAppState.getInstance(context).getModel().forceReload(); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index c9e7df45a1..9bc8cdd44b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -642,14 +642,8 @@ public class TaskbarLauncherStateController { long resetDuration = mControllers.taskbarStashController.isInApp() ? duration : duration / 2; - boolean shouldReset = - mControllers.taskbarTranslationController.shouldResetBackToZero(resetDuration); - boolean goingToLauncher = isAnimatingToLauncher(); - boolean isNormalState = mLauncherState == LauncherState.NORMAL; - // Taskbar should always reset when animating to launcher in normal state to ensure there - // is no jump during the handoff to the hotseat. - if ((goingToLauncher && isNormalState) - || (shouldReset && (goingToLauncher || isNormalState))) { + if (!mControllers.taskbarTranslationController.willAnimateToZeroBefore(resetDuration) + && (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL)) { animatorSet.play(mControllers.taskbarTranslationController .createAnimToResetTranslation(resetDuration)); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java index 4b18bb6556..065d1117c8 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java @@ -54,7 +54,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable private boolean mHasSprungOnceThisGesture; private @Nullable ValueAnimator mSpringBounce; private boolean mGestureEnded; - private boolean mGestureInProgress; private boolean mAnimationToHomeRunning; private final boolean mIsTransientTaskbar; @@ -124,7 +123,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable private void reset() { mGestureEnded = false; - mGestureInProgress = false; mHasSprungOnceThisGesture = false; } @@ -136,24 +134,18 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable } /** - * Returns {@code true} if we should reset the animation back to zero. - * - * Returns {@code false} if there is a gesture in progress, or if we are already animating - * to 0 within the specified duration. + * Returns true if we will animate to zero before the input duration. */ - public boolean shouldResetBackToZero(long duration) { - if (mGestureInProgress) { - return false; - } + public boolean willAnimateToZeroBefore(long duration) { if (mSpringBounce != null && mSpringBounce.isRunning()) { long springDuration = mSpringBounce.getDuration(); long current = mSpringBounce.getCurrentPlayTime(); - return (springDuration - current >= duration); + return (springDuration - current < duration); } if (mTranslationYForSwipe.isAnimatingToValue(0)) { - return mTranslationYForSwipe.getRemainingTime() >= duration; + return mTranslationYForSwipe.getRemainingTime() < duration; } - return true; + return false; } /** @@ -196,7 +188,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable mAnimationToHomeRunning = false; cancelSpringIfExists(); reset(); - mGestureInProgress = true; } /** * Called when there is movement to move the taskbar. @@ -220,7 +211,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable mGestureEnded = true; startSpring(); } - mGestureInProgress = false; } } @@ -232,7 +222,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable pw.println(prefix + "\tmHasSprungOnceThisGesture=" + mHasSprungOnceThisGesture); pw.println(prefix + "\tmAnimationToHomeRunning=" + mAnimationToHomeRunning); pw.println(prefix + "\tmGestureEnded=" + mGestureEnded); - pw.println(prefix + "\tmGestureInProgress=" + mGestureInProgress); pw.println(prefix + "\tmSpringBounce is running=" + (mSpringBounce != null && mSpringBounce.isRunning())); } diff --git a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java index edd88230be..97956701ab 100644 --- a/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java +++ b/quickstep/src/com/android/quickstep/AbsSwipeUpHandler.java @@ -62,6 +62,7 @@ import android.animation.ValueAnimator; import android.annotation.TargetApi; import android.app.Activity; import android.app.ActivityManager; +import android.app.TaskInfo; import android.app.WindowConfiguration; import android.content.Context; import android.content.Intent; @@ -2079,13 +2080,16 @@ public abstract class AbsSwipeUpHandler, if (!mCanceled) { TaskView nextTask = mRecentsView.getNextPageTaskView(); if (nextTask != null) { - int taskId = nextTask.getTask().key.id; + Task.TaskKey nextTaskKey = nextTask.getTask().key; + int taskId = nextTaskKey.id; mGestureState.updateLastStartedTaskId(taskId); boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds() .contains(taskId); if (!hasTaskPreviouslyAppeared) { ActiveGestureLog.INSTANCE.trackEvent(EXPECTING_TASK_APPEARED); } + ActiveGestureLog.INSTANCE.addLog("Launching task: id=" + taskId + + " pkg=" + nextTaskKey.getPackageName()); nextTask.launchTask(success -> { resultCallback.accept(success); if (success) { @@ -2154,7 +2158,18 @@ public abstract class AbsSwipeUpHandler, @Override public void onTasksAppeared(RemoteAnimationTarget[] appearedTaskTargets) { if (mRecentsAnimationController != null) { - if (handleTaskAppeared(appearedTaskTargets)) { + boolean hasStartedTaskBefore = Arrays.stream(appearedTaskTargets).anyMatch( + targetCompat -> targetCompat.taskId == mGestureState.getLastStartedTaskId()); + if (!mStateCallback.hasStates(STATE_GESTURE_COMPLETED) && !hasStartedTaskBefore) { + // This is a special case, if a task is started mid-gesture that wasn't a part of a + // previous quickswitch task launch, then cancel the animation back to the app + RemoteAnimationTarget appearedTaskTarget = appearedTaskTargets[0]; + TaskInfo taskInfo = appearedTaskTarget.taskInfo; + ActiveGestureLog.INSTANCE.addLog("Unexpected task appeared" + + " id=" + taskInfo.taskId + + " pkg=" + taskInfo.baseIntent.getComponent().getPackageName()); + finishRecentsAnimationOnTasksAppeared(); + } else if (handleTaskAppeared(appearedTaskTargets)) { Optional taskTargetOptional = Arrays.stream(appearedTaskTargets) .filter(targetCompat -> @@ -2202,7 +2217,7 @@ public abstract class AbsSwipeUpHandler, if (mRecentsAnimationController != null) { mRecentsAnimationController.finish(false /* toRecents */, null /* onFinishComplete */); } - ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimation", false); + ActiveGestureLog.INSTANCE.addLog("finishRecentsAnimationOnTasksAppeared"); } /** diff --git a/quickstep/src/com/android/quickstep/InputConsumer.java b/quickstep/src/com/android/quickstep/InputConsumer.java index c455dc7462..64c92959e4 100644 --- a/quickstep/src/com/android/quickstep/InputConsumer.java +++ b/quickstep/src/com/android/quickstep/InputConsumer.java @@ -40,6 +40,7 @@ public interface InputConsumer { int TYPE_SYSUI_OVERLAY = 1 << 10; int TYPE_ONE_HANDED = 1 << 11; int TYPE_TASKBAR_STASH = 1 << 12; + int TYPE_STATUS_BAR = 1 << 13; String[] NAMES = new String[] { "TYPE_NO_OP", // 0 @@ -55,6 +56,7 @@ public interface InputConsumer { "TYPE_SYSUI_OVERLAY", // 10 "TYPE_ONE_HANDED", // 11 "TYPE_TASKBAR_STASH", // 12 + "TYPE_STATUS_BAR", // 13 }; InputConsumer NO_OP = () -> TYPE_NO_OP; diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 93363a0ff2..1cf682bffc 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -26,6 +26,7 @@ import static android.view.MotionEvent.ACTION_UP; import static com.android.launcher3.Launcher.INTENT_ACTION_ALL_APPS_TOGGLE; import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe; import static com.android.launcher3.config.FeatureFlags.ASSISTANT_GIVES_LAUNCHER_FOCUS; +import static com.android.launcher3.config.FeatureFlags.ENABLE_TRACKPAD_GESTURE; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; import static com.android.quickstep.GestureState.DEFAULT_STATE; import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent.FLAG_USING_OTHER_ACTIVITY_INPUT_CONSUMER; @@ -106,6 +107,7 @@ import com.android.quickstep.inputconsumers.OverviewWithoutFocusInputConsumer; import com.android.quickstep.inputconsumers.ProgressDelegateInputConsumer; import com.android.quickstep.inputconsumers.ResetGestureInputConsumer; import com.android.quickstep.inputconsumers.ScreenPinnedInputConsumer; +import com.android.quickstep.inputconsumers.StatusBarInputConsumer; import com.android.quickstep.inputconsumers.SysUiOverlayInputConsumer; import com.android.quickstep.inputconsumers.TaskbarStashInputConsumer; import com.android.quickstep.util.ActiveGestureLog; @@ -857,7 +859,14 @@ public class TouchInteractionService extends Service getBaseContext(), mDeviceState, mInputMonitorCompat); } - + if (ENABLE_TRACKPAD_GESTURE.get() && mGestureState.isTrackpadGesture() + && mGestureState.getActivityInterface().isResumed() + && !previousGestureState.isRecentsAnimationRunning()) { + reasonString = newCompoundString(reasonPrefix) + .append(SUBSTRING_PREFIX) + .append("Trackpad 3-finger gesture, using StatusBarInputConsumer"); + base = new StatusBarInputConsumer(getBaseContext(), base, mInputMonitorCompat); + } if (mDeviceState.isScreenPinningActive()) { reasonString = newCompoundString(reasonPrefix) diff --git a/quickstep/src/com/android/quickstep/inputconsumers/StatusBarInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/StatusBarInputConsumer.java new file mode 100644 index 0000000000..f3d2a60b15 --- /dev/null +++ b/quickstep/src/com/android/quickstep/inputconsumers/StatusBarInputConsumer.java @@ -0,0 +1,76 @@ +/* + * 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.quickstep.inputconsumers; + +import static android.view.MotionEvent.ACTION_DOWN; +import static android.view.MotionEvent.ACTION_MOVE; + +import android.content.Context; +import android.graphics.PointF; +import android.view.MotionEvent; +import android.view.ViewConfiguration; + +import com.android.quickstep.InputConsumer; +import com.android.quickstep.SystemUiProxy; +import com.android.systemui.shared.system.InputMonitorCompat; + +/** Allows the status bar to be pull down for notification shade */ +public class StatusBarInputConsumer extends DelegateInputConsumer { + + private final SystemUiProxy mSystemUiProxy; + private final float mTouchSlop; + private final PointF mDown = new PointF(); + + public StatusBarInputConsumer(Context context, InputConsumer delegate, + InputMonitorCompat inputMonitor) { + super(delegate, inputMonitor); + + mSystemUiProxy = SystemUiProxy.INSTANCE.get(context); + mTouchSlop = 2 * ViewConfiguration.get(context).getScaledTouchSlop(); + } + + @Override + public int getType() { + return TYPE_STATUS_BAR | mDelegate.getType(); + } + + @Override + public void onMotionEvent(MotionEvent ev) { + if (mState != STATE_ACTIVE) { + mDelegate.onMotionEvent(ev); + + switch (ev.getActionMasked()) { + case ACTION_DOWN -> mDown.set(ev.getX(), ev.getY()); + case ACTION_MOVE -> { + float displacementY = ev.getY() - mDown.y; + if (displacementY > mTouchSlop) { + setActive(ev); + ev.setAction(ACTION_DOWN); + dispatchTouchEvent(ev); + } + } + } + } else { + dispatchTouchEvent(ev); + } + } + + private void dispatchTouchEvent(MotionEvent ev) { + if (mSystemUiProxy.isActive()) { + mSystemUiProxy.onStatusBarMotionEvent(ev); + } + } +} diff --git a/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java b/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java index 73937f5914..44b3d625e6 100644 --- a/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java +++ b/quickstep/src/com/android/quickstep/interaction/AnimatedTaskView.java @@ -15,6 +15,10 @@ */ package com.android.quickstep.interaction; +import static com.android.launcher3.QuickstepTransitionManager.ANIMATION_NAV_FADE_OUT_DURATION; +import static com.android.launcher3.QuickstepTransitionManager.NAV_FADE_OUT_INTERPOLATOR; +import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; +import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.config.FeatureFlags.ENABLE_NEW_GESTURE_NAV_TUTORIAL; import android.animation.Animator; @@ -29,6 +33,8 @@ import android.graphics.Outline; import android.graphics.Rect; import android.util.AttributeSet; import android.util.Log; +import android.view.Display; +import android.view.RoundedCorner; import android.view.View; import android.view.ViewOutlineProvider; import android.view.animation.ScaleAnimation; @@ -40,8 +46,12 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import com.android.launcher3.R; +import com.android.launcher3.Utilities; +import com.android.launcher3.anim.Interpolators; +import com.android.quickstep.util.MultiValueUpdateListener; import java.util.ArrayList; +import java.util.Arrays; /** * Helper View for the gesture tutorial mock previous app task view. @@ -51,6 +61,8 @@ import java.util.ArrayList; */ public class AnimatedTaskView extends ConstraintLayout { + private static final long ANIMATE_TO_FULL_SCREEN_DURATION = 300; + private View mFullTaskView; private View mTopTaskView; private View mBottomTaskView; @@ -92,33 +104,86 @@ public class AnimatedTaskView extends ConstraintLayout { setToSingleRowLayout(false); } - void animateToFillScreen(@Nullable Runnable onAnimationEndCallback) { + void animateToFillScreen(@Nullable Runnable onAnimationEndCallback) { + if (mTaskViewOutlineProvider == null) { + // This is an illegal state. + return; + } + // calculate start and end corner radius + Outline startOutline = new Outline(); + mTaskViewOutlineProvider.getOutline(this, startOutline); + Rect outlineStartRect = new Rect(); + startOutline.getRect(outlineStartRect); + float outlineStartRadius = startOutline.getRadius(); + final Display display = mContext.getDisplay();; + RoundedCorner corner = display.getRoundedCorner(RoundedCorner.POSITION_TOP_LEFT); + float outlineEndRadius = corner.getRadius(); + + // create animation AnimatorSet set = new AnimatorSet(); ArrayList animations = new ArrayList<>(); // center view animations.add(ObjectAnimator.ofFloat(this, TRANSLATION_X, 0)); - // calculate full screen scaling, scale should be 1:1 for x and y + // retrieve start animation matrix to scale off of Matrix matrix = getAnimationMatrix(); + if (matrix == null) { + // This is an illegal state. + return; + } + float[] matrixValues = new float[9]; matrix.getValues(matrixValues); - float scaleX = matrixValues[Matrix.MSCALE_X]; - float scaleToFullScreen = 1 / scaleX; + float[] newValues = matrixValues.clone(); - // scale view to full screen - ValueAnimator scale = ValueAnimator.ofFloat(1f, scaleToFullScreen); - scale.addUpdateListener(animation -> { - float value = (float) animation.getAnimatedValue(); - mFullTaskView.setScaleX(value); - mFullTaskView.setScaleY(value); - }); + ValueAnimator transformAnimation = ValueAnimator.ofFloat(0, 1); - animations.add(scale); + MultiValueUpdateListener listener = new MultiValueUpdateListener() { + Matrix currentMatrix = new Matrix(); + + FloatProp mOutlineRadius = new FloatProp(outlineStartRadius, outlineEndRadius, 0, + ANIMATE_TO_FULL_SCREEN_DURATION, LINEAR); + FloatProp mTransX = new FloatProp(matrixValues[Matrix.MTRANS_X], 0f, 0, + ANIMATE_TO_FULL_SCREEN_DURATION, LINEAR); + FloatProp mTransY = new FloatProp(matrixValues[Matrix.MTRANS_Y], 0f, 0, + ANIMATE_TO_FULL_SCREEN_DURATION, LINEAR); + FloatProp mScaleX = new FloatProp(matrixValues[Matrix.MSCALE_X], 1f, 0, + ANIMATE_TO_FULL_SCREEN_DURATION, LINEAR); + FloatProp mScaleY = new FloatProp(matrixValues[Matrix.MSCALE_Y], 1f, 0, + ANIMATE_TO_FULL_SCREEN_DURATION, LINEAR); + + @Override + public void onUpdate(float percent, boolean initOnly) { + // scale corner radius to match display radius + mTaskViewAnimatedRadius = mOutlineRadius.value; + mFullTaskView.invalidateOutline(); + + // translate to center, ends at translation x:0, y:0 + newValues[Matrix.MTRANS_X] = mTransX.value; + newValues[Matrix.MTRANS_Y] = mTransY.value; + + // scale to full size, ends at scale 1 + newValues[Matrix.MSCALE_X] = mScaleX.value; + newValues[Matrix.MSCALE_Y] = mScaleY.value; + + // create and set new animation matrix + currentMatrix.setValues(newValues); + setAnimationMatrix(currentMatrix); + } + }; + + transformAnimation.addUpdateListener(listener); + animations.add(transformAnimation); set.playSequentially(animations); - set.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + super.onAnimationStart(animation); + addAnimatedOutlineProvider(mFullTaskView, outlineStartRect, outlineStartRadius); + } + @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); @@ -127,7 +192,6 @@ public class AnimatedTaskView extends ConstraintLayout { } } }); - set.start(); } @@ -158,17 +222,7 @@ public class AnimatedTaskView extends ConstraintLayout { @Override public void onAnimationStart(Animator animation) { super.onAnimationStart(animation); - - mTaskViewAnimatedRect.set(outlineStartRect); - mTaskViewAnimatedRadius = outlineStartRadius; - - mFullTaskView.setClipToOutline(true); - mFullTaskView.setOutlineProvider(new ViewOutlineProvider() { - @Override - public void getOutline(View view, Outline outline) { - outline.setRoundRect(mTaskViewAnimatedRect, mTaskViewAnimatedRadius); - } - }); + addAnimatedOutlineProvider(mFullTaskView, outlineStartRect, outlineStartRadius); } @Override @@ -247,4 +301,17 @@ public class AnimatedTaskView extends ConstraintLayout { mTaskViewOutlineProvider = provider; mFullTaskView.setOutlineProvider(mTaskViewOutlineProvider); } + + private void addAnimatedOutlineProvider(View view, + Rect outlineStartRect, float outlineStartRadius){ + mTaskViewAnimatedRect.set(outlineStartRect); + mTaskViewAnimatedRadius = outlineStartRadius; + view.setClipToOutline(true); + view.setOutlineProvider(new ViewOutlineProvider() { + @Override + public void getOutline(View view, Outline outline) { + outline.setRoundRect(mTaskViewAnimatedRect, mTaskViewAnimatedRadius); + } + }); + } } diff --git a/res/drawable/enter_home_gardening_icon.xml b/res/drawable/enter_home_gardening_icon.xml new file mode 100644 index 0000000000..039258e47b --- /dev/null +++ b/res/drawable/enter_home_gardening_icon.xml @@ -0,0 +1,25 @@ + + + + diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 99cbd53b72..faee52632e 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -29,8 +29,7 @@ "Tuis" "Verdeelde skerm" "Programinligting vir %1$s" - - + "Stoor apppaar" "Raak en hou om \'n legstuk te skuif." "Dubbeltik en hou om \'n legstuk te skuif of gebruik gepasmaakte handelinge." "%1$d × %2$d" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 5b10654981..b67a98ea75 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -29,8 +29,7 @@ "መነሻ" "የተከፈለ ማያ ገጽ" "የመተግበሪያ መረጃ ለ%1$s" - - + "የመተግበሪያ ጥምረትን ያስቀምጡ" "ምግብርን ለማንቀሳቀስ ይንኩ እና ይያዙ።" "ምግብርን ለማንቀሳቀስ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ ያድርጉ እና ይያዙ።" "%1$d × %2$d" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 8f556468ed..a236cd7ca8 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -29,8 +29,7 @@ "الشاشة الرئيسية" "تقسيم الشاشة" "‏معلومات تطبيق %1$s" - - + "حفظ إعدادات ميزة \"استخدام تطبيقين في الوقت نفسه\"" "انقر مع الاستمرار لنقل أداة." "انقر مرتين مع تثبيت إصبعك لنقل أداة أو استخدام الإجراءات المخصّصة." "%1$d × %2$d" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 2378f23738..e7861264b8 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -29,8 +29,7 @@ "গৃহ স্ক্ৰীন" "বিভাজিত স্ক্ৰীন" "%1$sৰ বাবে এপৰ তথ্য" - - + "এপৰ পেয়াৰ ছেভ কৰক" "ৱিজেট স্থানান্তৰ কৰিবলৈ টিপি ধৰি ৰাখক।" "কোনো ৱিজেট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক অথবা কাষ্টম কাৰ্য ব্যৱহাৰ কৰক।" "%1$d × %2$d" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index c24b9a596d..74c6048342 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -29,8 +29,7 @@ "Əsas səhifə" "Ekran bölünməsi" "%1$s ilə bağlı tətbiq məlumatı" - - + "Tətbiq cütünü saxlayın" "Vidceti daşımaq üçün toxunub saxlayın." "Vidceti daşımaq üçün iki dəfə toxunub saxlayın və ya fərdi əməliyyatlardan istifadə edin." "%1$d × %2$d" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 197b3b0e80..a8353c431d 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -29,8 +29,7 @@ "Početni ekran" "Podeljeni ekran" "Informacije o aplikaciji za: %1$s" - - + "Sačuvaj par aplikacija" "Dodirnite i zadržite radi pomeranja vidžeta." "Dvaput dodirnite i zadržite da biste pomerali vidžet ili koristite prilagođene radnje." "%1$d×%2$d" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index cff40b60fc..d74dbd82c2 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -29,8 +29,7 @@ "Галоўны экран" "Падзелены экран" "Інфармацыя пра праграму для: %1$s" - - + "Захаваць спалучэнне праграм" "Націсніце і ўтрымлівайце віджэт для перамяшчэння." "Дакраніцеся двойчы і ўтрымлівайце, каб перамясціць віджэт або выкарыстоўваць спецыяльныя дзеянні." "%1$d × %2$d" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 4d94341950..7d8096b763 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -29,8 +29,7 @@ "Начален екран" "Разделен екран" "Информация за приложението за %1$s" - - + "Запазване на двойката приложения" "Докоснете и задръжте за преместване на приспособление" "Докоснете двукратно и задръжте за преместване на приспособление или използвайте персонал. действия." "%1$d × %2$d" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index d277a3ac49..bd76e6c730 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -29,8 +29,7 @@ "হোম" "স্প্লিট স্ক্রিন" "%1$s-এর জন্য অ্যাপ সম্পর্কিত তথ্য" - - + "অ্যাপ পেয়ার সেভ করুন" "কোনও উইজেট সরাতে সেটি টাচ করে ধরে রাখুন।" "একটি উইজেট সরাতে বা কাস্টম অ্যাকশন ব্যবহার করতে ডবল ট্যাপ করে ধরে রাখুন।" "%1$d × %2$d" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 45fb7f1ab8..1dc1863493 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -29,8 +29,7 @@ "Početni ekran" "Podijeljeni ekran" "Informacije o aplikaciji %1$s" - - + "Sačuvaj par aplikacija" "Dodirnite i zadržite da pomjerite vidžet." "Dvaput dodirnite i zadržite da pomjerite vidžet ili da koristite prilagođene radnje." "%1$d × %2$d" @@ -157,8 +156,8 @@ "Odbaci" "Zatvaranje" "Obavještenje je odbačeno" - "Lične" - "Poslovne" + "Lično" + "Poslovno" "Radni profil" "Poslovne aplikacije su označene i vaš IT administrator ih može vidjeti" "Razumijem" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index be80552b3d..fc462fdafa 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -29,8 +29,7 @@ "Inici" "Pantalla dividida" "Informació de l\'aplicació %1$s" - - + "Desa la parella d\'aplicacions" "Fes doble toc i mantén premut per moure un widget." "Fes doble toc i mantén premut per moure un widget o per utilitzar accions personalitzades." "%1$d × %2$d" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 3402b75392..1d05d8826b 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -29,8 +29,7 @@ "Domů" "Rozdělená obrazovka" "Informace o aplikaci %1$s" - - + "Uložit pár aplikací" "Widget přesunete klepnutím a podržením." "Dvojitým klepnutím a podržením přesunete widget, případně použijte vlastní akce." "%1$d × %2$d" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index b8aa02f175..36e3e7d043 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -29,8 +29,7 @@ "Startskærm" "Opdel skærm" "Appinfo for %1$s" - - + "Gem appsammenknytning" "Hold en widget nede for at flytte den." "Tryk to gange, og hold en widget nede for at flytte den eller bruge tilpassede handlinger." "%1$d × %2$d" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 199bf54410..46367e657d 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -29,8 +29,7 @@ "Startbildschirm" "Geteilter Bildschirm" "App-Info für %1$s" - - + "App-Paar speichern" "Zum Verschieben des Widgets berühren und halten" "Doppeltippen und halten, um ein Widget zu bewegen oder benutzerdefinierte Aktionen zu nutzen." "%1$d × %2$d" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 31fa51ed8f..d52a8b18dc 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -29,8 +29,7 @@ "Αρχική οθόνη" "Διαχωρισμός οθόνης" "Πληροφορίες εφαρμογής για %1$s" - - + "Αποθήκευση ζεύγους εφαρμογών" "Πατήστε παρατετ. για μετακίνηση γραφ. στοιχείου." "Πατήστε δύο φορές παρατεταμένα για μετακίνηση γραφικού στοιχείου ή χρήση προσαρμοσμένων ενεργειών." "%1$d × %2$d" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index c7b55d7a2e..a3b25c844e 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch and hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 7a4e094481..72aa73ec17 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch & hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index c7b55d7a2e..a3b25c844e 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch and hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index c7b55d7a2e..a3b25c844e 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch and hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 5324bdfa38..23fd7b4c14 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -29,8 +29,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎Home‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‎Split screen‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‏‎‎‎App info for %1$s‎‏‎‎‏‎" - - + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎Save app pair‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‎‏‎Touch & hold to move a widget.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‎‎‎‎‎‏‏‎‎Double-tap & hold to move a widget or use custom actions.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‎%1$d × %2$d‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 1ff063d7ea..7d0cd22f70 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -29,8 +29,7 @@ "Pantalla principal" "Pantalla dividida" "Información de la app de %1$s" - - + "Guardar vinculación de apps" "Mantén presionado para mover un widget." "Presiona dos veces y mantén presionado para mover un widget o usar acciones personalizadas." "%1$d × %2$d" @@ -165,7 +164,7 @@ "Las apps de trabajo están detenidas" "No recibirás notificaciones de las apps de trabajo" "Las apps de trabajo no pueden enviarte notificaciones, usar la batería ni acceder a tu ubicación" - "No recibirás llamadas telefónicas, mensajes de texto ni notificaciones de tus apps de trabajo" + "No recibirás llamadas telefónicas, mensajes de texto ni notificaciones de tus apps de trabajo." "Las apps de trabajo tienen una insignia y el administrador de TI las puede ver" "Entendido" "Detener apps de trabajo" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 777f4c97b5..5c0c8f34d1 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -29,8 +29,7 @@ "Inicio" "Pantalla dividida" "Información de la aplicación %1$s" - - + "Guardar aplicaciones emparejadas" "Mantén pulsado un widget para moverlo" "Toca dos veces y mantén pulsado un widget para moverlo o usar acciones personalizadas." "%1$d × %2$d" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 91d9352572..c7a273d3ae 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -29,8 +29,7 @@ "Avakuva" "Jagatud ekraanikuva" "Rakenduse teave: %1$s" - - + "Salvesta rakendusepaar" "Vidina teisaldamiseks puudutage ja hoidke all." "Vidina teisaldamiseks või kohandatud toimingute kasutamiseks topeltpuudutage ja hoidke all." "%1$d × %2$d" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 66b86791e3..28a323e148 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -29,8 +29,7 @@ "Hasierako pantaila" "Zatitu pantaila" "%1$s aplikazioari buruzko informazioa" - - + "Gorde aplikazio parea" "Eduki sakatuta widget bat mugitzeko." "Sakatu birritan eta eduki sakatuta widget bat mugitzeko edo ekintza pertsonalizatuak erabiltzeko." "%1$d × %2$d" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 42d44ee5c3..bc9f9a669d 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -29,8 +29,7 @@ "صفحه اصلی" "صفحهٔ دونیمه" "‏اطلاعات برنامه %1$s" - - + "ذخیره جفت برنامه" "برای جابه‌جا کردن ابزارک، لمس کنید و نگه دارید." "برای جابه‌جا کردن ابزارک یا استفاده از کنش‌های سفارشی، دوضربه بزنید و نگه دارید." "%1$d × %2$d" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index a6ecd8b9a2..1097417304 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -29,8 +29,7 @@ "Etusivu" "Jaettu näyttö" "Sovellustiedot: %1$s" - - + "Tallenna sovelluspari" "Kosketa pitkään, niin voit siirtää widgetiä." "Kaksoisnapauta ja paina pitkään, niin voit siirtää widgetiä tai käyttää muokattuja toimintoja." "%1$d × %2$d" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index ad60e267fd..a49f0e32da 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -29,8 +29,7 @@ "Accueil" "Écran partagé" "Renseignements sur l\'appli pour %1$s" - - + "Enregistrer la paire d\'applications" "Maintenez le doigt sur un widget pour le déplacer." "Touchez 2x un widget et maintenez le doigt dessus pour le déplacer ou utiliser des actions personnalisées." "%1$d × %2$d" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 983d5a9003..7b48cde2d0 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -29,8 +29,7 @@ "Accueil" "Écran partagé" "Infos sur l\'appli pour %1$s" - - + "Enregistrer la paire d\'applis" "Appuyez de manière prolongée sur un widget pour le déplacer." "Appuyez deux fois et maintenez la pression pour déplacer widget ou utiliser actions personnalisées." "%1$d x %2$d" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index c11c514c39..7d675748ae 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -29,8 +29,7 @@ "Inicio" "Pantalla dividida" "Información da aplicación para %1$s" - - + "Gardar emparellamento de aplicacións" "Mantén premido un widget para movelo." "Toca dúas veces un widget e manteno premido para movelo ou utiliza accións personalizadas." "%1$d × %2$d" @@ -169,7 +168,7 @@ "O administrador de TI pode ver as aplicacións do traballo e engadirlles indicadores" "Entendido" "Pór en pausa aplicacións do traballo" - "Retomar" + "Volver activar" "Filtra" "Buscar no teléfono" "Facer buscas na tableta" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 4b48e7adde..263525fbc6 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -29,8 +29,7 @@ "હોમ સ્ક્રીન" "સ્ક્રીનને વિભાજિત કરો" "%1$s માટે ઍપ માહિતી" - - + "ઍપની જોડી સાચવો" "વિજેટ ખસેડવા ટચ કરીને થોડી વાર દબાવી રાખો." "વિજેટ ખસેડવા બે વાર ટૅપ કરીને દબાવી રાખો અથવા કસ્ટમ ક્રિયાઓનો ઉપયોગ કરો." "%1$d × %2$d" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index be64ff1021..4d292e8796 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -29,8 +29,7 @@ "होम स्क्रीन" "स्प्लिट स्क्रीन" "%1$s के लिए ऐप्लिकेशन की जानकारी" - - + "साथ में इस्तेमाल किए जा सकने वाले ऐप्लिकेशन की जानकारी सेव करें" "किसी विजेट को एक से दूसरी जगह ले जाने के लिए, उसे दबाकर रखें." "किसी विजेट को एक से दूसरी जगह ले जाने के लिए, उस पर दो बार टैप करके दबाकर रखें या पसंद के मुताबिक कार्रवाइयां इस्तेमाल करें." "%1$d × %2$d" @@ -157,7 +156,7 @@ "खारिज करें" "बंद करें" "सूचना को खारिज किया गया" - "निजी ऐप" + "निजी ऐप्लिकेशन" "वर्क ऐप्लिकेशन" "वर्क प्रोफ़ाइल" "वर्क ऐप्लिकेशन बैज किए गए हैं और आईटी एडमिन को दिख रहे हैं" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index b757619a41..6aae2108f4 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -29,8 +29,7 @@ "Početni zaslon" "Podijeljeni zaslon" "Informacije o aplikaciji %1$s" - - + "Spremi par aplikacija" "Dodirnite i zadržite da biste premjestili widget." "Dvaput dodirnite i zadržite pritisak da biste premjestili widget ili upotrijebite prilagođene radnje" "%1$d × %2$d" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index d499022fe2..55c56ff134 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -29,8 +29,7 @@ "Kezdőképernyő" "Osztott képernyő" "Alkalmazásinformáció a következőhöz: %1$s" - - + "Alkalmazáspár mentése" "Tartsa lenyomva a modult az áthelyezéshez." "Modul áthelyezéséhez koppintson duplán, tartsa nyomva az ujját, vagy használjon egyéni műveleteket." "%1$d × %2$d" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 6881661b29..13d82d629c 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -29,8 +29,7 @@ "Հիմնական էկրան" "Տրոհել էկրանը" "Տեղեկություններ %1$s հավելվածի մասին" - - + "Պահել հավելվածների զույգը" "Հպեք և պահեք՝ վիջեթ տեղափոխելու համար։" "Կրկնակի հպեք և պահեք՝ վիջեթ տեղափոխելու համար, կամ օգտվեք հատուկ գործողություններից։" "%1$d × %2$d" @@ -163,7 +162,7 @@ "Աշխատանքային հավելվածները հատուկ նշանակ ունեն և տեսանելի են ՏՏ ադմինիստրատորին" "Եղավ" "Աշխատանքային հավելվածները դադարեցված են" - "Դուք ձեր աշխատանքային հավելվածներից ծանուցումներ չեք ստանա" + "Դուք ծանուցումներ չեք ստանա ձեր աշխատանքային հավելվածներից" "Աշխատանքային հավելվածները չեն կարող ծանուցումներ ուղարկել ձեզ, օգտագործել մարտկոցը և ձեր տեղադրության մասին տվյալներ ստանալ։" "Դուք ձեր աշխատանքային հավելվածներից հեռախոսազանգեր, տեքստային հաղորդագրություններ կամ ծանուցումներ չեք ստանա" "Աշխատանքային հավելվածները հատուկ նշանակ ունեն և տեսանելի են ՏՏ ադմինիստրատորին" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index beff9eaa72..d9cba90827 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -29,8 +29,7 @@ "Layar utama" "Layar terpisah" "Info aplikasi untuk %1$s" - - + "Simpan pasangan aplikasi" "Sentuh lama untuk memindahkan widget." "Ketuk dua kali & tahan untuk memindahkan widget atau gunakan tindakan khusus." "%1$d × %2$d" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 29b11aaf74..84e0f7f965 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -29,8 +29,7 @@ "Heim" "Skipta skjá" "Upplýsingar um forrit fyrir %1$s" - - + "Vista forritapar" "Haltu fingri á græju til að færa hana." "Ýttu tvisvar og haltu fingri á græju til að færa hana eða notaðu sérsniðnar aðgerðir." "%1$d × %2$d" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 519cd5ca42..fce1f672ee 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -29,8 +29,7 @@ "Home" "Schermo diviso" "Informazioni sull\'app %1$s" - - + "Salva coppia di app" "Tocca e tieni premuto per spostare un widget." "Tocca due volte e tieni premuto per spostare un widget o per usare le azioni personalizzate." "%1$d × %2$d" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index ca3230cce5..4542589705 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -29,8 +29,7 @@ "בית" "מסך מפוצל" "‏פרטים על האפליקציה %1$s" - - + "שמירה של צמד אפליקציות" "להעברת ווידג\'ט למקום אחר לוחצים עליו לחיצה ארוכה." "כדי להעביר ווידג\'ט למקום אחר או להשתמש בפעולות מותאמות אישית, יש ללחוץ פעמיים ולא להרפות." "%1$d × %2$d" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 29485255d0..9f9df56179 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -29,8 +29,7 @@ "ホーム" "分割画面" "%1$s のアプリ情報" - - + "アプリのペア設定を保存" "長押ししてウィジェットを移動させます。" "ウィジェットをダブルタップして長押ししながら移動するか、カスタム操作を使用してください。" "%1$dx%2$d" @@ -162,10 +161,10 @@ "仕事用プロファイル" "仕事用アプリはバッジ付きで表示され、IT 管理者に公開されます" "OK" - "仕事用アプリの一時停止" + "仕事用アプリは一時停止されています" "仕事用アプリからの通知は届きません" "仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています" - "電話やテキスト メッセージを受信できなくなり、仕事用アプリからの通知も届きません" + "電話やテキスト メッセージを受信しなくなり、仕事用アプリからの通知も届きません" "仕事用アプリはバッジが付き、IT 管理者に公開されます" "OK" "仕事用アプリを一時停止" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 9937836a2f..dd975fe906 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -29,8 +29,7 @@ "მთავარი გვერდი" "ეკრანის გაყოფა" "%1$s-ის აპის ინფო" - - + "აპთა წყვილის შენახვა" "შეხებით აირჩიეთ და გეჭიროთ ვიჯეტის გადასაადგილებლად." "ორმაგი შეხებით აირჩიეთ და გეჭიროთ ვიჯეტის გადასაადგილებლად ან მორგებული მოქმედებების გამოსაყენებლად." "%1$d × %2$d" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index a1730eb1bd..cd45fff2bb 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -29,8 +29,7 @@ "Негізгі экран" "Экранды бөлу" "%1$s қолданбасы туралы ақпарат" - - + "Қолданбаларды жұптау әрекетін сақтау" "Виджетті жылжыту үшін басып тұрыңыз." "Виджетті жылжыту үшін екі рет түртіңіз де, ұстап тұрыңыз немесе арнаулы әрекеттерді пайдаланыңыз." "%1$d × %2$d" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index b993eaa738..64bc3bb1e5 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -29,8 +29,7 @@ "អេក្រង់ដើម" "មុខងារ​បំបែកអេក្រង់" "ព័ត៌មានកម្មវិធី​សម្រាប់ %1$s" - - + "រក្សាទុកគូកម្មវិធី" "ចុចឱ្យជាប់​ដើម្បីផ្លាស់ទី​ធាតុក្រាហ្វិក​។" "ចុចពីរដង រួចសង្កត់ឱ្យជាប់ ដើម្បីផ្លាស់ទី​ធាតុក្រាហ្វិក ឬប្រើ​សកម្មភាព​តាមបំណង​។" "%1$d × %2$d" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 06af44cc90..f955277e4e 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -29,8 +29,7 @@ "ಹೋಮ್" "ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್" "%1$s ಗಾಗಿ ಆ್ಯಪ್ ಮಾಹಿತಿ" - - + "ಆ್ಯಪ್ ಜೋಡಿ ಉಳಿಸಿ" "ವಿಜೆಟ್ ಸರಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ." "ವಿಜೆಟ್ ಸರಿಸಲು ಅಥವಾ ಕಸ್ಟಮ್ ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ." "%1$d × %2$d" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 29933e11fb..4d621ec5dc 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -29,8 +29,7 @@ "홈" "화면 분할" "%1$s 앱 정보" - - + "앱 페어링 저장" "길게 터치하여 위젯을 이동하세요." "두 번 탭한 다음 길게 터치하여 위젯을 이동하거나 맞춤 작업을 사용하세요." "%1$d×%2$d" @@ -165,7 +164,7 @@ "직장 앱이 일시중지됨" "직장 앱에서 보내는 알림을 받지 않게 됩니다." "직장 앱에서 알림을 보내거나 배터리를 사용하거나 위치 정보에 액세스할 수 없습니다." - "전화, 문자 메시지 또는 직장 앱에서 보내는 알림을 받지 않게 됩니다." + "전화, 문자 메시지 또는 직장 앱에서 보내는 알림을 수신하지 않습니다." "직장 앱에는 배지가 있으며, IT 관리자는 직장 앱을 확인할 수 있습니다." "확인" "직장 앱 일시중지" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index ecae23a14d..0fe280205d 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -29,8 +29,7 @@ "Башкы экран" "Экранды бөлүү" "%1$s колдонмосу жөнүндө маалымат" - - + "Эки колдонмону бир маалда пайдаланууну сактоо" "Виджетти кое бербей басып туруп жылдырыңыз." "Виджетти жылдыруу үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз." "%1$d × %2$d" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 7158916dd9..72eb3faea9 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -29,8 +29,7 @@ "ໂຮມສະກຣີນ" "ແບ່ງໜ້າຈໍ" "ຂໍ້ມູນແອັບສຳລັບ %1$s" - - + "ບັນທຶກຈັບຄູ່ແອັບ" "ແຕະຄ້າງໄວ້ເພື່ອຍ້າຍວິດເຈັດ." "ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຍ້າຍວິດເຈັດ ຫຼື ໃຊ້ຄຳສັ່ງກຳນົດເອງ." "%1$d × %2$d" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 81164bda42..0f0237620f 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -29,8 +29,7 @@ "Pagrindinis" "Išskaidyto ekrano režimas" "Programos „%1$s“ informacija" - - + "Išsaugoti programų porą" "Dukart pal. ir palaik., kad perkeltumėte valdiklį." "Dukart palieskite ir palaikykite, kad perkeltumėte valdiklį ar naudotumėte tinkintus veiksmus." "%1$d × %2$d" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index e8e25b8fa0..150af9b66b 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -29,8 +29,7 @@ "Sākums" "Sadalīt ekrānu" "%1$s: informācija par lietotni" - - + "Saglabāt lietotņu pāri" "Lai pārvietotu logrīku, pieskarieties un turiet." "Lai pārvietotu logrīku, uz tā veiciet dubultskārienu un turiet. Varat arī veikt pielāgotas darbības." "%1$d × %2$d" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 1b95dcf86b..13ff08ad4a 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -29,8 +29,7 @@ "Почетен екран" "Поделен екран" "Податоци за апликација за %1$s" - - + "Зачувај го парот апликации" "Допрете и задржете за да преместите виџет." "Допрете двапати и задржете за да преместите виџет или користете приспособени дејства." "%1$d × %2$d" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index ab0449352b..e023df8c74 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -29,8 +29,7 @@ "ഹോം" "സ്‌ക്രീൻ വിഭജന മോഡ്" "%1$s എന്നതിന്റെ ആപ്പ് വിവരങ്ങൾ" - - + "ആപ്പ് ജോടി സംരക്ഷിക്കുക" "വിജറ്റ് നീക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക." "വിജറ്റ് നീക്കാൻ ഡബിൾ ടാപ്പ് ചെയ്യൂ, ഹോൾഡ് ചെയ്യൂ അല്ലെങ്കിൽ ഇഷ്‌ടാനുസൃത പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കൂ." "%1$d × %2$d" @@ -158,14 +157,14 @@ "അടയ്ക്കൂ" "അറിയിപ്പ് നിരസിച്ചു" "വ്യക്തിപരം" - "ഔദ്യോഗികം" + "Work" "ഔദ്യോഗിക പ്രൊഫൈൽ" "ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനുമാകും" "മനസ്സിലായി" "ഔദ്യോഗിക ആപ്പുകൾ തൽക്കാലം നിർത്തിയിരിക്കുന്നു" "ഔദ്യോഗിക ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് അറിയിപ്പുകളൊന്നും ലഭിക്കില്ല" "നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല" - "ഔദ്യോഗിക ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" + "Work ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" "ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനും കഴിയും" "മനസ്സിലായി" "ഔദ്യോഗിക ആപ്പുകൾ താൽക്കാലികമായി നിർത്തുക" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 511718c84f..79adc913f1 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -29,8 +29,7 @@ "Нүүр" "Дэлгэцийг хуваах" "%1$s-н аппын мэдээлэл" - - + "Апп хослуулалтыг хадгалах" "Виджетийг зөөх бол хүрээд, удаан дарна уу." "Виджетийг зөөх эсвэл захиалгат үйлдлийг ашиглахын тулд хоёр товшоод, удаан дарна уу." "%1$d × %2$d" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 893d04125c..ff9cb3813e 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -29,8 +29,7 @@ "होम" "स्प्लिट स्क्रीन" "%1$s साठी ॲपशी संबंधित माहिती" - - + "ॲपची जोडी सेव्ह करा" "विजेट हलवण्यासाठी स्पर्श करा आणि धरून ठेवा." "विजेट हलवण्यासाठी किंवा कस्टम कृती वापरण्यासाठी दोनदा टॅप करा आणि धरून ठेवा." "%1$d × %2$d" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 55befdd377..29845cdf87 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -29,8 +29,7 @@ "Rumah" "Skrin pisah" "Maklumat apl untuk %1$s" - - + "Simpan gandingan apl" "Sentuh & tahan untuk menggerakkan widget." "Ketik dua kali & tahan untuk menggerakkan widget atau menggunakan tindakan tersuai." "%1$d × %2$d" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index ccdb08e80a..6c11a61bc0 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -29,8 +29,7 @@ "ပင်မစာမျက်နှာ" "မျက်နှာပြင် ခွဲ၍ပြသခြင်း" "%1$s အတွက် အက်ပ်အချက်အလက်" - - + "အက်ပ်တွဲချိတ်ခြင်း သိမ်းရန်" "ဝိဂျက်ကို ရွှေ့ရန် တို့ပြီး ဖိထားပါ။" "ဝိဂျက်ကို ရွှေ့ရန် (သို့) စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို သုံးရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။" "%1$d × %2$d" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index bb05261217..1b1941cfc6 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -29,8 +29,7 @@ "Startskjerm" "Delt skjerm" "Appinformasjon for %1$s" - - + "Lagre apptilkoblingen" "Trykk og hold for å flytte en modul." "Dobbelttrykk og hold inne for å flytte en modul eller bruke tilpassede handlinger." "%1$d × %2$d" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 3547557c7b..58f2793ee0 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -29,8 +29,7 @@ "होम" "स्प्लिट स्क्रिन" "%1$s का हकमा एपसम्बन्धी जानकारी" - - + "एपको पेयर सेभ गर्नुहोस्" "कुनै विजेट सार्न डबल ट्याप गरेर छोइराख्नुहोस्।" "कुनै विजेट सार्न वा आफ्नो रोजाइका कारबाही प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।" "%1$d × %2$d" @@ -158,11 +157,11 @@ "बन्द गर्नुहोस्" "सूचना खारेज गरियो" "व्यक्तिगत" - "कार्यसम्बन्धी" + "कामसम्बन्धी" "कार्य प्रोफाइल" "कामसम्बन्धी एपहरूमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्छन्" "बुझेँ" - "कार्यसम्बन्धी एपहरू पज गरिएका छन्" + "कामसम्बन्धी एपहरू पज गरिएका छन्" "तपाईं कामसम्बन्धी एपबाट सूचनाहरू प्राप्त गर्नु हुने छैन" "तपाईंका कामसम्बन्धी एपहरूले तपाईंलाई सूचना पठाउन, तपाईंको डिभाइसको ब्याट्री प्रयोग गर्न वा तपाईंको लोकेसन हेर्न सक्दैनन्" "तपाईं कामसम्बन्धी एपबाट फोन कल, टेक्स्ट म्यासेज वा सूचनाहरू प्राप्त गर्नु हुने छैन" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index f4c1017359..97b650b853 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -29,8 +29,7 @@ "Startscherm" "Gesplitst scherm" "App-info voor %1$s" - - + "App-paar opslaan" "Tik en houd vast om een widget te verplaatsen." "Dubbeltik en houd vast om een widget te verplaatsen of aangepaste acties te gebruiken." "%1$d × %2$d" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 52560c1247..304e13f42e 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -29,8 +29,7 @@ "ହୋମ" "ସ୍କ୍ରିନ‌କୁ ସ୍ପ୍ଲିଟ୍ କରନ୍ତୁ" "%1$s ପାଇଁ ଆପ ସୂଚନା" - - + "ଆପ ପେୟାର ସେଭ କରନ୍ତୁ" "ଏକ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।" "ଏକ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଦୁଇଥର-ଟାପ୍ କରି ଧରି ରଖନ୍ତୁ କିମ୍ବା କଷ୍ଟମ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ।" "%1$d × %2$d" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 0f65479252..24a5f7f6bc 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -29,8 +29,7 @@ "ਮੁੱਖ ਪੰਨਾ" "ਸਪਲਿਟ ਸਕ੍ਰੀਨ" "%1$s ਲਈ ਐਪ ਜਾਣਕਾਰੀ" - - + "ਐਪ ਜੋੜਾਬੱਧ ਰੱਖਿਅਤ ਕਰੋ" "ਕਿਸੇ ਵਿਜੇਟ ਨੂੰ ਲਿਜਾਉਣ ਲਈ ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।" "ਵਿਜੇਟ ਲਿਜਾਉਣ ਲਈ ਜਾਂ ਵਿਉਂਂਤੀਆਂ ਕਾਰਵਾਈਆਂ ਵਰਤਣ ਲਈ ਦੋ ਵਾਰ ਟੈਪ ਕਰਕੇ ਦਬਾ ਕੇ ਰੱਖੋ।" "%1$d × %2$d" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index e74feac8c4..e9445cf700 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -29,8 +29,7 @@ "Página inicial" "Ecrã dividido" "Informações da app para %1$s" - - + "Guardar par de apps" "Toque sem soltar para mover um widget." "Toque duas vezes sem soltar para mover um widget ou utilizar ações personalizadas." "%1$d × %2$d" @@ -162,7 +161,7 @@ "Perfil de trabalho" "As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI" "OK" - "As apps de trabalho estão suspensas." + "As apps de trabalho estão suspensas" "Não vai receber notificações das apps de trabalho" "As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização" "Não vai receber chamadas, mensagens de texto nem notificações das apps de trabalho" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 4373c064a3..72dd608fad 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -29,8 +29,7 @@ "Início" "Tela dividida" "Informações do app %1$s" - - + "Salvar par de apps" "Toque e pressione para mover um widget." "Toque duas vezes e mantenha a tela pressionada para mover um widget ou usar ações personalizadas." "%1$d × %2$d" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 295809d8ac..dbfbf766b0 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -29,8 +29,7 @@ "Pagina de pornire" "Ecran împărțit" "Informații despre aplicație pentru %1$s" - - + "Salvează perechea de aplicații" "Atinge și ține apăsat pentru a muta un widget." "Atinge de două ori și ține apăsat pentru a muta un widget sau folosește acțiuni personalizate." "%1$d × %2$d" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index d2dd2d653d..134004da14 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -29,8 +29,7 @@ "Главный экран" "Разделить экран" "Сведения о приложении \"%1$s\"" - - + "Сохранить настройки одновременного использования двух приложений" "Чтобы переместить виджет, нажмите на него и удерживайте" "Чтобы использовать специальные действия или перенести виджет, нажмите на него дважды и удерживайте." "%1$d x %2$d" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index bde8ca86a4..01d6ba0026 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -29,8 +29,7 @@ "මුල් පිටුව" "බෙදුම් තිරය" "%1$s සඳහා යෙදුම් තතු" - - + "යෙදුම් යුගල සුරකින්න" "විජට් එකක් ගෙන යාමට ස්පර්ශ කර අල්ලා ගෙන සිටින්න." "විජට් එකක් ගෙන යාමට හෝ අභිරුචි ක්‍රියා භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න." "%1$d × %2$d" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 3bcc7a2b0f..2c257b7709 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -29,8 +29,7 @@ "Domov" "Rozdeliť obrazovku" "Informácie o aplikácii pre %1$s" - - + "Uložiť pár aplikácií" "Pridržaním presuňte miniaplikáciu." "Dvojitým klepnutím a pridržaním presuňte miniaplikáciu alebo použite vlastné akcie." "%1$d × %2$d" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index b5d3eb1226..2fd10ecd47 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -29,8 +29,7 @@ "Začetni zaslon" "Razdeljen zaslon" "Podatki o aplikaciji za: %1$s" - - + "Shrani par aplikacij" "Pridržite pripomoček, da ga premaknete." "Dvakrat se dotaknite pripomočka in ga pridržite, da ga premaknete, ali pa uporabite dejanja po meri." "%1$d × %2$d" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 02169c8986..994fa9891a 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -29,8 +29,7 @@ "Ekrani bazë" "Ekrani i ndarë" "Informacioni i aplikacionit për %1$s" - - + "Ruaj çiftin e aplikacioneve" "Prek dhe mbaj shtypur një miniaplikacion për ta zhvendosur." "Trokit dy herë dhe mbaje shtypur një miniapliikacion për ta zhvendosur atë ose për të përdorur veprimet e personalizuara." "%1$d × %2$d" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index f924fe7938..544ef0c04f 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -29,8 +29,7 @@ "Почетни екран" "Подељени екран" "Информације о апликацији за: %1$s" - - + "Сачувај пар апликација" "Додирните и задржите ради померања виџета." "Двапут додирните и задржите да бисте померали виџет или користите прилагођене радње." "%1$d×%2$d" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index c5b4ae25c7..9d7f650e3e 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -29,8 +29,7 @@ "Startskärm" "Delad skärm" "Appinformation för %1$s" - - + "Spara appar som ska användas tillsammans" "Tryck länge för att flytta en widget." "Tryck snabbt två gånger och håll kvar för att flytta en widget eller använda anpassade åtgärder." "%1$d × %2$d" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index f4621a1f4f..2fbf7aa5f0 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -29,8 +29,7 @@ "Skrini ya kwanza" "Gawa skrini" "Maelezo ya programu ya %1$s" - - + "Hifadhi jozi ya programu" "Gusa na ushikilie ili usogeze wijeti." "Gusa mara mbili na ushikilie ili usogeze wijeti au utumie vitendo maalum." "%1$d × %2$d" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 56b9a8cdda..bbf22a4ddc 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -29,8 +29,7 @@ "முகப்பு" "திரைப் பிரிப்பு" "%1$sக்கான ஆப்ஸ் தகவல்கள்" - - + "ஆப்ஸ் ஜோடியைச் சேமி" "விட்ஜெட்டை நகர்த்தத் தொட்டுப் பிடிக்கவும்." "விட்ஜெட்டை நகர்த்த இருமுறை தட்டிப் பிடிக்கவும் அல்லது பிரத்தியேகச் செயல்களைப் பயன்படுத்தவும்." "%1$d × %2$d" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 16b5f5a2b4..88fca12453 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -29,8 +29,7 @@ "మొదటి ట్యాబ్" "స్క్రీన్‌ను విభజించు" "%1$s కోసం యాప్ సమాచారం" - - + "యాప్ పెయిర్‌ను సేవ్ చేయండి" "విడ్జెట్‌ను తరలించడానికి తాకి & నొక్కి ఉంచండి." "విడ్జెట్‌ను తరలించడానికి లేదా అనుకూల చర్యలను ఉపయోగించడానికి రెండుసార్లు నొక్కండి & హోల్డ్ చేయి." "%1$d × %2$d" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 45c3914267..6bcc09e9f3 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -29,8 +29,7 @@ "หน้าแรก" "แบ่งหน้าจอ" "ข้อมูลแอปสำหรับ %1$s" - - + "บันทึกคู่แอป" "แตะค้างไว้เพื่อย้ายวิดเจ็ต" "แตะสองครั้งค้างไว้เพื่อย้ายวิดเจ็ตหรือใช้การดำเนินการที่กำหนดเอง" "%1$d × %2$d" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 2d43182d9b..490ce0684a 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "Impormasyon ng app para sa %1$s" - - + "I-save ang pares ng app" "Pindutin nang matagal para ilipat ang widget." "I-double tap at pindutin nang matagal para ilipat ang widget o gumamit ng mga custom na pagkilos." "%1$d × %2$d" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index b886cf2a5d..4b2f6dac1b 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -29,8 +29,7 @@ "Ana ekran" "Bölünmüş ekran" "%1$s uygulama bilgileri" - - + "Uygulama çiftini kaydedin" "Widget\'ı taşımak için dokunup basılı tutun." "Widget\'ı taşımak veya özel işlemleri kullanmak için iki kez dokunup basılı tutun." "%1$d × %2$d" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 5758c75892..c8d29f4666 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -29,8 +29,7 @@ "Головний екран" "Розділити екран" "Інформація про додаток для %1$s" - - + "Зберегти пару додатків" "Натисніть і втримуйте, щоб перемістити віджет." "Двічі натисніть і втримуйте віджет, щоб перемістити його або виконати інші дії." "%1$d × %2$d" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 5a5dcc5870..7016491db1 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -29,8 +29,7 @@ "ہوم" "اسپلٹ اسکرین" "‏%1$s کے لیے ایپ کی معلومات" - - + "ایپس کے جوڑے کو محفوظ کریں" "ویجیٹ منتقل کرنے کے لیے ٹچ کریں اور پکڑ کر رکھیں۔" "ویجیٹ کو منتقل کرنے یا حسب ضرورت کارروائیاں استعمال کرنے کے لیے دوبار تھپتھپائیں اور پکڑ کر رکھیں۔" "%1$d × %2$d" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 5595179fe3..efee72365f 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -29,8 +29,7 @@ "Bosh ekran" "Ekranni ikkiga ajratish" "%1$s ilovasi axboroti" - - + "Ilova juftini saqlash" "Vidjetni bosib turgan holatda suring." "Ikki marta bosib va bosib turgan holatda vidjetni tanlang yoki maxsus amaldan foydalaning." "%1$d × %2$d" @@ -169,7 +168,7 @@ "Ishga oid ilovalarning maxsus belgisi bor hamda ular administratoringizga koʻrinadi" "OK" "Ishga oid ilovalarni pauza qilish" - "Davom ettirish" + "Pauzadan chiqarish" "Saralash" "Telefondan qidirish" "Planshetingizni qidiring" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 32ea78e55e..14b88226f7 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -29,8 +29,7 @@ "Màn hình chính" "Chia đôi màn hình" "Thông tin ứng dụng cho %1$s" - - + "Lưu cặp ứng dụng" "Chạm và giữ để di chuyển một tiện ích." "Nhấn đúp và giữ để di chuyển một tiện ích hoặc sử dụng các thao tác tùy chỉnh." "%1$d × %2$d" @@ -169,7 +168,7 @@ "Các ứng dụng công việc được gắn huy hiệu và quản trị viên CNTT có thể nhìn thấy" "Tôi hiểu" "Tạm dừng các ứng dụng công việc" - "Tiếp tục" + "Bỏ tạm dừng" "Bộ lọc" "Tìm trên điện thoại" "Tìm kiếm trong máy tính bảng của bạn" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 2c06691892..b30b6ee68c 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -29,8 +29,7 @@ "主屏幕" "分屏" "%1$s 的应用信息" - - + "保存应用对" "轻触并按住即可移动微件。" "点按两次并按住微件即可移动该微件或使用自定义操作。" "%1$d × %2$d" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index d7954de28e..4313e96cb3 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -29,8 +29,7 @@ "主畫面" "分割螢幕" "%1$s 的應用程式資料" - - + "儲存應用程式配對" "輕觸並按住即可移動小工具。" "㩒兩下之後㩒住,就可以郁小工具或者用自訂操作。" "%1$d × %2$d" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 30d7860956..330d65f159 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -29,8 +29,7 @@ "主畫面" "分割畫面" "「%1$s」的應用程式資訊" - - + "儲存應用程式配對" "按住即可移動小工具。" "輕觸兩下並按住即可移動小工具或使用自訂操作。" "%1$d × %2$d" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index ba195b2bd7..39204f4ce1 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -29,8 +29,7 @@ "Ikhaya" "Hlukanisa isikrini" "Ulwazi lwe-App ye-%1$s" - - + "Londoloza i-app ebhangqiwe" "Thinta uphinde ubambe ukuze uhambise iwijethi." "Thepha kabili uphinde ubambe ukuze uhambise iwijethi noma usebenzise izindlela ezingokwezifiso." "%1$d × %2$d" diff --git a/res/values/strings.xml b/res/values/strings.xml index aebc1d0446..b54d4f795e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -250,6 +250,8 @@ Wallpapers Wallpaper & style + + Edit Home Screen Home settings diff --git a/src/com/android/launcher3/AbstractFloatingView.java b/src/com/android/launcher3/AbstractFloatingView.java index cd9e5983f6..29f4a6276e 100644 --- a/src/com/android/launcher3/AbstractFloatingView.java +++ b/src/com/android/launcher3/AbstractFloatingView.java @@ -127,6 +127,10 @@ public abstract class AbstractFloatingView extends LinearLayout implements Touch TYPE_WIDGETS_FULL_SHEET | TYPE_WIDGET_RESIZE_FRAME | TYPE_ON_BOARD_POPUP | TYPE_DISCOVERY_BOUNCE | TYPE_TASK_MENU | TYPE_DRAG_DROP_POPUP; + // Floating views that are exclusive to the taskbar overlay window. + public static final int TYPE_TASKBAR_OVERLAYS = + TYPE_TASKBAR_ALL_APPS | TYPE_TASKBAR_EDUCATION_DIALOG; + protected boolean mIsOpen; public AbstractFloatingView(Context context, AttributeSet attrs) { diff --git a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java index 9d5b08eab5..e54337050d 100644 --- a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java +++ b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java @@ -107,12 +107,6 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver { cursor.close(); } } - // attempt to update widget id in backup table as well - new ContentWriter(context, ContentWriter.CommitParams.backupCommitParams( - "appWidgetId=? and profileId=?", args)) - .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i]) - .put(LauncherSettings.Favorites.RESTORED, state) - .commit(); } LauncherAppState app = LauncherAppState.getInstanceNoCreate(); diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java index 1bbb09afe4..82dbe53da8 100644 --- a/src/com/android/launcher3/LauncherSettings.java +++ b/src/com/android/launcher3/LauncherSettings.java @@ -138,11 +138,6 @@ public class LauncherSettings { public static final String TABLE_NAME = "favorites"; - /** - * Backup table created when the favorites table is modified during grid migration - */ - public static final String BACKUP_TABLE_NAME = "favorites_bakup"; - /** * Backup table created when user hotseat is moved to workspace for hybrid hotseat */ @@ -164,12 +159,6 @@ public class LauncherSettings { public static final Uri CONTENT_URI = Uri.parse("content://" + LauncherProvider.AUTHORITY + "/" + TABLE_NAME); - /** - * The content:// style URL for "favorites_bakup" table - */ - public static final Uri BACKUP_CONTENT_URI = Uri.parse("content://" - + LauncherProvider.AUTHORITY + "/" + BACKUP_TABLE_NAME); - /** * The content:// style URL for "favorites_preview" table */ diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java index 7f46324e7f..5b4a02b296 100644 --- a/src/com/android/launcher3/logging/StatsLogManager.java +++ b/src/com/android/launcher3/logging/StatsLogManager.java @@ -797,6 +797,7 @@ public class StatsLogManager implements ResourceBasedOverride { enum LatencyType { UNKNOWN(0), + // example: launcher restart that happens via daily backup and restore COLD(1), HOT(2), TIMEOUT(3), @@ -804,7 +805,9 @@ public class StatsLogManager implements ResourceBasedOverride { COLD_USERWAITING(5), ATOMIC(6), CONTROLLED(7), - CACHED(8); + CACHED(8), + // example: device is rebooting via power key or shell command `adb reboot` + COLD_DEVICE_REBOOTING(9); private final int mId; LatencyType(int id) { diff --git a/src/com/android/launcher3/model/GridBackupTable.java b/src/com/android/launcher3/model/GridBackupTable.java index 51cbf4b770..6bd8518c95 100644 --- a/src/com/android/launcher3/model/GridBackupTable.java +++ b/src/com/android/launcher3/model/GridBackupTable.java @@ -15,18 +15,12 @@ */ package com.android.launcher3.model; -import static com.android.launcher3.LauncherSettings.Favorites.BACKUP_TABLE_NAME; import static com.android.launcher3.provider.LauncherDbUtils.dropTable; import static com.android.launcher3.provider.LauncherDbUtils.tableExists; -import android.content.ContentValues; import android.content.Context; -import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Process; -import android.util.Log; - -import androidx.annotation.IntDef; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.pm.UserCache; @@ -36,50 +30,13 @@ import com.android.launcher3.pm.UserCache; * within the same data base. */ public class GridBackupTable { - private static final String TAG = "GridBackupTable"; - - private static final int ID_PROPERTY = -1; - - private static final String KEY_HOTSEAT_SIZE = Favorites.SCREEN; - private static final String KEY_GRID_X_SIZE = Favorites.SPANX; - private static final String KEY_GRID_Y_SIZE = Favorites.SPANY; - private static final String KEY_DB_VERSION = Favorites.RANK; - - public static final int OPTION_REQUIRES_SANITIZATION = 1; - - /** STATE_NOT_FOUND indicates backup doesn't exist in the db. */ - private static final int STATE_NOT_FOUND = 0; - /** - * STATE_RAW indicates the backup has not yet been sanitized. This implies it might still - * posses app info that doesn't exist in the workspace and needed to be sanitized before - * put into use. - */ - private static final int STATE_RAW = 1; - /** STATE_SANITIZED indicates the backup has already been sanitized, thus can be used as-is. */ - private static final int STATE_SANITIZED = 2; private final Context mContext; private final SQLiteDatabase mDb; - private final int mOldHotseatSize; - private final int mOldGridX; - private final int mOldGridY; - - private int mRestoredHotseatSize; - private int mRestoredGridX; - private int mRestoredGridY; - - @IntDef({STATE_NOT_FOUND, STATE_RAW, STATE_SANITIZED}) - private @interface BackupState { } - - public GridBackupTable(Context context, SQLiteDatabase db, int hotseatSize, int gridX, - int gridY) { + public GridBackupTable(Context context, SQLiteDatabase db) { mContext = context; mDb = db; - - mOldHotseatSize = hotseatSize; - mOldGridX = gridX; - mOldGridY = gridY; } /** @@ -89,7 +46,6 @@ public class GridBackupTable { long profileId = UserCache.INSTANCE.get(mContext).getSerialNumberForUser( Process.myUserHandle()); copyTable(mDb, Favorites.TABLE_NAME, tableName, profileId); - encodeDBProperties(0); } /** @@ -114,78 +70,6 @@ public class GridBackupTable { private static void copyTable(SQLiteDatabase db, String from, String to, long userSerial) { dropTable(db, to); Favorites.addTableToDb(db, userSerial, false, to); - db.execSQL("INSERT INTO " + to + " SELECT * FROM " + from + " where _id > " + ID_PROPERTY); - } - - private void encodeDBProperties(int options) { - ContentValues values = new ContentValues(); - values.put(Favorites._ID, ID_PROPERTY); - values.put(KEY_DB_VERSION, mDb.getVersion()); - values.put(KEY_GRID_X_SIZE, mOldGridX); - values.put(KEY_GRID_Y_SIZE, mOldGridY); - values.put(KEY_HOTSEAT_SIZE, mOldHotseatSize); - values.put(Favorites.OPTIONS, options); - mDb.insert(BACKUP_TABLE_NAME, null, values); - } - - /** - * Load DB properties from grid backup table. - */ - public @BackupState int loadDBProperties() { - try (Cursor c = mDb.query(BACKUP_TABLE_NAME, new String[] { - KEY_DB_VERSION, // 0 - KEY_GRID_X_SIZE, // 1 - KEY_GRID_Y_SIZE, // 2 - KEY_HOTSEAT_SIZE, // 3 - Favorites.OPTIONS}, // 4 - "_id=" + ID_PROPERTY, null, null, null, null)) { - if (!c.moveToNext()) { - Log.e(TAG, "Meta data not found in backup table"); - return STATE_NOT_FOUND; - } - if (!validateDBVersion(mDb.getVersion(), c.getInt(0))) { - return STATE_NOT_FOUND; - } - - mRestoredGridX = c.getInt(1); - mRestoredGridY = c.getInt(2); - mRestoredHotseatSize = c.getInt(3); - boolean isSanitized = (c.getInt(4) & OPTION_REQUIRES_SANITIZATION) == 0; - return isSanitized ? STATE_SANITIZED : STATE_RAW; - } - } - - /** - * Restore workspace from raw backup if available. - */ - public boolean restoreFromRawBackupIfAvailable(long oldProfileId) { - if (!tableExists(mDb, Favorites.BACKUP_TABLE_NAME) - || loadDBProperties() != STATE_RAW - || mOldHotseatSize != mRestoredHotseatSize - || mOldGridX != mRestoredGridX - || mOldGridY != mRestoredGridY) { - // skip restore if dimensions in backup table differs from current setup. - return false; - } - copyTable(mDb, Favorites.BACKUP_TABLE_NAME, Favorites.TABLE_NAME, oldProfileId); - Log.d(TAG, "Backup restored"); - return true; - } - - /** - * Performs a backup on the workspace layout. - */ - public void doBackup(long profileId, int options) { - copyTable(mDb, Favorites.TABLE_NAME, Favorites.BACKUP_TABLE_NAME, profileId); - encodeDBProperties(options); - } - - private static boolean validateDBVersion(int expected, int actual) { - if (expected != actual) { - Log.e(TAG, String.format("Launcher.db version mismatch, expecting %d but %d was found", - expected, actual)); - return false; - } - return true; + db.execSQL("INSERT INTO " + to + " SELECT * FROM " + from); } } diff --git a/src/com/android/launcher3/provider/RestoreDbTask.java b/src/com/android/launcher3/provider/RestoreDbTask.java index c4eb14f8c2..ba5249c144 100644 --- a/src/com/android/launcher3/provider/RestoreDbTask.java +++ b/src/com/android/launcher3/provider/RestoreDbTask.java @@ -39,21 +39,19 @@ import android.util.LongSparseArray; import android.util.SparseLongArray; import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import com.android.launcher3.AppWidgetsRestoredReceiver; import com.android.launcher3.InvariantDeviceProfile; -import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherPrefs; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.Utilities; import com.android.launcher3.logging.FileLog; import com.android.launcher3.model.DatabaseHelper; import com.android.launcher3.model.DeviceGridState; -import com.android.launcher3.model.GridBackupTable; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.LauncherAppWidgetInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; -import com.android.launcher3.pm.UserCache; import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction; import com.android.launcher3.uioverrides.ApiWrapper; import com.android.launcher3.util.IntArray; @@ -108,7 +106,6 @@ public class RestoreDbTask { SQLiteDatabase db = helper.getWritableDatabase(); try (SQLiteTransaction t = new SQLiteTransaction(db)) { RestoreDbTask task = new RestoreDbTask(); - task.backupWorkspace(context, db); task.sanitizeDB(context, helper, db, new BackupManager(context)); task.restoreAppWidgetIdsIfExists(context); t.commit(); @@ -119,49 +116,6 @@ public class RestoreDbTask { } } - /** - * Restore the workspace if backup is available. - */ - public static boolean restoreIfPossible(@NonNull Context context, - @NonNull DatabaseHelper helper, @NonNull BackupManager backupManager) { - final SQLiteDatabase db = helper.getWritableDatabase(); - try (SQLiteTransaction t = new SQLiteTransaction(db)) { - RestoreDbTask task = new RestoreDbTask(); - task.restoreWorkspace(context, db, helper, backupManager); - t.commit(); - return true; - } catch (Exception e) { - FileLog.e(TAG, "Failed to restore db", e); - return false; - } - } - - /** - * Backup the workspace so that if things go south in restore, we can recover these entries. - */ - private void backupWorkspace(Context context, SQLiteDatabase db) throws Exception { - InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - new GridBackupTable(context, db, idp.numDatabaseHotseatIcons, idp.numColumns, idp.numRows) - .doBackup(getDefaultProfileId(db), GridBackupTable.OPTION_REQUIRES_SANITIZATION); - } - - private void restoreWorkspace(@NonNull Context context, @NonNull SQLiteDatabase db, - @NonNull DatabaseHelper helper, @NonNull BackupManager backupManager) - throws Exception { - final InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - GridBackupTable backupTable = new GridBackupTable(context, db, idp.numDatabaseHotseatIcons, - idp.numColumns, idp.numRows); - if (backupTable.restoreFromRawBackupIfAvailable(getDefaultProfileId(db))) { - int itemsDeleted = sanitizeDB(context, helper, db, backupManager); - LauncherAppState.getInstance(context).getModel().forceReload(); - restoreAppWidgetIdsIfExists(context); - if (itemsDeleted == 0) { - // all the items are restored, we no longer need the backup table - dropTable(db, Favorites.BACKUP_TABLE_NAME); - } - } - } - /** * Makes the following changes in the provider DB. * 1. Removes all entries belonging to any profiles that were not restored. @@ -174,7 +128,8 @@ public class RestoreDbTask { * * @return number of items deleted. */ - private int sanitizeDB(Context context, DatabaseHelper helper, SQLiteDatabase db, + @VisibleForTesting + protected int sanitizeDB(Context context, DatabaseHelper helper, SQLiteDatabase db, BackupManager backupManager) throws Exception { // Primary user ids long myProfileId = helper.getDefaultUserSerial(); @@ -258,7 +213,7 @@ public class RestoreDbTask { } // Override shortcuts - maybeOverrideShortcuts(context, db, myProfileId); + maybeOverrideShortcuts(context, helper, db, myProfileId); return itemsDeleted; } @@ -388,8 +343,8 @@ public class RestoreDbTask { APP_WIDGET_IDS.to(IntArray.wrap(newIds).toConcatString())); } - protected static void maybeOverrideShortcuts(Context context, SQLiteDatabase db, - long currentUser) { + protected static void maybeOverrideShortcuts(Context context, DatabaseHelper helper, + SQLiteDatabase db, long currentUser) { Map activityOverrides = ApiWrapper.getActivityOverrides( context); @@ -412,8 +367,7 @@ public class RestoreDbTask { if (override != null) { ContentValues values = new ContentValues(); values.put(Favorites.PROFILE_ID, - UserCache.INSTANCE.get(context).getSerialNumberForUser( - override.getUser())); + helper.getSerialNumberForUser(override.getUser())); values.put(Favorites.INTENT, AppInfo.makeLaunchIntent(override).toUri(0)); db.update(Favorites.TABLE_NAME, values, String.format("%s=?", Favorites._ID), new String[]{String.valueOf(c.getInt(idIndex))}); diff --git a/src/com/android/launcher3/util/ContentWriter.java b/src/com/android/launcher3/util/ContentWriter.java index ee64e9865d..55c2585f4a 100644 --- a/src/com/android/launcher3/util/ContentWriter.java +++ b/src/com/android/launcher3/util/ContentWriter.java @@ -118,21 +118,9 @@ public class ContentWriter { final String[] mSelectionArgs; public CommitParams(String where, String[] selectionArgs) { - this(LauncherSettings.Favorites.CONTENT_URI, where, selectionArgs); - } - - private CommitParams(Uri uri, String where, String[] selectionArgs) { - mUri = uri; + mUri = LauncherSettings.Favorites.CONTENT_URI; mWhere = where; mSelectionArgs = selectionArgs; } - - /** - * Creates commit params for backup table. - */ - public static CommitParams backupCommitParams(String where, String[] selectionArgs) { - return new CommitParams( - LauncherSettings.Favorites.BACKUP_CONTENT_URI, where, selectionArgs); - } } } diff --git a/src/com/android/launcher3/views/OptionsPopupView.java b/src/com/android/launcher3/views/OptionsPopupView.java index 315cbadd04..64ad390f51 100644 --- a/src/com/android/launcher3/views/OptionsPopupView.java +++ b/src/com/android/launcher3/views/OptionsPopupView.java @@ -18,6 +18,7 @@ package com.android.launcher3.views; import static androidx.core.content.ContextCompat.getColorStateList; import static com.android.launcher3.config.FeatureFlags.ENABLE_MATERIAL_U_POPUP; +import static com.android.launcher3.config.FeatureFlags.MULTI_SELECT_EDIT_MODE; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.IGNORE; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_SETTINGS_BUTTON_TAP_OR_LONGPRESS; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_WIDGETSTRAY_BUTTON_TAP_OR_LONGPRESS; @@ -205,6 +206,13 @@ public class OptionsPopupView extends ArrowPopup LAUNCHER_WIDGETSTRAY_BUTTON_TAP_OR_LONGPRESS, OptionsPopupView::onWidgetsClicked)); } + if (MULTI_SELECT_EDIT_MODE.get()) { + options.add(new OptionItem(launcher, + R.string.edit_home_screen, + R.drawable.enter_home_gardening_icon, + LAUNCHER_SETTINGS_BUTTON_TAP_OR_LONGPRESS, + OptionsPopupView::enterHomeGardening)); + } options.add(new OptionItem(launcher, R.string.settings_button_text, R.drawable.ic_setting, @@ -213,6 +221,10 @@ public class OptionsPopupView extends ArrowPopup return options; } + private static boolean enterHomeGardening(View view) { + return true; + } + private static boolean onWidgetsClicked(View view) { return openWidgets(Launcher.getLauncher(view.getContext())) != null; } diff --git a/src/com/android/launcher3/widget/WidgetManagerHelper.java b/src/com/android/launcher3/widget/WidgetManagerHelper.java index 15fa8443f3..737cdbd61f 100644 --- a/src/com/android/launcher3/widget/WidgetManagerHelper.java +++ b/src/com/android/launcher3/widget/WidgetManagerHelper.java @@ -78,8 +78,16 @@ public class WidgetManagerHelper { return allWidgetsSteam(mContext).collect(Collectors.toList()); } - return mAppWidgetManager.getInstalledProvidersForPackage( - packageUser.mPackageName, packageUser.mUser); + try { + return mAppWidgetManager.getInstalledProvidersForPackage( + packageUser.mPackageName, packageUser.mUser); + } catch (IllegalStateException e) { + // b/277189566: Launcher will load the widget when it gets the user-unlock event. + // If exception is thrown because of device is locked, it means a race condition occurs + // that the user got locked again while launcher is processing the event. In this case + // we should return empty list. + return Collections.emptyList(); + } } /** diff --git a/tests/Android.bp b/tests/Android.bp index 81853d15ff..f9d6f04c4d 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -69,6 +69,7 @@ filegroup { android_library { name: "Launcher3TestLib", srcs: [ ], + asset_dirs: ["assets"], resource_dirs: ["res"], static_libs: [ "launcher-aosp-tapl", diff --git a/tests/assets/ReorderWidgets/full_reorder_case b/tests/assets/ReorderWidgets/full_reorder_case new file mode 100644 index 0000000000..33ebaaea28 --- /dev/null +++ b/tests/assets/ReorderWidgets/full_reorder_case @@ -0,0 +1,28 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +# Test 4x4 +board: 4x4 +xxxx +bbmm +iimm +iiaa +arguments: 0 3 +board: 4x4 +xxxx +bbii +mmii +mmaa \ No newline at end of file diff --git a/tests/assets/ReorderWidgets/move_out_reorder_case b/tests/assets/ReorderWidgets/move_out_reorder_case new file mode 100644 index 0000000000..db0a91dd54 --- /dev/null +++ b/tests/assets/ReorderWidgets/move_out_reorder_case @@ -0,0 +1,44 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +# Test 5x5 +board: 5x5 +xxxxx +cd-m- +cgaaa +ctaaa +ctaaa +arguments: 1 2 +board: 5x5 +xxxxx +cde-- +cgaaa +ctaaa +ctaaa +# Test 6x5 +board: 6x5 +xxxxxx +cd-m-- +cgaaaa +ctaaaa +ctaaaa +arguments: 1 2 +board: 6x5 +xxxxxx +cdg--- +cmaaaa +ctaaaa +ctaaaa \ No newline at end of file diff --git a/tests/assets/ReorderWidgets/push_reorder_case b/tests/assets/ReorderWidgets/push_reorder_case new file mode 100644 index 0000000000..8e845a2462 --- /dev/null +++ b/tests/assets/ReorderWidgets/push_reorder_case @@ -0,0 +1,44 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +#Test 5x5 +board: 5x5 +xxxxx +bbbm- +--ccc +--ddd +----- +arguments: 2 1 +board: 5x5 +xxxxx +--m-- +bbb-- +--ccc +--ddd +#6x5 Test +board: 6x5 +xxxxxx +bbbbm- +--aaa- +--ddd- +------ +arguments: 2 1 +board: 6x5 +xxxxxx +--m--- +bbbb-- +--aaa- +--ddd- \ No newline at end of file diff --git a/tests/assets/ReorderWidgets/simple_reorder_case b/tests/assets/ReorderWidgets/simple_reorder_case new file mode 100644 index 0000000000..f5eb7b6f5c --- /dev/null +++ b/tests/assets/ReorderWidgets/simple_reorder_case @@ -0,0 +1,56 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +# Test 5x5 +board: 5x5 +xxxxx +--mm- +--mm- +----- +----- +arguments: 0 4 +board: 5x5 +xxxxx +----- +----- +mm--- +mm--- +# Test 4x4 +board: 4x4 +xxxx +--mm +--mm +---- +arguments: 3 3 +board: 4x4 +xxxx +---- +--mm +--mm +# Test 6x5 +board: 6x5 +xxxxxx +-mm--- +-mm--- +------ +------ +arguments: 4 3 +board: 6x5 +xxxxxx +------ +------ +----mm +----mm \ No newline at end of file diff --git a/tests/res/raw/reorder_algorithm_test.txt b/tests/res/raw/reorder_algorithm_test.txt new file mode 100644 index 0000000000..4930e932a4 --- /dev/null +++ b/tests/res/raw/reorder_algorithm_test.txt @@ -0,0 +1,9 @@ +arguments: 5 6 normal +board: 6x5 +xxxxx- +------ +------ +---3-- +---3-- +---3-- +# this is a comment \ No newline at end of file diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java b/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java index 6d75180f8c..cf96f04e37 100644 --- a/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java +++ b/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java @@ -179,7 +179,6 @@ public class CellLayoutBoard implements Comparable { Map mWidgetsMap = new HashMap<>(); List mIconPoints = new ArrayList<>(); - Map mIconsMap = new HashMap<>(); WidgetRect mMain = null; @@ -270,7 +269,9 @@ public class CellLayoutBoard implements Comparable { } public void addIcon(int x, int y) { - removeOverlappingItems(new Point(x, y)); + Point iconCoord = new Point(x, y); + removeOverlappingItems(iconCoord); + mIconPoints.add(new IconPoint(iconCoord, CellType.ICON)); mWidget[x][y] = 'i'; } @@ -306,8 +307,12 @@ public class CellLayoutBoard implements Comparable { return new WidgetRect(type, widgetRect); } + public static boolean isFolder(char type) { + return type >= 'A' && type <= 'Z'; + } + public static boolean isWidget(char type) { - return type != CellType.ICON && type != CellType.EMPTY; + return type != CellType.ICON && type != CellType.EMPTY && (type >= 'a' && type <= 'z'); } public static boolean isIcon(char type) { diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java b/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java new file mode 100644 index 0000000000..e33a304941 --- /dev/null +++ b/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java @@ -0,0 +1,162 @@ +/* + * 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.launcher3.celllayout; + +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; + +import android.graphics.Point; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.stream.Collectors; + +public class CellLayoutTestCaseReader { + + public abstract static class TestSection { + State state; + + public TestSection(State state) { + this.state = state; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + } + + public static class Comment extends TestSection { + public Comment() { + super(State.COMMENT); + } + } + + public static class Arguments extends TestSection { + String[] arguments; + + public Arguments(String[] arguments) { + super(State.ARGUMENTS); + this.arguments = arguments; + } + } + + public static class Board extends TestSection { + Point gridSize; + String board; + + public Board(Point gridSize, String board) { + super(State.BOARD); + this.gridSize = gridSize; + this.board = board; + } + } + + public enum State { + START, + ARGUMENTS, + BOARD, + END, + COMMENT + } + + String mTest; + + protected CellLayoutTestCaseReader(String test) { + mTest = test; + } + + public static CellLayoutTestCaseReader readFromFile(String fileName) throws IOException { + String fileStr = new BufferedReader(new InputStreamReader( + getInstrumentation().getContext().getAssets().open(fileName)) + ).lines().collect(Collectors.joining("\n")); + return new CellLayoutTestCaseReader(fileStr); + } + + private State getStateFromLine(String line) { + String typeWithColons = line.trim().split(" ")[0].trim(); + String type = typeWithColons.substring(0, typeWithColons.length() - 1); + try { + return Enum.valueOf(State.class, type.toUpperCase()); + } catch (Exception e) { + throw new RuntimeException( + "The given tag " + typeWithColons + " doesn't match with the existing tags"); + } + } + + private String removeTag(String line) { + return line.split(":")[1]; + } + + private TestSection parseNextLine(Iterator it) { + String line = it.next(); + if (line.trim().charAt(0) == '#') { + return new Comment(); + } + State state = getStateFromLine(line); + line = removeTag(line); + switch (state) { + case ARGUMENTS: + return new Arguments(parseArgumentsLine(line)); + case BOARD: + Point grid = parseGridSize(line); + return new Board(grid, parseBoard(it, grid.y)); + default: + return new Comment(); + } + } + + List parse() { + List sections = new ArrayList<>(); + String[] lines = mTest.split("\n"); + Iterator it = Arrays.stream(lines).iterator(); + while (it.hasNext()) { + TestSection section = parseNextLine(it); + if (section.state == State.COMMENT) { + continue; + } + sections.add(section); + } + return sections; + } + + private String parseBoard(Iterator it, int rows) { + StringBuilder board = new StringBuilder(); + for (int j = 0; j < rows; j++) { + board.append(it.next() + "\n"); + } + return board.toString(); + } + + private String[] parseArgumentsLine(String line) { + return Arrays.stream(line.trim().split(" ")).map(String::trim).toArray(String[]::new); + } + + private Point parseGridSize(String line) { + String[] values = line.toLowerCase(Locale.ROOT).split("x"); + int x = Integer.parseInt(values[0].trim()); + int y = Integer.parseInt(values[1].trim()); + return new Point(x, y); + } +} diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java b/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java index 2960807098..e3d07a99f1 100644 --- a/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java +++ b/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java @@ -51,8 +51,8 @@ public class CellLayoutTestUtils { board.addIcon(pos.cellX, pos.cellY); } else { // is widget - board.addWidget(pos.cellX, pos.cellY, params.cellHSpan, params.cellVSpan, - (char) ('A' + widgetCount)); + board.addWidget(params.getCellX(), params.getCellY(), params.cellHSpan, + params.cellVSpan, (char) ('a' + widgetCount)); widgetCount++; } } diff --git a/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java b/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java index 9b52fe826c..706c1a7187 100644 --- a/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java +++ b/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java @@ -17,6 +17,8 @@ package com.android.launcher3.celllayout.testcases; import android.graphics.Point; +import com.android.launcher3.celllayout.ReorderTestCase; + import java.util.Map; /** diff --git a/tests/src/com/android/launcher3/celllayout/testcases/ReorderTestCase.java b/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java similarity index 93% rename from tests/src/com/android/launcher3/celllayout/testcases/ReorderTestCase.java rename to tests/src/com/android/launcher3/celllayout/ReorderTestCase.java index 98fc20c228..ed84a60fae 100644 --- a/tests/src/com/android/launcher3/celllayout/testcases/ReorderTestCase.java +++ b/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java @@ -13,12 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3.celllayout.testcases; +package com.android.launcher3.celllayout; import android.graphics.Point; -import com.android.launcher3.celllayout.CellLayoutBoard; - import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; diff --git a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java index c2fe3de407..e8dd3c0455 100644 --- a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java +++ b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java @@ -25,12 +25,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import com.android.launcher3.InvariantDeviceProfile; -import com.android.launcher3.celllayout.testcases.FullReorderCase; -import com.android.launcher3.celllayout.testcases.MoveOutReorderCase; import com.android.launcher3.celllayout.testcases.MultipleCellLayoutsSimpleReorder; -import com.android.launcher3.celllayout.testcases.PushReorderCase; -import com.android.launcher3.celllayout.testcases.ReorderTestCase; -import com.android.launcher3.celllayout.testcases.SimpleReorderCase; import com.android.launcher3.tapl.Widget; import com.android.launcher3.tapl.WidgetResizeFrame; import com.android.launcher3.testing.shared.TestProtocol; @@ -40,12 +35,14 @@ import com.android.launcher3.util.rule.ShellCommandRule; import org.junit.Assume; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -159,27 +156,23 @@ public class ReorderWidgets extends AbstractLauncherUiTest { } @Test - public void simpleReorder() throws ExecutionException, InterruptedException { - runTestCaseMap(SimpleReorderCase.TEST_BY_GRID_SIZE, - SimpleReorderCase.class.getSimpleName()); - } - - @Ignore - @Test - public void pushTest() throws ExecutionException, InterruptedException { - runTestCaseMap(PushReorderCase.TEST_BY_GRID_SIZE, PushReorderCase.class.getSimpleName()); - } - - @Ignore - @Test - public void fullReorder() throws ExecutionException, InterruptedException { - runTestCaseMap(FullReorderCase.TEST_BY_GRID_SIZE, FullReorderCase.class.getSimpleName()); + public void simpleReorder() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/simple_reorder_case"), "push_reorder_case"); } @Test - public void moveOutReorder() throws ExecutionException, InterruptedException { - runTestCaseMap(MoveOutReorderCase.TEST_BY_GRID_SIZE, - MoveOutReorderCase.class.getSimpleName()); + public void pushTest() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/push_reorder_case"), "push_reorder_case"); + } + + @Test + public void fullReorder() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/full_reorder_case"), "full_reorder_case"); + } + + @Test + public void moveOutReorder() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/move_out_reorder_case"), "move_out_reorder_case"); } @Test @@ -188,4 +181,28 @@ public class ReorderWidgets extends AbstractLauncherUiTest { runTestCaseMap(MultipleCellLayoutsSimpleReorder.TEST_BY_GRID_SIZE, MultipleCellLayoutsSimpleReorder.class.getSimpleName()); } + + private void addTestCase(Iterator sections, + Map testCaseMap) { + CellLayoutTestCaseReader.Board startBoard = + ((CellLayoutTestCaseReader.Board) sections.next()); + CellLayoutTestCaseReader.Arguments point = + ((CellLayoutTestCaseReader.Arguments) sections.next()); + CellLayoutTestCaseReader.Board endBoard = + ((CellLayoutTestCaseReader.Board) sections.next()); + Point moveTo = new Point(Integer.parseInt(point.arguments[0]), + Integer.parseInt(point.arguments[1])); + testCaseMap.put(startBoard.gridSize, + new ReorderTestCase(startBoard.board, moveTo, endBoard.board)); + } + + private Map getTestMap(String testPath) throws IOException { + Map testCaseMap = new HashMap<>(); + Iterator iterableSection = + CellLayoutTestCaseReader.readFromFile(testPath).parse().iterator(); + while (iterableSection.hasNext()) { + addTestCase(iterableSection, testCaseMap); + } + return testCaseMap; + } } diff --git a/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java deleted file mode 100644 index d68d2ede61..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * 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.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class FullReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "222mm\n" - + "222mm\n" - + "ii111\n" - + "ii111"; - private static final Point MOVE_TO_5x5 = new Point(0, 4); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "222ii\n" - + "222ii\n" - + "mm111\n" - + "mm111"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "2222mm\n" - + "2222mm\n" - + "ii1111\n" - + "ii1111"; - private static final Point MOVE_TO_6x5 = new Point(0, 4); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "2222ii\n" - + "2222ii\n" - + "mm1111\n" - + "mm1111"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - /** 4x4 Test - **/ - private static final String START_BOARD_STR_4x4 = "" - + "xxxx\n" - + "22mm\n" - + "iimm\n" - + "ii11"; - private static final Point MOVE_TO_4x4 = new Point(0, 3); - private static final String END_BOARD_STR_4x4 = "" - + "xxxx\n" - + "22ii\n" - + "mmii\n" - + "mm11"; - - private static final ReorderTestCase TEST_CASE_4x4 = new ReorderTestCase(START_BOARD_STR_4x4, - MOVE_TO_4x4, - END_BOARD_STR_4x4); - - /** 4x4 Test - **/ - private static final String START_BOARD_STR_4x5 = "" - + "xxxx\n" - + "22mm\n" - + "iimm\n" - + "ii11\n" - + "ii11"; - private static final Point MOVE_TO_4x5 = new Point(0, 3); - private static final String END_BOARD_STR_4x5 = "" - + "xxxx\n" - + "22ii\n" - + "mmii\n" - + "mm11\n" - + "ii11"; - - private static final ReorderTestCase TEST_CASE_4x5 = new ReorderTestCase(START_BOARD_STR_4x5, - MOVE_TO_4x5, - END_BOARD_STR_4x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(6, 5), TEST_CASE_6x5, - new Point(4, 4), TEST_CASE_4x4, - new Point(4, 5), TEST_CASE_4x5); -} diff --git a/tests/src/com/android/launcher3/celllayout/testcases/MoveOutReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/MoveOutReorderCase.java deleted file mode 100644 index 047d3422df..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/MoveOutReorderCase.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * 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.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class MoveOutReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "34-m-\n" - + "35111\n" - + "32111\n" - + "32111"; - private static final Point MOVE_TO_5x5 = new Point(1, 2); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "345--\n" - + "3m111\n" - + "32111\n" - + "32111"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "34-m--\n" - + "351111\n" - + "321111\n" - + "321111"; - private static final Point MOVE_TO_6x5 = new Point(1, 2); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "345---\n" - + "3m1111\n" - + "321111\n" - + "321111"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(6, 5), TEST_CASE_6x5); -} diff --git a/tests/src/com/android/launcher3/celllayout/testcases/PushReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/PushReorderCase.java deleted file mode 100644 index 38c9aee0fd..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/PushReorderCase.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * 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.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class PushReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "222m-\n" - + "--111\n" - + "--333\n" - + "-----"; - private static final Point MOVE_TO_5x5 = new Point(2, 1); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "--m--\n" - + "222--\n" - + "--111\n" - + "--333"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "2222m-\n" - + "--111-\n" - + "--333-\n" - + "------"; - private static final Point MOVE_TO_6x5 = new Point(2, 1); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "--m---\n" - + "2222--\n" - + "--111-\n" - + "--333-"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(6, 5), TEST_CASE_6x5); -} diff --git a/tests/src/com/android/launcher3/celllayout/testcases/SimpleReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/SimpleReorderCase.java deleted file mode 100644 index c9f6849854..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/SimpleReorderCase.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * 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.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class SimpleReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "--mm-\n" - + "--mm-\n" - + "-----\n" - + "-----"; - private static final Point MOVE_TO_5x5 = new Point(0, 4); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "-----\n" - + "-----\n" - + "mm---\n" - + "mm---"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - /** 4x4 Test - **/ - private static final String START_BOARD_STR_4x4 = "" - + "xxxx\n" - + "--mm\n" - + "--mm\n" - + "----"; - private static final Point MOVE_TO_4x4 = new Point(3, 3); - private static final String END_BOARD_STR_4x4 = "" - + "xxxx\n" - + "----\n" - + "--mm\n" - + "--mm"; - private static final ReorderTestCase TEST_CASE_4x4 = new ReorderTestCase(START_BOARD_STR_4x4, - MOVE_TO_4x4, - END_BOARD_STR_4x4); - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "-mm---\n" - + "-mm---\n" - + "------\n" - + "------"; - private static final Point MOVE_TO_6x5 = new Point(4, 3); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "------\n" - + "------\n" - + "----mm\n" - + "----mm"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(4, 4), TEST_CASE_4x4, - new Point(6, 5), TEST_CASE_6x5); -} diff --git a/tests/src/com/android/launcher3/model/BackupRestoreTest.java b/tests/src/com/android/launcher3/model/BackupRestoreTest.java deleted file mode 100644 index 41914de1ab..0000000000 --- a/tests/src/com/android/launcher3/model/BackupRestoreTest.java +++ /dev/null @@ -1,211 +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.launcher3.model; - -import static android.content.pm.PackageManager.INSTALL_REASON_DEVICE_RESTORE; -import static android.os.Process.myUserHandle; - -import static com.android.launcher3.LauncherSettings.Favorites.BACKUP_TABLE_NAME; -import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME; -import static com.android.launcher3.LauncherSettings.Favorites.addTableToDb; -import static com.android.launcher3.provider.LauncherDbUtils.dropTable; -import static com.android.launcher3.provider.LauncherDbUtils.tableExists; -import static com.android.launcher3.util.LauncherModelHelper.APP_ICON; -import static com.android.launcher3.util.LauncherModelHelper.NO__ICON; -import static com.android.launcher3.util.LauncherModelHelper.SHORTCUT; -import static com.android.launcher3.util.ReflectionHelpers.getField; -import static com.android.launcher3.util.ReflectionHelpers.setField; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; - -import android.app.backup.BackupManager; -import android.content.pm.PackageInstaller; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.os.UserHandle; -import android.util.ArrayMap; -import android.util.LongSparseArray; - -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.filters.SmallTest; - -import com.android.launcher3.InvariantDeviceProfile; -import com.android.launcher3.pm.UserCache; -import com.android.launcher3.provider.RestoreDbTask; -import com.android.launcher3.util.LauncherModelHelper; -import com.android.launcher3.util.SafeCloseable; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * Tests to verify backup and restore flow. - */ -@SmallTest -@RunWith(AndroidJUnit4.class) -public class BackupRestoreTest { - - private static final int PER_USER_RANGE = 200000; - - - private long mCurrentMyProfileId; - private long mOldMyProfileId; - - private long mCurrentWorkProfileId; - private long mOldWorkProfileId; - - private BackupManager mBackupManager; - private LauncherModelHelper mModelHelper; - private SQLiteDatabase mDb; - private InvariantDeviceProfile mIdp; - - private UserHandle mWorkUserHandle; - - private SafeCloseable mUserChangeListener; - - @Before - public void setUp() { - mModelHelper = new LauncherModelHelper(); - - mCurrentMyProfileId = mModelHelper.defaultProfileId; - mOldMyProfileId = mCurrentMyProfileId + 1; - mCurrentWorkProfileId = mOldMyProfileId + 1; - mOldWorkProfileId = mCurrentWorkProfileId + 1; - - mWorkUserHandle = UserHandle.getUserHandleForUid(PER_USER_RANGE); - mUserChangeListener = UserCache.INSTANCE.get(mModelHelper.sandboxContext) - .addUserChangeListener(() -> { }); - - setupUserManager(); - setupBackupManager(); - RestoreDbTask.setPending(mModelHelper.sandboxContext); - mDb = mModelHelper.provider.getDb(); - mIdp = InvariantDeviceProfile.INSTANCE.get(mModelHelper.sandboxContext); - - } - - @After - public void tearDown() { - mUserChangeListener.close(); - mModelHelper.destroy(); - } - - private void setupUserManager() { - UserCache cache = UserCache.INSTANCE.get(mModelHelper.sandboxContext); - synchronized (cache) { - LongSparseArray users = getField(cache, "mUsers"); - users.clear(); - users.put(mCurrentMyProfileId, myUserHandle()); - users.put(mCurrentWorkProfileId, mWorkUserHandle); - - ArrayMap userMap = getField(cache, "mUserToSerialMap"); - userMap.clear(); - userMap.put(myUserHandle(), mCurrentMyProfileId); - userMap.put(mWorkUserHandle, mCurrentWorkProfileId); - } - } - - private void setupBackupManager() { - mBackupManager = spy(new BackupManager(mModelHelper.sandboxContext)); - doReturn(myUserHandle()).when(mBackupManager) - .getUserForAncestralSerialNumber(eq(mOldMyProfileId)); - doReturn(mWorkUserHandle).when(mBackupManager) - .getUserForAncestralSerialNumber(eq(mOldWorkProfileId)); - } - - @Test - public void testOnCreateDbIfNotExists_CreatesBackup() { - assertTrue(tableExists(mDb, BACKUP_TABLE_NAME)); - } - - @Test - public void testOnRestoreSessionWithValidCondition_PerformsRestore() throws Exception { - setupBackup(); - verifyTableIsFilled(BACKUP_TABLE_NAME, false); - verifyTableIsEmpty(TABLE_NAME); - createRestoreSession(); - verifyTableIsFilled(TABLE_NAME, true); - } - - private void setupBackup() { - createTableUsingOldProfileId(); - // setup grid for main user on first screen - mModelHelper.createGrid(new int[][][]{{ - { APP_ICON, APP_ICON, SHORTCUT, SHORTCUT}, - { SHORTCUT, SHORTCUT, NO__ICON, NO__ICON}, - { NO__ICON, NO__ICON, SHORTCUT, SHORTCUT}, - { APP_ICON, SHORTCUT, SHORTCUT, APP_ICON}, - }}, 1, mOldMyProfileId); - // setup grid for work profile on second screen - mModelHelper.createGrid(new int[][][]{{ - { NO__ICON, APP_ICON, SHORTCUT, SHORTCUT}, - { SHORTCUT, SHORTCUT, NO__ICON, NO__ICON}, - { NO__ICON, NO__ICON, SHORTCUT, SHORTCUT}, - { APP_ICON, SHORTCUT, SHORTCUT, NO__ICON}, - }}, 2, mOldWorkProfileId); - // simulates the creation of backup upon restore - new GridBackupTable(mModelHelper.sandboxContext, mDb, mIdp.numDatabaseHotseatIcons, - mIdp.numColumns, mIdp.numRows).doBackup( - mOldMyProfileId, GridBackupTable.OPTION_REQUIRES_SANITIZATION); - // reset favorites table - createTableUsingOldProfileId(); - } - - private void verifyTableIsEmpty(String tableName) { - assertEquals(0, getCount(mDb, "SELECT * FROM " + tableName)); - } - - private void verifyTableIsFilled(String tableName, boolean sanitized) { - assertEquals(sanitized ? 12 : 13, getCount(mDb, - "SELECT * FROM " + tableName + " WHERE profileId = " - + (sanitized ? mCurrentMyProfileId : mOldMyProfileId))); - assertEquals(10, getCount(mDb, "SELECT * FROM " + tableName + " WHERE profileId = " - + (sanitized ? mCurrentWorkProfileId : mOldWorkProfileId))); - } - - private void createTableUsingOldProfileId() { - // simulates the creation of favorites table on old device - dropTable(mDb, TABLE_NAME); - addTableToDb(mDb, mOldMyProfileId, false); - } - - private void createRestoreSession() throws Exception { - final PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( - PackageInstaller.SessionParams.MODE_FULL_INSTALL); - final PackageInstaller installer = mModelHelper.sandboxContext.getPackageManager() - .getPackageInstaller(); - final int sessionId = installer.createSession(params); - final PackageInstaller.SessionInfo info = installer.getSessionInfo(sessionId); - setField(info, "installReason", INSTALL_REASON_DEVICE_RESTORE); - // TODO: (b/148410677) we should verify the following call instead - // InstallSessionHelper.INSTANCE.get(getContext()).restoreDbIfApplicable(info); - RestoreDbTask.restoreIfPossible(mModelHelper.sandboxContext, - mModelHelper.provider.getHelper(), mBackupManager); - } - - private static int getCount(SQLiteDatabase db, String sql) { - try (Cursor c = db.rawQuery(sql, null)) { - return c.getCount(); - } - } -} diff --git a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java index aa091b630d..67de1f5fb1 100644 --- a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java +++ b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java @@ -15,17 +15,35 @@ */ package com.android.launcher3.provider; +import static android.os.Process.myUserHandle; + +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; + +import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP; +import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; +import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME; + import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import android.app.backup.BackupManager; import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.os.UserHandle; +import android.os.UserManager; +import android.util.LongSparseArray; -import androidx.test.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; +import com.android.launcher3.LauncherAppState; +import com.android.launcher3.LauncherSettings; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.model.DatabaseHelper; @@ -39,6 +57,10 @@ import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) public class RestoreDbTaskTest { + private static final int PER_USER_RANGE = 200000; + + private final UserHandle mWorkUser = UserHandle.getUserHandleForUid(PER_USER_RANGE); + @Test public void testGetProfileId() throws Exception { SQLiteDatabase db = new MyDatabaseHelper(23).getWritableDatabase(); @@ -88,6 +110,90 @@ public class RestoreDbTaskTest { assertEquals(1, getCount(db, "select * from favorites where profileId = 33")); } + @Test + public void testSanitizeDB_bothProfiles() throws Exception { + Context context = getInstrumentation().getTargetContext(); + UserHandle myUser = myUserHandle(); + long myProfileId = context.getSystemService(UserManager.class) + .getSerialNumberForUser(myUser); + long myProfileId_old = myProfileId + 1; + long workProfileId = myProfileId + 2; + long workProfileId_old = myProfileId + 3; + + MyDatabaseHelper helper = new MyDatabaseHelper(myProfileId); + SQLiteDatabase db = helper.getWritableDatabase(); + BackupManager bm = spy(new BackupManager(context)); + doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old)); + doReturn(mWorkUser).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old)); + helper.users.put(workProfileId, mWorkUser); + + addIconsBulk(helper, 10, 1, myProfileId_old); + addIconsBulk(helper, 6, 2, workProfileId_old); + assertEquals(10, getItemCountForProfile(db, myProfileId_old)); + assertEquals(6, getItemCountForProfile(db, workProfileId_old)); + + RestoreDbTask task = new RestoreDbTask(); + task.sanitizeDB(context, helper, helper.getWritableDatabase(), bm); + + // All the data has been migrated to the new user ids + assertEquals(0, getItemCountForProfile(db, myProfileId_old)); + assertEquals(0, getItemCountForProfile(db, workProfileId_old)); + assertEquals(10, getItemCountForProfile(db, myProfileId)); + assertEquals(6, getItemCountForProfile(db, workProfileId)); + } + + @Test + public void testSanitizeDB_workItemsRemoved() throws Exception { + Context context = getInstrumentation().getTargetContext(); + UserHandle myUser = myUserHandle(); + long myProfileId = context.getSystemService(UserManager.class) + .getSerialNumberForUser(myUser); + long myProfileId_old = myProfileId + 1; + long workProfileId_old = myProfileId + 3; + + MyDatabaseHelper helper = new MyDatabaseHelper(myProfileId); + SQLiteDatabase db = helper.getWritableDatabase(); + BackupManager bm = spy(new BackupManager(context)); + doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old)); + // Work profile is not migrated + doReturn(null).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old)); + + addIconsBulk(helper, 10, 1, myProfileId_old); + addIconsBulk(helper, 6, 2, workProfileId_old); + assertEquals(10, getItemCountForProfile(db, myProfileId_old)); + assertEquals(6, getItemCountForProfile(db, workProfileId_old)); + + RestoreDbTask task = new RestoreDbTask(); + task.sanitizeDB(context, helper, helper.getWritableDatabase(), bm); + + // All the data has been migrated to the new user ids + assertEquals(0, getItemCountForProfile(db, myProfileId_old)); + assertEquals(0, getItemCountForProfile(db, workProfileId_old)); + assertEquals(10, getItemCountForProfile(db, myProfileId)); + assertEquals(10, getCount(db, "select * from favorites")); + } + + private void addIconsBulk(DatabaseHelper helper, int count, int screen, long profileId) { + int columns = LauncherAppState.getIDP(getInstrumentation().getTargetContext()).numColumns; + String packageName = getInstrumentation().getContext().getPackageName(); + for (int i = 0; i < count; i++) { + ContentValues values = new ContentValues(); + values.put(LauncherSettings.Favorites._ID, helper.generateNewItemId()); + values.put(LauncherSettings.Favorites.CONTAINER, CONTAINER_DESKTOP); + values.put(LauncherSettings.Favorites.SCREEN, screen); + values.put(LauncherSettings.Favorites.CELLX, i % columns); + values.put(LauncherSettings.Favorites.CELLY, i / columns); + values.put(LauncherSettings.Favorites.SPANX, 1); + values.put(LauncherSettings.Favorites.SPANY, 1); + values.put(LauncherSettings.Favorites.PROFILE_ID, profileId); + values.put(LauncherSettings.Favorites.ITEM_TYPE, ITEM_TYPE_APPLICATION); + values.put(LauncherSettings.Favorites.INTENT, + new Intent(Intent.ACTION_MAIN).setPackage(packageName).toUri(0)); + helper.getWritableDatabase().insert(TABLE_NAME, null, values); + } + } + + @Test public void testRemoveScreenIdGaps_firstScreenEmpty() { runRemoveScreenIdGapsTest( @@ -116,7 +222,7 @@ public class RestoreDbTaskTest { ContentValues values = new ContentValues(); values.put(Favorites._ID, i); values.put(Favorites.SCREEN, screenIds[i]); - values.put(Favorites.CONTAINER, Favorites.CONTAINER_DESKTOP); + values.put(Favorites.CONTAINER, CONTAINER_DESKTOP); db.insert(Favorites.TABLE_NAME, null, values); } // Verify items are added @@ -138,6 +244,10 @@ public class RestoreDbTaskTest { assertArrayEquals(expectedScreenIds, resultScreenIds); } + public int getItemCountForProfile(SQLiteDatabase db, long profileId) { + return getCount(db, "select * from favorites where profileId = " + profileId); + } + private int getCount(SQLiteDatabase db, String sql) { try (Cursor c = db.rawQuery(sql, null)) { return c.getCount(); @@ -146,16 +256,18 @@ public class RestoreDbTaskTest { private class MyDatabaseHelper extends DatabaseHelper { - private final long mProfileId; + public final LongSparseArray users; MyDatabaseHelper(long profileId) { - super(InstrumentationRegistry.getInstrumentation().getTargetContext(), null, false); - mProfileId = profileId; + super(getInstrumentation().getTargetContext(), null, false); + users = new LongSparseArray<>(); + users.put(profileId, myUserHandle()); } @Override - public long getDefaultUserSerial() { - return mProfileId; + public long getSerialNumberForUser(UserHandle user) { + int index = users.indexOfValue(user); + return index >= 0 ? users.keyAt(index) : -1; } @Override diff --git a/tests/src/com/android/launcher3/util/LauncherModelHelper.java b/tests/src/com/android/launcher3/util/LauncherModelHelper.java index 5548364927..9e88c06a9c 100644 --- a/tests/src/com/android/launcher3/util/LauncherModelHelper.java +++ b/tests/src/com/android/launcher3/util/LauncherModelHelper.java @@ -61,7 +61,6 @@ import com.android.launcher3.LauncherSettings; import com.android.launcher3.model.AllAppsList; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.BgDataModel.Callbacks; -import com.android.launcher3.model.DatabaseHelper; import com.android.launcher3.model.ItemInstallQueue; import com.android.launcher3.model.ModelDbController; import com.android.launcher3.model.data.AppInfo; @@ -371,54 +370,6 @@ public class LauncherModelHelper { sandboxContext.getContentResolver().delete(uri, null, null); } - public int[][][] createGrid(int[][][] typeArray) { - return createGrid(typeArray, 1); - } - - public int[][][] createGrid(int[][][] typeArray, int startScreen) { - LauncherSettings.Settings.call(sandboxContext.getContentResolver(), - LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB); - LauncherSettings.Settings.call(sandboxContext.getContentResolver(), - LauncherSettings.Settings.METHOD_CLEAR_EMPTY_DB_FLAG); - return createGrid(typeArray, startScreen, defaultProfileId); - } - - /** - * Initializes the DB with mock elements to represent the provided grid structure. - * @param typeArray A 3d array of item types. {@see #addItem(int, long, long, int, int)} for - * type definitions. The first dimension represents the screens and the next - * two represent the workspace grid. - * @param startScreen First screen id from where the icons will be added. - * @return the same grid representation where each entry is the corresponding item id. - */ - public int[][][] createGrid(int[][][] typeArray, int startScreen, long profileId) { - int[][][] ids = new int[typeArray.length][][]; - for (int i = 0; i < typeArray.length; i++) { - // Add screen to DB - int screenId = startScreen + i; - - // Keep the screen id counter up to date - LauncherSettings.Settings.call(sandboxContext.getContentResolver(), - LauncherSettings.Settings.METHOD_NEW_SCREEN_ID); - - ids[i] = new int[typeArray[i].length][]; - for (int y = 0; y < typeArray[i].length; y++) { - ids[i][y] = new int[typeArray[i][y].length]; - for (int x = 0; x < typeArray[i][y].length; x++) { - if (typeArray[i][y][x] < 0) { - // Empty cell - ids[i][y][x] = -1; - } else { - ids[i][y][x] = addItem( - typeArray[i][y][x], screenId, DESKTOP, x, y, profileId); - } - } - } - } - - return ids; - } - /** * Sets up a mock provider to load the provided layout by default, next time the layout loads */ @@ -479,10 +430,6 @@ public class LauncherModelHelper { public SQLiteDatabase getDb() { return mModelDbController.getDatabaseHelper().getWritableDatabase(); } - - public DatabaseHelper getHelper() { - return mModelDbController.getDatabaseHelper(); - } } public static boolean deleteContents(File dir) {