From 9988e9e1fd5518357d5db55b4e7449ad03ca6add Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Wed, 22 Mar 2023 06:27:22 -0700 Subject: [PATCH 01/16] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Id8fbed7faf52450df74992bffd44a7a26129ba3a --- quickstep/res/values-af/strings.xml | 10 ++++++---- quickstep/res/values-am/strings.xml | 4 ++++ quickstep/res/values-ar/strings.xml | 10 ++++++---- quickstep/res/values-as/strings.xml | 10 ++++++---- quickstep/res/values-az/strings.xml | 10 ++++++---- quickstep/res/values-b+sr+Latn/strings.xml | 10 ++++++---- quickstep/res/values-be/strings.xml | 10 ++++++---- quickstep/res/values-bg/strings.xml | 10 ++++++---- quickstep/res/values-bn/strings.xml | 4 ++++ quickstep/res/values-bs/strings.xml | 8 ++++++-- quickstep/res/values-ca/strings.xml | 10 ++++++---- quickstep/res/values-cs/strings.xml | 10 ++++++---- quickstep/res/values-da/strings.xml | 10 ++++++---- quickstep/res/values-de/strings.xml | 18 ++++++++++-------- quickstep/res/values-el/strings.xml | 4 ++++ quickstep/res/values-en-rAU/strings.xml | 4 ++++ quickstep/res/values-en-rCA/strings.xml | 2 ++ quickstep/res/values-en-rGB/strings.xml | 4 ++++ quickstep/res/values-en-rIN/strings.xml | 4 ++++ quickstep/res/values-en-rXC/strings.xml | 2 ++ quickstep/res/values-es-rUS/strings.xml | 6 +++++- quickstep/res/values-es/strings.xml | 10 ++++++---- quickstep/res/values-et/strings.xml | 10 ++++++---- quickstep/res/values-eu/strings.xml | 10 ++++++---- quickstep/res/values-fa/strings.xml | 10 ++++++---- quickstep/res/values-fi/strings.xml | 10 ++++++---- quickstep/res/values-fr-rCA/strings.xml | 10 ++++++---- quickstep/res/values-fr/strings.xml | 10 ++++++---- quickstep/res/values-gl/strings.xml | 10 ++++++---- quickstep/res/values-gu/strings.xml | 10 ++++++---- quickstep/res/values-hi/strings.xml | 10 ++++++---- quickstep/res/values-hr/strings.xml | 4 ++++ quickstep/res/values-hu/strings.xml | 10 ++++++---- quickstep/res/values-hy/strings.xml | 10 ++++++---- quickstep/res/values-in/strings.xml | 10 ++++++---- quickstep/res/values-is/strings.xml | 10 ++++++---- quickstep/res/values-it/strings.xml | 4 ++++ quickstep/res/values-iw/strings.xml | 10 ++++++---- quickstep/res/values-ja/strings.xml | 4 ++++ quickstep/res/values-ka/strings.xml | 4 ++++ quickstep/res/values-kk/strings.xml | 10 ++++++---- quickstep/res/values-km/strings.xml | 10 ++++++---- quickstep/res/values-kn/strings.xml | 10 ++++++---- quickstep/res/values-ko/strings.xml | 10 ++++++---- quickstep/res/values-ky/strings.xml | 10 ++++++---- quickstep/res/values-lo/strings.xml | 10 ++++++---- quickstep/res/values-lt/strings.xml | 10 ++++++---- quickstep/res/values-lv/strings.xml | 10 ++++++---- quickstep/res/values-mk/strings.xml | 10 ++++++---- quickstep/res/values-ml/strings.xml | 10 ++++++---- quickstep/res/values-mn/strings.xml | 10 ++++++---- quickstep/res/values-mr/strings.xml | 4 ++++ quickstep/res/values-ms/strings.xml | 10 ++++++---- quickstep/res/values-my/strings.xml | 10 ++++++---- quickstep/res/values-nb/strings.xml | 10 ++++++---- quickstep/res/values-ne/strings.xml | 10 ++++++---- quickstep/res/values-nl/strings.xml | 10 ++++++---- quickstep/res/values-or/strings.xml | 10 ++++++---- quickstep/res/values-pa/strings.xml | 10 ++++++---- quickstep/res/values-pl/strings.xml | 4 ++++ quickstep/res/values-pt-rPT/strings.xml | 4 ++++ quickstep/res/values-pt/strings.xml | 4 ++++ quickstep/res/values-ro/strings.xml | 10 ++++++---- quickstep/res/values-ru/strings.xml | 10 ++++++---- quickstep/res/values-si/strings.xml | 10 ++++++---- quickstep/res/values-sk/strings.xml | 10 ++++++---- quickstep/res/values-sl/strings.xml | 10 ++++++---- quickstep/res/values-sq/strings.xml | 10 ++++++---- quickstep/res/values-sr/strings.xml | 10 ++++++---- quickstep/res/values-sv/strings.xml | 10 ++++++---- quickstep/res/values-sw/strings.xml | 10 ++++++---- quickstep/res/values-ta/strings.xml | 10 ++++++---- quickstep/res/values-te/strings.xml | 10 ++++++---- quickstep/res/values-th/strings.xml | 10 ++++++---- quickstep/res/values-tl/strings.xml | 10 ++++++---- quickstep/res/values-tr/strings.xml | 10 ++++++---- quickstep/res/values-uk/strings.xml | 10 ++++++---- quickstep/res/values-ur/strings.xml | 4 ++++ quickstep/res/values-uz/strings.xml | 4 ++++ quickstep/res/values-vi/strings.xml | 10 ++++++---- quickstep/res/values-zh-rCN/strings.xml | 10 ++++++---- quickstep/res/values-zh-rHK/strings.xml | 10 ++++++---- quickstep/res/values-zh-rTW/strings.xml | 10 ++++++---- quickstep/res/values-zu/strings.xml | 10 ++++++---- 84 files changed, 467 insertions(+), 263 deletions(-) diff --git a/quickstep/res/values-af/strings.xml b/quickstep/res/values-af/strings.xml index ddd668c1e1..ec794ca9a8 100644 --- a/quickstep/res/values-af/strings.xml +++ b/quickstep/res/values-af/strings.xml @@ -53,6 +53,8 @@ "Swiep om terug te gaan" "Swiep van die linker- of regterrand na die middel van die skerm om na die vorige skerm terug te gaan." "Swiep met 2 vingers van die linker- of regterkant van die skerm af na die middel toe om terug te keer na die vorige skerm." + + "Maak seker dat jy van die onderrand van die skerm af opswiep." "Maak seker jy onderbreek nie voordat jy laat los nie." "Maak seker jy swiep reguit op." @@ -71,6 +73,8 @@ "Swiep om tussen programme te wissel" "Swiep van die onderkant van jou skerm af op, hou en laat los dan om tussen programme te wissel." "Swiep met 2 vingers op van die onderkant van jou skerm af, hou en laat los dan om tussen programme te wissel." + + "Gereed" "Klaar" "Instellings" @@ -114,10 +118,8 @@ "Kennisgewings" "Kitsinstellings" "Taakbalk" - - - - + "Taakbalk word gewys" + "Taakbalk is versteek" "Navigasiebalk" "Skuif na links bo" "Skuif na regs onder" diff --git a/quickstep/res/values-am/strings.xml b/quickstep/res/values-am/strings.xml index cce0b3c935..1698725982 100644 --- a/quickstep/res/values-am/strings.xml +++ b/quickstep/res/values-am/strings.xml @@ -53,6 +53,8 @@ "ወደኋላ ለመመለስ ያንሸራትቱ" "ወደ መጨረሻው ማያ ገጽ ለመመለስ ከግራ ወይም ከቀኝ ጠርዝ ወደ ማያ ገጹ መሃል ያንሸራትቱ።" "ወደ መጨረሻው ማያ ገጽ ለመመለስ በ2 ጣቶች ከግራ ወይም ከቀኝ ጠርዝ ወደ ማያ ገጹ መሃል ያንሸራትቱ።" + + "ከማያ ገጹ የታችኛው ጫፍ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።" "ከመልቀቅዎ በፊት ለአፍታ እንዳልቆሙ ያረጋግጡ።" "በቀጥታ ወደ ላይ ማንሸራተትዎን ያረጋግጡ።" @@ -71,6 +73,8 @@ "መተግበሪያዎችን ለመቀየር ያንሸራትቱ" "በመተግበሪያዎች መካከል ለመቀያየር ከማያ ገጽዎ ግርጌ ወደ ላይ ያንሸራትቱ፣ ይያዙ፣ ከዚያ ይለቀቁ።" "በመተግበሪያዎች መካከል ለመቀያየር ከማያ ገጽዎ ግርጌ ላይ በ2 ጣቶች ያንሸራትቱ፣ ይያዙ፣ ከዚያ ይለቀቁ።" + + "ሁሉም ዝግጁ" "ተጠናቋል" "ቅንብሮች" diff --git a/quickstep/res/values-ar/strings.xml b/quickstep/res/values-ar/strings.xml index 9e887e7028..097b3cced0 100644 --- a/quickstep/res/values-ar/strings.xml +++ b/quickstep/res/values-ar/strings.xml @@ -53,6 +53,8 @@ "مرِّر سريعًا للرجوع." "للرجوع إلى الشاشة السابقة، مرِّر سريعًا من الحافة اليسرى أو الحافة اليمنى إلى وسط الشاشة." "للرجوع إلى الشاشة السابقة، عليك التمرير سريعًا بإصبعين من الحافة اليسرى أو اليمنى نحو وسط الشاشة." + + "تأكّد من التمرير سريعًا من الحافة السفلى للشاشة إلى أعلاها." "تأكّد من عدم التوقّف قليلاً قبل رفع إصبعك." "تأكّد من التمرير إلى الأعلى مباشرةً." @@ -71,6 +73,8 @@ "التمرير سريعًا للتبديل بين التطبيقات" "للتبديل بين التطبيقات، مرِّر سريعًا من أسفل الشاشة لأعلاها مع تثبيت إصبعك ثم ارفعه." "للتبديل بين التطبيقات، مرِّر سريعًا من أسفل الشاشة إلى أعلاها بإصبعين مع تثبيتهما، ثم ارفعهما." + + "اكتمل التدريب على الإيماءة" "تم" "الإعدادات" @@ -114,10 +118,8 @@ "الإشعارات" "إعدادات سريعة" "شريط التطبيقات" - - - - + "تم إظهار شريط التطبيقات" + "تم إخفاء شريط التطبيقات" "شريط التنقل" "الانتقال إلى يمين الشاشة أو أعلاها" "الانتقال إلى يسار الشاشة أو أسفلها" diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml index f4a70e24d0..7ab5fd9e30 100644 --- a/quickstep/res/values-as/strings.xml +++ b/quickstep/res/values-as/strings.xml @@ -53,6 +53,8 @@ "উভতি যাবলৈ ছোৱাইপ কৰক" "অন্তিম স্ক্ৰীনখনলৈ উভতি যাবলৈ বাওঁ অথবা সোঁ প্ৰান্তৰৰ পৰা মাজলৈ ছোৱাইপ কৰক।" "অন্তিম স্ক্ৰীনখনলৈ উভতি যাবলৈ ২ টা আঙুলিৰে স্ক্ৰীনখনৰ বাওঁ অথবা সোঁ প্ৰান্তৰৰ পৰা মাজলৈ ছোৱাইপ কৰক।" + + "আপুনি স্ক্ৰীনৰ তলৰ প্ৰান্তৰ পৰা ওপৰলৈ ছোৱাইপ কৰাটো নিশ্চিত কৰক।" "আপুনি এৰি দিয়াৰ পূৰ্বে অলপো নোৰোৱাটো নিশ্চিত কৰক।" "আপুনি পোনকৈ ওপৰলৈ ছোৱাইপ কৰাটো নিশ্চিত কৰক।" @@ -71,6 +73,8 @@ "এপ্‌ সলনি কৰিবলৈ ছোৱাইপ কৰক" "এপ্‌সমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ আপোনাৰ স্ক্ৰীনৰ একেবাৰে তলৰ অংশৰ পৰা ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক আৰু তাৰ পাছত এৰি দিয়ক।" "এপ্‌সমূহ সালসলনিকৈ ব্যৱহাৰ কৰিবলৈ ২ টা আঙুলিৰে আপোনাৰ স্ক্ৰীনৰ একেবাৰে তলৰ অংশৰ পৰা ওপৰলৈ ছোৱাইপ কৰি ধৰি ৰাখক আৰু তাৰ পাছত এৰি দিয়ক।" + + "সম্পূৰ্ণ সাজু" "হ’ল" "ছেটিং" @@ -114,10 +118,8 @@ "জাননী" "ক্ষিপ্ৰ ছেটিং" "টাস্কবাৰ" - - - - + "টাস্কবাৰ দেখুওৱা হৈছে" + "টাস্কবাৰ লুকুৱাই থোৱা হৈছে" "নেভিগেশ্বনৰ দণ্ড" "ওপৰৰ বাঁওফাললৈ নিয়ক" "তলৰ সোঁফাললৈ নিয়ক" diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml index 42cc80e754..e93c6109d9 100644 --- a/quickstep/res/values-az/strings.xml +++ b/quickstep/res/values-az/strings.xml @@ -53,6 +53,8 @@ "Geri qayıtmaq üçün sürüşdürün" "Sonuncu ekrana qayıtmaq üçün ekranın sol, yaxud sağ kənarından mərkəzinə doğru sürüşdürün." "Sonuncu ekrana qayıtmaq üçün 2 barmaqla ekranın sol, yaxud sağ kənarından mərkəzinə doğru sürüşdürün." + + "Ekranın ən kənar aşağısından yuxarı sürüşdürün." "Buraxmazdan əvvəl durdurmadığınıza əmin olun." "Birbaşa yuxarı sürüşdürün." @@ -71,6 +73,8 @@ "Tətbiqi keçirmək üçün sürüşdürün" "Tətbiqlər arasında keçid üçün ekranın aşağısından yuxarı doğru sürüşdürüb saxlayın, sonra buraxın." "Tətbiqlər arasında keçid üçün 2 barmaqla ekranın aşağısından yuxarı doğru sürüşdürüb saxlayın, sonra buraxın." + + "Tam hazır" "Oldu" "Ayarlar" @@ -114,10 +118,8 @@ "Bildirişlər" "Sürətli Ayarlar" "Tapşırıq paneli" - - - - + "İşləmə paneli göstərilir" + "İşləmə paneli gizlədilib" "Naviqasiya paneli" "Yuxarı/sola köçürün" "Aşağı/sağa köçürün" diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml index f9315c3aa1..1cf07de94d 100644 --- a/quickstep/res/values-b+sr+Latn/strings.xml +++ b/quickstep/res/values-b+sr+Latn/strings.xml @@ -53,6 +53,8 @@ "Prevucite da biste se vratili unazad" "Da biste se vratili na poslednji ekran, prevucite od leve ili desne ivice do sredine ekrana." "Da biste se vratili na poslednji ekran, prevucite pomoću dva prsta od leve ili desne ivice do sredine ekrana." + + "Obavezno prevucite nagore od donje ivice ekrana." "Nikako ne stajte pre otpuštanja." "Obavezno prevucite pravo nagore." @@ -71,6 +73,8 @@ "Prevucite da biste zamenili aplikacije" "Za prelazak sa jedne aplikacije na drugu prevucite nagore od dna ekrana, zadržite, pa pustite." "Za prelazak između aplikacija prevucite pomoću dva prsta nagore od dna ekrana, zadržite, pa pustite." + + "To je to" "Gotovo" "Podešavanja" @@ -114,10 +118,8 @@ "Obaveštenja" "Brza podešavanja" "Traka zadataka" - - - - + "Traka zadataka je prikazana" + "Traka zadataka je skrivena" "Traka za navigaciju" "Premesti gore levo" "Premesti dole desno" diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml index a017a1cb69..1d7d01cfa0 100644 --- a/quickstep/res/values-be/strings.xml +++ b/quickstep/res/values-be/strings.xml @@ -53,6 +53,8 @@ "Правядзіце пальцам, каб вярнуцца" "Каб вярнуцца на папярэдні экран, правядзіце пальцам ад левага ці правага краю да цэнтра экрана." "Каб вярнуцца на папярэдні экран, правядзіце двума пальцамі ад левага ці правага краю ў цэнтр экрана." + + "Пераканайцеся, што праводзіце пальцам па экране знізу ўверх." "Пераканайцеся, што не затрымліваецеся перад адпусканнем." "Пераканайцеся, што праводзіце пальцам вертыкальна." @@ -71,6 +73,8 @@ "Правядзіце пальцам для пераключэння паміж праграмамі" "Каб пераключыцца на іншую праграму, правядзіце па экране знізу ўверх, патрымайце палец і адпусціце." "Каб пераключыцца на іншую праграму, правядзіце двума пальцамі знізу ўверх, патрымайце і адпусціце." + + "Гатова" "Гатова" "Налады" @@ -114,10 +118,8 @@ "Апавяшчэнні" "Хуткія налады" "Панэль задач" - - - - + "Панэль задач паказана" + "Панэль задач схавана" "Панэль навігацыі" "Перамясціць уверх/улева" "Перамясціць уніз/управа" diff --git a/quickstep/res/values-bg/strings.xml b/quickstep/res/values-bg/strings.xml index 89a5676af2..365caf6498 100644 --- a/quickstep/res/values-bg/strings.xml +++ b/quickstep/res/values-bg/strings.xml @@ -53,6 +53,8 @@ "Жест за връщане назад" "За да се върнете на предишния екран, прекарайте пръст от левия или десния край на екрана до средата." "За да се върнете към последния екран, прекарайте два пръста от левия или десния край на екрана до средата." + + "Трябва да прекарате пръст нагоре от долния край на екрана." "Не задържайте, преди да вдигнете пръста си." "Трябва да прекарате пръст право нагоре." @@ -71,6 +73,8 @@ "Жест за превключване между приложенията" "За превключване прекарайте пръст нагоре от долната част на екрана, задръжте и освободете" "За превключване на прил. плъзнете 2 пръста нагоре от долната част на екрана, задръжте и освободете." + + "Готово" "Готово" "Настройки" @@ -114,10 +118,8 @@ "Известия" "Бързи настройки" "Лента на задачите" - - - - + "Лентата на задачите се показва" + "Лентата на задачите е скрита" "Лента за навигация" "Преместване горе/вляво" "Преместване долу/вдясно" diff --git a/quickstep/res/values-bn/strings.xml b/quickstep/res/values-bn/strings.xml index 5d8314ca9f..c0dcecf236 100644 --- a/quickstep/res/values-bn/strings.xml +++ b/quickstep/res/values-bn/strings.xml @@ -53,6 +53,8 @@ "ফিরে যেতে সোয়াইপ করুন" "শেষের স্ক্রিনে ফিরে যেতে, ডান বা বাঁ প্রান্ত থেকে স্ক্রিনের মাঝখান পর্যন্ত সোয়াইপ করুন।" "শেষ স্ক্রিনে ফিরতে, বাম বা ডান প্রান্ত থেকে স্ক্রিনের মাঝামাঝি পর্যন্ত ২টি আঙুল দিয়ে সোয়াইপ করুন।" + + "স্ক্রিনের নিচের প্রান্ত থেকে আপনি সোয়াইপ করেছেন কিনা ভাল করে দেখে নিন।" "আঙুল তুলে নেওয়ার আগে আপনি যাতে পজ না করেন সেটি ভাল করে দেখে নিন।" "আপনি উপরের দিকে সোজাসুজি সোয়াইপ করেছেন কিনা ভাল করে দেখে নিন।" @@ -71,6 +73,8 @@ "একটি অ্যাপ থেকে অন্য অ্যাপে যেতে সোয়াইপ করুন" "একটি অ্যাপ থেকে অন্যটিতে পাল্টাতে, স্ক্রিনের নিচ থেকে উপরে সোয়াইপ করে ধরে রাখুন, তারপরে ছেড়ে দিন।" "একটি থেকে অন্য অ্যাপে পাল্টাতে, ২টি আঙুল দিয়ে স্ক্রিনের নিচ থেকে উপরে সোয়াইপ করে ধরে রেখে ছেড়ে দিন।" + + "সব প্রস্তুত" "সম্পূর্ণ হয়েছে" "সেটিংস" diff --git a/quickstep/res/values-bs/strings.xml b/quickstep/res/values-bs/strings.xml index 43d55ca32b..f03c2b6683 100644 --- a/quickstep/res/values-bs/strings.xml +++ b/quickstep/res/values-bs/strings.xml @@ -53,6 +53,8 @@ "Prevucite da se vratite" "Da se vratite na posljednji ekran, prevucite s lijevog ili desnog ruba prema sredini ekrana." "Da se vratite na posljednji ekran, prevucite s 2 prsta od lijevog ili desnog ruba do sredine ekrana." + + "Trebate prevući prema gore s donjeg ruba ekrana." "Obratite pažnju da ne zastanete prije puštanja." "Trebate prevući ravno prema gore." @@ -71,6 +73,8 @@ "Prevucite da prebacujete između aplikacija" "Da prebacujete između aplikacija, prevucite s dna ekrana prema gore, zadržite, a zatim pustite." "Da se prebacujete između aplikacija, prevucite s 2 prsta od dna ekrana, zadržite, a zatim pustite." + + "Sve je spremno" "Gotovo" "Postavke" @@ -114,8 +118,8 @@ "Obavještenja" "Brze postavke" "Traka zadataka" - "Traka sa zadacima prikazana" - "Traka sa zadacima skrivena" + "Traka zadataka je prikazana" + "Traka zadataka je sakrivena" "Navigaciona traka" "Premjesti gore lijevo" "Premjesti dolje desno" diff --git a/quickstep/res/values-ca/strings.xml b/quickstep/res/values-ca/strings.xml index 4502c8459d..9b9e002e89 100644 --- a/quickstep/res/values-ca/strings.xml +++ b/quickstep/res/values-ca/strings.xml @@ -53,6 +53,8 @@ "Llisca per anar enrere" "Per tornar a la darrera pantalla, llisca des de la vora esquerra o dreta cap al centre de la pantalla." "Per tornar a la pantalla anterior, llisca amb dos dits des de l\'extrem esquerre o dret cap al centre de la pantalla." + + "Assegura\'t de lliscar des de la vora inferior de la pantalla." "Assegura\'t de no aturar-te abans de deixar anar." "Assegura\'t de lliscar directament cap amunt." @@ -71,6 +73,8 @@ "Llisca per canviar d\'aplicació" "Per canviar entre aplicacions, llisca cap amunt des de la part inferior, mantén premut i deixa anar." "Per canviar entre apps, llisca amb dos dits cap amunt des de la part inferior, mantén i deixa anar." + + "Tot a punt" "Fet" "Configuració" @@ -114,10 +118,8 @@ "Notificacions" "Config. ràpida" "Barra de tasques" - - - - + "Es mostra la Barra de tasques" + "S\'ha amagat la Barra de tasques" "Barra de navegació" "Mou a la part superior o a l\'esquerra" "Mou a la part inferior o a la dreta" diff --git a/quickstep/res/values-cs/strings.xml b/quickstep/res/values-cs/strings.xml index 1a4537bcaa..bea0fb633c 100644 --- a/quickstep/res/values-cs/strings.xml +++ b/quickstep/res/values-cs/strings.xml @@ -53,6 +53,8 @@ "Přejetím prstem se vrátíte zpět" "K návratu na poslední obrazovku přejeďte prstem z levého nebo pravého okraje obrazovky doprostřed." "Pokud se chcete vrátit na poslední obrazovku, přejeďte dvěma prsty z levého nebo pravého okraje doprostřed obrazovky." + + "Přejeďte prstem nahoru z dolního okraje obrazovky." "Před zdvihnutím prstu nedělejte pauzu." "Přejeďte prstem přímo nahoru." @@ -71,6 +73,8 @@ "Přepínání aplikací přejetím prstem" "Přepínání mezi aplikacemi: Přejeďte nahoru z dolního okraje obrazovky, podržte obrazovku a uvolněte." "Přepínání mezi aplikacemi: Přejeďte dvěma prsty nahoru z dolního okraje obrazovky, podržte obrazovku a uvolněte." + + "Vše je nastaveno" "Hotovo" "Nastavení" @@ -114,10 +118,8 @@ "Oznámení" "Rychlé nastavení" "Panel aplikací" - - - - + "Panel aplikací je zobrazen" + "Panel aplikací je skrytý" "Navigační panel" "Přesunout doleva nahoru" "Přesunout doprava dolů" diff --git a/quickstep/res/values-da/strings.xml b/quickstep/res/values-da/strings.xml index 3d1ca914ed..653828a827 100644 --- a/quickstep/res/values-da/strings.xml +++ b/quickstep/res/values-da/strings.xml @@ -53,6 +53,8 @@ "Stryg for at gå tilbage" "Stryg mod midten af skærmen fra venstre eller højre kant for at gå tilbage til den seneste skærm." "Du kan gå tilbage til forrige skærm ved at stryge fra venstre eller højre kant mod midten af skærmen med 2 fingre." + + "Stryg opad fra bunden af skærmen." "Undlad at holde fingeren stille, indtil du løfter fingeren." "Stryg lige opad." @@ -71,6 +73,8 @@ "Stryg for at skifte app" "Skift mellem apps ved at stryge opad fra bunden af skærmen, holde fingeren stille og løfte den." "Skift mellem apps ved at stryge opad fra bunden af skærmen med 2 fingre, holde dem nede og slippe." + + "Så er du klar" "Luk" "Indstillinger" @@ -114,10 +118,8 @@ "Notifikationer" "Kvikmenu" "Proceslinje" - - - - + "Proceslinjen vises" + "Proceslinjen er skjult" "Navigationslinje" "Flyt til toppen eller venstre side" "Flyt til bunden eller højre side" diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml index d5bdff73c9..72e7a4272f 100644 --- a/quickstep/res/values-de/strings.xml +++ b/quickstep/res/values-de/strings.xml @@ -53,12 +53,14 @@ "Zum Zurückgehen wischen" "Wenn du zum letzten Bildschirm zurückgehen möchtest, wische vom linken oder rechten Rand zur Mitte." "Wenn du zum letzten Bildschirm zurückgehen möchtest, wische mit zwei Fingern vom linken oder rechten Displayrand zur Mitte." + + "Wische vom unteren Displayrand nach oben." "Achte darauf, nicht innezuhalten, bevor du loslässt." "Wische gerade nach oben." - "Du hast die „Startbildschirm“-Touch-Geste abgeschlossen. Gleich erfährst du, wie du zurückgelangst." - "Du hast die „Startbildschirm“-Touch-Geste abgeschlossen." - "Zum Startbildschirm gehen" + "Du hast die Touch-Geste zum Aufrufen des Startbildschirms abgeschlossen. Gleich erfährst du, wie du zurückgelangst." + "Du hast die Touch-Geste zum Aufrufen des Startbildschirms abgeschlossen." + "Den Startbildschirm aufrufen" "Wenn du zum Startbildschirm gehen möchtest, wische einfach vom unteren Displayrand nach oben." "Wische mit zwei Fingern vom unteren Displayrand nach oben. So gelangst du immer zum Startbildschirm." "Zum Startbildschirm" @@ -71,6 +73,8 @@ "Zwischen Apps wechseln" "Wische auf dem Display von unten nach oben, halte den Finger gedrückt und lass dann los, um zwischen Apps zu wechseln." "Wische zum App-Wechseln mit zwei Fingern vom unteren Displayrand nach oben, halte und lass dann los." + + "Fertig" "Fertig" "Einstellungen" @@ -89,7 +93,7 @@ "Für „Geteilter Bildschirm“ auf weitere App tippen" "Für geteilten Bildschirm andere App auswählen" "Die App oder deine Organisation lässt diese Aktion nicht zu" - "Navigationstutorial überspringen?" + "Tutorial zur Bedienung überspringen?" "Du findest es später auch in der %1$s App" "Abbrechen" "Überspringen" @@ -114,10 +118,8 @@ "Benachrichtigungen" "Schnelleinstellungen" "Taskleiste" - - - - + "Taskleiste eingeblendet" + "Taskleiste ausgeblendet" "Navigationsleiste" "Nach oben / Nach links verschieben" "Nach unten / Nach rechts verschieben" diff --git a/quickstep/res/values-el/strings.xml b/quickstep/res/values-el/strings.xml index 4ed34ca758..e6629e8336 100644 --- a/quickstep/res/values-el/strings.xml +++ b/quickstep/res/values-el/strings.xml @@ -53,6 +53,8 @@ "Σύρετε για επιστροφή" "Για να επιστρέψετε στην τελευτ. οθόνη, σύρετε από το αριστ. ή το δεξί άκρο προς το μέσο της οθόνης." "Για να επιστρέψετε στην προηγούμενη οθόνη, σύρετε με 2 δάχτυλα από την αριστερή ή δεξιά άκρη προς τη μέση της οθόνης." + + "Φροντίστε να σύρετε προς τα επάνω από το κάτω άκρο της οθόνης." "Φροντίστε να μην κάνετε παύση προτού απομακρύνετε τα δάχτυλά σας." "Φροντίστε να σύρετε απευθείας προς τα επάνω." @@ -71,6 +73,8 @@ "Σύρετε για εναλλαγή εφαρμογών" "Για εναλλαγή εφαρμογών, σύρετε προς τα πάνω από το κάτω μέρος της οθόνης, πατήστε παρατεταμένα και μετά αφήστε." "Για εναλλαγή μεταξύ εφαρμογών, σύρετε από κάτω προς τα πάνω με 2 δάχτ., κρατήστε και έπειτα αφήστε." + + "Όλα είναι έτοιμα" "Τέλος" "Ρυθμίσεις" diff --git a/quickstep/res/values-en-rAU/strings.xml b/quickstep/res/values-en-rAU/strings.xml index 58d643c5b7..8961299ca0 100644 --- a/quickstep/res/values-en-rAU/strings.xml +++ b/quickstep/res/values-en-rAU/strings.xml @@ -53,6 +53,8 @@ "Swipe to go back" "To go back to the last screen, swipe from the left or right edge to the middle of the screen." "To go back to the last screen, swipe with two fingers from the left or right edge to the middle of the screen." + + "Make sure that you swipe up from the bottom edge of the screen." "Make sure that you don\'t pause before letting go." "Make sure that you swipe straight up." @@ -71,6 +73,8 @@ "Swipe to switch apps" "To switch between apps, swipe up from the bottom of your screen, hold, then release." "To switch between apps, swipe up with two fingers from the bottom of your screen, hold, then release." + + "All set" "Done" "Settings" diff --git a/quickstep/res/values-en-rCA/strings.xml b/quickstep/res/values-en-rCA/strings.xml index 1556031cd1..e45ec2178f 100644 --- a/quickstep/res/values-en-rCA/strings.xml +++ b/quickstep/res/values-en-rCA/strings.xml @@ -53,6 +53,7 @@ "Swipe to go back" "To go back to the last screen, swipe from the left or right edge to the middle of the screen." "To go back to the last screen, swipe with 2 fingers from the left or right edge to the middle of the screen." + "Go back" "Make sure you swipe up from the bottom edge of the screen." "Make sure you don\'t pause before letting go." "Make sure you swipe straight up." @@ -71,6 +72,7 @@ "Swipe to switch apps" "To switch between apps, swipe up from the bottom of your screen, hold, then release." "To switch between apps, swipe up with 2 fingers from the bottom of your screen, hold, then release." + "Switch apps" "All set" "Done" "Settings" diff --git a/quickstep/res/values-en-rGB/strings.xml b/quickstep/res/values-en-rGB/strings.xml index 58d643c5b7..8961299ca0 100644 --- a/quickstep/res/values-en-rGB/strings.xml +++ b/quickstep/res/values-en-rGB/strings.xml @@ -53,6 +53,8 @@ "Swipe to go back" "To go back to the last screen, swipe from the left or right edge to the middle of the screen." "To go back to the last screen, swipe with two fingers from the left or right edge to the middle of the screen." + + "Make sure that you swipe up from the bottom edge of the screen." "Make sure that you don\'t pause before letting go." "Make sure that you swipe straight up." @@ -71,6 +73,8 @@ "Swipe to switch apps" "To switch between apps, swipe up from the bottom of your screen, hold, then release." "To switch between apps, swipe up with two fingers from the bottom of your screen, hold, then release." + + "All set" "Done" "Settings" diff --git a/quickstep/res/values-en-rIN/strings.xml b/quickstep/res/values-en-rIN/strings.xml index 58d643c5b7..8961299ca0 100644 --- a/quickstep/res/values-en-rIN/strings.xml +++ b/quickstep/res/values-en-rIN/strings.xml @@ -53,6 +53,8 @@ "Swipe to go back" "To go back to the last screen, swipe from the left or right edge to the middle of the screen." "To go back to the last screen, swipe with two fingers from the left or right edge to the middle of the screen." + + "Make sure that you swipe up from the bottom edge of the screen." "Make sure that you don\'t pause before letting go." "Make sure that you swipe straight up." @@ -71,6 +73,8 @@ "Swipe to switch apps" "To switch between apps, swipe up from the bottom of your screen, hold, then release." "To switch between apps, swipe up with two fingers from the bottom of your screen, hold, then release." + + "All set" "Done" "Settings" diff --git a/quickstep/res/values-en-rXC/strings.xml b/quickstep/res/values-en-rXC/strings.xml index 6e3ad0f78d..1c08788b5a 100644 --- a/quickstep/res/values-en-rXC/strings.xml +++ b/quickstep/res/values-en-rXC/strings.xml @@ -53,6 +53,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‎‎‎‏‏‏‎‎‏‏‏‏‎‎‏‏‎‏‏‏‏‏‎‏‎‎‏‎‎‎‎‏‎‏‏‎‎‎Swipe to go back‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‏‎‎‎‏‏‏‏‎‎‏‏‎‎‎‏‏‏‎‎‎‎‎‎‏‎‎‏‏‏‎‎‎‎‏‏‎‎‎‏‏‏‎‏‎‏‏‎‏‎To go back to the last screen, swipe from the left or right edge to the middle of the screen.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‎‎‎‎‎‏‎‎‎‏‏‏‏‎‏‏‎‏‎‏‎‏‏‎‏‏‎‎‎‏‎‎‏‎‎‎‎‎‎‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎To go back to the last screen, swipe with 2 fingers from the left or right edge to the middle of the screen.‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‏‏‎‏‎‎‎‏‏‎‎‎‏‏‎‏‏‎‏‏‏‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‎‎‏‏‎‏‎Go back‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‎‏‏‎‏‎‎‏‎‎Make sure you swipe up from the bottom edge of the screen.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎Make sure you don\'t pause before letting go.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎Make sure you swipe straight up.‎‏‎‎‏‎" @@ -71,6 +72,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‎‏‏‎‎‎‏‎‏‎‏‏‎‎‎‏‏‏‎‎‏‏‎‏‏‏‎‏‏‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎Swipe to switch apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‎‏‏‏‎‏‎‎‏‏‏‎‎‏‏‎‏‏‏‎‎‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‎To switch between apps, swipe up from the bottom of your screen, hold, then release.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‎‏‎‎‎‏‎‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎To switch between apps, swipe up with 2 fingers from the bottom of your screen, hold, then release.‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‏‏‎‏‎‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‏‏‎‏‏‏‎‎‎‎‎Switch apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‏‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‎‏‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‎‏‏‎‎‎All set‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‏‏‎‏‏‏‏‎‎‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‏‎‏‏‏‎‎‎‏‏‎‏‎‎Done‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‎‎‏‏‏‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‎‎Settings‎‏‎‎‏‎" diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml index 220f6435f7..2bc3712b6f 100644 --- a/quickstep/res/values-es-rUS/strings.xml +++ b/quickstep/res/values-es-rUS/strings.xml @@ -53,6 +53,8 @@ "Desliza para ir atrás" "Desliza el dedo desde el borde derecho o izquierdo hasta el centro para volver a la última pantalla." "Para volver la pantalla anterior, desliza 2 dedos desde el borde izquierdo o derecho hacia el centro de la pantalla." + + "Desliza el dedo hacia arriba desde el borde inferior de la pantalla." "Asegúrate de no detenerte antes de soltarlo." "Desliza el dedo directamente hacia arriba." @@ -71,6 +73,8 @@ "Desliza para cambiar de app" "Desliza el dedo hacia arriba desde la parte inferior, mantenlo presionado y suéltalo." "Para alternar entre apps, desliza el dedo hacia arriba, mantén presionado y, luego, suelta." + + "Listo" "Listo" "Configuración" @@ -100,7 +104,7 @@ "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 conf. para ocultar automát. la Barra de tareas" + "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" diff --git a/quickstep/res/values-es/strings.xml b/quickstep/res/values-es/strings.xml index 66dc8e84f6..ce44dfcb52 100644 --- a/quickstep/res/values-es/strings.xml +++ b/quickstep/res/values-es/strings.xml @@ -53,6 +53,8 @@ "Desliza para ir atrás" "Para volver a la última pantalla, desliza el dedo desde un lateral de la pantalla hasta el centro." "Para volver a la pantalla anterior, desliza dos dedos desde el borde izquierdo o derecho hacia el centro de la pantalla." + + "Asegúrate de deslizar el dedo hacia arriba desde el borde inferior de la pantalla." "No hagas ninguna pausa antes de levantar el dedo." "Asegúrate de deslizar el dedo hacia arriba." @@ -71,6 +73,8 @@ "Desliza el dedo para cambiar de aplicación" "Para cambiar de aplicación, desliza el dedo hacia arriba desde el borde inferior, mantenlo pulsado y suéltalo" "Para cambiar de app, desliza dos dedos hacia arriba desde el borde inferior, mantén pulsada la pantalla y, luego, suelta." + + "Todo listo" "Hecho" "Ajustes" @@ -114,10 +118,8 @@ "Notificaciones" "Ajustes rápidos" "Barra de tareas" - - - - + "Barra de tareas visible" + "Barra de tareas oculta" "Barra de navegación" "Mover arriba/a la izquierda" "Mover abajo/a la derecha" diff --git a/quickstep/res/values-et/strings.xml b/quickstep/res/values-et/strings.xml index c3296c72ce..de761ce2bf 100644 --- a/quickstep/res/values-et/strings.xml +++ b/quickstep/res/values-et/strings.xml @@ -53,6 +53,8 @@ "Tagasiliikumiseks pühkige" "Eelmisele ekraanikuvale naasmiseks pühkige vasakust või paremast servast ekraanikuva keskele." "Eelmisele ekraanikuvale naasmiseks pühkige vasakust või paremast servast kahe sõrmega ekraanikuva keskele." + + "Pühkige kindlasti ekraanikuva alumisest servast üles." "Veenduge, et te enne vabastamist liigutust ei peataks." "Pühkige kindlasti otse üles." @@ -71,6 +73,8 @@ "Pühkige rakenduste vahetamiseks" "Rakenduste vahel vahetamiseks pühkige ekraanikuva alaosast üles, hoidke ja seejärel vabastage." "Rakenduste vahel vahetamiseks pühkige kuva alaosast kahe sõrmega üles, hoidke ja seejärel vabastage." + + "Valmis" "Valmis" "Seaded" @@ -114,10 +118,8 @@ "Märguanded" "Kiirseaded" "Tegumiriba" - - - - + "Tegumiriba on kuvatud" + "Tegumiriba on peidetud" "Navigeerimisriba" "Teisalda üles/vasakule" "Teisalda alla/paremale" diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml index 12f6b5574a..e4205f576d 100644 --- a/quickstep/res/values-eu/strings.xml +++ b/quickstep/res/values-eu/strings.xml @@ -53,6 +53,8 @@ "Pasatu hatza atzera egiteko" "Aurreko pantailara itzultzeko, pasatu hatza pantailaren ezkerreko edo eskuineko ertzetik erdialdera." "Aurreko pantailara itzultzeko, pasatu bi hatz pantailaren ezkerreko edo eskuineko ertzetik erdialdera." + + "Ziurtatu hatza pantailaren beheko ertzetik gora pasatzen duzula." "Ziurtatu askatu aurretik ez duzula hatza gelditzen." "Ziurtatu hatza zuzen pasatzen duzula gora." @@ -71,6 +73,8 @@ "Pasatu hatza aplikazioa aldatzeko" "Aplikazio batetik bestera joateko, pasatu hatza pantailaren behealdetik gora, eduki pantaila sakatuta eta altxatu hatza." "Aplikazio batetik bestera joateko, pasatu bi hatz pantailaren behealdetik gora, eduki pantaila sakatuta eta altxatu hatza." + + "Dena prest" "Eginda" "Ezarpenak" @@ -114,10 +118,8 @@ "Jakinarazpenak" "Ezarpen bizkorrak" "Zereginen barra" - - - - + "Zereginen barra ikusgai dago" + "Zereginen barra itxita dago" "Nabigazio-barra" "Eraman gora, ezkerretara" "Eraman behera, eskuinetara" diff --git a/quickstep/res/values-fa/strings.xml b/quickstep/res/values-fa/strings.xml index a20577851f..1c60b327b1 100644 --- a/quickstep/res/values-fa/strings.xml +++ b/quickstep/res/values-fa/strings.xml @@ -53,6 +53,8 @@ "تند بکشید تا به‌عقب برگردید" "برای برگشتن به صفحه آخر، از لبه سمت چپ یا راست تند به وسط صفحه بکشید." "برای برگشتن به صفحه قبلی، با ۲ انگشت از لبه سمت چپ یا راست تند به‌وسط صفحه بکشید." + + "دقت کنید که از لبه پایینی صفحه تند به بالا بکشید." "دقت کنید که تا قبل‌از رها کردن، کشیدن را متوقف نکنید." "دقت کنید که مستقیماً تند به بالا بکشید." @@ -71,6 +73,8 @@ "برای جابه‌جا شدن بین برنامه‌ها، تند به‌بالا بکشید" "برای جابه‌جا شدن بین برنامه‌ها، از پایین صفحه تند به‌بالا بکشید، نگه دارید، و سپس رها کنید." "برای جابه‌جایی بین برنامه‌ها، با ۲ انگشت از پایین صفحه تند به‌بالا بکشید، نگه دارید، و سپس رها کنید." + + "همه چیز آماده است" "تمام" "تنظیمات" @@ -114,10 +118,8 @@ "اعلان‌ها" "تنظیمات فوری" "نوار وظیفه" - - - - + "نوار وظیفه نمایان است" + "نوار وظیفه پنهان است" "نوار پیمایش" "انتقال به بالا/ چپ" "انتقال به پایین/ راست" diff --git a/quickstep/res/values-fi/strings.xml b/quickstep/res/values-fi/strings.xml index 63a2e12947..a99d4c05bd 100644 --- a/quickstep/res/values-fi/strings.xml +++ b/quickstep/res/values-fi/strings.xml @@ -53,6 +53,8 @@ "Siirry takaisin pyyhkäisemällä" "Voit palata edelliseen näkymään pyyhkäisemällä näytön vasemmasta tai oikeasta reunasta keskelle." "Palaa takaisin edelliselle näytölle pyyhkäisemällä kahdella sormella vasemmasta tai oikeasta reunasta näytön keskikohtaan." + + "Pyyhkäise ylös näytön alareunasta." "Varo keskeyttämästä ennen kuin päästät irti." "Muista pyyhkäistä suoraan ylöspäin." @@ -71,6 +73,8 @@ "Vaihda sovellusta pyyhkäisemällä" "Voit vaihtaa sovelluksesta toiseen pyyhkäisemällä ylöspäin näytön alareunasta ja päästämällä sitten irti." "Vaihda sovelluksia pyyhkäisemällä ylös näytön alareunasta kahdella sormella ja päästä sitten irti." + + "Valmista" "Valmis" "Asetukset" @@ -114,10 +118,8 @@ "Ilmoitukset" "Pika-asetukset" "Tehtäväpalkki" - - - - + "Tehtäväpalkki näkyvissä" + "Tehtäväpalkki piilotettu" "Navigointipalkki" "Siirrä ylös tai vasemmalle" "Siirrä alas tai oikealle" diff --git a/quickstep/res/values-fr-rCA/strings.xml b/quickstep/res/values-fr-rCA/strings.xml index aaed5cab31..594b9719b3 100644 --- a/quickstep/res/values-fr-rCA/strings.xml +++ b/quickstep/res/values-fr-rCA/strings.xml @@ -53,6 +53,8 @@ "Balayer l\'écran pour revenir en arrière" "Pour revenir à l\'écran précédent, balayez l\'écran de l\'extrémité gauche ou droite vers le centre." "Pour revenir à l\'écran précédent, balayez l\'écran avec deux doigts du bord gauche ou droit jusqu\'au centre." + + "Assurez-vous de balayer l\'écran à partir de l\'extrémité inférieure vers le haut." "Assurez-vous de ne pas interrompre le geste avant de lever le doigt." "Assurez-vous de balayer l\'écran en ligne droite vers le haut." @@ -71,6 +73,8 @@ "Balayer pour basculer entre les applications" "Pour passer d\'une application à l\'autre, balayez l\'écran de bas en haut, maintenez la pression, puis relâchez." "Pour changer d\'appli, balayez l\'écran de bas en haut avec deux doigts, maintenez-les et relâchez-les." + + "Terminé" "OK" "Paramètres" @@ -114,10 +118,8 @@ "Notifications" "Paramètres rapides" "Barre des tâches" - - - - + "Barre des tâches affichée" + "Barre des tâches masquée" "Barre de navigation" "Déplacer vers le coin supérieur gauche de l\'écran" "Déplacer vers le coin inférieur droit de l\'écran" diff --git a/quickstep/res/values-fr/strings.xml b/quickstep/res/values-fr/strings.xml index 6613abe761..ea82599c28 100644 --- a/quickstep/res/values-fr/strings.xml +++ b/quickstep/res/values-fr/strings.xml @@ -53,6 +53,8 @@ "Balayez l\'écran pour revenir en arrière" "Pour revenir à l\'écran précédent, balayez l\'écran depuis le bord droit ou gauche jusqu\'au centre." "Pour revenir au dernier écran, balayez l\'écran avec deux doigts en partant du bord gauche ou droit vers le milieu." + + "Veillez à balayer l\'écran de bas en haut." "Veillez à ne pas marquer de pause dans votre geste avant de relever le doigt." "Veillez à balayer l\'écran vers le haut." @@ -71,6 +73,8 @@ "Balayez pour passer d\'une appli à l\'autre" "Pour changer d\'appli, balayez l\'écran de bas en haut, appuyez de manière prolongée et relâchez." "Pour changer d\'appli, balayez l\'écran de bas en haut avec deux doigts, maintenez appuyé et relâchez." + + "Vous avez terminé" "OK" "Paramètres" @@ -114,10 +118,8 @@ "Notifications" "Réglages rapides" "Barre des tâches" - - - - + "Barre des tâches affichée" + "Barre des tâches masquée" "Barre de navigation" "Déplacer en haut ou à gauche" "Déplacer en bas ou à droite" diff --git a/quickstep/res/values-gl/strings.xml b/quickstep/res/values-gl/strings.xml index 966c4115da..5efef73722 100644 --- a/quickstep/res/values-gl/strings.xml +++ b/quickstep/res/values-gl/strings.xml @@ -53,6 +53,8 @@ "Pasa o dedo para volver" "Para volver á última pantalla, pasa o dedo cara ao medio desde o bordo dereito ou esquerdo." "Para volver á última pantalla, pasa 2 dedos desde o bordo esquerdo ou o dereito ata a metade da pantalla." + + "Asegúrate de pasar o dedo cara arriba desde o bordo inferior da pantalla." "Asegúrate de non facer unha pausa antes de avanzar." "Asegúrate de pasar o dedo cara arriba cun movemento vertical." @@ -71,6 +73,8 @@ "Pasa o dedo para cambiar de aplicación" "Para cambiar de aplicación, pasa o dedo cara arriba desde a parte inferior da pantalla, mantén premido e levanta o dedo." "Para cambiar de app, pasa 2 dedos cara arriba desde abaixo, mantén premida a pantalla e levántaos." + + "Todo listo" "Feito" "Configuración" @@ -114,10 +118,8 @@ "Notificacións" "Configuración rápida" "Barra de tarefas" - - - - + "Estase mostrando a barra de tarefas" + "Non se está mostrando a barra de tarefas" "Barra de navegación" "Mover á parte superior ou á esquerda" "Mover á parte inferior ou á dereita" diff --git a/quickstep/res/values-gu/strings.xml b/quickstep/res/values-gu/strings.xml index e915e3131c..86e67502cf 100644 --- a/quickstep/res/values-gu/strings.xml +++ b/quickstep/res/values-gu/strings.xml @@ -53,6 +53,8 @@ "પાછળ જવા માટે સ્વાઇપ કરો" "છેલ્લી સ્ક્રીન પર પાછા જવા, ડાબી કે જમણી કિનારીએથી સ્ક્રીનના મધ્ય ભાગ સુધી સ્વાઇપ કરો." "છેલ્લી સ્ક્રીન પર પાછા જવા માટે, 2 આંગળી વડે ડાબી કે જમણી કિનારીએથી સ્ક્રીનના મધ્ય ભાગ સુધી સ્વાઇપ કરો." + + "ખાતરી કરો કે તમે સ્ક્રીનની નીચેની કિનારીએથી ઉપરની તરફ સ્વાઇપ કરો છો." "ખાતરી કરો કે તમે આંગળી ઊંચકી લેતા પહેલાં સ્વાઇપ કરવાનું થોભાવતા નથી." "ખાતરી કરો કે તમે સીધું ઉપરની તરફ સ્વાઇપ કરો છો." @@ -71,6 +73,8 @@ "ઍપ સ્વિચ કરવા સ્વાઇપ કરો" "એક ઍપ પરથી બીજી ઍપ પર સ્વિચ કરવા માટે, તમારી સ્ક્રીનના નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરીને, થોડીવાર દબાવી રાખો, પછી છોડી દો." "એક ઍપ પરથી બીજી ઍપ પર સ્વિચ કરવા માટે, 2 આંગળી વડે તમારી સ્ક્રીનના સૌથી નીચેના ભાગથી ઉપરની તરફ સ્વાઇપ કરીને, થોડીવાર દબાવી રાખો, પછી છોડી દો." + + "બધું સેટ થઈ ગયું" "થઈ ગયું" "સેટિંગ" @@ -114,10 +118,8 @@ "નોટિફિકેશન" "ઝડપી સેટિંગ" "ટાસ્કબાર" - - - - + "ટાસ્કબાર બતાવવામાં આવ્યો" + "ટાસ્કબાર છુપાવવામાં આવ્યો" "નૅવિગેશન બાર" "સૌથી ઉપર ડાબી બાજુએ ખસેડો" "સૌથી નીચે જમણી બાજુએ ખસેડો" diff --git a/quickstep/res/values-hi/strings.xml b/quickstep/res/values-hi/strings.xml index 5b56e7a144..5233635b6f 100644 --- a/quickstep/res/values-hi/strings.xml +++ b/quickstep/res/values-hi/strings.xml @@ -53,6 +53,8 @@ "पिछली स्क्रीन पर वापस जाने के लिए स्वाइप करें" "पिछली स्क्रीन पर वापस जाने के लिए, स्क्रीन के बाएं या दाएं किनारे से बीचों-बीच तक स्वाइप करें." "पिछली स्क्रीन पर वापस जाने के लिए, स्क्रीन के बाएं या दाएं किनारे से स्क्रीन के बीच तक दो उंगलियों से स्वाइप करें." + + "देख लें कि आप स्क्रीन के निचले किनारे से ऊपर की ओर स्वाइप कर रहे हों." "देख लें कि आप स्क्रीन से अपनी उंगली उठाने से पहले, इसे कहीं न रोक रहे हों." "देख लें कि आप ऊपर की ओर बिलकुल सीधे स्वाइप कर रहे हों." @@ -71,6 +73,8 @@ "एक ऐप्लिकेशन से दूसरे पर जाने के लिए स्वाइप करें" "एक ऐप से दूसरे पर जाने के लिए, स्क्रीन पर नीचे से ऊपर की ओर स्वाइप करें, दबाकर रखें, और फिर छोड़ दें." "इन ऐप के बीच स्विच करने के लिए, दो उंगलियों से नीचे से ऊपर स्वाइप करें, होल्ड करें, और फिर छोड़ें." + + "आप पूरी तरह तैयार हैं" "हो गया" "सेटिंग" @@ -114,10 +118,8 @@ "सूचनाएं" "फटाफट सेटिंग" "टास्कबार" - - - - + "टास्कबार दिखाया गया" + "टास्कबार छिपाया गया" "नेविगेशन बार" "ऊपर/बाईं तरफ़ ले जाएं" "नीचे/दाईं तरफ़ ले जाएं" diff --git a/quickstep/res/values-hr/strings.xml b/quickstep/res/values-hr/strings.xml index 590d77a61e..357eb86e51 100644 --- a/quickstep/res/values-hr/strings.xml +++ b/quickstep/res/values-hr/strings.xml @@ -53,6 +53,8 @@ "Prijeđite prstom da biste se vratili" "Za povratak na zadnji zaslon prijeđite prstom od lijevog ili desnog ruba do sredine zaslona." "Da biste se vratili na posljednji zaslon, prijeđite s dva prsta od lijevog ili desnog ruba do sredine zaslona." + + "Pazite da prijeđete prstom prema gore od donjeg ruba zaslona." "Pazite da ne zastanete prije podizanja prsta." "Pazite da prijeđete prstom ravno prema gore." @@ -71,6 +73,8 @@ "Povlačenje prstom za promjenu aplikacije" "Za promjenu aplikacije prijeđite prstom od dna zaslona prema gore, zadržite pritisak pa pustite." "Za promjenu aplikacije prijeđite s dva prsta od dna zaslona prema gore, zadržite pritisak i pustite." + + "Sve je spremno" "Gotovo" "Postavke" diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml index 5c1997bac0..8abd6fea75 100644 --- a/quickstep/res/values-hu/strings.xml +++ b/quickstep/res/values-hu/strings.xml @@ -53,6 +53,8 @@ "Csúsztasson a visszalépéshez" "Ha visszatérne a legutóbbi képernyőre, csúsztasson a képernyő közepére a bal vagy a jobb széléről." "Ha vissza szeretne térni a legutóbbi képernyőre, csúsztasson gyorsan két ujjal a képernyő bal vagy jobb széléről a közepe felé." + + "Csúsztasson felfelé a képernyő aljától." "Ne álljon meg, mielőtt elengedi a képernyőt." "Csúsztasson egyenesen felfelé." @@ -71,6 +73,8 @@ "Alkalmazásváltás csúsztatással" "Appok közti váltáshoz csúsztasson felfelé a kép aljáról, tartsa lenyomva az ujját, majd emelje fel." "Appváltáshoz csúsztasson fel két ujjal a kép aljáról, tartsa lenyomva ujjait, majd emelje fel őket." + + "Minden kész" "Kész" "Beállítások" @@ -114,10 +118,8 @@ "Értesítések" "Gyorsbeállítások" "Tálca" - - - - + "Feladatsáv megjelenítve" + "Feladatsáv elrejtve" "Navigációs sáv" "Mozgatás felülre vagy a bal oldalra" "Mozgatás alulra vagy a jobb oldalra" diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml index 18044e472c..0b6ead82b8 100644 --- a/quickstep/res/values-hy/strings.xml +++ b/quickstep/res/values-hy/strings.xml @@ -53,6 +53,8 @@ "Սահեցրեք մատը՝ հետ գնալու համար" "Վերջին էկրանին վերադառնալու համար էկրանի աջ կամ ձախ եզրից մատը սահեցրեք դեպի կենտրոն։" "Վերջին էկրանին վերադառնալու համար 2 մատը սահեցրեք ձախ կամ աջ եզրից դեպի կենտրոն։" + + "Համոզվեք, որ մատն էկրանի ներքևի եզրից վերև եք սահեցնում։" "Համոզվեք, որ դադար չեք տալիս նախքան բաց թողնելը։" "Համոզվեք, որ մատն ուղիղ վերև եք սահեցնում։" @@ -71,6 +73,8 @@ "Մատը սահեցրեք՝ մյուս հավելվածին անցնելու համար" "Մեկ հավելվածից մյուսն անցնելու համար մատը էկրանի ներքևից սահեցրեք վերև, ապա հեռացրեք այն էկրանից։" "Մեկ հավելվածից մյուսն անցնելու համար 2 մատը էկրանի ներքևից սահեցրեք վերև, ապա հեռացրեք այն էկրանից։" + + "Պատրաստ է" "Պատրաստ է" "Կարգավորումներ" @@ -114,10 +118,8 @@ "Ծանուցումներ" "Արագ կարգավորումներ" "Խնդրագոտի" - - - - + "Խնդրագոտին ցուցադրվում է" + "Խնդրագոտին թաքցված է" "Նավիգացիայի գոտի" "Տեղափոխել վերևի ձախ անկյուն" "Տեղափոխել ներքևի աջ անկյուն" diff --git a/quickstep/res/values-in/strings.xml b/quickstep/res/values-in/strings.xml index 5a1dde79fa..3e0ed5ef95 100644 --- a/quickstep/res/values-in/strings.xml +++ b/quickstep/res/values-in/strings.xml @@ -53,6 +53,8 @@ "Geser untuk kembali" "Untuk kembali ke layar terakhir, geser dari tepi kiri atau kanan ke tengah layar." "Untuk kembali ke layar terakhir, geser dengan 2 jari dari tepi kiri atau kanan ke tengah layar." + + "Pastikan Anda menggeser ke atas dari tepi bawah layar." "Pastikan Anda tidak menjeda sebelum melepaskan." "Pastikan Anda menggeser lurus ke atas." @@ -71,6 +73,8 @@ "Geser untuk beralih aplikasi" "Untuk beralih antar-aplikasi, geser ke atas dari bagian bawah layar, tahan, lalu lepaskan." "Untuk beralih antar-aplikasi, geser ke atas dengan 2 jari dari bawah layar, tahan, lalu lepaskan." + + "Semua siap" "Selesai" "Setelan" @@ -114,10 +118,8 @@ "Notifikasi" "Setelan Cepat" "Taskbar" - - - - + "Taskbar ditampilkan" + "Taskbar disembunyikan" "Menu navigasi" "Pindahkan ke atas/kiri" "Pindahkan ke bawah/kanan" diff --git a/quickstep/res/values-is/strings.xml b/quickstep/res/values-is/strings.xml index 36b7cd9f8d..6349139ab8 100644 --- a/quickstep/res/values-is/strings.xml +++ b/quickstep/res/values-is/strings.xml @@ -53,6 +53,8 @@ "Strjúktu til að fara til baka" "Til að fara til baka á síðasta skjá skaltu strjúka frá vinstri eða hægri brún að miðju skjásins." "Strjúktu frá vinstri eða hægri brún að miðju skjásins með 2 fingrum til að fara aftur á síðasta skjá." + + "Passaðu að strjúka upp frá neðri brún skjásins." "Passaðu að stoppa ekki áður en þú sleppir." "Passaðu að strjúka beint upp." @@ -71,6 +73,8 @@ "Strjúktu til að skipta á milli forrita" "Strjúktu upp frá neðri hluta skjásins, haltu og slepptu svo til að skipta á milli forrita." "Strjúktu upp frá neðri brún skjásins með 2 fingrum, haltu og slepptu til að skipta á milli forrita." + + "Allt til reiðu" "Lokið" "Stillingar" @@ -114,10 +118,8 @@ "Tilkynningar" "Flýtistillingar" "Verkstika" - - - - + "Forritastika sýnd" + "Forritastika falin" "Yfirlitsstika" "Færa efst/til vinstri" "Færa neðst/til hægri" diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml index cc48390913..d10044ab48 100644 --- a/quickstep/res/values-it/strings.xml +++ b/quickstep/res/values-it/strings.xml @@ -53,6 +53,8 @@ "Scorri per tornare indietro" "Per tornare all\'ultima schermata, scorri dal bordo sinistro o destro verso il centro dello schermo." "Per tornare all\'ultima schermata, scorri con 2 dita dal bordo sinistro o destro verso il centro dello schermo." + + "Assicurati di scorrere verso l\'alto dal bordo inferiore dello schermo." "Assicurati di non fare pause prima di sollevare il dito." "Assicurati di scorrere verso l\'alto senza fermarti." @@ -71,6 +73,8 @@ "Scorri per passare da un\'app all\'altra" "Per spostarti tra le app, scorri verso l\'alto dal fondo dello schermo, tieni premuto e rilascia." "Per spostarti tra le app, scorri verso l\'alto con 2 dita, tieni premuto e rilascia." + + "Fatto" "Fine" "Impostazioni" diff --git a/quickstep/res/values-iw/strings.xml b/quickstep/res/values-iw/strings.xml index dd317059bb..1f4e0fabc3 100644 --- a/quickstep/res/values-iw/strings.xml +++ b/quickstep/res/values-iw/strings.xml @@ -53,6 +53,8 @@ "יש להחליק כדי לחזור" "כדי לחזור למסך הקודם, יש להחליק מהקצה השמאלי או הימני למרכז המסך." "כדי לחזור למסך הקודם, יש להחליק עם שתי אצבעות מהקצה השמאלי או הימני למרכז המסך." + + "חשוב להקפיד להחליק למעלה מהקצה התחתון של המסך." "חשוב לוודא שלא מחכים לפני שמשחררים." "חשוב להקפיד להחליק ישר למעלה." @@ -71,6 +73,8 @@ "יש להחליק כדי לעבור בין אפליקציות" "כדי לעבור בין אפלקציות, יש להחליק למעלה מתחתית המסך, להחזיק ולאחר מכן לשחרר." "כדי לעבור בין אפלקציות, יש להחליק למעלה עם שתי אצבעות מתחתית המסך, להחזיק ולאחר מכן לשחרר." + + "הכול מוכן" "סיום" "הגדרות" @@ -114,10 +118,8 @@ "התראות" "הגדרות מהירות" "סרגל האפליקציות" - - - - + "סרגל האפליקציות מוצג" + "סרגל האפליקציות מוסתר" "סרגל הניווט" "העברה לפינה השמאלית/העליונה" "העברה לפינה הימנית/התחתונה" diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml index e7cba4cdb8..9421394900 100644 --- a/quickstep/res/values-ja/strings.xml +++ b/quickstep/res/values-ja/strings.xml @@ -53,6 +53,8 @@ "スワイプで戻る" "直前の画面に戻るには、画面の左端または右端から中央に向かってスワイプします。" "直前の画面に戻るには、2 本の指で画面の左端または右端から中央に向かってスワイプします。" + + "画面の下端から上にスワイプしてください。" "指を離す前にいったん止めないでください。" "まっすぐ上にスワイプしてください。" @@ -71,6 +73,8 @@ "スワイプでアプリを切り替える" "アプリを切り替えるには、画面を下から上にスワイプして長押しし、指を離します。" "アプリを切り替えるには、2 本の指で画面下部から上にスワイプしたまま長押しし、指を離します。" + + "設定完了" "完了" "設定" diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml index b3a7185869..032d5d42c6 100644 --- a/quickstep/res/values-ka/strings.xml +++ b/quickstep/res/values-ka/strings.xml @@ -53,6 +53,8 @@ "უკან დასაბრუნებლად გადაფურცლეთ" "ბოლო ეკრანზე დასაბრუნებლად გადაფურცლეთ მარცხენა ან მარჯვენა კიდიდან ეკრანის ცენტრისკენ." "ბოლო ეკრანზე დასაბრუნებლად ორი თითით გადაფურცლეთ მარცხენა ან მარჯვენა კიდიდან ეკრანის ცენტრისკენ." + + "გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ." "არ დააპაუზოთ თითის აშვებამდე." "გადაფურცლეთ ზემოთ." @@ -71,6 +73,8 @@ "აპების გადასართავად გადაფურცლეთ" "აპების გადასართავად, გადაფურცლეთ ეკრანის ქვედა კიდიდან ზემოთ, დააყოვნეთ, შემდეგ თითი აუშვით." "აპებს შორის გადასართავად ეკრანის ქვედა კიდიდან ორი თითით გადაფურცლეთ, დააყოვნეთ და აუშვით." + + "მზად არის" "მზადაა" "პარამეტრები" diff --git a/quickstep/res/values-kk/strings.xml b/quickstep/res/values-kk/strings.xml index e823f6f778..56bf42be80 100644 --- a/quickstep/res/values-kk/strings.xml +++ b/quickstep/res/values-kk/strings.xml @@ -53,6 +53,8 @@ "Артқа қайту үшін сырғытыңыз" "Соңғы ашылған экранға оралу үшін экранның сол немесе оң жақ шетінен ортасына қарай сырғытыңыз." "Соңғы ашылған экранға оралу үшін екі саусақпен экранның сол не оң жағынан ортасына сырғытыңыз." + + "Экранның төменгі шетінен жоғары қарай сырғытыңыз." "Жіберер алдында кідіріс жасамаңыз." "Тігінен жоғары қарай сырғытыңыз." @@ -71,6 +73,8 @@ "Қолданбаларды ауыстыру үшін сырғытыңыз" "Бір қолданбадан екіншісіне ауысу үшін экранның төменгі жағынан жоғары қарай сырғытып, ұстап тұрып жіберіңіз." "Бір қолданбадан екіншісіне ауысу үшін екі саусақпен экранның төменгі жағынан жоғары қарай сырғытып, ұстап тұрып жіберіңіз." + + "Бәрі дайын" "Дайын" "Параметрлер" @@ -114,10 +118,8 @@ "Хабарландырулар" "Жылдам параметрлер" "Тапсырмалар жолағы" - - - - + "Тапсырмалар жолағы көрсетілді" + "Тапсырмалар жолағы жасырылды" "Навигация жолағы" "Жоғары/солға жылжыту" "Төмен/оңға жылжыту" diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml index 427bbdf353..ed10a34849 100644 --- a/quickstep/res/values-km/strings.xml +++ b/quickstep/res/values-km/strings.xml @@ -53,6 +53,8 @@ "អូស​ដើម្បី​ថយក្រោយ" "ដើម្បី​ត្រឡប់ទៅ​អេក្រង់​ចុងក្រោយវិញ សូមអូស​ពីគែម​ខាងឆ្វេង ឬខាងស្ដាំ​ទៅផ្នែកកណ្ដាល​នៃអេក្រង់​។" "ដើម្បី​ត្រឡប់​ទៅ​អេក្រង់​ចុងក្រោយ​វិញ អូស​ដោយ​ប្រើ​ម្រាមដៃពីរ​ពី​គែម​ខាង​ឆ្វេង ឬ​ខាង​ស្ដាំ​ទៅផ្នែក​​កណ្ដាលនៃ​អេក្រង់។" + + "ត្រូវប្រាកដថា​អ្នកអូសឡើងលើ​ពីគែមខាងក្រោម​នៃអេក្រង់​។" "ត្រូវប្រាកដថា​អ្នកមិនផ្អាក មុនពេល​ដកដៃ​។" "ត្រូវប្រាកដថា​អ្នកអូស​ត្រង់ឡើងលើ​។" @@ -71,6 +73,8 @@ "អូស​ដើម្បីប្ដូរ​កម្មវិធី" "ដើម្បីប្ដូររវាងកម្មវិធី សូមអូសឡើងលើពីផ្នែកខាងក្រោមនៃអេក្រង់របស់អ្នក រួចចុចឱ្យជាប់ បន្ទាប់មកដកដៃចេញ។" "ដើម្បីប្ដូរកម្មវិធី អូសឡើងលើ​ដោយប្រើម្រាមដៃពីរពី​ផ្នែក​ខាងក្រោមនៃ​អេក្រង់របស់អ្នក សង្កត់ ហើយ​លែងវិញ។" + + "រួចហើយ" "រួចរាល់" "ការកំណត់" @@ -114,10 +118,8 @@ "ការ​ជូនដំណឹង" "ការកំណត់រហ័ស" "របារកិច្ចការ" - - - - + "បានបង្ហាញរបារកិច្ចការ" + "បានលាក់របារកិច្ចការ" "របាររុករក" "ផ្លាស់ទីទៅខាងលើ/ឆ្វេង" "ផ្លាស់ទីទៅខាងក្រោម/ស្ដាំ" diff --git a/quickstep/res/values-kn/strings.xml b/quickstep/res/values-kn/strings.xml index 4aa7a78584..701fc51a20 100644 --- a/quickstep/res/values-kn/strings.xml +++ b/quickstep/res/values-kn/strings.xml @@ -53,6 +53,8 @@ "ಹಿಂದಕ್ಕೆ ಹೋಗಲು ಸ್ವೈಪ್ ಮಾಡಿ" "ಕೊನೆಯ ಸ್ಕ್ರೀನ್‌ಗೆ ಹಿಂತಿರುಗಲು, ಎಡ ಅಥವಾ ಬಲ ಅಂಚಿನಿಂದ ಸ್ಕ್ರೀನ್ ಮಧ್ಯಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ." "ಹಿಂದಿನ ಸ್ಕ್ರೀನ್‌ಗೆ ಹೋಗಲು, 2 ಬೆರಳುಗಳಿಂದ ಎಡ ಅಥವಾ ಬಲ ಅಂಚಿನಿಂದ ಸ್ಕ್ರೀನ್ ಮಧ್ಯಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ." + + "ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಗಿನ ಅಂಚಿನಿಂದ ನೀವು ಸ್ವೈಪ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ." "ವಿರಾಮಗೊಳಿಸದೆ ನಿಮ್ಮ ಬೆರಳನ್ನು ಸ್ಕ್ರೀನ್‌ನಿಂದ ಮೇಲೆತ್ತಿ." "ನೀವು ನೇರವಾಗಿ ಸ್ವೈಪ್ ಮಾಡುತ್ತಿದ್ದೀರಿ ಎಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಿ." @@ -71,6 +73,8 @@ "ಆ್ಯಪ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಸ್ವೈಪ್ ಮಾಡಿ" "ಆ್ಯಪ್‌ಗಳ ನಡುವೆ ಬದಲಿಸಲು, ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ, ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಿ, ನಂತರ ಬಿಟ್ಟುಬಿಡಿ." "ಆ್ಯಪ್‌ಗಳ ನಡುವೆ ಬದಲಿಸಲು, 2 ಬೆರಳುಗಳಿಂದ ನಿಮ್ಮ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದಿಂದ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ, ಹಿಡಿದಿಟ್ಟುಕೊಳ್ಳಿ, ನಂತರ ಬಿಟ್ಟುಬಿಡಿ." + + "ಸಂಪೂರ್ಣ ಸಿದ್ಧವಾಗಿದೆ" "ಮುಗಿದಿದೆ" "ಸೆಟ್ಟಿಂಗ್‌ಗಳು" @@ -114,10 +118,8 @@ "ಅಧಿಸೂಚನೆಗಳು" "ತ್ವರಿತ ಸೆಟ್ಟಿಂಗ್‍ಗಳು" "ಟಾಸ್ಕ್‌ಬಾರ್" - - - - + "ಟಾಸ್ಕ್‌ಬಾರ್ ತೋರಿಸಲಾಗಿದೆ" + "ಟಾಸ್ಕ್‌ಬಾರ್ ಮರೆಮಾಡಲಾಗಿದೆ" "ನ್ಯಾವಿಗೇಷನ್ ಬಾರ್" "ಮೇಲಿನ/ಎಡಭಾಗಕ್ಕೆ ಸರಿಸಿ" "ಕೆಳಗಿನ/ಬಲಭಾಗಕ್ಕೆ ಸರಿಸಿ" diff --git a/quickstep/res/values-ko/strings.xml b/quickstep/res/values-ko/strings.xml index 54dfa299f3..c51e1eb10a 100644 --- a/quickstep/res/values-ko/strings.xml +++ b/quickstep/res/values-ko/strings.xml @@ -53,6 +53,8 @@ "스와이프하여 돌아가기" "이전 화면으로 돌아가려면 왼쪽 또는 오른쪽 가장자리에서 화면 중앙으로 스와이프하세요." "마지막 화면으로 돌아가려면 두 손가락을 사용해 왼쪽 또는 오른쪽 가장자리에서 화면 중앙으로 스와이프하세요" + + "화면 하단 가장자리에서 위로 스와이프하세요." "손가락을 떼기 전에 멈추지 않아야 합니다." "위로 곧게 스와이프하세요." @@ -71,6 +73,8 @@ "스와이프하여 앱 전환" "앱 간에 전환하려면 화면 하단에서 위로 스와이프하고 잠시 멈춘 다음 손가락을 떼세요." "앱 간에 전환하려면 두 손가락을 사용해 화면 하단에서 위로 스와이프하고 잠시 멈춘 다음 손가락을 떼세요" + + "설정 완료" "완료" "설정" @@ -114,10 +118,8 @@ "알림" "빠른 설정" "태스크 바" - - - - + "태스크 바 표시" + "태스크 바 숨김" "탐색 메뉴" "상단/왼쪽으로 이동" "하단/오른쪽으로 이동" diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml index b62e191748..3b06ea2713 100644 --- a/quickstep/res/values-ky/strings.xml +++ b/quickstep/res/values-ky/strings.xml @@ -53,6 +53,8 @@ "Артка кайтуу үчүн сүрүңүз" "Акыркы экранга кайтуу үчүн экранды сол же оң жагынан ортосуна карай сүрүңүз." "Акыркы экранга кайтуу үчүн экранды сол же оң жагынан ортосуна карай 2 манжаңыз менен сүрүңүз." + + "Экранды ылдыйдан өйдө сүрүңүз." "Манжаңызды алганга чейин токтотпоңуз." "Экранды өйдө сүрүңүз." @@ -71,6 +73,8 @@ "Колдонмолорду которуштуруу үчүн сүрүңүз" "Бир колдонмодон экинчисине өтүү үчүн экранды ылдыйдан өйдө карай сүрүп, бир аз коё бербей туруңуз." "Бир колдонмодон экинчисине өтүү үчүн экранды 2 манжа менен ылдыйдан өйдө сүрүп, коё бербей туруңуз." + + "Дапдаяр!" "Бүттү" "Параметрлер" @@ -114,10 +118,8 @@ "Билдирмелер" "Ыкчам жөндөөлөр" "Тапшырмалар тактасы" - - - - + "Тапшырмалар панели көрсөтүлдү" + "Тапшырмалар панели жашырылды" "Чабыттоо тилкеси" "Жогорку/сол бурчка жылдыруу" "Төмөнкү/оң бурчка жылдыруу" diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml index a9eae1d470..3e6dd3147f 100644 --- a/quickstep/res/values-lo/strings.xml +++ b/quickstep/res/values-lo/strings.xml @@ -53,6 +53,8 @@ "ປັດເພື່ອກັບຄືນ" "ເພື່ອກັບໄປໜ້າຈໍຫຼ້າສຸດ, ໃຫ້ປັດຈາກຂອບຊ້າຍ ຫຼື ຂວາໄປຫາທາງກາງຂອງໜ້າຈໍ." "ເພື່ອກັບໄປໜ້າຈໍຫຼ້າສຸດ, ໃຫ້ປັດດ້ວຍ 2 ນິ້ວຈາກຂອບຊ້າຍ ຫຼື ຂວາໄປຫາທາງກາງຂອງໜ້າຈໍ." + + "ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນຈາກຂອບລຸ່ມສຸດຂອງໜ້າຈໍ." "ກະລຸນາກວດສອບວ່າທ່ານບໍ່ຢຸດຊົ່ວຄາວກ່ອນປ່ອຍນິ້ວ." "ກະລຸນາກວດສອບວ່າທ່ານປັດຂຶ້ນໄປຊື່ໆ." @@ -71,6 +73,8 @@ "ປັດເພື່ອສະຫຼັບແອັບ" "ເພື່ອສະຫຼັບລະຫວ່າງແອັບ, ໃຫ້ປັດຂຶ້ນຈາກລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ, ກົດຄ້າງໄວ້, ຈາກນັ້ນປ່ອຍ." "ເພື່ອສະຫຼັບລະຫວ່າງແອັບ, ໃຫ້ປັດຂຶ້ນດ້ວຍ 2 ນິ້ວຈາກລຸ່ມສຸດຂອງໜ້າຈໍທ່ານ, ກົດຄ້າງໄວ້ແລ້ວປ່ອຍ." + + "ທຸກຢ່າງພ້ອມແລ້ວ" "ແລ້ວໆ" "ການຕັ້ງຄ່າ" @@ -114,10 +118,8 @@ "ການແຈ້ງເຕືອນ" "ການຕັ້ງຄ່າດ່ວນ" "ແຖບໜ້າວຽກ" - - - - + "ແຖບໜ້າວຽກທີ່ສະແດງຢູ່" + "ແຖບໜ້າວຽກທີ່ເຊື່ອງໄວ້ຢູ່" "ແຖບການນຳທາງ" "ຍ້າຍໄປຊ້າຍ/ເທິງ" "ຍ້າຍໄປຂວາ/ລຸ່ມ" diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml index 2838676549..4eccdc5d16 100644 --- a/quickstep/res/values-lt/strings.xml +++ b/quickstep/res/values-lt/strings.xml @@ -53,6 +53,8 @@ "Norėdami grįžti, perbraukite" "Norėdami grįžti į ankstesnį ekraną, perbr. nuo kairiojo arba dešinio krašto link ekrano vidurio." "Jei norite grįžti į ankstesnį ekraną, perbraukite dviem pirštais nuo kairiojo arba dešiniojo krašto link ekrano vidurio." + + "Turite perbraukti aukštyn nuo apatinio ekrano krašto." "Nepristabdykite prieš pakeldami pirštą." "Turite tiesiai perbraukti aukštyn." @@ -71,6 +73,8 @@ "Perbraukite, kad perjungtumėte programas" "Norėdami perjungti programas, perbraukite aukštyn nuo ekrano apačios, palaikykite ir paleiskite." "Perjunkite programas perbraukę dviem pirštais aukštyn nuo ekrano apačios, palaikę ir paleidę." + + "Viskas nustatyta" "Atlikta" "Nustatymai" @@ -114,10 +118,8 @@ "Pranešimai" "Spartieji nustatymai" "Užduočių juosta" - - - - + "Užduočių juosta rodoma" + "Užduočių juosta paslėpta" "Naršymo juosta" "Perkelti aukštyn, kairėn" "Perkelti žemyn, dešinėn" diff --git a/quickstep/res/values-lv/strings.xml b/quickstep/res/values-lv/strings.xml index 2a4e33307e..5e4b8ae6b9 100644 --- a/quickstep/res/values-lv/strings.xml +++ b/quickstep/res/values-lv/strings.xml @@ -53,6 +53,8 @@ "Vilkšana, lai atgrieztos" "Lai atgrieztos iepriekšējā ekrānā, velciet no kreisās vai labās malas uz ekrāna vidu." "Lai pārietu uz iepriekšējo ekrānu, ar diviem pirkstiem velciet no kreisās vai labās malas uz ekrāna vidu." + + "Jāvelk augšup no ekrāna apakšmalas." "Pirms atlaišanas nepārtrauciet kustību." "Jāvelk tieši uz augšu." @@ -71,6 +73,8 @@ "Vilkšana, lai pārslēgtu lietotnes" "Lai pārslēgtu lietotnes, velciet augšup no ekrāna apakšdaļas, turiet un pēc tam atlaidiet." "Lai pārslēgtu lietotnes, ar 2 pirkstiem velciet no ekrāna apakšdaļas, turiet un pēc tam atlaidiet." + + "Gatavs" "Gatavs" "Iestatījumi" @@ -114,10 +118,8 @@ "Paziņojumi" "Ātrie iestatīj." "Uzdevumu josla" - - - - + "Uzdevumu josla tiek rādīta" + "Uzdevumu josla paslēpta" "Navigācijas josla" "Pārvietot uz augšējo/kreiso stūri" "Pārvietot uz apakšējo/labo stūri" diff --git a/quickstep/res/values-mk/strings.xml b/quickstep/res/values-mk/strings.xml index c61bc1c31d..f24ead398e 100644 --- a/quickstep/res/values-mk/strings.xml +++ b/quickstep/res/values-mk/strings.xml @@ -53,6 +53,8 @@ "Повлечете за да се вратите назад" "За да се вратите на последниот екран, повлечете од левиот или десниот раб кон средината на екранот." "За да се вратите на последниот екран на кој бевте, повлечете со два прста од левиот или десниот раб кон средината на екранот." + + "Повлечете нагоре од долниот раб на екранот." "Не правете пауза пред да пуштите." "Повлечете право нагоре." @@ -71,6 +73,8 @@ "Повлечете за префрлање помеѓу апликации" "За да смените апликација, повлечете нагоре од дното на екранот и задржете, па пуштете." "За да се префрлате помеѓу апликации, повлечете нагоре со два прста од долниот раб на екранот, задржете и потоа отпуштете." + + "Готово" "Готово" "Поставки" @@ -114,10 +118,8 @@ "Известувања" "Брзи поставки" "Лента со задачи" - - - - + "Лентата со задачи е прикажана" + "Лентата со задачи е сокриена" "Лента за навигација" "Премести горе лево" "Премести долу десно" diff --git a/quickstep/res/values-ml/strings.xml b/quickstep/res/values-ml/strings.xml index e87830c828..a13eeb64b3 100644 --- a/quickstep/res/values-ml/strings.xml +++ b/quickstep/res/values-ml/strings.xml @@ -53,6 +53,8 @@ "മടങ്ങാൻ സ്വെെപ്പ് ചെയ്യുക" "മുൻ സ്‌ക്രീനിലേക്ക് മടങ്ങാൻ, ഇടതോ വലതോ അരികിൽ നിന്ന് സ്‌ക്രീനിന്റെ നടുവിലേക്ക് സ്വെെപ്പ് ചെയ്യുക." "മുമ്പത്തെ സ്ക്രീനിലേക്ക് മടങ്ങാൻ, 2 വിരലുകൾ ഉപയോഗിച്ച് ഇടത് അല്ലെങ്കിൽ വലത് മൂലയിൽ നിന്ന് സ്ക്രീനിന്റെ മധ്യഭാഗത്തേക്ക് സ്വൈപ്പ് ചെയ്യുക." + + "സ്‌ക്രീനിന്റെ താഴത്തെ അരികിൽ നിന്ന് മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക." "വിടുന്നതിന് മുമ്പ് നിങ്ങൾ താൽക്കാലികമായി നിർത്തുന്നില്ലെന്ന് ഉറപ്പാക്കുക." "നേരെ മുകളിലേക്ക് സ്വെെപ്പ് ചെയ്യുന്നുണ്ടെന്ന് ഉറപ്പാക്കുക." @@ -71,6 +73,8 @@ "ആപ്പുകൾ മാറാൻ സ്വെെപ്പ് ചെയ്യുക" "ആപ്പുകൾക്കിടയിൽ മാറാൻ സ്‌ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലേക്ക് സ്വൈപ്പ് ചെയ്‌ത് പിടിച്ച ശേഷം വിടുക." "ആപ്പുകൾക്കിടയിൽ മാറാൻ സ്ക്രീനിന്റെ താഴെ നിന്ന് മുകളിലേക്ക് 2 വിരലുകൾ കൊണ്ട് സ്വൈപ്പ് ചെയ്ത് പിടിച്ച ശേഷം വിടുക." + + "എല്ലാം സജ്ജീകരിച്ചു" "പൂർത്തിയായി" "ക്രമീകരണം" @@ -114,10 +118,8 @@ "അറിയിപ്പുകൾ" "ദ്രുത ക്രമീകരണം" "ടാസ്‌ക്ബാർ" - - - - + "ടാസ്‌ക്ബാർ കാണിച്ചിരിക്കുന്നു" + "ടാസ്‌ക്ബാർ മറച്ചിരിക്കുന്നു" "നാവിഗേഷൻ ബാർ" "മുകളിലേക്കോ ഇടത്തേക്കോ നീക്കുക" "താഴേക്കോ വലത്തേക്കോ നീക്കുക" diff --git a/quickstep/res/values-mn/strings.xml b/quickstep/res/values-mn/strings.xml index 1b59f8424d..73cfdff0ac 100644 --- a/quickstep/res/values-mn/strings.xml +++ b/quickstep/res/values-mn/strings.xml @@ -53,6 +53,8 @@ "Буцахын тулд шудрах" "Сүүлийн дэлгэц рүү буцахын тулд дэлгэцийн зүүн эсвэл баруун булангаас дунд хэсэг рүү шударна уу." "Сүүлийн дэлгэц рүү буцахын тулд 2 хуруугаараа дэлгэцийн голоос зүүн эсвэл баруун ирмэг рүү шударна уу." + + "Та дэлгэцийн доод булангаас дээш шударна уу." "Та суллахаасаа өмнө түр зогсоож болохгүй." "Та чигээрээ шударна уу." @@ -71,6 +73,8 @@ "Аппуудыг сэлгэхийн тулд шудрах" "Аппуудын хооронд сэлгэхийн тулд дэлгэцийнхээ доод хэсгээс дээш шударч, удаан дараад, суллана уу." "Аппуудын хооронд сэлгэхийн тулд 2 хуруугаараа дэлгэцийнхээ доод хэсгээс дээш шударч, удаан дараад, суллана уу." + + "Бүгдийг тохируулсан" "Дууссан" "Тохиргоо" @@ -114,10 +118,8 @@ "Мэдэгдэл" "Шуурхай тохиргоо" "Ажлын хэсэг" - - - - + "Ажлын хэсгийг харуулсан" + "Ажлын хэсгийг нуусан" "Навигацын самбар" "Зүүн дээд хэсэг рүү зөөх" "Баруун доод хэсэг рүү зөөх" diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml index 5feaccdfc7..a4152d1170 100644 --- a/quickstep/res/values-mr/strings.xml +++ b/quickstep/res/values-mr/strings.xml @@ -53,6 +53,8 @@ "परत जाण्यासाठी स्वाइप करा" "मागील स्क्रीनवर परत जाण्यासाठी, स्क्रीनच्या डाव्या किंवा उजव्या कडेपासून मध्यावर स्‍वाइप करा." "मागील स्क्रीनवर परत जाण्यासाठी, दोन बोटांनी डाव्या किंवा उजव्या कडेपासून स्क्रीनच्या मध्यभागी स्वाइप करा." + + "तुम्ही स्क्रीनच्या तळाच्या कडेपासून वर स्वाइप करत आहात याची खात्री करा." "तुम्ही स्क्रीनवरून बोट उचलण्यापूर्वी ते थांबवत नाही याची खात्री करा." "तुम्ही सरळ वर स्वाइप करत आहात याची खात्री करा." @@ -71,6 +73,8 @@ "अ‍ॅप्स स्विच करण्यासाठी स्वाइप करा" "ॲप्सदरम्यान स्विच करण्यासाठी, स्क्रीनच्या तळापासून वर स्वाइप करा, धरून ठेवा, त्यानंतर सोडून द्या." "ॲप्सदरम्यान स्विच करण्यासाठी, स्क्रीनच्या तळापासून दोन बोटांनी वर स्वाइप करा, धरून ठेवा नंतर सोडा." + + "सर्व तयार आहे" "पूर्ण झाले" "सेटिंग्ज" diff --git a/quickstep/res/values-ms/strings.xml b/quickstep/res/values-ms/strings.xml index d2125a6156..6d32005c47 100644 --- a/quickstep/res/values-ms/strings.xml +++ b/quickstep/res/values-ms/strings.xml @@ -53,6 +53,8 @@ "Leret untuk kembali" "Untuk kembali ke skrin terakhir, leret dari tepi sebelah kiri atau kanan ke tengah skrin." "Untuk kembali ke skrin terakhir, leret dengan 2 jari dari tepi kiri atau kanan ke tengah skrin." + + "Pastikan anda meleret ke atas dari tepi sebelah bawah skrin." "Pastikan anda tidak menjeda sebelum melepaskan gerak isyarat tersebut." "Pastikan anda meleret terus ke atas." @@ -71,6 +73,8 @@ "Leret untuk menukar apl" "Untuk beralih antara apl, leret ke atas dari bahagian bawah skrin anda, tahan, kemudian lepaskan." "Untuk beralih antara apl, leret ke atas dengan 2 jari dari bawah skrin, tahan, kemudian lepaskan." + + "Selesai" "Selesai" "Tetapan" @@ -114,10 +118,8 @@ "Pemberitahuan" "Tetapan Pantas" "Bar Tugas" - - - - + "Bar Tugas dipaparkan" + "Bar Tugas disembunyikan" "Bar navigasi" "Alihkan ke atas/kiri" "Alihkan ke bawah/kanan" diff --git a/quickstep/res/values-my/strings.xml b/quickstep/res/values-my/strings.xml index cca1099250..a966c5f647 100644 --- a/quickstep/res/values-my/strings.xml +++ b/quickstep/res/values-my/strings.xml @@ -53,6 +53,8 @@ "နောက်ပြန်သွားရန် ပွတ်ဆွဲပါ" "နောက်ဆုံးဖန်သားပြင်သို့ ပြန်သွားရန် ဘယ်ဘက် (သို့) ညာဘက်အစွန်မှ ဖန်သားပြင်အလယ်သို့ ပွတ်ဆွဲပါ။" "ပြီးခဲ့သည့်ဖန်သားပြင်သို့သွားရန် ဘယ်ဘက် (သို့) ညာဘက်အစွန်းမှ ဖန်သားပြင်အလယ်သို့ လက် ၂ ချောင်းဖြင့် ပွတ်ဆွဲပါ။" + + "ဖန်သားပြင် အောက်ခြေအစွန်မှ အပေါ်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။" "လက်မလွှတ်ခင် ခဏရပ်ခြင်းမရှိကြောင်း သေချာပါစေ။" "အပေါ်တည့်တည့်သို့ ပွတ်ဆွဲကြောင်း သေချာပါစေ။" @@ -71,6 +73,8 @@ "အက်ပ်များပြောင်းရန် ပွတ်ဆွဲပါ" "အက်ပ်တစ်ခုမှတစ်ခုသို့ ပြောင်းရန် စခရင်အောက်ခြေမှ အပေါ်သို့ ပွတ်ဆွဲ၍ ဖိထားပြီးနောက် လွှတ်ပါ။" "အက်ပ်များကြားပြောင်းရန် ဖန်သားပြင်အောက်မှ အပေါ်သို့ လက် ၂ ချောင်းဖြင့်ဆွဲ၍ ထိန်းထားပြီး လွှတ်ပါ။" + + "အားလုံးအဆင်သင့်ဖြစ်ပါပြီ" "ပြီးပြီ" "ဆက်တင်များ" @@ -114,10 +118,8 @@ "အကြောင်းကြားချက်" "အမြန်ဆက်တင်များ" "လုပ်ဆောင်စရာဘား" - - - - + "Taskbar ပြထားသည်" + "Taskbar ဖျောက်ထားသည်" "လမ်းညွှန်ဘား" "အပေါ်/ဘယ်ဘက်သို့ ရွှေ့ရန်" "အောက်ခြေ/ညာဘက်သို့ ရွှေ့ရန်" diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml index e88796db27..05cdae48df 100644 --- a/quickstep/res/values-nb/strings.xml +++ b/quickstep/res/values-nb/strings.xml @@ -53,6 +53,8 @@ "Sveip for å gå tilbake" "For å gå tilbake til forrige skjerm, sveip fra venstre eller høyre kant til midten av skjermen." "For å gå tilbake til den forrige skjermen, sveip med to fingre fra den venstre eller høyre kanten til midten av skjermen." + + "Sørg for at du sveiper opp fra den nederste kanten av skjermen." "Sørg for at du ikke setter på pause før du slipper." "Sørg for at du sveiper rett opp." @@ -71,6 +73,8 @@ "Sveip for å bytte app" "For å bytte mellom apper, sveip opp fra bunnen av skjermen, hold, og slipp" "For å bytte mellom apper, sveip opp med to fingre fra bunnen av skjermen, hold, og slipp." + + "Ferdig" "Ferdig" "Innstillinger" @@ -114,10 +118,8 @@ "Varsler" "Hurtiginnst." "Oppgavelinje" - - - - + "Oppgavelinjen vises" + "Oppgavelinjen er skjult" "Navigasjonsrad" "Flytt til øverst/venstre" "Flytt til nederst/høyre" diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml index fdc8929e74..b9a6989bed 100644 --- a/quickstep/res/values-ne/strings.xml +++ b/quickstep/res/values-ne/strings.xml @@ -53,6 +53,8 @@ "पछाडि जान स्वाइप गर्नुहोस्" "यसअघिको स्क्रिनमा फर्कन स्क्रिनको बायाँ वा दायाँ किनाराबाट मध्य भागसम्म स्वाइप गर्नुहोस्।" "तपाईं यसअघि जुन स्क्रिनमा हुनुहुन्थ्यो त्यही स्क्रिनमा फर्कन चाहनुहुन्छ भने २ वटा औँला प्रयोग गरी स्क्रिनको बायाँ वा दायाँ किनाराबाट मध्य भागसम्म स्वाइप गर्नुहोस्।" + + "स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्।" "औँला उठाउनुअघि नरोकिनुहोस्।" "सीधै माथितिर स्वाइप गर्नुहोस्।" @@ -71,6 +73,8 @@ "एउटा एपबाट अर्को एपमा जान स्वाइप गर्नुहोस्" "एउटा एपबाट अर्कोमा जान स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्, छोइराख्नुहोस् अनि औँला उठाउनुहोस्।" "एउटा एपबाट अर्कोमा जान २ वटा औँला प्रयोग गरी स्क्रिनको फेदबाट माथितिर स्वाइप गर्नुहोस्, छोइराख्नुहोस् अनि औँला उठाउनुहोस्।" + + "सबै तयार छ" "सम्पन्न भयो" "सेटिङ" @@ -114,10 +118,8 @@ "सूचनाहरू" "द्रुत सेटिङ" "टास्कबार" - - - - + "टास्कबार देखाइएको छ" + "टास्कबार लुकाइएको छ" "नेभिगेसन बार" "सिरान/बायाँतिर सार्नुहोस्" "फेद/दायाँतिर सार्नुहोस्" diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml index 83a82f5dac..7f1c4f42a6 100644 --- a/quickstep/res/values-nl/strings.xml +++ b/quickstep/res/values-nl/strings.xml @@ -53,6 +53,8 @@ "Swipe om terug te gaan" "Swipe vanaf de linker- of rechterrand naar het midden om terug te gaan naar het vorige scherm." "Als je wilt teruggaan naar het laatste scherm, swipe je met 2 vingers vanaf de linker- of rechterrand naar het midden van het scherm." + + "Swipe vanaf de onderrand van het scherm omhoog." "Pauzeer niet voordat je loslaat." "Swipe recht omhoog." @@ -71,6 +73,8 @@ "Swipe om tussen apps te schakelen" "Swipe omhoog vanaf de onderkant van het scherm, houd vast en laat los om tussen apps te schakelen." "Swipe met 2 vingers omhoog vanaf de onderkant van het scherm, houd vast en laat los om tussen apps te schakelen." + + "Klaar" "Klaar" "Instellingen" @@ -114,10 +118,8 @@ "Meldingen" "Snelle instellingen" "Taakbalk" - - - - + "Taakbalk wordt getoond" + "Taakbalk is verborgen" "Navigatiebalk" "Naar boven/links verplaatsen" "Naar beneden/rechts verplaatsen" diff --git a/quickstep/res/values-or/strings.xml b/quickstep/res/values-or/strings.xml index 9ea95c5be3..6ad52a50a3 100644 --- a/quickstep/res/values-or/strings.xml +++ b/quickstep/res/values-or/strings.xml @@ -53,6 +53,8 @@ "ପଛକୁ ଫେରିବା ପାଇଁ ସ୍ୱାଇପ୍ କରନ୍ତୁ" "ପୂର୍ବବର୍ତ୍ତୀ ସ୍କ୍ରିନକୁ ଫେରିବା ପାଇଁ, ସ୍କ୍ରିନର ବାମ କିମ୍ବା ଡାହାଣ ଧାରରୁ ମଝିକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ।" "ପୂର୍ବ ସ୍କ୍ରିନକୁ ଫେରିବା ପାଇଁ, ସ୍କ୍ରିନର ବାମ କିମ୍ବା ଡାହାଣ ଧାରରୁ ମଝିକୁ 2ଟି ଆଙ୍ଗୁଠିରେ ସ୍ୱାଇପ କରନ୍ତୁ।" + + "ଆପଣ ସ୍କ୍ରିନର ତଳ ଧାରରୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରୁଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।" "ଆପଣ ଛାଡ଼ିବା ପୂର୍ବରୁ ବିରତ କରୁନଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।" "ଆପଣ ସିଧା ଉପରକୁ ସ୍ୱାଇପ୍ କରୁଥିବା ସୁନିଶ୍ଚିତ କରନ୍ତୁ।" @@ -71,6 +73,8 @@ "ଆପଗୁଡ଼ିକୁ ସ୍ୱିଚ୍ କରିବା ପାଇଁ ସ୍ୱାଇପ୍ କରନ୍ତୁ" "ଆପଗୁଡ଼ିକ ମଧ୍ୟରେ ସ୍ୱିଚ୍ କରିବାକୁ, ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ୍ କରନ୍ତୁ, ଧରି ରଖନ୍ତୁ, ତା\'ପରେ ରିଲିଜ୍ କରନ୍ତୁ।" "ଆପ୍ସ ମଧ୍ୟରେ ସ୍ୱିଚ କରିବାକୁ, 2ଟି ଆଙ୍ଗୁଠିରେ ସ୍କ୍ରିନର ତଳୁ ଉପରକୁ ସ୍ୱାଇପ କରି ଧରି ରଖନ୍ତୁ, ତା\'ପରେ ରିଲିଜ କର।" + + "ସବୁ ପ୍ରସ୍ତୁତ" "ହୋଇଗଲା" "ସେଟିଂସ" @@ -114,10 +118,8 @@ "ବିଜ୍ଞପ୍ତିଗୁଡ଼ିକ" "କ୍ୱିକ ସେଟିଂସ" "ଟାସ୍କବାର" - - - - + "ଟାସ୍କବାର ଦେଖାଯାଇଛି" + "ଟାସ୍କବାର ଲୁଚାଯାଇଛି" "ନାଭିଗେସନ ବାର" "ଶୀର୍ଷ/ବାମକୁ ମୁଭ କରନ୍ତୁ" "ନିମ୍ନ/ଡାହାଣକୁ ମୁଭ କରନ୍ତୁ" diff --git a/quickstep/res/values-pa/strings.xml b/quickstep/res/values-pa/strings.xml index 8b20549cf4..55dd1e16ce 100644 --- a/quickstep/res/values-pa/strings.xml +++ b/quickstep/res/values-pa/strings.xml @@ -53,6 +53,8 @@ "ਪਿੱਛੇ ਜਾਣ ਲਈ ਸਵਾਈਪ ਕਰੋ" "ਪਿਛਲੀ ਸਕ੍ਰੀਨ \'ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ, ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਕਿਨਾਰੇ ਤੋਂ ਸਕ੍ਰੀਨ ਦੇ ਵਿਚਕਾਰ ਤੱਕ ਸਵਾਈਪ ਕਰੋ।" "ਪਿਛਲੀ ਸਕ੍ਰੀਨ \'ਤੇ ਵਾਪਸ ਜਾਣ ਲਈ, ਖੱਬੇ ਜਾਂ ਸੱਜੇ ਕਿਨਾਰੇ ਤੋਂ ਸਕ੍ਰੀਨ ਦੇ ਵਿਚਕਾਰ ਤੱਕ 2 ਉਂਗਲਾਂ ਨਾਲ ਸਵਾਈਪ ਕਰੋ।" + + "ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਲੇ ਕਿਨਾਰੇ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਦੇ ਹੋ।" "ਪੱਕਾ ਕਰੋ ਕਿ ਸਕ੍ਰੀਨ ਨੂੰ ਛੱਡਣ ਤੋਂ ਪਹਿਲਾਂ ਰੁਕੋ ਨਾ।" "ਇਹ ਪੱਕਾ ਕਰੋ ਕਿ ਤੁਸੀਂ ਸਿੱਧੇ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਦੇ ਹੋ।" @@ -71,6 +73,8 @@ "ਐਪਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ ਸਵਾਈਪ ਕਰੋ" "ਐਪਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰਕੇ ਦਬਾਈ ਰੱਖੋ ਅਤੇ ਫਿਰ ਛੱਡੋ।" "ਐਪਾਂ ਵਿਚਾਲੇ ਅਦਲਾ-ਬਦਲੀ ਕਰਨ ਲਈ, ਆਪਣੀ ਸਕ੍ਰੀਨ ਦੇ ਹੇਠਾਂ ਤੋਂ 2 ਉਂਗਲਾਂ ਨਾਲ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰ ਕੇ ਦਬਾਈ ਰੱਖੋ ਅਤੇ ਫਿਰ ਛੱਡੋ।" + + "ਪੂਰੀ ਤਰ੍ਹਾਂ ਤਿਆਰ" "ਹੋ ਗਿਆ" "ਸੈਟਿੰਗਾਂ" @@ -114,10 +118,8 @@ "ਸੂਚਨਾਵਾਂ" "ਤਤਕਾਲ ਸੈਟਿੰਗਾਂ" "ਟਾਸਕਬਾਰ" - - - - + "ਟਾਸਕਬਾਰ ਨੂੰ ਦਿਖਾਇਆ ਗਿਆ" + "ਟਾਸਕਬਾਰ ਨੂੰ ਲੁਕਾਇਆ ਗਿਆ" "ਨੈਵੀਗੇਸ਼ਨ ਵਾਲੀ ਪੱਟੀ" "ਸਿਖਰਲੇ/ਖੱਬੇ ਪਾਸੇ ਲੈ ਕੇ ਜਾਓ" "ਹੇਠਾਂ/ਸੱਜੇ ਪਾਸੇ ਲੈ ਕੇ ਜਾਓ" diff --git a/quickstep/res/values-pl/strings.xml b/quickstep/res/values-pl/strings.xml index 5cddef59f7..c0fa6236b5 100644 --- a/quickstep/res/values-pl/strings.xml +++ b/quickstep/res/values-pl/strings.xml @@ -53,6 +53,8 @@ "Przesuń palcem, aby przejść wstecz" "Aby wrócić do ostatniego ekranu, przesuń palcem od lewej lub prawej krawędzi do środka ekranu." "Aby wrócić do ostatniego ekranu, przesuń 2 palcami od lewej lub prawej krawędzi do środka ekranu." + + "Pamiętaj, aby przesuwać palcem od dolnej krawędzi ekranu." "Pamiętaj, aby przed podniesieniem palca nie było przerwy." "Pamiętaj, aby przesuwać palcem prosto do góry." @@ -71,6 +73,8 @@ "Przesuń palcem, aby przełączać aplikacje" "Aby przełączać się między aplikacjami, przesuń palcem od dołu ekranu, przytrzymaj i puść." "Aby przełączać się między aplikacjami, przesuń 2 palcami od dołu ekranu, przytrzymaj i puść." + + "Wszystko gotowe" "Gotowe" "Ustawienia" diff --git a/quickstep/res/values-pt-rPT/strings.xml b/quickstep/res/values-pt-rPT/strings.xml index 156236265d..b48a7694a4 100644 --- a/quickstep/res/values-pt-rPT/strings.xml +++ b/quickstep/res/values-pt-rPT/strings.xml @@ -53,6 +53,8 @@ "Deslize rapidamente com o dedo para retroceder" "Para voltar ao último ecrã, deslize rapidamente do limite esquerdo ou direito até ao centro do ecrã." "Para voltar ao último ecrã, deslize rapidamente com 2 dedos a partir da extremidade esquerda ou direita até ao centro do ecrã." + + "Garanta que desliza rapidamente com o dedo a partir do limite inferior do ecrã." "Garanta que não faz uma pausa antes de soltar." "Garanta que desliza rapidamente com o dedo para cima." @@ -71,6 +73,8 @@ "Deslize rapidamente com o dedo para alternar entre apps" "Para alternar entre apps, deslize para cima sem soltar a partir da parte inferior do ecrã e solte." "Para mudar de app, deslize rapidamente para cima com 2 dedos sem soltar no fundo do ecrã e solte." + + "Está tudo pronto" "Concluído" "Definições" diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml index 0fd4c44400..c5cbdc5885 100644 --- a/quickstep/res/values-pt/strings.xml +++ b/quickstep/res/values-pt/strings.xml @@ -53,6 +53,8 @@ "Deslize para voltar" "Para voltar à tela anterior, deslize da borda esquerda ou direita até o meio da tela." "Para voltar à tela anterior, deslize da borda esquerda ou direita até o meio da tela com dois dedos." + + "Deslize da borda inferior da tela para cima." "Não pare antes de soltar." "Deslize para cima." @@ -71,6 +73,8 @@ "Deslizar para trocar de app" "Para mudar de app, deslize de baixo para cima, mantenha a tela pressionada por um tempo e solte." "Para mudar de app, deslize de baixo para cima na tela com dois dedos, segure por um tempo e solte." + + "Tudo pronto" "Concluído" "Configurações" diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml index 2028e80af0..e6ed78e15b 100644 --- a/quickstep/res/values-ro/strings.xml +++ b/quickstep/res/values-ro/strings.xml @@ -53,6 +53,8 @@ "Glisează pentru a reveni" "Pentru a reveni la ultimul ecran, glisează de la marginea stângă sau dreaptă spre mijlocul ecranului." "Pentru a reveni la ultimul ecran, glisează cu două degete dinspre marginea stângă sau dreaptă spre mijlocul ecranului." + + "Glisează în sus dinspre marginea de jos a ecranului." "Nu întrerupe gestul înainte de a elibera." "Glisează direct în sus." @@ -71,6 +73,8 @@ "Glisează pentru a comuta între aplicații" "Ca să comuți între aplicații, glisează în sus din partea de jos a ecranului, așteaptă și eliberează." "Ca să comuți între aplicații, glisează cu două degete de jos în sus, așteaptă și eliberează" + + "Gata" "Gata" "Setări" @@ -114,10 +118,8 @@ "Notificări" "Setări rapide" "Bară de activități" - - - - + "Bara de activități este afișată" + "Bara de activități este ascunsă" "Bară de navigare" "Mută în stânga sus" "Mută în dreapta jos" diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml index b832c5816c..859cb15df6 100644 --- a/quickstep/res/values-ru/strings.xml +++ b/quickstep/res/values-ru/strings.xml @@ -53,6 +53,8 @@ "Возврат к предыдущему экрану" "Чтобы вернуться к предыдущему экрану, проведите от левого или правого края дисплея к центру." "Чтобы вернуться на предыдущий экран, проведите двумя пальцами от левого или правого края экрана к центру." + + "Проведите снизу вверх от самого края экрана." "Не приостанавливайтесь перед тем, как отпустить палец." "Проведите по экрану ровно вверх." @@ -71,6 +73,8 @@ "Переключение между приложениями" "Чтобы переключиться между приложениями‚ проведите по экрану снизу вверх, задержите палец, а затем отпустите." "Чтобы сменить приложение, проведите двумя пальцами снизу вверх, задержите пальцы, а затем отпустите." + + "Готово" "Готово" "Настройки" @@ -114,10 +118,8 @@ "Уведомления" "Быстрые настройки" "Панель задач" - - - - + "Панель задач показана" + "Панель задач скрыта" "Панель навигации" "Переместить вверх или влево" "Переместить вниз или вправо" diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml index 47e2bb9429..fdfa8dad88 100644 --- a/quickstep/res/values-si/strings.xml +++ b/quickstep/res/values-si/strings.xml @@ -53,6 +53,8 @@ "ආපසු යාමට ස්වයිප් කරන්න" "අවසාන තිරයට ආපසු යාමට, වම් හෝ දකුණු දාරයෙන් තිරයේ මැදට ස්වයිප් කරන්න." "අවසාන තිරයට ආපසු යාමට, වම් හෝ දකුණු දාරයෙන් තිරයේ මැදට ඇඟිලි 2කින් ස්වයිප් කරන්න." + + "ඔබ තිරයේ පහළ දාරයේ සිට ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න." "යාමට ඉඩ හැරීමට පෙර ඔබ විරාමයක් නොගන්නා බව සහතික කර ගන්න." "ඔබ කෙලින්ම ඉහළට ස්වයිප් කරන බව සහතික කර ගන්න." @@ -71,6 +73,8 @@ "යෙදුම් මාරු කිරීමට ස්වයිප් කරන්න" "යෙදුම් අතර මාරු වීමට, ඔබගේ තිරයේ පහළම සිට උඩට ස්වයිප් කර, අල්ලාගෙන සිට, අනතුරුව මුදා හරින්න." "යෙදුම් අතර මාරු වීමට, ඔබගේ තිරයේ පහළම සිට උඩට ඇඟිලි 2කින් ස්වයිප් කර, අල්ලාගෙන සිට, අනතුරුව මුදා හරින්න." + + "සියල්ල සකසා ඇත" "නිමයි" "සැකසීම්" @@ -114,10 +118,8 @@ "දැනුම්දීම්" "ඉක්මන් සැකසීම්" "කාර්ය තීරුව" - - - - + "කාර්ය තීරුව පෙන්වා ඇත" + "කාර්ය තීරුව සඟවා ඇත" "සංචලන තීරුව" "ඉහළ/වම වෙත ගෙන යන්න" "පහළ/දකුණ වෙත ගෙන යන්න" diff --git a/quickstep/res/values-sk/strings.xml b/quickstep/res/values-sk/strings.xml index 86e7b53e5f..8977d30593 100644 --- a/quickstep/res/values-sk/strings.xml +++ b/quickstep/res/values-sk/strings.xml @@ -53,6 +53,8 @@ "Prechod späť potiahnutím" "Na poslednú obrazovku prejdete potiahnutím z ľavého alebo pravého okraja do stredu obrazovky." "Na poslednú obrazovku sa vrátite potiahnutím dvoma prstami z ľavého alebo pravého okraja do stredu obrazovky." + + "Musíte potiahnuť nahor z dolného okraja obrazovky." "Pred uvoľnením nesmiete zastať." "Musíte potiahnuť priamo hore." @@ -71,6 +73,8 @@ "Prepínanie aplikácií potiahnutím" "Aplikácie môžete prepínať potiahnutím obrazovky zdola nahor, pridržaním a následným uvoľnením." "Aplikácie prepnete potiahnutím dvoma prstami z dolnej časti obrazovky, ich pridržaním a uvoľnením." + + "Hotovo" "Hotovo" "Nastavenia" @@ -114,10 +118,8 @@ "Upozornenia" "Rýchle nastavenia" "Panel aplikácií" - - - - + "Panel aplikácií je zobrazený" + "Panel aplikácií je skrytý" "Navigačný panel" "Presunúť hore alebo doľava" "Presunúť dole alebo doprava" diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml index 86d14faf2f..78cd6672cc 100644 --- a/quickstep/res/values-sl/strings.xml +++ b/quickstep/res/values-sl/strings.xml @@ -53,6 +53,8 @@ "Povlecite za vrnitev" "Če se želite vrniti na prejšnji zaslon, povlecite z levega ali desnega roba do sredine zaslona." "Če se želite vrniti na zadnji prikazani zaslon, z dvema prstoma povlecite z levega ali desnega roba do sredine zaslona." + + "Pazite, da povlečete s spodnjega roba zaslona navzgor." "Pazite, da ne zaustavite prsta, preden ga dvignete." "Pazite, da povlečete naravnost navzgor." @@ -71,6 +73,8 @@ "Povlecite za preklapljanje med aplikacijami" "Za preklapljanje med aplikacijami povlecite navzgor z dna zaslona, pridržite in nato izpustite." "Za preklop med aplikacijami z dvema prstoma povlecite navzgor z dna zaslona, pridržite in spustite." + + "Zdaj znate" "Končano" "Nastavitve" @@ -114,10 +118,8 @@ "Obvestila" "Hitre nastavitve" "Opravilna vrstica" - - - - + "Opravilna vrstica je prikazana" + "Opravilna vrstica je skrita" "Vrstica za krmarjenje" "Premakni na vrh/levo" "Premakni na dno/desno" diff --git a/quickstep/res/values-sq/strings.xml b/quickstep/res/values-sq/strings.xml index becb7fc17a..ce2a858123 100644 --- a/quickstep/res/values-sq/strings.xml +++ b/quickstep/res/values-sq/strings.xml @@ -53,6 +53,8 @@ "Rrëshqit shpejt për t\'u kthyer prapa" "Për t\'u kthyer prapa tek ekrani i fundit, rrëshqit shpejt nga skaji i majtë ose i djathtë drejt mesit të ekranit" "Për t\'u kthyer prapa tek ekrani i fundit, rrëshqit shpejt me 2 gishta nga skaji i majtë ose i djathtë drejt mesit të ekranit." + + "Sigurohu që të rrëshqasësh shpejt lart nga skaji i poshtëm i ekranit." "Sigurohu që të mos ndalosh para se ta lëshosh." "Sigurohu që të rrëshqasësh shpejt drejt lart." @@ -71,6 +73,8 @@ "Rrëshqit shpejt për të ndërruar aplikacionet" "Për të ndërruar mes aplikacioneve, rrëshqit shpejt lart nga fundi i ekranit tënd, mbaj dhe pastaj lësho." "Për të ndërruar mes aplikacioneve, rrëshqit lart me 2 gishta nga fundi i ekranit, mbaje dhe lëshoje." + + "Plotësisht gati" "U krye" "Cilësimet" @@ -114,10 +118,8 @@ "Njoftimet" "Cilësimet shpejt" "Shiriti i detyrave" - - - - + "Shiriti i detyrave i shfaqur" + "Shiriti i detyrave i fshehur" "Shiriti i navigimit" "Lëviz në krye/majtas" "Lëviz në fund/djathtas" diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml index 8ab756ba3f..afd8e581f6 100644 --- a/quickstep/res/values-sr/strings.xml +++ b/quickstep/res/values-sr/strings.xml @@ -53,6 +53,8 @@ "Превуците да бисте се вратили уназад" "Да бисте се вратили на последњи екран, превуците од леве или десне ивице до средине екрана." "Да бисте се вратили на последњи екран, превуците помоћу два прста од леве или десне ивице до средине екрана." + + "Обавезно превуците нагоре од доње ивице екрана." "Никако не стајте пре отпуштања." "Обавезно превуците право нагоре." @@ -71,6 +73,8 @@ "Превуците да бисте заменили апликације" "За прелазак са једне апликације на другу превуците нагоре од дна екрана, задржите, па пустите." "За прелазак између апликација превуците помоћу два прста нагоре од дна екрана, задржите, па пустите." + + "То је то" "Готово" "Подешавања" @@ -114,10 +118,8 @@ "Обавештења" "Брза подешавања" "Трака задатака" - - - - + "Трака задатака је приказана" + "Трака задатака је скривена" "Трака за навигацију" "Премести горе лево" "Премести доле десно" diff --git a/quickstep/res/values-sv/strings.xml b/quickstep/res/values-sv/strings.xml index e8d57ddefd..d986f1a981 100644 --- a/quickstep/res/values-sv/strings.xml +++ b/quickstep/res/values-sv/strings.xml @@ -53,6 +53,8 @@ "Svep för att återgå" "Återgå till den senaste skärmen genom att svepa från skärmens vänster- eller högerkant till mitten." "Gå tillbaka till den senaste skärmen genom att med två fingrar svepa mot mitten av skärmen från vänster eller höger kant." + + "Se till att du sveper från nederkanten på skärmen." "Se till att du sveper i en jämn rörelse innan du släpper." "Se till att du sveper rakt uppåt." @@ -71,6 +73,8 @@ "Svep för att byta mellan appar" "Byt mellan appar genom att svepa uppåt från skärmens nederkant. Håll fingret nedtryckt och släpp." "Byta mellan appar: Svep uppåt med två fingrar från skärmens nederkant, håll kvar och släpp sedan." + + "Klart" "Klar" "Inställningar" @@ -114,10 +118,8 @@ "Aviseringar" "Snabbinställn." "Aktivitetsfält" - - - - + "Aktivitetsfältet visas" + "Aktivitetsfältet är dolt" "Navigeringsfält" "Flytta högst upp/till vänster" "Flytta längst ned/till höger" diff --git a/quickstep/res/values-sw/strings.xml b/quickstep/res/values-sw/strings.xml index bf4b27c58e..097544c0df 100644 --- a/quickstep/res/values-sw/strings.xml +++ b/quickstep/res/values-sw/strings.xml @@ -53,6 +53,8 @@ "Telezesha kidole ili urudi nyuma" "Ili urudi kwenye skrini iliyotangulia, telezesha kidole kuanzia ukingo wa kushoto au wa kulia kuelekea katikati ya skrini." "Ili urudi kwenye skrini iliyopita, telezesha vidole viwili kuanzia ukingo wa kushoto au wa kulia kuelekea katikati ya skrini." + + "Hakikisha unatelezesha kidole juu kuanzia ukingo wa chini wa skrini." "Hakikisha kuwa husimamishi kabla ya kuachilia." "Hakikisha unatelezesha kidole kuelekea juu." @@ -71,6 +73,8 @@ "Telezesha kidole ili ubadilishe programu" "Ili ubadili kati ya programu, telezesha kidole juu kuanzia sehemu ya chini ya skrini yako, ushikilie, kisha uachilie." "Ili ubadilishe kati ya programu, telezesha vidole viwili kuelekea juu kuanzia sehemu ya chini ya skrini yako, ushikilie, kisha uachilie." + + "Kila kitu kiko tayari" "Nimemaliza" "Mipangilio" @@ -114,10 +118,8 @@ "Arifa" "Mipangilio ya Haraka" "Upauzana" - - - - + "Upauzana umeonyeshwa" + "Upauzana umefichwa" "Sehemu ya viungo muhimu" "Sogeza juu/kushoto" "Sogeza chini/kulia" diff --git a/quickstep/res/values-ta/strings.xml b/quickstep/res/values-ta/strings.xml index 63ac555c4d..e6f9f93f5c 100644 --- a/quickstep/res/values-ta/strings.xml +++ b/quickstep/res/values-ta/strings.xml @@ -53,6 +53,8 @@ "பின்செல்ல ஸ்வைப் செய்யுங்கள்" "முந்தைய திரைக்கு மீண்டும் செல்ல, இடது/வலது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்க." "முந்தைய திரைக்கு மீண்டும் செல்ல, 2 விரல்களால் இடது அல்லது வலது ஓரத்திலிருந்து திரையின் மையப் பகுதிக்கு ஸ்வைப் செய்யுங்கள்." + + "திரையின் கீழ் ஓரத்திலிருந்து மேல்நோக்கி ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்." "விடுவிப்பதற்கு முன்பாக இடைநிறுத்தவில்லை என்பதை உறுதிசெய்துகொள்ளுங்கள்." "மேல்நோக்கி நேராக ஸ்வைப் செய்வதை உறுதிசெய்துகொள்ளுங்கள்." @@ -71,6 +73,8 @@ "ஆப்ஸுக்கிடையே மாற ஸ்வைப் செய்யுங்கள்" "ஆப்ஸுக்கு இடையே மாற, திரையின் கீழிலிருந்து மேலாக ஸ்வைப் செய்து, பிடித்திருந்து, பிறகு விடுவிக்கவும்." "ஆப்ஸுக்கிடையே மாற, திரையின் கீழிருந்து மேலாக 2 விரலால் ஸ்வைப் செய்து, பிடித்து, பிறகு விடுவிக்கவும்." + + "எல்லாம் தயார்" "முடிந்தது" "அமைப்புகள்" @@ -114,10 +118,8 @@ "அறிவிப்புகள்" "விரைவு அமைப்புகள்" "செயல் பட்டி" - - - - + "செயல் பட்டி காட்டப்படுகிறது" + "செயல் பட்டி மறைக்கப்பட்டுள்ளது" "வழிசெலுத்தல் பட்டி" "மேலே/இடதுபுறம் நகர்த்தும்" "கீழே/வலதுபுறம் நகர்த்தும்" diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml index 88fa6e30fc..cfae9a5c04 100644 --- a/quickstep/res/values-te/strings.xml +++ b/quickstep/res/values-te/strings.xml @@ -53,6 +53,8 @@ "వెనుకకు వెళ్ళడం కోసం స్వైప్ చేయండి" "మునుపటి స్క్రీన్‌కు తిరిగి వెళ్లడానికి, ఎడమ లేదా కుడి అంచు నుండి స్క్రీన్ మధ్యలోకి స్వైప్ చేయండి." "గత స్క్రీన్‌కు తిరిగి వెళ్లడానికి, ఎడమ లేదా కుడి అంచు నుండి స్క్రీన్ మధ్యలోకి 2 వేళ్లతో స్వైప్ చేయండి." + + "మీరు స్క్రీన్ దిగువ అంచు నుండి పైకి స్వయిప్ చేస్తున్నారని నిర్ధారించుకోండి." "బయలుదేరే ముందు మీరు పాజ్ చేయకుండా చూసుకోండి." "మీరు నేరుగా పైకి స్వైప్ చేశారని నిర్ధారించుకోండి." @@ -71,6 +73,8 @@ "యాప్‌ల మధ్య మార్చడం కోసం స్వైప్ చేయండి" "యాప్‌ల మధ్య మారడానికి, మీ స్క్రీన్ కింది వైపు నుండి పైకి స్వైప్ చేసి, పట్టుకుని, తర్వాత వదలండి." "యాప్‌ల మధ్య మారడానికి, మీ స్క్రీన్ కింది నుండి 2 వేళ్లతో పైకి స్వైప్ చేసి, నొక్కి పట్టి, వదలండి." + + "అంతా సిద్ధంగా ఉంది" "పూర్తయింది" "సెట్టింగ్‌లు" @@ -114,10 +118,8 @@ "నోటిఫికేషన్‌లు" "క్విక్ సెట్టింగ్‌లు" "టాస్క్‌బార్" - - - - + "టాస్క్‌బార్ చూపబడింది" + "టాస్క్‌బార్ దాచబడింది" "నావిగేషన్ బార్" "ఎగువ/ఎడమ వైపునకు తరలించండి" "దిగువ/కుడి వైపునకు తరలించండి" diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml index 28ce1dd959..dfb5512be8 100644 --- a/quickstep/res/values-th/strings.xml +++ b/quickstep/res/values-th/strings.xml @@ -53,6 +53,8 @@ "ปัดเพื่อย้อนกลับ" "หากต้องการย้อนกลับไปที่หน้าจอล่าสุด ให้ปัดจากขอบด้านซ้ายหรือขวาไปตรงกลางหน้าจอ" "หากต้องการย้อนกลับไปที่หน้าจอล่าสุด ให้ใช้ 2 นิ้วปัดจากขอบด้านซ้ายหรือขวาไปตรงกลางหน้าจอ" + + "ปัดขึ้นจากขอบด้านล่างของหน้าจอ" "ตรวจสอบว่าไม่มีการหยุดชั่วคราวก่อนยกนิ้วขึ้น" "ตรวจสอบว่าปัดขึ้นในแนวตรง" @@ -71,6 +73,8 @@ "ปัดเพื่อสลับแอป" "หากต้องการสลับระหว่างแอปต่างๆ ให้ปัดขึ้นจากด้านล่างของหน้าจอ ค้างไว้ แล้วปล่อย" "หากต้องการสลับระหว่างแอป ให้ใช้ 2 นิ้วปัดขึ้นจากด้านล่างของหน้าจอค้างไว้แล้วปล่อย" + + "เรียบร้อย" "เสร็จสิ้น" "การตั้งค่า" @@ -114,10 +118,8 @@ "การแจ้งเตือน" "การตั้งค่าด่วน" "แถบงาน" - - - - + "แถบงานแสดงอยู่" + "แถบงานซ่อนอยู่" "แถบนำทาง" "ย้ายไปที่ด้านบนหรือด้านซ้าย" "ย้ายไปที่ด้านล่างหรือด้านขวา" diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml index c30c0313ac..f4e45e751f 100644 --- a/quickstep/res/values-tl/strings.xml +++ b/quickstep/res/values-tl/strings.xml @@ -53,6 +53,8 @@ "Mag-swipe para bumalik" "Para bumalik sa nakaraang screen, mag-swipe mula sa kaliwa o kanang gilid patungo sa gitna ng screen." "Para bumalik sa huling screen, mag-swipe gamit ang 2 daliri mula sa kaliwa o kanang gilid hanggang sa gitna ng screen." + + "Tiyaking magsa-swipe ka pataas mula sa pinakaibaba ng screen." "Tiyaking hindi ka magpo-pause bago iangat ang iyong daliri." "Tiyaking magsa-swipe ka nang diretso pataas." @@ -71,6 +73,8 @@ "Mag-swipe para lumipat ng app" "Para lumipat ng app, mag-swipe pataas mula sa ibaba ng iyong screen, mag-hold, at iangat ang daliri." "Para lumipat ng app, mag-swipe pataas gamit ang 2 daliri mula sa ibaba, mag-hold, at bumitaw." + + "Handa na ang lahat" "Tapos na" "Mga Setting" @@ -114,10 +118,8 @@ "Mga Notification" "Quick Settings" "Taskbar" - - - - + "Ipinapakita ang taskbar" + "Nakatago ang taskbar" "Navigation bar" "Ilipat sa itaas/kaliwa" "Ilipat sa ibaba/kanan" diff --git a/quickstep/res/values-tr/strings.xml b/quickstep/res/values-tr/strings.xml index 4f19966c40..03c8dd2670 100644 --- a/quickstep/res/values-tr/strings.xml +++ b/quickstep/res/values-tr/strings.xml @@ -53,6 +53,8 @@ "Geri dönmek için kaydırma" "Son ekrana geri gitmek için sol veya sağ kenardan ekranın ortasına doğru kaydırın." "Son ekrana geri gitmek için sol veya sağ kenardan ekranın ortasına doğru 2 parmağınızla kaydırın." + + "Ekranın alt kenarından yukarı kaydırdığınızdan emin olun." "Bırakmadan önce parmağınızı duraklatmadığınızdan emin olun." "Düz bir şekilde yukarı kaydırdığınızdan emin olun." @@ -71,6 +73,8 @@ "Uygulamalar arasında geçiş yapmak için kaydırma" "Uygulamalar arasında geçiş yapmak için ekranınızın altından yukarı kaydırıp basılı tutun ve sonra bırakın." "Uygulamalara geçiş yapmak için ekranın altından 2 parmakla yukarı kaydırıp basılı tutun ve bırakın." + + "Hepsi bu kadar" "Bitti" "Ayarlar" @@ -114,10 +118,8 @@ "Bildirimler" "Hızlı Ayarlar" "Görev çubuğu." - - - - + "Görev çubuğu gösteriliyor" + "Görev çubuğu gizlendi" "Gezinme çubuğu" "Sol üste taşı" "Sağ alta taşı" diff --git a/quickstep/res/values-uk/strings.xml b/quickstep/res/values-uk/strings.xml index bfe355e76a..e1e80b25f5 100644 --- a/quickstep/res/values-uk/strings.xml +++ b/quickstep/res/values-uk/strings.xml @@ -53,6 +53,8 @@ "Щоб повернутися, проведіть пальцем по екрану" "Щоб перейти на попередній екран, проведіть пальцем від лівого чи правого краю до середини екрана." "Щоб перейти на попередній екран, проведіть двома пальцями від лівого чи правого краю до середини екрана." + + "Проведіть пальцем угору від нижнього краю екрана." "Не робіть паузу перед тим, як відірвати палець від екрана." "Проводьте пальцем вертикально вгору." @@ -71,6 +73,8 @@ "Проведіть пальцем, щоб перейти в інший додаток" "Щоб переключатися між додатками, проведіть знизу вгору по екрану, утримуйте палець, а потім відпустіть." "Щоб перейти в інший додаток, проведіть 2 пальцями від низу екрана, потримайте й відпустіть палець." + + "Усе готово!" "Готово" "Налаштування" @@ -114,10 +118,8 @@ "Сповіщення" "Швидкі налаштув." "Панель завдань" - - - - + "Панель завдань показано" + "Панель завдань приховано" "Панель навігації" "Перемістити вгору або вліво" "Перемістити вниз або вправо" diff --git a/quickstep/res/values-ur/strings.xml b/quickstep/res/values-ur/strings.xml index 03c85809a2..96fcd9ab8a 100644 --- a/quickstep/res/values-ur/strings.xml +++ b/quickstep/res/values-ur/strings.xml @@ -53,6 +53,8 @@ "واپس جانے کے لیے سوائپ کریں" "پچھلی اسکرین پر واپس جانے کے لیے بائیں یا دائیں کنارے سے اسکرین کے وسط تک سوائپ کریں۔" "آخری اسکرین پر واپس جانے کے لیے، 2 انگلیوں سے بائیں یا دائیں کنارے سے اسکرین کے وسط تک سوائپ کریں۔" + + "اس بات کو یقینی بنائیں کہ آپ اسکرین کے نچلے کنارے سے اوپر کی طرف سوائپ کریں۔" "اس بات کو یقینی بنائیں کہ آپ اپنی انگلی اوپر اٹھانے سے پہلے موقوف نہ کریں۔" "اس بات کو یقینی بنائیں کہ آپ سیدھا اوپر کی طرف سوائپ کریں۔" @@ -71,6 +73,8 @@ "ایپس سوئچ کرنے کے لیے سوائپ کریں" "ایپس کے مابین سوئچ کرنے کے لیے، اپنی اسکرین کے نچلے حصے سے اوپر کی جانب سوائپ کریں، پکڑے رکھیں، پھر چھوڑ دیں۔" "ایپس کے مابین سوئچ کرنے کیلئے، اپنی اسکرین کے نیچے سے 2 انگلیوں سے اوپر سوائپ کریں، دبائے رکھیں پھر چھوڑ دیں۔" + + "سب ہو گیا" "ہو گیا" "ترتیبات" diff --git a/quickstep/res/values-uz/strings.xml b/quickstep/res/values-uz/strings.xml index 2569f69341..5f8d30b30c 100644 --- a/quickstep/res/values-uz/strings.xml +++ b/quickstep/res/values-uz/strings.xml @@ -53,6 +53,8 @@ "Orqaga qaytish" "Ortga qaytish uchun barmoqni ekranning yon chekkalaridan oʻrtasigacha suring." "Oxirgi ekranga qaytish uchun 2 barmoq bilan ekranning chap yoki oʻng chekkasidan oʻrtasigacha suring." + + "Barmoqni ekranning pastki chetidan yuqoriga suring." "Barmoqni ekrandan pauzasiz qoʻyib uzing." "Barmoqni tik tepaga suring." @@ -71,6 +73,8 @@ "Ilovalar orasida almashish" "Ilovalarni ochish uchun ekranning pastidan tepaga qarab suring, biroz ushlab turing va qoʻyib yuboring" "Ilovalarni almashtirish uchun 2 barmoq bilan ekranning quyidan tepasiga surib turib, qoʻyib yuboring" + + "Tayyor" "Tayyor" "Sozlamalar" diff --git a/quickstep/res/values-vi/strings.xml b/quickstep/res/values-vi/strings.xml index ce4b14fb3e..e827232e16 100644 --- a/quickstep/res/values-vi/strings.xml +++ b/quickstep/res/values-vi/strings.xml @@ -53,6 +53,8 @@ "Vuốt để quay lại" "Để quay lại màn hình gần đây nhất, hãy vuốt từ mép trái hoặc mép phải tới chính giữa màn hình." "Để quay lại màn hình trước đó, hãy vuốt 2 ngón tay từ cạnh trái hoặc phải vào giữa màn hình." + + "Hãy vuốt lên từ mép dưới cùng của màn hình." "Hãy nhớ không được tạm dừng trước khi nhấc ngón tay." "Hãy vuốt thẳng lên." @@ -71,6 +73,8 @@ "Vuốt để chuyển đổi ứng dụng" "Để chuyển đổi giữa các ứng dụng, hãy vuốt lên từ cuối màn hình, giữ rồi thả ra." "Để chuyển đổi giữa các ứng dụng, hãy vuốt 2 ngón tay lên từ cuối màn hình, giữ rồi thả ra." + + "Đã hoàn tất" "Xong" "Cài đặt" @@ -114,10 +118,8 @@ "Thông báo" "Cài đặt nhanh" "Thanh tác vụ" - - - - + "Đã hiện thanh thao tác" + "Đã ẩn thanh thao tác" "Thanh điều hướng" "Chuyển lên trên cùng/sang bên trái" "Chuyển xuống dưới cùng/sang bên phải" diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml index 3d262a9632..df51dcd286 100644 --- a/quickstep/res/values-zh-rCN/strings.xml +++ b/quickstep/res/values-zh-rCN/strings.xml @@ -53,6 +53,8 @@ "滑动即可返回" "如要返回上一个屏幕,请从左侧或右侧边缘滑动到屏幕中间位置。" "若要返回上一个屏幕,请用两根手指从屏幕左侧或右侧边缘向中间滑动。" + + "请确保从屏幕底部边缘向上滑动。" "松开手指前,请确保不要停下来。" "请确保直接向上滑动。" @@ -71,6 +73,8 @@ "滑动即可切换应用" "如需在应用之间切换,请从屏幕底部向上滑动后按住,然后松开。" "若要在应用之间切换,请用两根手指从屏幕底部向上滑动并按住,然后松开。" + + "大功告成" "完成" "设置" @@ -114,10 +118,8 @@ "通知" "快捷设置" "任务栏" - - - - + "任务栏已显示" + "任务栏已隐藏" "导航栏" "移到顶部/左侧" "移到底部/右侧" diff --git a/quickstep/res/values-zh-rHK/strings.xml b/quickstep/res/values-zh-rHK/strings.xml index a19c2bcc4a..65b21d7bc6 100644 --- a/quickstep/res/values-zh-rHK/strings.xml +++ b/quickstep/res/values-zh-rHK/strings.xml @@ -53,6 +53,8 @@ "滑動即可返回" "如要返回上一個畫面,請從螢幕左側或右側邊緣往中央滑動。" "如要返回上一個畫面,請用 2 隻手指從螢幕左側或右側邊緣往中央滑動。" + + "請從螢幕底部邊緣向上滑動。" "放開手指前請勿停下來。" "請向上滑動。" @@ -71,6 +73,8 @@ "滑動即可切換應用程式" "如要切換應用程式,請從螢幕底部向上滑動並按住,然後放開。" "如要切換應用程式,請用 2 隻手指從螢幕底部向上滑動並按住,然後放開手指。" + + "大功告成" "完成" "設定" @@ -114,10 +118,8 @@ "通知" "快速設定" "工作列" - - - - + "顯示咗工作列" + "隱藏咗工作列" "導覽列" "移至上方/左側" "移至底部/右側" diff --git a/quickstep/res/values-zh-rTW/strings.xml b/quickstep/res/values-zh-rTW/strings.xml index 2a3aed7647..1c1ec3d0c5 100644 --- a/quickstep/res/values-zh-rTW/strings.xml +++ b/quickstep/res/values-zh-rTW/strings.xml @@ -53,6 +53,8 @@ "滑動即可返回" "如要返回上一個畫面,請從螢幕左側或右側邊緣往中央滑動。" "如要返回上一個畫面,請用 2 指從螢幕左側或右側邊緣往中央滑動。" + + "請從螢幕底部邊緣向上滑動。" "放開手指前請勿停下來。" "請向上滑動。" @@ -71,6 +73,8 @@ "使用滑動手勢切換應用程式" "如要切換不同的應用程式,請從螢幕底部向上滑動並按住,然後放開手指。" "如要切換應用程式,請用 2 指從螢幕底部向上滑動並按住,然後放開手指。" + + "大功告成" "完成" "設定" @@ -114,10 +118,8 @@ "通知" "快速設定" "工作列" - - - - + "已顯示工作列" + "已隱藏工作列" "導覽列" "移到上方/左側" "移到底部/右側" diff --git a/quickstep/res/values-zu/strings.xml b/quickstep/res/values-zu/strings.xml index aa3fbb3eb8..6fd4bd1083 100644 --- a/quickstep/res/values-zu/strings.xml +++ b/quickstep/res/values-zu/strings.xml @@ -53,6 +53,8 @@ "Swayipha ukuze uye emuva" "Ukuze ubuyele emuva esikrinini sokugcina, swapha kusuka emngceleni wesobunxele noma wesokudla kuya phakathi kwesikrini." "Ukuze ubuyele esikrinini sokugcina, swayipha ngeminwe emi-2 ukusuka kwesokunxele noma kwesokudla emphethweni uye phakathi kwesikrini." + + "Qiniseka ukuthi uswayiphela phezulu kusuka emngceleni ophansi wesikrini." "Qiniseka ukuthi awumisi ngaphambi kokudedela." "Qiniseka ukuthi uswayiphela ngqo phezulu." @@ -71,6 +73,8 @@ "Swayipha ukuze ushintshe ama-app" "Ukuze ushintshe phakathi kwama-app, swayiphela phezulu kusuka ngezansi kwesikrini sakho, bese uyadedela." "Ukuze ushintshe phakathi kwama-app, swayiphela phezulu ngeminwe emi-2 kusukela phansi esikrinini sakho, ubambe, bese uyakhulula." + + "Konke kusethiwe" "Kwenziwe" "Amasethingi" @@ -114,10 +118,8 @@ "Izaziso" "Amasethingi Asheshayo" "I-Taskbar" - - - - + "Ibha yomsebenzi ibonisiwe" + "Ibha yomsebenzi ifihliwe" "Ibha yokufuna" "Hamba phezulu/kwesokunxele" "Hamba phansi/kwesokudla" From 01a41a2bef3df4b274461df437541d75439d32a8 Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Wed, 22 Mar 2023 22:26:16 +0800 Subject: [PATCH 02/16] Remove workaround of delaying remove task The timing doesn't work on the latest code base. The onStop of activity still almost has no chance to be called after swiping the task to kill process. And the friendly activity lifecycle will be controlled by removeTask since Id69a8ba77da16a13f7a3413bb004fc2206f4b4e8. Bug: 184899234 Bug: 213583589 Test: No behavior change after swiping task out from recents Change-Id: If4110069834964571df7128b119fc6c782a03b34 --- .../com/android/quickstep/views/RecentsView.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index fe50d9aeff..9a25e9ca64 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -225,10 +225,6 @@ public abstract class RecentsView CONTENT_ALPHA = new FloatProperty("contentAlpha") { @Override @@ -3893,14 +3889,13 @@ public abstract class RecentsView { ActivityManagerWrapper.getInstance().removeTask(primaryTaskId); if (secondaryTaskId != -1) { ActivityManagerWrapper.getInstance().removeTask(secondaryTaskId); } - }, - REMOVE_TASK_WAIT_FOR_APP_STOP_MS); + }); } protected void onDismissAnimationEnds() { @@ -3923,9 +3918,8 @@ public abstract class RecentsView { - UI_HELPER_EXECUTOR.getHandler().postDelayed( - ActivityManagerWrapper.getInstance()::removeAllRecentTasks, - REMOVE_TASK_WAIT_FOR_APP_STOP_MS); + UI_HELPER_EXECUTOR.getHandler().post( + ActivityManagerWrapper.getInstance()::removeAllRecentTasks); removeTasksViewsAndClearAllButton(); startHome(); }); From 5945226515f0c1343cc2f02e881a27cf1acd7def Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 22 Mar 2023 11:13:08 -0700 Subject: [PATCH 03/16] Fix spring not springing when unstashing. The spring animation was getting cancelled by the reset animation. Added a check to avoid creating a new reset animation if we are already animating to the final value. Bug: 273961611 Change-Id: I3afb62b89b5f6fbe920906499db2497ef8e94069 Flag: ENABLE_TRANSIENT_TASKBAR Test: stash transient taskbar --- .../taskbar/TaskbarLauncherStateController.java | 14 +++++++++----- .../taskbar/TaskbarTranslationController.java | 15 +++++++++++++++ src/com/android/launcher3/anim/AnimatedFloat.java | 9 +++++++++ 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index a6c38dab87..aa81bfd056 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -553,12 +553,16 @@ public class TaskbarLauncherStateController { animatorSet.play(stashAnimator); } - if (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL) { - // Translate back to 0 at a shorter or same duration as the icon alignment animation. - // This ensures there is no jump after switching to hotseat, e.g. when swiping up from - // overview to home. Currently we do duration / 2 just to make it feel snappier. + // Translate back to 0 at a shorter or same duration as the icon alignment animation. + // This ensures there is no jump after switching to hotseat, e.g. when swiping up from + // overview to home. When not in app, we do duration / 2 just to make it feel snappier. + long resetDuration = mControllers.taskbarStashController.isInApp() + ? duration + : duration / 2; + if (!mControllers.taskbarTranslationController.willAnimateToZeroBefore(resetDuration) + && (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL)) { animatorSet.play(mControllers.taskbarTranslationController - .createAnimToResetTranslation(duration / 2)); + .createAnimToResetTranslation(resetDuration)); } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java index b9b63dbac6..065d1117c8 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java @@ -133,6 +133,21 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable return mCallback; } + /** + * Returns true if we will animate to zero before the input duration. + */ + public boolean willAnimateToZeroBefore(long duration) { + if (mSpringBounce != null && mSpringBounce.isRunning()) { + long springDuration = mSpringBounce.getDuration(); + long current = mSpringBounce.getCurrentPlayTime(); + return (springDuration - current < duration); + } + if (mTranslationYForSwipe.isAnimatingToValue(0)) { + return mTranslationYForSwipe.getRemainingTime() < duration; + } + return false; + } + /** * Returns an animation to reset the taskbar translation to {@code 0}. */ diff --git a/src/com/android/launcher3/anim/AnimatedFloat.java b/src/com/android/launcher3/anim/AnimatedFloat.java index 2380af4e03..2f3fa63321 100644 --- a/src/com/android/launcher3/anim/AnimatedFloat.java +++ b/src/com/android/launcher3/anim/AnimatedFloat.java @@ -132,6 +132,15 @@ public class AnimatedFloat { return isAnimating() && mEndValue != null && mEndValue == endValue; } + /** + * Returns the remaining time of the existing animation (if any). + */ + public long getRemainingTime() { + return isAnimating() && mValueAnimator.isRunning() + ? Math.max(0, mValueAnimator.getDuration() - mValueAnimator.getCurrentPlayTime()) + : 0; + } + /** * Returns whether we are currently not animating, and the animation's value matches the given. */ From 897e66585288a5769aebb174622078e2dbb879b2 Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Tue, 14 Mar 2023 13:36:53 -0700 Subject: [PATCH 04/16] Update home screen trackpad gesture behaviors - 3-finger swipe up to go to overview - 2-finger swipe down to pull down notifications - 2-finger swipe up to open all apps Fixes: 273972106 Test: manual Change-Id: I61bd0ad98b21abeb5f9b00786fe358c03a49f539 --- .../touchcontrollers/NoButtonQuickSwitchTouchController.java | 4 ++++ quickstep/src/com/android/quickstep/RotationTouchHelper.java | 5 ++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java index 847114a960..f1c4f68e28 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java +++ b/quickstep/src/com/android/launcher3/uioverrides/touchcontrollers/NoButtonQuickSwitchTouchController.java @@ -20,6 +20,7 @@ import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.LauncherState.OVERVIEW; import static com.android.launcher3.LauncherState.OVERVIEW_ACTIONS; import static com.android.launcher3.LauncherState.QUICK_SWITCH_FROM_HOME; +import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe; import static com.android.launcher3.anim.AlphaUpdateListener.ALPHA_CUTOFF_THRESHOLD; import static com.android.launcher3.anim.AnimatorListeners.forEndCallback; import static com.android.launcher3.anim.Interpolators.ACCEL_0_75; @@ -161,6 +162,9 @@ public class NoButtonQuickSwitchTouchController implements TouchController, if ((ev.getEdgeFlags() & Utilities.EDGE_NAV_BAR) == 0) { return false; } + if (isTrackpadMultiFingerSwipe(ev)) { + return false; + } int stateFlags = SystemUiProxy.INSTANCE.get(mLauncher).getLastSystemUiStateFlags(); if ((stateFlags & SYSUI_STATE_OVERVIEW_DISABLED) != 0) { return false; diff --git a/quickstep/src/com/android/quickstep/RotationTouchHelper.java b/quickstep/src/com/android/quickstep/RotationTouchHelper.java index 81b818e926..66d1e1e2cf 100644 --- a/quickstep/src/com/android/quickstep/RotationTouchHelper.java +++ b/quickstep/src/com/android/quickstep/RotationTouchHelper.java @@ -18,7 +18,6 @@ package com.android.quickstep; import static android.view.Display.DEFAULT_DISPLAY; import static android.view.Surface.ROTATION_0; -import static com.android.launcher3.MotionEventsUtils.isTrackpadMotionEvent; import static com.android.launcher3.MotionEventsUtils.isTrackpadMultiFingerSwipe; import static com.android.launcher3.util.DisplayController.CHANGE_ACTIVE_SCREEN; import static com.android.launcher3.util.DisplayController.CHANGE_ALL; @@ -243,8 +242,8 @@ public class RotationTouchHelper implements DisplayInfoChangeListener { */ public boolean isInSwipeUpTouchRegion(MotionEvent event, int pointerIndex, BaseActivityInterface activity) { - if (isTrackpadMotionEvent(event)) { - return isTrackpadMultiFingerSwipe(event) && !activity.isResumed(); + if (isTrackpadMultiFingerSwipe(event)) { + return true; } return mOrientationTouchTransformer.touchInValidSwipeRegions(event.getX(pointerIndex), event.getY(pointerIndex)); From ec6fbb490a689a1e5b02e4f4ebede73fce9cde66 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 22 Mar 2023 16:26:07 -0700 Subject: [PATCH 05/16] Update taskbar background color. Bug: 259712417 Test: manual Change-Id: I7eb207d420bcadc2cd37d206a0dbd96081741cad --- res/color-night-v31/taskbar_background.xml | 2 +- res/color-v31/taskbar_background.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/res/color-night-v31/taskbar_background.xml b/res/color-night-v31/taskbar_background.xml index 8df168678c..3409d52b25 100644 --- a/res/color-night-v31/taskbar_background.xml +++ b/res/color-night-v31/taskbar_background.xml @@ -14,5 +14,5 @@ limitations under the License. --> - + diff --git a/res/color-v31/taskbar_background.xml b/res/color-v31/taskbar_background.xml index c2bcab8c0d..5c53e4a0c9 100644 --- a/res/color-v31/taskbar_background.xml +++ b/res/color-v31/taskbar_background.xml @@ -14,5 +14,5 @@ limitations under the License. --> - + From 071a196a779aaaa13431ceb822a5d67287976b16 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 22 Mar 2023 18:00:38 -0700 Subject: [PATCH 06/16] Update nav bar buttons to spec. Bug: 259712417 Test: manual Change-Id: I9ec51dc99392e371c15e3918af239a0970809ec2 Flag: ENABLE_TRANSIENT_TASKBAR=true --- quickstep/res/drawable/ic_sysbar_back.xml | 10 +++++----- quickstep/res/drawable/ic_sysbar_home.xml | 10 +++++----- quickstep/res/drawable/ic_sysbar_recent.xml | 10 +++++----- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/quickstep/res/drawable/ic_sysbar_back.xml b/quickstep/res/drawable/ic_sysbar_back.xml index 1eea6774b1..7d2bdee6e0 100644 --- a/quickstep/res/drawable/ic_sysbar_back.xml +++ b/quickstep/res/drawable/ic_sysbar_back.xml @@ -16,13 +16,13 @@ --> + android:viewportWidth="20" + android:viewportHeight="20"> + android:pathData="M15.5417 1.66669C15.1833 1.66669 14.8417 1.76669 14.5333 1.94169L3.21667 8.74169C2.775 9.00002 2.5 9.48335 2.5 10C2.5 10.5167 2.775 11 3.21667 11.2584L14.5333 18.05C14.8417 18.2334 15.1833 18.325 15.5417 18.325C16.625 18.325 17.5 17.45 17.5 16.3667V3.62502C17.5 2.54169 16.625 1.66669 15.5417 1.66669Z" /> \ No newline at end of file diff --git a/quickstep/res/drawable/ic_sysbar_home.xml b/quickstep/res/drawable/ic_sysbar_home.xml index b4b397b59c..987f2f6ae8 100644 --- a/quickstep/res/drawable/ic_sysbar_home.xml +++ b/quickstep/res/drawable/ic_sysbar_home.xml @@ -16,12 +16,12 @@ --> + android:width="20dp" + android:height="20dp" + android:viewportWidth="20" + android:viewportHeight="20"> + android:pathData="M10.0001 18.3334C5.40008 18.3334 1.66675 14.6 1.66675 10C1.66675 5.40002 5.40008 1.66669 10.0001 1.66669C14.6001 1.66669 18.3334 5.40002 18.3334 10C18.3334 14.6 14.6001 18.3334 10.0001 18.3334Z" /> \ No newline at end of file diff --git a/quickstep/res/drawable/ic_sysbar_recent.xml b/quickstep/res/drawable/ic_sysbar_recent.xml index f8c4778a2b..26c4dc813c 100644 --- a/quickstep/res/drawable/ic_sysbar_recent.xml +++ b/quickstep/res/drawable/ic_sysbar_recent.xml @@ -16,12 +16,12 @@ --> + android:width="20dp" + android:height="20dp" + android:viewportWidth="20" + android:viewportHeight="20"> + android:pathData="M4.47634 2.5H15.5241C16.6164 2.5 17.5002 3.38382 17.5002 4.4761V15.5239C17.5002 16.6162 16.6164 17.5 15.5241 17.5H4.47634C3.38407 17.5 2.50024 16.6162 2.50024 15.5239V4.4761C2.50024 3.38382 3.38407 2.5 4.47634 2.5Z" /> \ No newline at end of file From c2e5bfca50b2db59f0dbf1e4bcf86f1a6c78489b Mon Sep 17 00:00:00 2001 From: Johannes Gallmann Date: Mon, 20 Mar 2023 12:38:51 +0100 Subject: [PATCH 07/16] Fix taskbar linger above notification shade Remarks: 1. I think the correct fix for this would be to have the Taskbar z-ordered below the notification shade. That however seems to be difficult because there are cases when the taskbar window must be above the notification shade. 2. This CL improves the behaviour by starting the taskbar disappear animation when the notification panel is half expanded instead of waiting for the full expansion. This improves the UX when expanding the shade slowly. When expanding the shade quickly, this CL does unfortunately not significantly improve the UX. 3. I believe that the `SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED` and `SYSUI_STATE_QUICK_SETTINGS_EXPANDED` flags can be replaced by the newly introduced one. But since this would pose the risk of introducing new bugs, I did not do that in this CL. It is my intention to create a CL with that replacement in udc. Bug: 272621219 Test: Manual, i.e. observe Taskbar behaviour when pulling down notification shade and expanding quick settings Change-Id: Ic79d3f41ed224cb1abdbac9011c6d27e0f458ec2 --- .../android/launcher3/taskbar/TaskbarActivityContext.java | 8 +++----- .../android/launcher3/taskbar/TaskbarStashController.java | 6 ++---- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 77a9d780b0..e27e979ccd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -30,8 +30,7 @@ import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLA import static com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOHIDE_SUSPEND_FULLSCREEN; import static com.android.launcher3.taskbar.TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW; import static com.android.launcher3.testing.shared.ResourceUtils.getBoolByName; -import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED; -import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING; import android.animation.AnimatorSet; @@ -571,9 +570,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { public void updateSysuiStateFlags(int systemUiStateFlags, boolean fromInit) { mControllers.navbarButtonsViewController.updateStateForSysuiFlags(systemUiStateFlags, fromInit); - int shadeExpandedFlags = SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED - | SYSUI_STATE_QUICK_SETTINGS_EXPANDED; - onNotificationShadeExpandChanged((systemUiStateFlags & shadeExpandedFlags) != 0, fromInit); + boolean isShadeVisible = (systemUiStateFlags & SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE) != 0; + onNotificationShadeExpandChanged(isShadeVisible, fromInit); mControllers.taskbarViewController.setRecentsButtonDisabled( mControllers.navbarButtonsViewController.isRecentsDisabled() || isNavBarKidsModeActive()); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index d26fbc4459..b142f9ee35 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -32,8 +32,7 @@ import static com.android.launcher3.util.FlagDebugUtils.appendFlag; import static com.android.launcher3.util.FlagDebugUtils.formatFlagChange; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_IME_SWITCHER_SHOWING; -import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED; -import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_QUICK_SETTINGS_EXPANDED; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_PINNING; import android.animation.Animator; @@ -907,8 +906,7 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba long startDelay = 0; updateStateForFlag(FLAG_STASHED_IN_APP_SYSUI, hasAnyFlag(systemUiStateFlags, - SYSUI_STATE_QUICK_SETTINGS_EXPANDED - | SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED)); + SYSUI_STATE_NOTIFICATION_PANEL_VISIBLE)); updateStateForFlag(FLAG_STASHED_SYSUI, hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING)); updateStateForFlag(FLAG_STASHED_DEVICE_LOCKED, From c73db73a79f711c34ac179e1c2170f8568a4e46d Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Fri, 17 Mar 2023 23:49:09 +0000 Subject: [PATCH 08/16] Handle swipe down on taskbar to stash - Moved all touch-to-stash logic to new TaskbarStashViaTouchController (handles both tap outside to stash instantly as well as swipe down inside to stash after letting go) - This is a TouchController on TaskbarDragLayer, so it intercepts touches from TaskbarView before icons can be dragged during swipe down Test: swipe up to invoke transient taskbar in an app, swipe down or touch outside to stash Flag: ENABLE_TRANSIENT_TASKBAR=true Fixes: 246631710 Change-Id: I5cf64848bba34ad32fcc80a93fb4f79ebd2c10a7 --- quickstep/res/values-sw720dp/dimens.xml | 2 +- quickstep/res/values/dimens.xml | 4 +- .../launcher3/taskbar/StashedHandleView.java | 4 + .../launcher3/taskbar/TaskbarDragLayer.java | 16 --- .../taskbar/TaskbarDragLayerController.java | 55 ++------ .../taskbar/TaskbarStashViaTouchController.kt | 133 ++++++++++++++++++ .../launcher3/taskbar/TaskbarView.java | 14 +- .../taskbar/TaskbarViewController.java | 79 +---------- .../TaskbarStashInputConsumer.java | 2 +- .../launcher3/views/BaseDragLayer.java | 6 +- 10 files changed, 162 insertions(+), 153 deletions(-) create mode 100644 quickstep/src/com/android/launcher3/taskbar/TaskbarStashViaTouchController.kt diff --git a/quickstep/res/values-sw720dp/dimens.xml b/quickstep/res/values-sw720dp/dimens.xml index f093185d14..0832a91981 100644 --- a/quickstep/res/values-sw720dp/dimens.xml +++ b/quickstep/res/values-sw720dp/dimens.xml @@ -43,7 +43,7 @@ 52dp - 30dp + 30dp 100dp 180dp 300dp diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index 225bdcc1db..3f4f527b55 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -303,10 +303,12 @@ 16dp - 40dp + 40dp 88dp 156dp 264dp + + 24dp 24dp diff --git a/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java b/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java index 6db58397c3..5eec6a47ae 100644 --- a/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java +++ b/quickstep/src/com/android/launcher3/taskbar/StashedHandleView.java @@ -69,6 +69,10 @@ public class StashedHandleView extends View { */ public void updateSampledRegion(Rect stashedHandleBounds) { getLocationOnScreen(mTmpArr); + // Translations are temporary due to animations, remove them for the purpose of determining + // the final region we want sampled. + mTmpArr[0] -= Math.round(getTranslationX()); + mTmpArr[1] -= Math.round(getTranslationY()); mSampledRegion.set(stashedHandleBounds); mSampledRegion.offset(mTmpArr[0], mTmpArr[1]); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java index 58d6244a5f..6cc6a846df 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java @@ -116,22 +116,6 @@ public class TaskbarDragLayer extends BaseDragLayer { return true; } - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - if (mControllerCallbacks != null) { - mControllerCallbacks.tryStashBasedOnMotionEvent(ev); - } - return super.onInterceptTouchEvent(ev); - } - - @Override - public boolean onTouchEvent(MotionEvent ev) { - if (mControllerCallbacks != null) { - mControllerCallbacks.tryStashBasedOnMotionEvent(ev); - } - return super.onTouchEvent(ev); - } - @Override public void onViewRemoved(View child) { super.onViewRemoved(child); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java index 7c3d14d28b..56be48e141 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayerController.java @@ -18,15 +18,12 @@ package com.android.launcher3.taskbar; import android.content.res.Resources; import android.graphics.Point; import android.graphics.Rect; -import android.view.MotionEvent; import android.view.ViewTreeObserver; import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.anim.AnimatedFloat; -import com.android.launcher3.testing.shared.ResourceUtils; import com.android.launcher3.util.DimensionUtils; -import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.TouchController; import java.io.PrintWriter; @@ -40,7 +37,6 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa private final TaskbarActivityContext mActivity; private final TaskbarDragLayer mTaskbarDragLayer; private final int mFolderMargin; - private float mGestureHeightYThreshold; // Alpha properties for taskbar background. private final AnimatedFloat mBgTaskbar = new AnimatedFloat(this::updateBackgroundAlpha); @@ -59,6 +55,7 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa // Initialized in init. private TaskbarControllers mControllers; + private TaskbarStashViaTouchController mTaskbarStashViaTouchController; private AnimatedFloat mOnBackgroundNavButtonColorIntensity; private float mLastSetBackgroundAlpha; @@ -69,11 +66,11 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa mTaskbarDragLayer = taskbarDragLayer; final Resources resources = mTaskbarDragLayer.getResources(); mFolderMargin = resources.getDimensionPixelSize(R.dimen.taskbar_folder_margin); - updateGestureHeight(); } public void init(TaskbarControllers controllers) { mControllers = controllers; + mTaskbarStashViaTouchController = new TaskbarStashViaTouchController(mControllers); mTaskbarDragLayer.init(new TaskbarDragLayerCallbacks()); mOnBackgroundNavButtonColorIntensity = mControllers.navbarButtonsViewController @@ -130,17 +127,11 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa return mBgOffset; } - private void updateGestureHeight() { - int gestureHeight = ResourceUtils.getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, - mActivity.getResources()); - mGestureHeightYThreshold = mActivity.getDeviceProfile().heightPx - gestureHeight; - } - /** * Make updates when configuration changes. */ public void onConfigurationChanged() { - updateGestureHeight(); + mTaskbarStashViaTouchController.updateGestureHeight(); } private void updateBackgroundAlpha() { @@ -206,8 +197,6 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa */ public class TaskbarDragLayerCallbacks { - private final int[] mTempOutLocation = new int[2]; - /** * Called to update the touchable insets. * @see ViewTreeObserver.InternalInsetsInfo#setTouchableInsets(int) @@ -216,37 +205,6 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa mControllers.taskbarInsetsController.updateInsetsTouchability(insetsInfo); } - /** - * Listens to TaskbarDragLayer touch events and responds accordingly. - */ - public void tryStashBasedOnMotionEvent(MotionEvent ev) { - if (!DisplayController.isTransientTaskbar(mActivity)) { - return; - } - if (mControllers.taskbarStashController.isStashed()) { - return; - } - - boolean stashTaskbar = false; - - MotionEvent screenCoordinates = MotionEvent.obtain(ev); - if (ev.getAction() == MotionEvent.ACTION_OUTSIDE) { - stashTaskbar = true; - } else if (ev.getAction() == MotionEvent.ACTION_DOWN) { - mTaskbarDragLayer.getLocationOnScreen(mTempOutLocation); - screenCoordinates.offsetLocation(mTempOutLocation[0], mTempOutLocation[1]); - - if (!mControllers.taskbarViewController.isEventOverAnyItem(screenCoordinates) - && screenCoordinates.getY() < mGestureHeightYThreshold) { - stashTaskbar = true; - } - } - - if (stashTaskbar) { - mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true); - } - } - /** * Called when a child is removed from TaskbarDragLayer. */ @@ -276,9 +234,12 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa * Returns touch controllers. */ public TouchController[] getTouchControllers() { - return new TouchController[]{mActivity.getDragController(), + return new TouchController[] { + mActivity.getDragController(), mControllers.taskbarForceVisibleImmersiveController, - mControllers.navbarButtonsViewController.getTouchController()}; + mControllers.navbarButtonsViewController.getTouchController(), + mTaskbarStashViaTouchController, + }; } } } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashViaTouchController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashViaTouchController.kt new file mode 100644 index 0000000000..0e5fa380e7 --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashViaTouchController.kt @@ -0,0 +1,133 @@ +/* + * 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.taskbar + +import android.view.MotionEvent +import com.android.launcher3.R +import com.android.launcher3.Utilities +import com.android.launcher3.anim.Interpolators.LINEAR +import com.android.launcher3.testing.shared.ResourceUtils +import com.android.launcher3.touch.SingleAxisSwipeDetector +import com.android.launcher3.touch.SingleAxisSwipeDetector.DIRECTION_NEGATIVE +import com.android.launcher3.touch.SingleAxisSwipeDetector.VERTICAL +import com.android.launcher3.util.DisplayController +import com.android.launcher3.util.TouchController +import com.android.quickstep.inputconsumers.TaskbarStashInputConsumer + +/** + * A helper [TouchController] for [TaskbarDragLayerController], specifically to handle touch events + * to stash Transient Taskbar. There are two cases to handle: + * - A touch outside of Transient Taskbar bounds will immediately stash on [MotionEvent.ACTION_DOWN] + * or [MotionEvent.ACTION_OUTSIDE]. + * - Touches inside Transient Taskbar bounds will stash if it is detected as a swipe down gesture. + * + * Note: touches to *unstash* Taskbar are handled by [TaskbarStashInputConsumer]. + */ +class TaskbarStashViaTouchController(val controllers: TaskbarControllers) : TouchController { + + private val activity: TaskbarActivityContext = controllers.taskbarActivityContext + private val enabled = DisplayController.isTransientTaskbar(activity) + private val swipeDownDetector: SingleAxisSwipeDetector + private val translationCallback = controllers.taskbarTranslationController.transitionCallback + /** Interpolator to apply resistance as user swipes down to the bottom of the screen. */ + private val displacementInterpolator = LINEAR + /** How far we can translate the TaskbarView before it's offscreen. */ + private val maxVisualDisplacement = + activity.resources.getDimensionPixelSize(R.dimen.transient_taskbar_margin).toFloat() + /** How far the swipe could go, if user swiped from the very top of TaskbarView. */ + private val maxTouchDisplacement = maxVisualDisplacement + activity.deviceProfile.taskbarSize + private val touchDisplacementToStash = + activity.resources.getDimensionPixelSize(R.dimen.taskbar_to_nav_threshold).toFloat() + + /** The height of the system gesture region, so we don't stash when touching down there. */ + private var gestureHeightYThreshold = 0f + + init { + updateGestureHeight() + swipeDownDetector = SingleAxisSwipeDetector(activity, createSwipeListener(), VERTICAL) + swipeDownDetector.setDetectableScrollConditions(DIRECTION_NEGATIVE, false) + } + + fun updateGestureHeight() { + if (!enabled) return + + val gestureHeight: Int = + ResourceUtils.getNavbarSize( + ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE, + activity.resources + ) + gestureHeightYThreshold = (activity.deviceProfile.heightPx - gestureHeight).toFloat() + } + + private fun createSwipeListener() = + object : SingleAxisSwipeDetector.Listener { + private var lastDisplacement = 0f + + override fun onDragStart(start: Boolean, startDisplacement: Float) {} + + override fun onDrag(displacement: Float): Boolean { + lastDisplacement = displacement + if (displacement < 0) return false + // Apply resistance so that the visual displacement doesn't go beyond the screen. + translationCallback.onActionMove( + Utilities.mapToRange( + displacement, + 0f, + maxTouchDisplacement, + 0f, + maxVisualDisplacement, + displacementInterpolator + ) + ) + return false + } + + override fun onDragEnd(velocity: Float) { + val isFlingDown = swipeDownDetector.isFling(velocity) && velocity > 0 + val isSignificantDistance = lastDisplacement > touchDisplacementToStash + if (isFlingDown || isSignificantDistance) { + // Successfully triggered stash. + controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true) + } + translationCallback.onActionEnd() + swipeDownDetector.finishedScrolling() + } + } + + override fun onControllerInterceptTouchEvent(ev: MotionEvent): Boolean { + if (!enabled || controllers.taskbarStashController.isStashed) { + return false + } + + val screenCoordinatesEv = MotionEvent.obtain(ev) + screenCoordinatesEv.setLocation(ev.rawX, ev.rawY) + if (ev.action == MotionEvent.ACTION_OUTSIDE) { + controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true) + } else if (controllers.taskbarViewController.isEventOverAnyItem(screenCoordinatesEv)) { + swipeDownDetector.onTouchEvent(ev) + if (swipeDownDetector.isDraggingState) { + return true + } + } else if (ev.action == MotionEvent.ACTION_DOWN) { + if (screenCoordinatesEv.y < gestureHeightYThreshold) { + controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true) + } + } + return false + } + + override fun onControllerTouchEvent(ev: MotionEvent) = swipeDownDetector.onTouchEvent(ev) +} diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java index 0116e1648b..695c3e74e9 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java @@ -419,20 +419,10 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar } } - @Override - public boolean onInterceptTouchEvent(MotionEvent ev) { - mControllerCallbacks.onInterceptTouchEvent(ev); - return super.onInterceptTouchEvent(ev); - } - @Override public boolean onTouchEvent(MotionEvent event) { - if (mIconLayoutBounds.left <= event.getX() - && event.getX() <= mIconLayoutBounds.right - && !DisplayController.isTransientTaskbar(mActivityContext)) { - // Don't allow long pressing between icons, or above/below them - // unless its transient taskbar. - mControllerCallbacks.clearTouchInProgress(); + if (mIconLayoutBounds.left <= event.getX() && event.getX() <= mIconLayoutBounds.right) { + // Don't allow long pressing between icons, or above/below them. return true; } if (mControllerCallbacks.onTouchEvent(event)) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java index 4d92a9e36f..1560791e4f 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java @@ -26,8 +26,6 @@ import static com.android.launcher3.anim.Interpolators.FINAL_FRAME; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_TASKBAR_ALLAPPS_BUTTON_TAP; import static com.android.launcher3.taskbar.TaskbarManager.isPhoneMode; -import static com.android.launcher3.touch.SingleAxisSwipeDetector.DIRECTION_NEGATIVE; -import static com.android.launcher3.touch.SingleAxisSwipeDetector.VERTICAL; import static com.android.launcher3.util.MultiPropertyFactory.MULTI_PROPERTY_VALUE; import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_TASKBAR_ALIGNMENT_ANIM; import static com.android.launcher3.util.MultiTranslateDelegate.INDEX_TASKBAR_REVEAL_ANIM; @@ -61,7 +59,6 @@ import com.android.launcher3.anim.RoundedRectRevealOutlineProvider; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.icons.ThemedIconDrawable; import com.android.launcher3.model.data.ItemInfo; -import com.android.launcher3.touch.SingleAxisSwipeDetector; import com.android.launcher3.util.DisplayController; import com.android.launcher3.util.ItemInfoMatcher; import com.android.launcher3.util.LauncherBindableItemsContainer; @@ -115,9 +112,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private final TaskbarModelCallbacks mModelCallbacks; - // Captures swipe down action to close transient Taskbar. - protected @Nullable SingleAxisSwipeDetector mSwipeDownDetector; - // Initialized in init. private TaskbarControllers mControllers; @@ -154,31 +148,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar colorHSL[2] = TASKBAR_DARK_THEME_ICONS_BACKGROUND_LUMINANCE; mTaskbarThemedIconsBackgroundColor = ColorUtils.HSLToColor(colorHSL); } - - if (DisplayController.isTransientTaskbar(mActivity)) { - mSwipeDownDetector = new SingleAxisSwipeDetector(activity, - new SingleAxisSwipeDetector.Listener() { - private float mLastDisplacement; - - @Override - public boolean onDrag(float displacement) { - mLastDisplacement = displacement; - return false; - } - - @Override - public void onDragEnd(float velocity) { - if (mLastDisplacement > 0) { - mControllers.taskbarStashController - .updateAndAnimateTransientTaskbar(true); - } - } - - @Override - public void onDragStart(boolean start, float startDisplacement) {} - }, VERTICAL); - mSwipeDownDetector.setDetectableScrollConditions(DIRECTION_NEGATIVE, false); - } mIsRtl = Utilities.isRtl(mTaskbarView.getResources()); } @@ -649,8 +618,6 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar private float mDownX, mDownY; private boolean mCanceledStashHint; - private boolean mTouchInProgress; - public View.OnClickListener getIconOnClickListener() { return mActivity.getItemOnClickListener(); } @@ -671,76 +638,40 @@ public class TaskbarViewController implements TaskbarControllers.LoggableTaskbar .updateAndAnimateIsManuallyStashedInApp(true); } - /** - * Simply listens to all intercept touch events passed to TaskbarView. - */ - public void onInterceptTouchEvent(MotionEvent ev) { - if (ev.getAction() == MotionEvent.ACTION_DOWN) { - mTouchInProgress = true; - } - - if (mTouchInProgress && mSwipeDownDetector != null) { - mSwipeDownDetector.onTouchEvent(ev); - } - - if (ev.getAction() == MotionEvent.ACTION_UP - || ev.getAction() == MotionEvent.ACTION_CANCEL) { - clearTouchInProgress(); - } - } - /** * Get the first chance to handle TaskbarView#onTouchEvent, and return whether we want to * consume the touch so TaskbarView treats it as an ACTION_CANCEL. + * TODO(b/270395798): We can remove this entirely once we remove the Transient Taskbar flag. */ public boolean onTouchEvent(MotionEvent motionEvent) { - boolean shouldConsumeTouch = false; - boolean clearTouchInProgress = false; - final float x = motionEvent.getRawX(); final float y = motionEvent.getRawY(); switch (motionEvent.getAction()) { case MotionEvent.ACTION_DOWN: - mTouchInProgress = true; mDownX = x; mDownY = y; mControllers.taskbarStashController.startStashHint(/* animateForward = */ true); mCanceledStashHint = false; break; case MotionEvent.ACTION_MOVE: - if (mTouchInProgress - && !mCanceledStashHint + if (!mCanceledStashHint && squaredHypot(mDownX - x, mDownY - y) > mSquaredTouchSlop) { mControllers.taskbarStashController.startStashHint( /* animateForward= */ false); mCanceledStashHint = true; - shouldConsumeTouch = true; + return true; } break; case MotionEvent.ACTION_UP: case MotionEvent.ACTION_CANCEL: - if (mTouchInProgress && !mCanceledStashHint) { + if (!mCanceledStashHint) { mControllers.taskbarStashController.startStashHint( /* animateForward= */ false); } - clearTouchInProgress = true; break; } - if (mTouchInProgress && mSwipeDownDetector != null) { - mSwipeDownDetector.onTouchEvent(motionEvent); - } - if (clearTouchInProgress) { - clearTouchInProgress(); - } - return shouldConsumeTouch; - } - - /** - * Ensures that we do not pass any more touch events to the SwipeDetector. - */ - public void clearTouchInProgress() { - mTouchInProgress = false; + return false; } /** diff --git a/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java b/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java index 1ddb855ef2..87559fb7f3 100644 --- a/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java +++ b/quickstep/src/com/android/quickstep/inputconsumers/TaskbarStashInputConsumer.java @@ -74,7 +74,7 @@ public class TaskbarStashInputConsumer extends DelegateInputConsumer { Resources res = context.getResources(); mUnstashArea = res.getDimensionPixelSize(R.dimen.taskbar_unstash_input_area); - mTaskbarNavThreshold = res.getDimensionPixelSize(R.dimen.taskbar_nav_threshold); + mTaskbarNavThreshold = res.getDimensionPixelSize(R.dimen.taskbar_from_nav_threshold); mTaskbarNavThresholdY = taskbarActivityContext.getDeviceProfile().heightPx - mTaskbarNavThreshold; mIsTaskbarAllAppsOpen = diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java index 8ff68880a6..823003ce06 100644 --- a/src/com/android/launcher3/views/BaseDragLayer.java +++ b/src/com/android/launcher3/views/BaseDragLayer.java @@ -18,6 +18,7 @@ package com.android.launcher3.views; import static android.view.MotionEvent.ACTION_CANCEL; import static android.view.MotionEvent.ACTION_DOWN; +import static android.view.MotionEvent.ACTION_OUTSIDE; import static android.view.MotionEvent.ACTION_UP; import static com.android.launcher3.util.window.RefreshRateTracker.getSingleFrameMs; @@ -260,7 +261,10 @@ public abstract class BaseDragLayer mTouchCompleteListener = null; } - if (mActiveController != null) { + if (mActiveController != null && ev.getAction() != ACTION_OUTSIDE) { + // For some reason, once we intercept touches and have an mActiveController, we won't + // get onInterceptTouchEvent() for ACTION_OUTSIDE. Thus, we must recalculate a new + // TouchController (if any) to handle the ACTION_OUTSIDE here in onTouchEvent() as well. return mActiveController.onControllerTouchEvent(ev); } else { // In case no child view handled the touch event, we may not get onIntercept anymore From 04c6def895c737d0e2f964749a14f6f87c34d1b9 Mon Sep 17 00:00:00 2001 From: Charlie Anderson Date: Thu, 23 Mar 2023 11:23:55 -0400 Subject: [PATCH 09/16] reorder System shortcuts for taskbar and secondary display Bug: 269343928 Bug: 272418357 Test: locally on device Change-Id: Iec7f9ad702214c7ab7f49758dbf2463fe63b0324 --- .../android/launcher3/taskbar/TaskbarPopupController.java | 8 +++----- .../launcher3/secondarydisplay/SecondaryDragLayer.java | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java index 0ed453818e..cfc7813305 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java @@ -201,14 +201,12 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba // Create a Stream of all applicable system shortcuts private Stream getSystemShortcuts() { - // concat a Stream of split options with a Stream of APP_INFO - Stream appInfo = Stream.of(APP_INFO); - + // append split options to APP_INFO shortcut, the order here will reflect in the popup return Stream.concat( + Stream.of(APP_INFO), Utilities.getSplitPositionOptions(mContext.getDeviceProfile()) .stream() - .map(this::createSplitShortcutFactory), - appInfo + .map(this::createSplitShortcutFactory) ); } diff --git a/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java b/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java index 2ffe34f415..a917b68e56 100644 --- a/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java +++ b/src/com/android/launcher3/secondarydisplay/SecondaryDragLayer.java @@ -197,13 +197,13 @@ public class SecondaryDragLayer extends BaseDragLayer return false; } + // order of this list will reflect in the popup List systemShortcuts = new ArrayList<>(); - + systemShortcuts.add(APP_INFO.getShortcut(mActivity, item, v)); // Hide redundant pin shortcut for app drawer icons if drag-n-drop is enabled. if (!FeatureFlags.SECONDARY_DRAG_N_DROP_TO_PIN.get() || !mActivity.isAppDrawerShown()) { systemShortcuts.add(mPinnedAppsAdapter.getSystemShortcut(item, v)); } - systemShortcuts.add(APP_INFO.getShortcut(mActivity, item, v)); int deepShortcutCount = popupDataProvider.getShortcutCountForItem(item); final PopupContainerWithArrow container; if (ENABLE_MATERIAL_U_POPUP.get()) { From ef1a9b798d4020056baea586c13c9d8a1cd83e14 Mon Sep 17 00:00:00 2001 From: Jagrut Desai Date: Fri, 17 Mar 2023 15:30:25 -0700 Subject: [PATCH 10/16] Make clear announcment for taskbar education. Test: Manual Bug: 273393698 Bug: 273408584 Flag: not needed Change-Id: I6c6eb1e1e1047a2e702592290bf5735e8bfa6ce2 --- quickstep/res/layout/taskbar_edu_tooltip.xml | 2 + .../taskbar/TaskbarEduTooltipController.kt | 40 +++++++++++++++++++ res/values/id.xml | 2 + 3 files changed, 44 insertions(+) diff --git a/quickstep/res/layout/taskbar_edu_tooltip.xml b/quickstep/res/layout/taskbar_edu_tooltip.xml index 29f49566f6..3fcd713147 100644 --- a/quickstep/res/layout/taskbar_edu_tooltip.xml +++ b/quickstep/res/layout/taskbar_edu_tooltip.xml @@ -21,6 +21,8 @@ android:clipChildren="false" android:clipToPadding="false" android:fitsSystemWindows="true" + android:focusable="true" + android:importantForAccessibility="yes" android:gravity="center" android:orientation="vertical"> diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt index bc582e2b65..e56e258d12 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt @@ -17,10 +17,13 @@ package com.android.launcher3.taskbar import android.graphics.PorterDuff.Mode.SRC_ATOP import android.graphics.PorterDuffColorFilter +import android.os.Bundle import android.view.View import android.view.View.GONE import android.view.View.VISIBLE import android.view.ViewGroup +import android.view.accessibility.AccessibilityEvent +import android.view.accessibility.AccessibilityNodeInfo import androidx.annotation.IntDef import androidx.annotation.LayoutRes import com.airbnb.lottie.LottieAnimationView @@ -153,6 +156,7 @@ class TaskbarEduTooltipController(val activityContext: TaskbarActivityContext) : FLAG_AUTOHIDE_SUSPEND_EDU_OPEN, true ) + tooltip.onCloseCallback = { this.tooltip = null controllers.taskbarAutohideSuspendController.updateFlag( @@ -161,11 +165,47 @@ class TaskbarEduTooltipController(val activityContext: TaskbarActivityContext) : ) controllers.taskbarStashController.updateAndAnimateTransientTaskbar(true) } + tooltip.accessibilityDelegate = createAccessibilityDelegate() overlayContext.layoutInflater.inflate(contentResId, tooltip.content, true) this.tooltip = tooltip } + private fun createAccessibilityDelegate() = + object : View.AccessibilityDelegate() { + override fun performAccessibilityAction( + host: View?, + action: Int, + args: Bundle? + ): Boolean { + if (action == R.id.close) { + hide() + return true + } + return super.performAccessibilityAction(host, action, args) + } + + override fun onPopulateAccessibilityEvent(host: View?, event: AccessibilityEvent?) { + super.onPopulateAccessibilityEvent(host, event) + if (event?.eventType == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) { + event.text?.add(host?.context?.getText(R.string.taskbar_edu_a11y_title)) + } + } + + override fun onInitializeAccessibilityNodeInfo( + host: View?, + info: AccessibilityNodeInfo? + ) { + super.onInitializeAccessibilityNodeInfo(host, info) + info?.addAction( + AccessibilityNodeInfo.AccessibilityAction( + R.id.close, + host?.context?.getText(R.string.taskbar_edu_close) + ) + ) + } + } + override fun dumpLogs(prefix: String?, pw: PrintWriter?) { pw?.println(prefix + "TaskbarEduTooltipController:") pw?.println("$prefix\tisTooltipEnabled=$isTooltipEnabled") diff --git a/res/values/id.xml b/res/values/id.xml index dc819443a6..7b812de71e 100644 --- a/res/values/id.xml +++ b/res/values/id.xml @@ -28,6 +28,7 @@ + @@ -41,4 +42,5 @@ + From f469c4c0061299e24a5d26419c8abc14011c2a19 Mon Sep 17 00:00:00 2001 From: George Lin Date: Wed, 22 Mar 2023 23:44:15 +0000 Subject: [PATCH 11/16] [Launcher] Hide preview bottom components when overlay tabs are shown For deciding show/hide of the bottom components, we need to take care of 2 cases 1. When on color update, we need to set the QSB flag and re-render the surface 2. When show/hide the wallpaper control, we specifically send a message to show/hide the workspace bottom components Test: https://drive.google.com/file/d/1z1EG6KsLKFxAlS8GBLV16GoGvwI72IHc/view?usp=sharing&resourcekey=0-OGzB0RmiK5qvV2rwMYvUHQ Test: https://drive.google.com/file/d/1gK54Y5MuHTt2tAuFDxY7z8RIL22J5c9f/view?usp=sharing&resourcekey=0-jPPC1pl1VkCS_tib2-pVxA Test: https://drive.google.com/file/d/1ntUSgD7KbHPDGNpomQ5zE0D2fsYVeuNA/view?usp=sharing&resourcekey=0-TCuuvL4p022ATzKYuF-Q1A Test: https://drive.google.com/file/d/1yA1K52N-orajamnrxWD17Qg7bCclmq53/view?usp=sharing&resourcekey=0-6LHnZGM5JpFQISNJ6X7jEg Bug: 266618769 Change-Id: I428e6f50dc71369aa8fcdee31629023709e6503f --- .../graphics/GridCustomizationsProvider.java | 16 ++++++++++--- .../graphics/LauncherPreviewRenderer.java | 19 +++++++++++++++ .../graphics/PreviewSurfaceRenderer.java | 24 +++++++++++++++---- 3 files changed, 52 insertions(+), 7 deletions(-) diff --git a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java index 2c8f1f3a2a..ae5d8d489a 100644 --- a/src/com/android/launcher3/graphics/GridCustomizationsProvider.java +++ b/src/com/android/launcher3/graphics/GridCustomizationsProvider.java @@ -66,6 +66,9 @@ public class GridCustomizationsProvider extends ContentProvider { private static final String KEY_SURFACE_PACKAGE = "surface_package"; private static final String KEY_CALLBACK = "callback"; + public static final String KEY_HIDE_BOTTOM_ROW = "hide_bottom_row"; + + private static final int MESSAGE_ID_UPDATE_PREVIEW = 1337; private final ArrayMap mActivePreviews = new ArrayMap<>(); @@ -79,7 +82,7 @@ public class GridCustomizationsProvider extends ContentProvider { String[] selectionArgs, String sortOrder) { switch (uri.getPath()) { case KEY_LIST_OPTIONS: { - MatrixCursor cursor = new MatrixCursor(new String[] { + MatrixCursor cursor = new MatrixCursor(new String[]{ KEY_NAME, KEY_ROWS, KEY_COLS, KEY_PREVIEW_COUNT, KEY_IS_DEFAULT}); InvariantDeviceProfile idp = InvariantDeviceProfile.INSTANCE.get(getContext()); for (GridOption gridOption : idp.parseAllGridOptions(getContext())) { @@ -95,7 +98,7 @@ public class GridCustomizationsProvider extends ContentProvider { } case GET_ICON_THEMED: case ICON_THEMED: { - MatrixCursor cursor = new MatrixCursor(new String[] {BOOLEAN_VALUE}); + MatrixCursor cursor = new MatrixCursor(new String[]{BOOLEAN_VALUE}); cursor.newRow().add(BOOLEAN_VALUE, isThemedIconEnabled(getContext()) ? 1 : 0); return cursor; } @@ -224,7 +227,14 @@ public class GridCustomizationsProvider extends ContentProvider { @Override public boolean handleMessage(Message message) { - destroyObserver(this); + if (destroyed) { + return true; + } + if (message.what == MESSAGE_ID_UPDATE_PREVIEW) { + renderer.hideBottomRow(message.getData().getBoolean(KEY_HIDE_BOTTOM_ROW)); + } else { + destroyObserver(this); + } return true; } diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java index b061f8f643..7f49aa9cc1 100644 --- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java @@ -344,6 +344,25 @@ public class LauncherPreviewRenderer extends ContextWrapper return mHotseat; } + /** + * Hides the components in the bottom row. + * + * @param hide True to hide and false to show. + */ + public void hideBottomRow(boolean hide) { + mUiHandler.post(() -> { + if (mDp.isTaskbarPresent) { + // hotseat icons on bottom + mHotseat.setIconsAlpha(hide ? 0 : 1); + if (mDp.isQsbInline) { + mHotseat.setQsbAlpha(hide ? 0 : 1); + } + } else { + mHotseat.setQsbAlpha(hide ? 0 : 1); + } + }); + } + @Override public CellLayout getScreenWithId(int screenId) { return mWorkspaceScreens.get(screenId); diff --git a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java index 85c0a7a565..0767e69378 100644 --- a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java +++ b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java @@ -87,6 +87,8 @@ public class PreviewSurfaceRenderer { private final SurfaceControlViewHost mSurfaceControlViewHost; private boolean mDestroyed = false; + private LauncherPreviewRenderer mRenderer; + private boolean mHideQsb; public PreviewSurfaceRenderer(Context context, Bundle bundle) throws Exception { mContext = context; @@ -97,6 +99,7 @@ public class PreviewSurfaceRenderer { gridName = InvariantDeviceProfile.getCurrentGridName(context); } mWallpaperColors = bundle.getParcelable(KEY_COLORS); + mHideQsb = bundle.getBoolean(GridCustomizationsProvider.KEY_HIDE_BOTTOM_ROW); mIdp = new InvariantDeviceProfile(context, gridName); mHostToken = bundle.getBinder(KEY_HOST_TOKEN); @@ -174,6 +177,17 @@ public class PreviewSurfaceRenderer { MODEL_EXECUTOR.execute(this::loadModelData); } + /** + * Hides the components in the bottom row. + * + * @param hide True to hide and false to show. + */ + public void hideBottomRow(boolean hide) { + if (mRenderer != null) { + mRenderer.hideBottomRow(hide); + } + } + @WorkerThread private void loadModelData() { final boolean migrated = doGridMigrationIfNecessary(); @@ -209,8 +223,8 @@ public class PreviewSurfaceRenderer { DeviceProfile deviceProfile = mIdp.getDeviceProfile(previewContext); String query = LauncherSettings.Favorites.SCREEN + " = " + Workspace.FIRST_SCREEN_ID - + " or " + LauncherSettings.Favorites.CONTAINER + " = " - + LauncherSettings.Favorites.CONTAINER_HOTSEAT; + + " or " + LauncherSettings.Favorites.CONTAINER + " = " + + LauncherSettings.Favorites.CONTAINER_HOTSEAT; if (deviceProfile.isTwoPanels) { query += " or " + LauncherSettings.Favorites.SCREEN + " = " + Workspace.SECOND_SCREEN_ID; @@ -254,8 +268,10 @@ public class PreviewSurfaceRenderer { if (mDestroyed) { return; } - View view = new LauncherPreviewRenderer(inflationContext, mIdp, mWallpaperColors, - launcherWidgetSpanInfo).getRenderedView(dataModel, widgetProviderInfoMap); + mRenderer = new LauncherPreviewRenderer(inflationContext, mIdp, + mWallpaperColors, launcherWidgetSpanInfo); + mRenderer.hideBottomRow(mHideQsb); + View view = mRenderer.getRenderedView(dataModel, widgetProviderInfoMap); // This aspect scales the view to fit in the surface and centers it final float scale = Math.min(mWidth / (float) view.getMeasuredWidth(), mHeight / (float) view.getMeasuredHeight()); From ba19f3166997b95c0784d2c67a632e5b2e2a72a1 Mon Sep 17 00:00:00 2001 From: Mike Schneider Date: Wed, 22 Mar 2023 14:26:25 +0100 Subject: [PATCH 12/16] Auto-stash taskbar when locking device This greatly reduces the the jank of the taskbar being shown above the lockscreen. Before: http://shortn/_PhXhkWR73t After: http://shortn/_MC3ZLGHp4o Bug: 264604213 Test: manual (http://shortn/_ISEXThUFM2), tapl Change-Id: Ib1c5dbaafd4d0e1d69fbc03d908632e0275c8a0b --- .../taskbar/TaskbarKeyguardController.java | 4 +++- .../TaskbarLauncherStateController.java | 9 ++++++-- .../taskbar/TaskbarStashController.java | 22 ++++++++++++++----- 3 files changed, 27 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java index 8cc8965d53..edcd4c8019 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarKeyguardController.java @@ -5,6 +5,7 @@ import static com.android.systemui.shared.system.QuickStepContract.SCREEN_STATE_ import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BACK_DISABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_BOUNCER_SHOWING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DOZING; +import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_DEVICE_DREAMING; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_HOME_DISABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_OVERVIEW_DISABLED; import static com.android.systemui.shared.system.QuickStepContract.SYSUI_STATE_SCREEN_ON; @@ -34,7 +35,8 @@ public class TaskbarKeyguardController implements TaskbarControllers.LoggableTas // locked. public static final int MASK_ANY_SYSUI_LOCKED = SYSUI_STATE_BOUNCER_SHOWING | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING - | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED; + | SYSUI_STATE_STATUS_BAR_KEYGUARD_SHOWING_OCCLUDED + | SYSUI_STATE_DEVICE_DREAMING; private final TaskbarActivityContext mContext; private int mKeyguardSysuiFlags; diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index d997f56a16..cf8148e6c6 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -457,8 +457,13 @@ public class TaskbarLauncherStateController { animatorSet.play(mTaskbarCornerRoundness.animateToValue(cornerRoundness)); } - if (hasAnyFlag(changedFlags, FLAG_DEVICE_LOCKED)) { - // When transitioning between locked/unlocked, there is no stashing animation. + // Keep isUnlockTransition in sync with its counterpart in + // TaskbarStashController#createAnimToIsStashed. + boolean isUnlockTransition = + hasAnyFlag(changedFlags, FLAG_DEVICE_LOCKED) && !hasAnyFlag(FLAG_DEVICE_LOCKED); + if (isUnlockTransition) { + // When transitioning to unlocked, ensure the hotseat is fully visible from the + // beginning. The hotseat itself is animated by LauncherUnlockAnimationController. mIconAlignment.cancelAnimation(); // updateValue ensures onIconAlignmentRatioChanged will be called if there is an actual // change in value diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java index d26fbc4459..123d7a1da8 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarStashController.java @@ -586,9 +586,12 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba // already stashed Taskbar. boolean hotseatTopElement = mControllers.uiController.isHotseatIconOnTopWhenAligned() || !hasAnyFlag(changedFlags, FLAG_IN_APP); - // If transitioning between locked/unlocked device, do not play a stash animation. - boolean unLockedTransition = hasAnyFlag(changedFlags, FLAG_STASHED_DEVICE_LOCKED); - boolean skipStashAnimation = !hotseatTopElement || unLockedTransition; + // If transitioning to unlocked device, do not play a stash animation. + // Keep isUnlockTransition in sync with its counterpart in + // TaskbarLauncherStateController#onStateChangeApplied. + boolean isUnlockTransition = hasAnyFlag(changedFlags, FLAG_STASHED_DEVICE_LOCKED) + && !hasAnyFlag(FLAG_STASHED_DEVICE_LOCKED); + boolean skipStashAnimation = !hotseatTopElement || isUnlockTransition; if (isTransientTaskbar) { createTransientAnimToIsStashed(mAnimator, isStashed, duration, animateBg, changedFlags, @@ -911,8 +914,17 @@ public class TaskbarStashController implements TaskbarControllers.LoggableTaskba | SYSUI_STATE_NOTIFICATION_PANEL_EXPANDED)); updateStateForFlag(FLAG_STASHED_SYSUI, hasAnyFlag(systemUiStateFlags, SYSUI_STATE_SCREEN_PINNING)); - updateStateForFlag(FLAG_STASHED_DEVICE_LOCKED, - hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED)); + + boolean isLocked = hasAnyFlag(systemUiStateFlags, MASK_ANY_SYSUI_LOCKED); + boolean wasLocked = hasAnyFlag(FLAG_STASHED_DEVICE_LOCKED); + updateStateForFlag(FLAG_STASHED_DEVICE_LOCKED, isLocked); + + if (isLocked && !wasLocked && DisplayController.isTransientTaskbar(mActivity)) { + // Stash the transient taskbar when locking the device. This improves the transition + // to AoD (otherwise the taskbar stays a bit too long above the collapsing AoD scrim), + // and ensures the taskar state is reset when unlocking the device afterwards. + updateStateForFlag(FLAG_STASHED_IN_APP_AUTO, true); + } // Only update FLAG_STASHED_IN_APP_IME when system gesture is not in progress. mIsImeShowing = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_IME_SHOWING); From c93d6948e06566f03a82ae12e24571d990a9d885 Mon Sep 17 00:00:00 2001 From: Charlie Anderson Date: Tue, 14 Mar 2023 13:18:56 -0400 Subject: [PATCH 13/16] sets the initial arrow color for the popup to match the popup background. Bug: 247880037 Test: tested popups manually on device Change-Id: I6374e1a20aaeac1eb375108a91f0a49c088a15a9 --- src/com/android/launcher3/popup/ArrowPopup.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/popup/ArrowPopup.java b/src/com/android/launcher3/popup/ArrowPopup.java index 9d06d4a6fa..0edf2921ae 100644 --- a/src/com/android/launcher3/popup/ArrowPopup.java +++ b/src/com/android/launcher3/popup/ArrowPopup.java @@ -140,13 +140,11 @@ public abstract class ArrowPopup mOutlineRadius = Themes.getDialogCornerRadius(context); mActivityContext = ActivityContext.lookupContext(context); mIsRtl = Utilities.isRtl(getResources()); - - int popupPrimaryColor = Themes.getAttrColor(context, R.attr.popupColorPrimary); - mArrowColor = popupPrimaryColor; mElevation = getResources().getDimension(R.dimen.deep_shortcuts_elevation); // Initialize arrow view final Resources resources = getResources(); + mArrowColor = getColorStateList(getContext(), R.color.popup_shade_first).getDefaultColor(); mMargin = resources.getDimensionPixelSize(R.dimen.popup_margin); mArrowWidth = resources.getDimensionPixelSize(R.dimen.popup_arrow_width); mArrowHeight = resources.getDimensionPixelSize(R.dimen.popup_arrow_height); @@ -159,6 +157,7 @@ public abstract class ArrowPopup int smallerRadius = resources.getDimensionPixelSize(R.dimen.popup_smaller_radius); mRoundedTop = new GradientDrawable(); + int popupPrimaryColor = Themes.getAttrColor(context, R.attr.popupColorPrimary); mRoundedTop.setColor(popupPrimaryColor); mRoundedTop.setCornerRadii(new float[] { mOutlineRadius, mOutlineRadius, mOutlineRadius, mOutlineRadius, smallerRadius, smallerRadius, smallerRadius, smallerRadius}); From d3925b662d2f7b2b12be74ba042908b4cb2adce4 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Thu, 23 Mar 2023 15:38:19 -0700 Subject: [PATCH 14/16] Log receiving broadcast for managed user unlocked Bug: 243688989 Change-Id: I6f1b575a90e51ad1674154f60199ffef5004a224 --- src/com/android/launcher3/LauncherModel.java | 4 ++++ tests/src/com/android/launcher3/ui/WorkProfileTest.java | 3 ++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 4472383339..ad95f7e240 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -285,6 +285,10 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action) || Intent.ACTION_MANAGED_PROFILE_UNLOCKED.equals(action)) { UserHandle user = intent.getParcelableExtra(Intent.EXTRA_USER); + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.WORK_TAB_MISSING, "onBroadcastIntent intentAction: " + action + + " user: " + user); + } if (user != null) { if (Intent.ACTION_MANAGED_PROFILE_AVAILABLE.equals(action) || Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE.equals(action)) { diff --git a/tests/src/com/android/launcher3/ui/WorkProfileTest.java b/tests/src/com/android/launcher3/ui/WorkProfileTest.java index 9eeea2425a..c22f93dca3 100644 --- a/tests/src/com/android/launcher3/ui/WorkProfileTest.java +++ b/tests/src/com/android/launcher3/ui/WorkProfileTest.java @@ -72,7 +72,8 @@ public class WorkProfileTest extends AbstractLauncherUiTest { } updateWorkProfileSetupSuccessful("am start-user", output); - Log.d(WORK_TAB_MISSING, "workProfileSuccessful? " + mWorkProfileSetupSuccessful); + Log.d(WORK_TAB_MISSING, "workProfileSuccessful? " + mWorkProfileSetupSuccessful + + " shellCmd: " + logStr); if (!mWorkProfileSetupSuccessful) { return; // no need to setup launcher since all tests will skip. } From a8f03bbe134b15bb0aa93a4d9752b42542957352 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Thu, 23 Mar 2023 13:53:27 -0700 Subject: [PATCH 15/16] Update transient taskbar shadow alpha for light/dark theme. Bug: 259712417 Test: manual Change-Id: If3b24efa7b619501e8ed07621d8673e68d2c903d Flag: ENABLE_TRANSIENT_TASKBAR true --- .../taskbar/TaskbarBackgroundRenderer.kt | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt index 82b455d24a..f3b3054000 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt @@ -22,6 +22,7 @@ import android.graphics.Paint import android.graphics.Path import android.graphics.RectF import com.android.launcher3.R +import com.android.launcher3.Utilities import com.android.launcher3.Utilities.mapRange import com.android.launcher3.Utilities.mapToRange import com.android.launcher3.anim.Interpolators @@ -31,6 +32,9 @@ import com.android.launcher3.util.DisplayController /** Helps draw the taskbar background, made up of a rectangle plus two inverted rounded corners. */ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { + private val DARK_THEME_SHADOW_ALPHA = 51f + private val LIGHT_THEME_SHADOW_ALPHA = 25f + val paint = Paint() val lastDrawnTransientRect = RectF() var backgroundHeight = context.deviceProfile.taskbarSize.toFloat() @@ -42,6 +46,7 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { private val isTransientTaskbar = DisplayController.isTransientTaskbar(context) + private val shadowAlpha: Float private var shadowBlur = 0f private var keyShadowDistance = 0f private var bottomMargin = 0 @@ -73,6 +78,10 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { keyShadowDistance = res.getDimension(R.dimen.transient_taskbar_key_shadow_distance) } + shadowAlpha = + if (Utilities.isDarkTheme(context)) DARK_THEME_SHADOW_ALPHA + else LIGHT_THEME_SHADOW_ALPHA + setCornerRoundness(DEFAULT_ROUNDNESS) } @@ -142,13 +151,13 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { -mapRange(1f - progress, 0f, stashedHandleHeight / 2f) // Draw shadow. - val shadowAlpha = - mapToRange(paint.alpha.toFloat(), 0f, 255f, 0f, 25f, Interpolators.LINEAR) + val newShadowAlpha = + mapToRange(paint.alpha.toFloat(), 0f, 255f, 0f, shadowAlpha, Interpolators.LINEAR) paint.setShadowLayer( shadowBlur, 0f, keyShadowDistance, - setColorAlphaBound(Color.BLACK, Math.round(shadowAlpha)) + setColorAlphaBound(Color.BLACK, Math.round(newShadowAlpha)) ) lastDrawnTransientRect.set( From 002317f60cc460dfbde8c2506d6c0874919a3af0 Mon Sep 17 00:00:00 2001 From: Federico Baron Date: Fri, 3 Mar 2023 00:42:00 -0800 Subject: [PATCH 16/16] Add subclass for two pane widget picker Since the regular widget picker and the widget picker for tablet diverge quite a bit, we added a child class for it that extends WidgetsFullSheet.java There should be no functionality changes with this CL, it's purely changes in code structure. Bug: 256684299 Test: Turn on LARGE_SCREEN_WIDGET_PICKER flag and verify nothing changes compared to ag/20508230. Change-Id: Ie0e93534d7b93017cc11a05f67728155d22951f9 --- .../widgets_full_sheet_large_screen.xml | 6 +- .../launcher3/widget/BaseWidgetSheet.java | 2 - .../widget/picker/WidgetsFullSheet.java | 359 ++++++------------ .../widget/picker/WidgetsListAdapter.java | 12 +- .../widget/picker/WidgetsTwoPaneSheet.java | 271 +++++++++++++ 5 files changed, 389 insertions(+), 261 deletions(-) create mode 100644 src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java diff --git a/res/layout/widgets_full_sheet_large_screen.xml b/res/layout/widgets_full_sheet_large_screen.xml index 0626e60cc5..f563baa70e 100644 --- a/res/layout/widgets_full_sheet_large_screen.xml +++ b/res/layout/widgets_full_sheet_large_screen.xml @@ -12,8 +12,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - - + diff --git a/src/com/android/launcher3/widget/BaseWidgetSheet.java b/src/com/android/launcher3/widget/BaseWidgetSheet.java index cfd241c130..07c6ba4628 100644 --- a/src/com/android/launcher3/widget/BaseWidgetSheet.java +++ b/src/com/android/launcher3/widget/BaseWidgetSheet.java @@ -32,7 +32,6 @@ import android.view.WindowInsets; import android.view.animation.Interpolator; import android.widget.Toast; -import androidx.annotation.GuardedBy; import androidx.annotation.Nullable; import androidx.annotation.Px; import androidx.core.view.ViewCompat; @@ -182,7 +181,6 @@ public abstract class BaseWidgetSheet extends AbstractSlideInView * Measures the dimension of this view and its children by taking system insets, navigation bar, * status bar, into account. */ - @GuardedBy("MainThread") protected void doMeasure(int widthMeasureSpec, int heightMeasureSpec) { DeviceProfile deviceProfile = mActivityContext.getDeviceProfile(); int widthUsed; diff --git a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java index bd75ce6061..5293c3dda0 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/picker/WidgetsFullSheet.java @@ -30,7 +30,6 @@ import android.content.Context; import android.content.pm.LauncherApps; import android.content.res.Configuration; import android.content.res.Resources; -import android.graphics.Outline; import android.graphics.Rect; import android.os.Build; import android.os.Process; @@ -43,13 +42,10 @@ import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; -import android.view.ViewOutlineProvider; import android.view.WindowInsets; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; import android.widget.Button; -import android.widget.FrameLayout; -import android.widget.LinearLayout; import android.widget.TextView; import android.window.BackEvent; @@ -68,10 +64,7 @@ import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.compat.AccessibilityManagerCompat; import com.android.launcher3.model.UserManagerState; import com.android.launcher3.model.WidgetItem; -import com.android.launcher3.model.data.PackageItemInfo; import com.android.launcher3.pm.UserCache; -import com.android.launcher3.recyclerview.ViewHolderBinder; -import com.android.launcher3.util.PackageUserKey; import com.android.launcher3.views.ArrowTipView; import com.android.launcher3.views.RecyclerViewFastScroller; import com.android.launcher3.views.SpringRelativeLayout; @@ -80,8 +73,6 @@ import com.android.launcher3.views.WidgetsEduView; import com.android.launcher3.widget.BaseWidgetSheet; import com.android.launcher3.widget.LauncherWidgetHolder.ProviderChangedListener; import com.android.launcher3.widget.model.WidgetsListBaseEntry; -import com.android.launcher3.widget.model.WidgetsListContentEntry; -import com.android.launcher3.widget.model.WidgetsListHeaderEntry; import com.android.launcher3.widget.picker.search.SearchModeListener; import com.android.launcher3.widget.picker.search.WidgetsSearchBar; import com.android.launcher3.widget.util.WidgetsTableUtils; @@ -89,7 +80,6 @@ import com.android.launcher3.workprofile.PersonalWorkPagedView; import com.android.launcher3.workprofile.PersonalWorkSlidingTabStrip.OnActivePageChangedListener; import java.util.ArrayList; -import java.util.Collections; import java.util.List; import java.util.function.Predicate; import java.util.stream.IntStream; @@ -105,27 +95,22 @@ public class WidgetsFullSheet extends BaseWidgetSheet private static final long EDUCATION_TIP_DELAY_MS = 200; private static final long EDUCATION_DIALOG_DELAY_MS = 500; private static final float VERTICAL_START_POSITION = 0.3f; - private static final int PERSONAL_TAB = 0; - private static final int WORK_TAB = 1; - private static final String SUGGESTIONS_PACKAGE_NAME = "widgets_list_suggestions_entry"; // The widget recommendation table can easily take over the entire screen on devices with small // resolution or landscape on phone. This ratio defines the max percentage of content area that // the table can display. private static final float RECOMMENDATION_TABLE_HEIGHT_RATIO = 0.75f; - private static final String KEY_WIDGETS_EDUCATION_DIALOG_SEEN = "launcher.widgets_education_dialog_seen"; private final UserManagerState mUserManagerState = new UserManagerState(); - - private final boolean mHasWorkProfile; - private final SparseArray mAdapters = new SparseArray(); private final UserHandle mCurrentUser = Process.myUserHandle(); private final Predicate mPrimaryWidgetsFilter = entry -> mCurrentUser.equals(entry.mPkgItem.user); private final Predicate mWorkWidgetsFilter = entry -> !mCurrentUser.equals(entry.mPkgItem.user) && !mUserManagerState.isUserQuiet(entry.mPkgItem.user); + protected final boolean mHasWorkProfile; + protected final SparseArray mAdapters = new SparseArray(); @Nullable private ArrowTipView mLatestEducationalTip; private final OnLayoutChangeListener mLayoutChangeListenerToShowTips = new OnLayoutChangeListener() { @@ -175,52 +160,27 @@ public class WidgetsFullSheet extends BaseWidgetSheet @Px private final int mTabsHeight; @Nullable private WidgetsRecyclerView mCurrentWidgetsRecyclerView; - @Nullable private PersonalWorkPagedView mViewPager; + @Nullable private WidgetsRecyclerView mCurrentTouchEventRecyclerView; + @Nullable PersonalWorkPagedView mViewPager; private boolean mIsInSearchMode; private boolean mIsNoWidgetsViewNeeded; @Px private int mMaxSpanPerRow; - private TextView mNoWidgetsView; - - private StickyHeaderLayout mSearchScrollView; - private WidgetsRecommendationTableLayout mRecommendedWidgetsTable; - private LinearLayout mSuggestedWidgetsContainer; - private WidgetsListHeader mSuggestedWidgetsHeader; - private View mTabBar; - private View mSearchBarContainer; - private WidgetsSearchBar mSearchBar; - private TextView mHeaderTitle; - private LinearLayout mRightPane; - private FrameLayout mRightPaneScrollView; - private WidgetsListTableViewHolderBinder mWidgetsListTableViewHolderBinder; private DeviceProfile mDeviceProfile; - private final boolean mIsTwoPane; private int mOrientation; - private @Nullable WidgetsRecyclerView mCurrentTouchEventRecyclerView; - private RecyclerViewFastScroller mFastScroller; - - private final ViewOutlineProvider mViewOutlineProviderRightPane = new ViewOutlineProvider() { - @Override - public void getOutline(View view, Outline outline) { - outline.setRoundRect( - 0, - 0, - view.getMeasuredWidth(), - view.getMeasuredHeight() - getResources().getDimensionPixelSize( - R.dimen.widget_list_horizontal_margin_large_screen), - view.getResources().getDimensionPixelSize( - R.dimen.widget_list_top_bottom_corner_radius) - ); - } - }; + protected TextView mNoWidgetsView; + protected StickyHeaderLayout mSearchScrollView; + protected WidgetsRecommendationTableLayout mRecommendedWidgetsTable; + protected View mTabBar; + protected View mSearchBarContainer; + protected WidgetsSearchBar mSearchBar; + protected TextView mHeaderTitle; + protected RecyclerViewFastScroller mFastScroller; public WidgetsFullSheet(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); mDeviceProfile = Launcher.getLauncher(context).getDeviceProfile(); - mIsTwoPane = mDeviceProfile.isTablet - && mDeviceProfile.isLandscape - && LARGE_SCREEN_WIDGET_PICKER.get(); mHasWorkProfile = context.getSystemService(LauncherApps.class).getProfiles().size() > 1; mOrientation = Launcher.getLauncher(context).getOrientation(); mAdapters.put(AdapterHolder.PRIMARY, new AdapterHolder(AdapterHolder.PRIMARY)); @@ -243,37 +203,39 @@ public class WidgetsFullSheet extends BaseWidgetSheet @Override protected void onFinishInflate() { super.onFinishInflate(); + mContent = findViewById(R.id.container); setContentBackgroundWithParent(getContext().getDrawable(R.drawable.bg_widgets_full_sheet), mContent); - mContent.setOutlineProvider(mViewOutlineProvider); mContent.setClipToOutline(true); + setupSheet(); + } + protected void setupSheet() { LayoutInflater layoutInflater = LayoutInflater.from(getContext()); + int contentLayoutRes = mHasWorkProfile ? R.layout.widgets_full_sheet_paged_view + : R.layout.widgets_full_sheet_recyclerview; + layoutInflater.inflate(contentLayoutRes, mContent, true); - if (mIsTwoPane) { - layoutInflater.inflate( - mHasWorkProfile - ? R.layout.widgets_full_sheet_paged_view_large_screen - : R.layout.widgets_full_sheet_recyclerview_large_screen, - findViewById(R.id.recycler_view_container), - true); - } else { - layoutInflater.inflate( - mHasWorkProfile - ? R.layout.widgets_full_sheet_paged_view - : R.layout.widgets_full_sheet_recyclerview, - mContent, - true); - } + setupViews(); + mRecommendedWidgetsTable = mSearchScrollView.findViewById(R.id.recommended_widget_table); + mRecommendedWidgetsTable.setWidgetCellLongClickListener(this); + mRecommendedWidgetsTable.setWidgetCellOnClickListener(this); + mHeaderTitle = mSearchScrollView.findViewById(R.id.title); + + onRecommendedWidgetsBound(); + onWidgetsBound(); + setUpEducationViewsIfNeeded(); + } + + protected void setupViews() { + mSearchScrollView = findViewById(R.id.search_and_recommendations_container); + mSearchScrollView.setCurrentRecyclerView(findViewById(R.id.primary_widgets_list_view)); + mNoWidgetsView = findViewById(R.id.no_widgets_text); mFastScroller = findViewById(R.id.fast_scroller); - if (mIsTwoPane) { - mFastScroller.setVisibility(GONE); - } mFastScroller.setPopupView(findViewById(R.id.fast_scroller_popup)); - mAdapters.get(AdapterHolder.PRIMARY).setup(findViewById(R.id.primary_widgets_list_view)); mAdapters.get(AdapterHolder.SEARCH).setup(findViewById(R.id.search_widgets_list_view)); if (mHasWorkProfile) { @@ -294,78 +256,12 @@ public class WidgetsFullSheet extends BaseWidgetSheet mViewPager = null; } - mNoWidgetsView = findViewById(R.id.no_widgets_text); - - mSearchScrollView = findViewById(R.id.search_and_recommendations_container); - mSearchScrollView.setCurrentRecyclerView(findViewById(R.id.primary_widgets_list_view)); - - mRecommendedWidgetsTable = mIsTwoPane - ? mContent.findViewById(R.id.recommended_widget_table) - : mSearchScrollView.findViewById(R.id.recommended_widget_table); - - mRecommendedWidgetsTable.setWidgetCellLongClickListener(this); - mRecommendedWidgetsTable.setWidgetCellOnClickListener(this); - - // Add suggested widgets. - if (mIsTwoPane) { - mSuggestedWidgetsContainer = mSearchScrollView.findViewById(R.id.suggestions_header); - - // Inflate the suggestions header. - mSuggestedWidgetsHeader = (WidgetsListHeader) layoutInflater.inflate( - R.layout.widgets_list_row_header_two_pane, - mSuggestedWidgetsContainer, - false); - mSuggestedWidgetsHeader.setExpanded(true); - - PackageItemInfo packageItemInfo = new PackageItemInfo( - /* packageName= */ SUGGESTIONS_PACKAGE_NAME, - Process.myUserHandle()) { - @Override - public boolean usingLowResIcon() { - return false; - } - }; - packageItemInfo.title = getContext().getString(R.string.suggested_widgets_header_title); - WidgetsListHeaderEntry widgetsListHeaderEntry = WidgetsListHeaderEntry.create( - packageItemInfo, - getContext().getString(R.string.suggested_widgets_header_title), - mActivityContext.getPopupDataProvider().getRecommendedWidgets()) - .withWidgetListShown(); - - mSuggestedWidgetsHeader.applyFromItemInfoWithIcon(widgetsListHeaderEntry); - mSuggestedWidgetsHeader.setIcon( - getContext().getDrawable(R.drawable.widget_suggestions_icon)); - mSuggestedWidgetsHeader.setOnClickListener(view -> { - mSuggestedWidgetsHeader.setExpanded(true); - resetExpandedHeaders(); - mRightPane.removeAllViews(); - mRightPane.addView(mRecommendedWidgetsTable); - }); - mSuggestedWidgetsContainer.addView(mSuggestedWidgetsHeader); - } - mTabBar = mSearchScrollView.findViewById(R.id.tabs); mSearchBarContainer = mSearchScrollView.findViewById(R.id.search_bar_container); mSearchBar = mSearchScrollView.findViewById(R.id.widgets_search_bar); - mHeaderTitle = mIsTwoPane - ? mContent.findViewById(R.id.title) - : mSearchScrollView.findViewById(R.id.title); - mRightPane = mIsTwoPane ? mContent.findViewById(R.id.right_pane) : null; - if (mRightPane != null) { - mRightPane.setOutlineProvider(mViewOutlineProviderRightPane); - } - mRightPaneScrollView = mIsTwoPane - ? mContent.findViewById(R.id.right_pane_scroll_view) : null; - - mWidgetsListTableViewHolderBinder = - new WidgetsListTableViewHolderBinder(mActivityContext, layoutInflater, this, this); - onRecommendedWidgetsBound(); - onWidgetsBound(); mSearchBar.initialize( mActivityContext.getPopupDataProvider(), /* searchModeListener= */ this); - - setUpEducationViewsIfNeeded(); } private void setDeviceManagementResources() { @@ -380,14 +276,6 @@ public class WidgetsFullSheet extends BaseWidgetSheet @Override public void onActivePageChanged(int currentActivePage) { - - // if the current active page changes to personal or work we set suggestions - // to be the selected widget - if (mIsTwoPane && mSuggestedWidgetsHeader != null - && (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB)) { - mSuggestedWidgetsHeader.callOnClick(); - } - AdapterHolder currentAdapterHolder = mAdapters.get(currentActivePage); WidgetsRecyclerView currentRecyclerView = mAdapters.get(currentActivePage).mWidgetsRecyclerView; @@ -415,14 +303,9 @@ public class WidgetsFullSheet extends BaseWidgetSheet } } - private void updateRecyclerViewVisibility(AdapterHolder adapterHolder) { + protected void updateRecyclerViewVisibility(AdapterHolder adapterHolder) { // The first item is always an empty space entry. Look for any more items. boolean isWidgetAvailable = adapterHolder.mWidgetsListAdapter.hasVisibleEntries(); - - if (mIsTwoPane) { - mRightPane.setVisibility(isWidgetAvailable ? VISIBLE : GONE); - } - adapterHolder.mWidgetsRecyclerView.setVisibility(isWidgetAvailable ? VISIBLE : GONE); if (adapterHolder.mAdapterType == AdapterHolder.SEARCH) { @@ -468,9 +351,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet super.onAttachedToWindow(); mActivityContext.getAppWidgetHolder().addProviderChangeListener(this); notifyWidgetProvidersChanged(); - if (!mIsTwoPane) { - onRecommendedWidgetsBound(); - } + onRecommendedWidgetsBound(); } @Override @@ -558,14 +439,8 @@ public class WidgetsFullSheet extends BaseWidgetSheet private boolean updateMaxSpansPerRow() { if (getMeasuredWidth() == 0) return false; - View content = mHasWorkProfile - ? mViewPager - : mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView; - if (mIsTwoPane && mRightPane != null) { - content = mRightPane; - } - - @Px int maxHorizontalSpan = content.getMeasuredWidth() - (2 * mContentHorizontalMargin); + @Px int maxHorizontalSpan = getContentView().getMeasuredWidth() + - (2 * mContentHorizontalMargin); if (mMaxSpanPerRow != maxHorizontalSpan) { mMaxSpanPerRow = maxHorizontalSpan; mAdapters.get(AdapterHolder.PRIMARY).mWidgetsListAdapter.setMaxHorizontalSpansPxPerRow( @@ -582,6 +457,12 @@ public class WidgetsFullSheet extends BaseWidgetSheet return false; } + protected View getContentView() { + return mHasWorkProfile + ? mViewPager + : mAdapters.get(AdapterHolder.PRIMARY).mWidgetsRecyclerView; + } + @Override protected void onLayout(boolean changed, int l, int t, int r, int b) { int width = r - l; @@ -656,19 +537,13 @@ public class WidgetsFullSheet extends BaseWidgetSheet public void onSearchResults(List entries) { mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.setWidgetsOnSearch(entries); updateRecyclerViewVisibility(mAdapters.get(AdapterHolder.SEARCH)); - if (mIsTwoPane) { - mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.selectFirstHeaderEntry(); - } mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.scrollToTop(); } - private void setViewVisibilityBasedOnSearch(boolean isInSearchMode) { + protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) { mIsInSearchMode = isInSearchMode; if (isInSearchMode) { mRecommendedWidgetsTable.setVisibility(GONE); - if (mIsTwoPane) { - mSuggestedWidgetsContainer.setVisibility(GONE); - } if (mHasWorkProfile) { mViewPager.setVisibility(GONE); mTabBar.setVisibility(GONE); @@ -680,10 +555,6 @@ public class WidgetsFullSheet extends BaseWidgetSheet mNoWidgetsView.setVisibility(GONE); } else { mAdapters.get(AdapterHolder.SEARCH).mWidgetsRecyclerView.setVisibility(GONE); - if (mIsTwoPane) { - mSuggestedWidgetsContainer.setVisibility(VISIBLE); - mSuggestedWidgetsHeader.callOnClick(); - } // Visibility of recommended widgets, recycler views and headers are handled in methods // below. onRecommendedWidgetsBound(); @@ -691,7 +562,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet } } - private void resetExpandedHeaders() { + protected void resetExpandedHeaders() { mAdapters.get(AdapterHolder.PRIMARY).mWidgetsListAdapter.resetExpandedHeader(); mAdapters.get(AdapterHolder.WORK).mWidgetsListAdapter.resetExpandedHeader(); } @@ -713,14 +584,14 @@ public class WidgetsFullSheet extends BaseWidgetSheet mNoWidgetsView.getText().length(), noWidgetsViewTextBounds); noWidgetsViewHeight = noWidgetsViewTextBounds.height(); } - doMeasure( - makeMeasureSpec(mActivityContext.getDeviceProfile().availableWidthPx, - MeasureSpec.EXACTLY), - makeMeasureSpec(mActivityContext.getDeviceProfile().availableHeightPx, - MeasureSpec.EXACTLY)); - float maxTableHeight = mIsTwoPane ? Float.MAX_VALUE : (mContent.getMeasuredHeight() - - mTabsHeight - getHeaderViewHeight() - - noWidgetsViewHeight) * RECOMMENDATION_TABLE_HEIGHT_RATIO; + if (!isTwoPane()) { + doMeasure( + makeMeasureSpec(mActivityContext.getDeviceProfile().availableWidthPx, + MeasureSpec.EXACTLY), + makeMeasureSpec(mActivityContext.getDeviceProfile().availableHeightPx, + MeasureSpec.EXACTLY)); + } + float maxTableHeight = getMaxTableHeight(noWidgetsViewHeight); List> recommendedWidgetsInTable = WidgetsTableUtils.groupWidgetItemsUsingRowPxWithoutReordering( @@ -732,13 +603,21 @@ public class WidgetsFullSheet extends BaseWidgetSheet mRecommendedWidgetsTable.setRecommendedWidgets( recommendedWidgetsInTable, maxTableHeight); } else { - mRecommendedWidgetsTable.setVisibility(GONE); - if (mSuggestedWidgetsContainer != null) { - mSuggestedWidgetsContainer.setVisibility(GONE); - } + hideRecommendations(); } } + protected void hideRecommendations() { + mRecommendedWidgetsTable.setVisibility(GONE); + } + + protected float getMaxTableHeight(float noWidgetsViewHeight) { + return (mContent.getMeasuredHeight() + - mTabsHeight - getHeaderViewHeight() + - noWidgetsViewHeight) + * RECOMMENDATION_TABLE_HEIGHT_RATIO; + } + private void open(boolean animate) { if (animate) { if (getPopupContainer().getInsets().bottom > 0) { @@ -779,37 +658,49 @@ public class WidgetsFullSheet extends BaseWidgetSheet @Override public boolean onControllerInterceptTouchEvent(MotionEvent ev) { - // Disable swipe down when recycler view is scrolling or scroll view is scrolling if (ev.getAction() == MotionEvent.ACTION_DOWN) { - mNoIntercept = false; - WidgetsRecyclerView recyclerView = getRecyclerView(); - RecyclerViewFastScroller scroller = recyclerView.getScrollbar(); - - if (scroller.getThumbOffsetY() >= 0 - && getPopupContainer().isEventOverView(scroller, ev)) { - mNoIntercept = true; - } else if (getPopupContainer().isEventOverView(recyclerView, ev)) { - mNoIntercept = !recyclerView.shouldContainerScroll(ev, getPopupContainer()); - } else if (mIsTwoPane && mRightPaneScrollView != null - && getPopupContainer().isEventOverView(mRightPaneScrollView, ev)) { - mNoIntercept = mRightPaneScrollView.canScrollVertically(-1); - } + mNoIntercept = shouldScroll(ev); if (mSearchBar.isSearchBarFocused() && !getPopupContainer().isEventOverView(mSearchBarContainer, ev)) { mSearchBar.clearSearchBarFocus(); } } + return super.onControllerInterceptTouchEvent(ev); } + protected boolean shouldScroll(MotionEvent ev) { + boolean intercept = false; + WidgetsRecyclerView recyclerView = getRecyclerView(); + RecyclerViewFastScroller scroller = recyclerView.getScrollbar(); + // Disable swipe down when recycler view is scrolling + if (scroller.getThumbOffsetY() >= 0 && getPopupContainer().isEventOverView(scroller, ev)) { + intercept = true; + } else if (getPopupContainer().isEventOverView(recyclerView, ev)) { + intercept = !recyclerView.shouldContainerScroll(ev, getPopupContainer()); + } + return intercept; + } + /** Shows the {@link WidgetsFullSheet} on the launcher. */ public static WidgetsFullSheet show(Launcher launcher, boolean animate) { - WidgetsFullSheet sheet = (WidgetsFullSheet) launcher.getLayoutInflater() - .inflate(LARGE_SCREEN_WIDGET_PICKER.get() - && launcher.getDeviceProfile().isTablet - && launcher.getDeviceProfile().isLandscape - ? R.layout.widgets_full_sheet_large_screen - : R.layout.widgets_full_sheet, launcher.getDragLayer(), false); + boolean isTwoPane = LARGE_SCREEN_WIDGET_PICKER.get() + && launcher.getDeviceProfile().isTablet + && launcher.getDeviceProfile().isLandscape; + + WidgetsFullSheet sheet; + if (isTwoPane) { + sheet = (WidgetsTwoPaneSheet) launcher.getLayoutInflater().inflate( + R.layout.widgets_full_sheet_large_screen, + launcher.getDragLayer(), + false); + } else { + sheet = (WidgetsFullSheet) launcher.getLayoutInflater().inflate( + R.layout.widgets_full_sheet, + launcher.getDragLayer(), + false); + } + sheet.attachToContainer(); sheet.mIsOpen = true; sheet.open(animate); @@ -973,7 +864,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet || Utilities.isRunningInTestHarness(); } - private void setUpEducationViewsIfNeeded() { + protected void setUpEducationViewsIfNeeded() { if (!hasSeenEducationDialog()) { postDelayed(() -> { WidgetsEduView eduDialog = showEducationDialog(); @@ -991,14 +882,18 @@ public class WidgetsFullSheet extends BaseWidgetSheet } } + protected boolean isTwoPane() { + return false; + } + /** A holder class for holding adapters & their corresponding recycler view. */ - private final class AdapterHolder { + final class AdapterHolder { static final int PRIMARY = 0; static final int WORK = 1; static final int SEARCH = 2; private final int mAdapterType; - private final WidgetsListAdapter mWidgetsListAdapter; + final WidgetsListAdapter mWidgetsListAdapter; private final DefaultItemAnimator mWidgetsListItemAnimator; private WidgetsRecyclerView mWidgetsRecyclerView; @@ -1006,43 +901,14 @@ public class WidgetsFullSheet extends BaseWidgetSheet AdapterHolder(int adapterType) { mAdapterType = adapterType; Context context = getContext(); - HeaderChangeListener headerChangeListener = new HeaderChangeListener() { - @Override - public void onHeaderChanged(@NonNull PackageUserKey selectedHeader) { - WidgetsListContentEntry contentEntry = mActivityContext.getPopupDataProvider() - .getSelectedAppWidgets(selectedHeader); - if (contentEntry == null || mRightPane == null) { - return; - } - - if (mSuggestedWidgetsHeader != null) { - mSuggestedWidgetsHeader.setExpanded(false); - } - WidgetsRowViewHolder widgetsRowViewHolder = - mWidgetsListTableViewHolderBinder.newViewHolder(mRightPane); - mWidgetsListTableViewHolderBinder.bindViewHolder(widgetsRowViewHolder, - contentEntry, - ViewHolderBinder.POSITION_FIRST | ViewHolderBinder.POSITION_LAST, - Collections.EMPTY_LIST); - widgetsRowViewHolder.mDataCallback = data -> { - mWidgetsListTableViewHolderBinder.bindViewHolder(widgetsRowViewHolder, - contentEntry.withMaxSpanSize(mMaxSpanPerRow), - ViewHolderBinder.POSITION_FIRST | ViewHolderBinder.POSITION_LAST, - Collections.singletonList(data)); - }; - - mRightPane.removeAllViews(); - mRightPane.addView(widgetsRowViewHolder.itemView); - } - }; mWidgetsListAdapter = new WidgetsListAdapter( context, LayoutInflater.from(context), this::getEmptySpaceHeight, /* iconClickListener= */ WidgetsFullSheet.this, /* iconLongClickListener= */ WidgetsFullSheet.this, - mIsTwoPane ? headerChangeListener : null); + isTwoPane()); mWidgetsListAdapter.setHasStableIds(true); switch (mAdapterType) { case PRIMARY: @@ -1073,7 +939,7 @@ public class WidgetsFullSheet extends BaseWidgetSheet mWidgetsRecyclerView.bindFastScrollbar(mFastScroller); mWidgetsRecyclerView.setItemAnimator(mWidgetsListItemAnimator); mWidgetsRecyclerView.setHeaderViewDimensionsProvider(WidgetsFullSheet.this); - if (!mIsTwoPane) { + if (!isTwoPane()) { mWidgetsRecyclerView.setEdgeEffectFactory( ((SpringRelativeLayout) mContent).createEdgeEffectFactory()); } @@ -1086,15 +952,4 @@ public class WidgetsFullSheet extends BaseWidgetSheet mWidgetsListAdapter.setMaxHorizontalSpansPxPerRow(mMaxSpanPerRow); } } - - /** - * This is a listener for when the selected header gets changed in the left pane. - */ - public interface HeaderChangeListener { - /** - * Sets the right pane to have the widgets for the currently selected header from - * the left pane. - */ - void onHeaderChanged(@NonNull PackageUserKey selectedHeader); - } } diff --git a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java index c89eea8521..723ea17147 100644 --- a/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java +++ b/src/com/android/launcher3/widget/picker/WidgetsListAdapter.java @@ -89,7 +89,7 @@ public class WidgetsListAdapter extends Adapter implements OnHeaderC private final SparseArray mViewHolderBinders = new SparseArray<>(); private final WidgetListBaseRowEntryComparator mRowComparator = new WidgetListBaseRowEntryComparator(); - @Nullable private final WidgetsFullSheet.HeaderChangeListener mHeaderChangeListener; + @Nullable private WidgetsTwoPaneSheet.HeaderChangeListener mHeaderChangeListener; private final List mAllEntries = new ArrayList<>(); private ArrayList mVisibleEntries = new ArrayList<>(); @@ -107,8 +107,7 @@ public class WidgetsListAdapter extends Adapter implements OnHeaderC public WidgetsListAdapter(Context context, LayoutInflater layoutInflater, IntSupplier emptySpaceHeightProvider, OnClickListener iconClickListener, OnLongClickListener iconLongClickListener, - WidgetsFullSheet.HeaderChangeListener headerChangeListener) { - mHeaderChangeListener = headerChangeListener; + boolean isTwoPane) { mContext = context; mMaxHorizontalSpan = WidgetSizes.getWidgetSizePx( ActivityContext.lookupContext(context).getDeviceProfile(), @@ -122,12 +121,17 @@ public class WidgetsListAdapter extends Adapter implements OnHeaderC VIEW_TYPE_WIDGETS_HEADER, new WidgetsListHeaderViewHolderBinder( layoutInflater, /* onHeaderClickListener= */ this, - headerChangeListener != null)); + isTwoPane)); mViewHolderBinders.put( VIEW_TYPE_WIDGETS_SPACE, new WidgetsSpaceViewHolderBinder(emptySpaceHeightProvider)); } + public void setHeaderChangeListener(WidgetsTwoPaneSheet.HeaderChangeListener + headerChangeListener) { + mHeaderChangeListener = headerChangeListener; + } + @Override public void onAttachedToRecyclerView(@NonNull RecyclerView recyclerView) { mRecyclerView = recyclerView; diff --git a/src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java b/src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java new file mode 100644 index 0000000000..de7497a1a4 --- /dev/null +++ b/src/com/android/launcher3/widget/picker/WidgetsTwoPaneSheet.java @@ -0,0 +1,271 @@ +/* + * 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.widget.picker; + +import android.content.Context; +import android.graphics.Outline; +import android.os.Process; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewOutlineProvider; +import android.widget.FrameLayout; +import android.widget.LinearLayout; + +import androidx.annotation.NonNull; + +import com.android.launcher3.R; +import com.android.launcher3.model.data.PackageItemInfo; +import com.android.launcher3.recyclerview.ViewHolderBinder; +import com.android.launcher3.util.PackageUserKey; +import com.android.launcher3.widget.model.WidgetsListBaseEntry; +import com.android.launcher3.widget.model.WidgetsListContentEntry; +import com.android.launcher3.widget.model.WidgetsListHeaderEntry; + +import java.util.Collections; +import java.util.List; + +/** + * Popup for showing the full list of available widgets with a two-pane layout. + */ +public class WidgetsTwoPaneSheet extends WidgetsFullSheet { + + private static final int PERSONAL_TAB = 0; + private static final int WORK_TAB = 1; + private static final String SUGGESTIONS_PACKAGE_NAME = "widgets_list_suggestions_entry"; + + private LinearLayout mSuggestedWidgetsContainer; + private WidgetsListHeader mSuggestedWidgetsHeader; + private LinearLayout mRightPane; + + private FrameLayout mRightPaneScrollView; + private WidgetsListTableViewHolderBinder mWidgetsListTableViewHolderBinder; + + private final ViewOutlineProvider mViewOutlineProviderRightPane = new ViewOutlineProvider() { + @Override + public void getOutline(View view, Outline outline) { + outline.setRoundRect( + 0, + 0, + view.getMeasuredWidth(), + view.getMeasuredHeight() - getResources().getDimensionPixelSize( + R.dimen.widget_list_horizontal_margin_large_screen), + view.getResources().getDimensionPixelSize( + R.dimen.widget_list_top_bottom_corner_radius) + ); + } + }; + + public WidgetsTwoPaneSheet(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + public WidgetsTwoPaneSheet(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + protected void setupSheet() { + // Set the header change listener in the adapter + mAdapters.get(AdapterHolder.PRIMARY) + .mWidgetsListAdapter.setHeaderChangeListener(getHeaderChangeListener()); + mAdapters.get(AdapterHolder.WORK) + .mWidgetsListAdapter.setHeaderChangeListener(getHeaderChangeListener()); + mAdapters.get(AdapterHolder.SEARCH) + .mWidgetsListAdapter.setHeaderChangeListener(getHeaderChangeListener()); + + LayoutInflater layoutInflater = LayoutInflater.from(getContext()); + + int contentLayoutRes = mHasWorkProfile ? R.layout.widgets_full_sheet_paged_view_large_screen + : R.layout.widgets_full_sheet_recyclerview_large_screen; + layoutInflater.inflate(contentLayoutRes, findViewById(R.id.recycler_view_container), true); + + setupViews(); + + mWidgetsListTableViewHolderBinder = + new WidgetsListTableViewHolderBinder(mActivityContext, layoutInflater, this, this); + mRecommendedWidgetsTable = mContent.findViewById(R.id.recommended_widget_table); + mRecommendedWidgetsTable.setWidgetCellLongClickListener(this); + mRecommendedWidgetsTable.setWidgetCellOnClickListener(this); + mHeaderTitle = mContent.findViewById(R.id.title); + mRightPane = mContent.findViewById(R.id.right_pane); + mRightPane.setOutlineProvider(mViewOutlineProviderRightPane); + mRightPaneScrollView = mContent.findViewById(R.id.right_pane_scroll_view); + mRightPaneScrollView.setOverScrollMode(View.OVER_SCROLL_NEVER); + + setupSuggestedWidgets(layoutInflater); + onRecommendedWidgetsBound(); + onWidgetsBound(); + setUpEducationViewsIfNeeded(); + + // Set the fast scroller as not visible for two pane layout. + mFastScroller.setVisibility(GONE); + } + + @Override + protected void hideRecommendations() { + super.hideRecommendations(); + mSuggestedWidgetsContainer.setVisibility(GONE); + } + + private void setupSuggestedWidgets(LayoutInflater layoutInflater) { + // Add suggested widgets. + mSuggestedWidgetsContainer = mSearchScrollView.findViewById(R.id.suggestions_header); + + // Inflate the suggestions header. + mSuggestedWidgetsHeader = (WidgetsListHeader) layoutInflater.inflate( + R.layout.widgets_list_row_header_two_pane, + mSuggestedWidgetsContainer, + false); + mSuggestedWidgetsHeader.setExpanded(true); + + PackageItemInfo packageItemInfo = new PackageItemInfo( + /* packageName= */ SUGGESTIONS_PACKAGE_NAME, + Process.myUserHandle()) { + @Override + public boolean usingLowResIcon() { + return false; + } + }; + packageItemInfo.title = getContext().getString(R.string.suggested_widgets_header_title); + WidgetsListHeaderEntry widgetsListHeaderEntry = WidgetsListHeaderEntry.create( + packageItemInfo, + getContext().getString(R.string.suggested_widgets_header_title), + mActivityContext.getPopupDataProvider().getRecommendedWidgets()) + .withWidgetListShown(); + + mSuggestedWidgetsHeader.applyFromItemInfoWithIcon(widgetsListHeaderEntry); + mSuggestedWidgetsHeader.setIcon( + getContext().getDrawable(R.drawable.widget_suggestions_icon)); + mSuggestedWidgetsHeader.setOnClickListener(view -> { + mSuggestedWidgetsHeader.setExpanded(true); + resetExpandedHeaders(); + mRightPane.removeAllViews(); + mRightPane.addView(mRecommendedWidgetsTable); + }); + mSuggestedWidgetsContainer.addView(mSuggestedWidgetsHeader); + } + + @Override + protected float getMaxTableHeight(float noWidgetsViewHeight) { + return Float.MAX_VALUE; + } + + @Override + public void onActivePageChanged(int currentActivePage) { + // if the current active page changes to personal or work we set suggestions + // to be the selected widget + if (currentActivePage == PERSONAL_TAB || currentActivePage == WORK_TAB) { + mSuggestedWidgetsHeader.callOnClick(); + } + + super.onActivePageChanged(currentActivePage); + } + + @Override + protected void updateRecyclerViewVisibility(AdapterHolder adapterHolder) { + // The first item is always an empty space entry. Look for any more items. + boolean isWidgetAvailable = adapterHolder.mWidgetsListAdapter.hasVisibleEntries(); + + mRightPane.setVisibility(isWidgetAvailable ? VISIBLE : GONE); + + super.updateRecyclerViewVisibility(adapterHolder); + } + + @Override + protected void onAttachedToWindow() { + super.onAttachedToWindow(); + mSuggestedWidgetsContainer.setVisibility(VISIBLE); + } + + @Override + public void onSearchResults(List entries) { + super.onSearchResults(entries); + mAdapters.get(AdapterHolder.SEARCH).mWidgetsListAdapter.selectFirstHeaderEntry(); + } + + @Override + protected boolean shouldScroll(MotionEvent ev) { + return getPopupContainer().isEventOverView(mRightPaneScrollView, ev) + ? mRightPaneScrollView.canScrollVertically(-1) + : super.shouldScroll(ev); + } + + @Override + protected void setViewVisibilityBasedOnSearch(boolean isInSearchMode) { + if (isInSearchMode) { + mSuggestedWidgetsContainer.setVisibility(GONE); + } else { + mSuggestedWidgetsContainer.setVisibility(VISIBLE); + mSuggestedWidgetsHeader.callOnClick(); + } + super.setViewVisibilityBasedOnSearch(isInSearchMode); + } + + @Override + protected View getContentView() { + return mRightPane; + } + + private HeaderChangeListener getHeaderChangeListener() { + return new HeaderChangeListener() { + @Override + public void onHeaderChanged(@NonNull PackageUserKey selectedHeader) { + WidgetsListContentEntry contentEntry = mActivityContext.getPopupDataProvider() + .getSelectedAppWidgets(selectedHeader); + + if (contentEntry == null || mRightPane == null) { + return; + } + + if (mSuggestedWidgetsHeader != null) { + mSuggestedWidgetsHeader.setExpanded(false); + } + WidgetsRowViewHolder widgetsRowViewHolder = + mWidgetsListTableViewHolderBinder.newViewHolder(mRightPane); + mWidgetsListTableViewHolderBinder.bindViewHolder(widgetsRowViewHolder, + contentEntry, + ViewHolderBinder.POSITION_FIRST | ViewHolderBinder.POSITION_LAST, + Collections.EMPTY_LIST); + widgetsRowViewHolder.mDataCallback = data -> { + mWidgetsListTableViewHolderBinder.bindViewHolder(widgetsRowViewHolder, + contentEntry, + ViewHolderBinder.POSITION_FIRST | ViewHolderBinder.POSITION_LAST, + Collections.singletonList(data)); + }; + mRightPane.removeAllViews(); + mRightPane.addView(widgetsRowViewHolder.itemView); + } + }; + } + + @Override + protected boolean isTwoPane() { + return true; + } + + /** + * This is a listener for when the selected header gets changed in the left pane. + */ + public interface HeaderChangeListener { + /** + * Sets the right pane to have the widgets for the currently selected header from + * the left pane. + */ + void onHeaderChanged(@NonNull PackageUserKey selectedHeader); + } +}