From 7877060d683b0e46d7e3ecb2f15a405ec1ed8b47 Mon Sep 17 00:00:00 2001 From: Holly Sun Date: Fri, 17 Mar 2023 12:09:52 -0700 Subject: [PATCH 01/81] Override INTERPOLATOR_WITHIN_ALL_APPS when app restarts. Bug: 225185551 Test: manual. See video https://drive.google.com/corp/drive/u/0/folders/1g-YlbzdHh49SH0f4xLli4BmVqPCP6K49 Flag: the flash issue is only for QS Tile under ENABLE_QS_TILES(OFF) Change-Id: Ib282148bc0a4943c91b5ebd3c78b7128d5d66c9d --- .../allapps/ActivityAllAppsContainerView.java | 5 +++++ .../allapps/SearchTransitionController.java | 21 ++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java index 8ea2bfe840..1219c01274 100644 --- a/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/ActivityAllAppsContainerView.java @@ -1254,6 +1254,11 @@ public class ActivityAllAppsContainerView rv.addOnScrollListener(mScrollListener); } + /** Returns the instance of @{code SearchTransitionController}. */ + public SearchTransitionController getSearchTransitionController() { + return mSearchTransitionController; + } + /** Holds a {@link BaseAllAppsAdapter} and related fields. */ public class AdapterHolder { public static final int MAIN = 0; diff --git a/src/com/android/launcher3/allapps/SearchTransitionController.java b/src/com/android/launcher3/allapps/SearchTransitionController.java index 50567822a6..49dadb54ea 100644 --- a/src/com/android/launcher3/allapps/SearchTransitionController.java +++ b/src/com/android/launcher3/allapps/SearchTransitionController.java @@ -28,6 +28,7 @@ import static com.android.launcher3.anim.Interpolators.INSTANT; import static com.android.launcher3.anim.Interpolators.clampToProgress; import android.animation.ObjectAnimator; +import android.animation.TimeInterpolator; import android.graphics.drawable.Drawable; import android.util.FloatProperty; import android.util.Log; @@ -79,6 +80,7 @@ public class SearchTransitionController { private ObjectAnimator mSearchToAzAnimator = null; private float mSearchToAzProgress = 1f; + private boolean mSkipNextAnimationWithinAllApps; public SearchTransitionController(ActivityAllAppsContainerView allAppsContainerView) { mAllAppsContainerView = allAppsContainerView; @@ -108,11 +110,16 @@ public class SearchTransitionController { mSearchToAzAnimator = ObjectAnimator.ofFloat(this, SEARCH_TO_AZ_PROGRESS, targetProgress); boolean inAllApps = mAllAppsContainerView.isInAllApps(); - if (!inAllApps) { + TimeInterpolator timeInterpolator = + inAllApps ? INTERPOLATOR_WITHIN_ALL_APPS : INTERPOLATOR_TRANSITIONING_TO_ALL_APPS; + if (mSkipNextAnimationWithinAllApps) { + timeInterpolator = INSTANT; + mSkipNextAnimationWithinAllApps = false; + } + if (timeInterpolator == INSTANT) { duration = 0; // Don't want to animate when coming from QSB. } - mSearchToAzAnimator.setDuration(duration).setInterpolator( - inAllApps ? INTERPOLATOR_WITHIN_ALL_APPS : INTERPOLATOR_TRANSITIONING_TO_ALL_APPS); + mSearchToAzAnimator.setDuration(duration).setInterpolator(timeInterpolator); mSearchToAzAnimator.addListener(forEndCallback(() -> mSearchToAzAnimator = null)); if (!goingToSearch) { mSearchToAzAnimator.addListener(forSuccessCallback(() -> { @@ -337,4 +344,12 @@ public class SearchTransitionController { private float getSearchToAzProgress() { return mSearchToAzProgress; } + + /** + * This should only be called from {@code LauncherSearchSessionManager} when app restarts due to + * theme changes. + */ + public void setSkipAnimationWithinAllApps(boolean skip) { + mSkipNextAnimationWithinAllApps = skip; + } } From e5c7d7dcd2ab60232456b8ef09334e7bf99f77cf Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Wed, 5 Apr 2023 10:09:10 -0700 Subject: [PATCH 02/81] Polish the keyboard quick switch view and border animation colors Flag: ENABLE_KEYBOARD_QUICK_SWITCH Bug: 276336349 Test: keyboard quick switched on tablet and handheld Change-Id: I2c21737db3fc4c332ffef9098e8d05d998cf3c39 --- .../quick_switch_view_background.xml | 17 +++++++++++++++++ .../res/color/quick_switch_view_background.xml | 17 +++++++++++++++++ ..._quick_switch_overview_button_background.xml | 2 +- .../keyboard_quick_switch_view_background.xml | 2 +- .../keyboard_quick_switch_taskview.xml | 2 +- .../layout/keyboard_quick_switch_overview.xml | 4 ++-- .../layout/keyboard_quick_switch_taskview.xml | 2 +- quickstep/res/layout/task.xml | 2 +- quickstep/res/layout/task_desktop.xml | 2 +- quickstep/res/layout/task_grouped.xml | 2 +- quickstep/res/values/styles.xml | 5 +++-- .../android/quickstep/util/BorderAnimator.java | 15 +++++---------- 12 files changed, 51 insertions(+), 21 deletions(-) create mode 100644 quickstep/res/color-night/quick_switch_view_background.xml create mode 100644 quickstep/res/color/quick_switch_view_background.xml diff --git a/quickstep/res/color-night/quick_switch_view_background.xml b/quickstep/res/color-night/quick_switch_view_background.xml new file mode 100644 index 0000000000..7280918645 --- /dev/null +++ b/quickstep/res/color-night/quick_switch_view_background.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/quickstep/res/color/quick_switch_view_background.xml b/quickstep/res/color/quick_switch_view_background.xml new file mode 100644 index 0000000000..0eb2a6b915 --- /dev/null +++ b/quickstep/res/color/quick_switch_view_background.xml @@ -0,0 +1,17 @@ + + + + + diff --git a/quickstep/res/drawable/keyboard_quick_switch_overview_button_background.xml b/quickstep/res/drawable/keyboard_quick_switch_overview_button_background.xml index 15843af154..2a4f0872e3 100644 --- a/quickstep/res/drawable/keyboard_quick_switch_overview_button_background.xml +++ b/quickstep/res/drawable/keyboard_quick_switch_overview_button_background.xml @@ -17,6 +17,6 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:androidprv="http://schemas.android.com/apk/prv/res/android" android:shape="rectangle"> - + diff --git a/quickstep/res/drawable/keyboard_quick_switch_view_background.xml b/quickstep/res/drawable/keyboard_quick_switch_view_background.xml index 19aaed46b0..573c93ac1d 100644 --- a/quickstep/res/drawable/keyboard_quick_switch_view_background.xml +++ b/quickstep/res/drawable/keyboard_quick_switch_view_background.xml @@ -16,6 +16,6 @@ - + diff --git a/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml b/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml index 174a70459b..ebcbdcd2f2 100644 --- a/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml +++ b/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml @@ -23,7 +23,7 @@ android:importantForAccessibility="yes" android:background="@drawable/keyboard_quick_switch_task_view_background" android:clipToOutline="true" - launcher:borderColor="?androidprv:attr/materialColorSecondaryContainer"> + launcher:borderColor="?androidprv:attr/materialColorOutline"> + launcher:borderColor="?androidprv:attr/materialColorOutline"> + launcher:borderColor="?androidprv:attr/materialColorOutline"> + launcher:borderColor="?androidprv:attr/materialColorOutline"> + launcher:borderColor="?androidprv:attr/materialColorOutline"> + launcher:borderColor="?androidprv:attr/materialColorOutline"> - + diff --git a/quickstep/src/com/android/quickstep/util/BorderAnimator.java b/quickstep/src/com/android/quickstep/util/BorderAnimator.java index 1f1c15bdb8..c30661c42c 100644 --- a/quickstep/src/com/android/quickstep/util/BorderAnimator.java +++ b/quickstep/src/com/android/quickstep/util/BorderAnimator.java @@ -26,7 +26,6 @@ import android.view.animation.Interpolator; import androidx.annotation.NonNull; import androidx.annotation.Px; -import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatedFloat; import com.android.launcher3.anim.AnimatorListeners; import com.android.launcher3.anim.Interpolators; @@ -61,7 +60,7 @@ public final class BorderAnimator { @NonNull private final Interpolator mInterpolator; @NonNull private final Paint mBorderPaint = new Paint(Paint.ANTI_ALIAS_FLAG); - private int mAlignmentAdjustment; + private float mAlignmentAdjustment; @Nullable private Animator mRunningBorderAnimation; @@ -106,16 +105,12 @@ public final class BorderAnimator { private void updateOutline() { float interpolatedProgress = mInterpolator.getInterpolation( mBorderAnimationProgress.value); - mAlignmentAdjustment = (int) Utilities.mapBoundToRange( - mBorderAnimationProgress.value, - /* lowerBound= */ 0f, - /* upperBound= */ 1f, - /* toMin= */ 0f, - /* toMax= */ (float) (mBorderWidthPx / 2f), - mInterpolator); + float borderWidth = mBorderWidthPx * interpolatedProgress; + // Inset the border by half the width to create an inwards-growth animation + mAlignmentAdjustment = borderWidth / 2f; mBorderPaint.setAlpha(Math.round(255 * interpolatedProgress)); - mBorderPaint.setStrokeWidth(Math.round(mBorderWidthPx * interpolatedProgress)); + mBorderPaint.setStrokeWidth(borderWidth); mInvalidateViewCallback.run(); } From 733358b46a71fecc637873c9c47a37e071fa3f87 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 10 Apr 2023 23:15:19 -0700 Subject: [PATCH 03/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ieaadb13b2a7b55d24f9fd8610b833793cf8cf58f --- quickstep/res/values-af/strings.xml | 4 ---- quickstep/res/values-am/strings.xml | 4 ---- quickstep/res/values-ar/strings.xml | 4 ---- quickstep/res/values-as/strings.xml | 4 ---- quickstep/res/values-az/strings.xml | 4 ---- quickstep/res/values-b+sr+Latn/strings.xml | 4 ---- quickstep/res/values-be/strings.xml | 4 ---- quickstep/res/values-bg/strings.xml | 4 ---- quickstep/res/values-bn/strings.xml | 4 ---- quickstep/res/values-bs/strings.xml | 4 ---- quickstep/res/values-ca/strings.xml | 4 ---- quickstep/res/values-cs/strings.xml | 4 ---- quickstep/res/values-da/strings.xml | 4 ---- quickstep/res/values-de/strings.xml | 4 ---- quickstep/res/values-el/strings.xml | 4 ---- quickstep/res/values-en-rAU/strings.xml | 4 ---- quickstep/res/values-en-rCA/strings.xml | 4 ---- quickstep/res/values-en-rGB/strings.xml | 4 ---- quickstep/res/values-en-rIN/strings.xml | 4 ---- quickstep/res/values-en-rXC/strings.xml | 4 ---- quickstep/res/values-es-rUS/strings.xml | 4 ---- quickstep/res/values-es/strings.xml | 4 ---- quickstep/res/values-et/strings.xml | 4 ---- quickstep/res/values-eu/strings.xml | 4 ---- quickstep/res/values-fa/strings.xml | 4 ---- quickstep/res/values-fi/strings.xml | 4 ---- quickstep/res/values-fr-rCA/strings.xml | 4 ---- quickstep/res/values-fr/strings.xml | 4 ---- quickstep/res/values-gl/strings.xml | 4 ---- quickstep/res/values-gu/strings.xml | 4 ---- quickstep/res/values-hi/strings.xml | 4 ---- quickstep/res/values-hr/strings.xml | 4 ---- quickstep/res/values-hu/strings.xml | 4 ---- quickstep/res/values-hy/strings.xml | 4 ---- quickstep/res/values-in/strings.xml | 4 ---- quickstep/res/values-is/strings.xml | 4 ---- quickstep/res/values-it/strings.xml | 4 ---- quickstep/res/values-iw/strings.xml | 4 ---- quickstep/res/values-ja/strings.xml | 4 ---- quickstep/res/values-ka/strings.xml | 4 ---- quickstep/res/values-kk/strings.xml | 4 ---- quickstep/res/values-km/strings.xml | 4 ---- quickstep/res/values-kn/strings.xml | 4 ---- quickstep/res/values-ko/strings.xml | 4 ---- quickstep/res/values-ky/strings.xml | 4 ---- quickstep/res/values-lo/strings.xml | 4 ---- quickstep/res/values-lt/strings.xml | 4 ---- quickstep/res/values-lv/strings.xml | 4 ---- quickstep/res/values-mk/strings.xml | 4 ---- quickstep/res/values-ml/strings.xml | 4 ---- quickstep/res/values-mn/strings.xml | 4 ---- quickstep/res/values-mr/strings.xml | 4 ---- quickstep/res/values-ms/strings.xml | 4 ---- quickstep/res/values-my/strings.xml | 4 ---- quickstep/res/values-nb/strings.xml | 4 ---- quickstep/res/values-ne/strings.xml | 4 ---- quickstep/res/values-nl/strings.xml | 4 ---- quickstep/res/values-or/strings.xml | 4 ---- quickstep/res/values-pa/strings.xml | 4 ---- 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 | 4 ---- quickstep/res/values-ru/strings.xml | 4 ---- quickstep/res/values-si/strings.xml | 4 ---- quickstep/res/values-sk/strings.xml | 4 ---- quickstep/res/values-sl/strings.xml | 4 ---- quickstep/res/values-sq/strings.xml | 4 ---- quickstep/res/values-sr/strings.xml | 4 ---- quickstep/res/values-sv/strings.xml | 4 ---- quickstep/res/values-sw/strings.xml | 4 ---- quickstep/res/values-ta/strings.xml | 4 ---- quickstep/res/values-te/strings.xml | 4 ---- quickstep/res/values-th/strings.xml | 4 ---- quickstep/res/values-tl/strings.xml | 4 ---- quickstep/res/values-tr/strings.xml | 4 ---- quickstep/res/values-uk/strings.xml | 4 ---- quickstep/res/values-ur/strings.xml | 4 ---- quickstep/res/values-uz/strings.xml | 4 ---- quickstep/res/values-vi/strings.xml | 4 ---- quickstep/res/values-zh-rCN/strings.xml | 4 ---- quickstep/res/values-zh-rHK/strings.xml | 4 ---- quickstep/res/values-zh-rTW/strings.xml | 4 ---- quickstep/res/values-zu/strings.xml | 4 ---- 84 files changed, 336 deletions(-) diff --git a/quickstep/res/values-af/strings.xml b/quickstep/res/values-af/strings.xml index 0e03806b21..bca1e8c52a 100644 --- a/quickstep/res/values-af/strings.xml +++ b/quickstep/res/values-af/strings.xml @@ -97,15 +97,11 @@ "Slaan oor" "Draai skerm" "Taakbalkopvoeding" - "Taakbalkopvoeding het verskyn" - "Taakbalkopvoeding is toegemaak" "Sleep ’n app na die kant toe om 2 apps tegelyk te gebruik" "Stadigswiep op om die Taakbalk te wys" "Kry appvoorstelle op grond van jou roetine" "Skakel gebaarnavigasie in Instellings aan om die Taakbalk outomaties te versteek" "Doen meer met die Taakbalk" - "Volgende" - "Terug" "Maak toe" "Klaar" "Tuis" diff --git a/quickstep/res/values-am/strings.xml b/quickstep/res/values-am/strings.xml index f43d78ab61..a226a04359 100644 --- a/quickstep/res/values-am/strings.xml +++ b/quickstep/res/values-am/strings.xml @@ -97,15 +97,11 @@ "ዝለል" "ማያ ገጹን አዙር" "የተግባር አሞሌ ትምህርት" - "የተግባር አሞሌ ትምህርት ይታያል" - "የተግባር አሞሌ ትምህርት ተዘግቷል" "በአንድ ጊዜ 2 መተግበሪያዎችን ለመጠቀም አንድ መተግበሪያን ወደ ጎን ይጎትቱ" "የተግባር አሞሌውን ለማሳየት ቀስ ብለው ወደ ላይ ያንሸራትቱ" "በዕለት ተዕለት ተግባርዎ መሠረት የመተግበሪያ አስተያየቶችን ያግኙ" "የተግባር አሞሌን በራስ ሰር ለመደበቅ የእጅ ምልክት ዳሰሳን በቅንብሮች ውስጥ ያብሩት" "በተግባር አሞሌው ተጨማሪ ነገር ያድርጉ" - "ቀጣይ" - "ተመለስ" "ዝጋ" "ተጠናቅቋል" "መነሻ" diff --git a/quickstep/res/values-ar/strings.xml b/quickstep/res/values-ar/strings.xml index cf5113d604..560f1c2c27 100644 --- a/quickstep/res/values-ar/strings.xml +++ b/quickstep/res/values-ar/strings.xml @@ -97,15 +97,11 @@ "التخطي" "تدوير الشاشة" "التعريف بشريط التطبيقات" - "ظهرت لوحة تعليم استخدام شريط المهام." - "تم إغلاق لوحة تعليم استخدام شريط المهام." "اسحب تطبيقًا إلى جانب الشاشة لاستخدام تطبيقََين في آنٍ واحد." "مرِّر ببطء للأعلى لإظهار شريط التطبيقات" "احصل على اقتراحات التطبيقات بناءً على سلسلة إجراءاتك." "فعِّل خيار \"التنقُّل بالإيماءات\" في \"الإعدادات\" لإخفاء شريط التطبيقات تلقائيًا." "إنجاز المزيد باستخدام شريط التطبيقات" - "الشاشة التالية" - "رجوع" "إغلاق" "تم" "الرئيسية" diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml index 17fa259e8c..c424ca1c52 100644 --- a/quickstep/res/values-as/strings.xml +++ b/quickstep/res/values-as/strings.xml @@ -97,15 +97,11 @@ "এৰি যাওক" "স্ক্ৰীনখন ঘূৰাওক" "টাস্কবাৰৰ শিক্ষা" - "টাস্কবাৰৰ শিক্ষাৰ পেনেলটো প্ৰদর্শিত হৈছে" - "টাস্কবাৰৰ শিক্ষাৰ পেনেলটো বন্ধ হৈছে" "এবাৰতে ২ টা এপ্‌ ব্যৱহাৰ কৰিবলৈ কোনো এপ্‌ কাষলৈ টানি আনি এৰক" "টাস্কবাৰ দেখুৱাবলৈ লাহেকৈ ওপৰলৈ ছোৱাইপ কৰক" "আপোনাৰ ৰুটিনৰ ওপৰত আধাৰিত এপৰ পৰামৰ্শ পাওক" "টাস্কবাৰ স্বয়ংক্ৰিয়ভাৱে লুকুৱাবলৈ ছেটিঙত আঙুলিৰ স্পৰ্শৰ নিৰ্দেশেৰে কৰা নেভিগেশ্বন অন কৰক" "টাস্কবাৰৰ জৰিয়তে অধিক কাৰ্য সম্পাদন কৰক" - "পৰৱৰ্তী" - "উভতি যাওক" "বন্ধ কৰক" "হ’ল" "গৃহপৃষ্ঠা" diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml index 5638379272..096299120a 100644 --- a/quickstep/res/values-az/strings.xml +++ b/quickstep/res/values-az/strings.xml @@ -97,15 +97,11 @@ "Ötürün" "Ekranı fırladın" "Tapşırıq panelində təhsil" - "Tapşırıq panelindəki təlim bölməsi görünür" - "Tapşırıq panelindəki təlim bölməsi bağlanıb" "Eyni anda 2 tətbiqi istifadə etmək üçün bir tətbiqi yan tərəfə çəkin" "Tapşırıq panelini göstərmək üçün astaca yuxarı sürüşdürün" "Rejiminizə əsasən tətbiq təklifləri alın" "Tapşırıq panelini avtomatik gizlətmək üçün Ayarlarda jest naviqasiyasını aktiv edin" "Tapşırıq paneli ilə daha çox şey edin" - "Sonra" - "Geri" "Bağlayın" "Hazırdır" "Ev" diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml index 8d5df4f1aa..23dd072c97 100644 --- a/quickstep/res/values-b+sr+Latn/strings.xml +++ b/quickstep/res/values-b+sr+Latn/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Rotirajte ekran" "Uputstva na traci zadataka" - "Edukativno okno iz trake zadataka se pojavilo" - "Edukativno okno iz trake zadataka je zatvoreno" "Prevucite na stranu da biste koristili 2 aplikacije odjednom" "Nakratko prevucite nagore da biste prikazali traku zadataka" "Dobijajte predloge aplikacija na osnovu rutine" "Uključite navigaciju pomoću pokreta u Podešavanjima radi automatskog skrivanja trake zadataka" "Uradite više pomoću trake zadataka" - "Dalje" - "Nazad" "Zatvori" "Gotovo" "Početna" diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml index 81957ba43c..a5c218b9aa 100644 --- a/quickstep/res/values-be/strings.xml +++ b/quickstep/res/values-be/strings.xml @@ -97,15 +97,11 @@ "Прапусціць" "Павярнуць экран" "Інфармацыя пра панэль задач" - "З\'явілася панэль навучання на панэлі задач" - "Панэль навучання на панэлі задач закрыта" "Каб карыстацца 2 праграмамі, перацягніце адну з іх убок" "Каб паказаць панэль задач, павольна правядзіце пальцам уверх" "Атрымлівайце прапановы праграм з улікам вашых дзеянняў" "Каб аўтаматычна схаваць панэль задач, уключыце ў Наладах навігацыю жэстамі" "Выкарыстоўвайце магчымасці панэлі задач" - "Далей" - "Назад" "Закрыць" "Гатова" "Галоўны экран" diff --git a/quickstep/res/values-bg/strings.xml b/quickstep/res/values-bg/strings.xml index e3265d9ad7..1222afa385 100644 --- a/quickstep/res/values-bg/strings.xml +++ b/quickstep/res/values-bg/strings.xml @@ -97,15 +97,11 @@ "Пропускане" "Завъртане на екрана" "Урок за лентата на задачите" - "Показва се урокът за лентата на задачите" - "Урокът за лентата на задачите бе затворен" "Плъзнете приложение встрани, за да използвате едновременно 2" "Плъзнете бавно нагоре, за да видите лентата на задачите" "Получавайте предложения за приложения според навиците си" "Включете навигирането с жестове от настройките с цел авт. скриване на лентата на задачите" "Правете повече неща с лентата на задачите" - "Напред" - "Назад" "Затваряне" "Готово" "Начало" diff --git a/quickstep/res/values-bn/strings.xml b/quickstep/res/values-bn/strings.xml index 2807f7a662..8f9fbee864 100644 --- a/quickstep/res/values-bn/strings.xml +++ b/quickstep/res/values-bn/strings.xml @@ -97,15 +97,11 @@ "এড়িয়ে যান" "স্ক্রিন ঘোরান" "টাস্কবার এডুকেশন" - "টাস্কবার এডুকেশন দেখানো হয়েছে" - "টাস্কবার এডুকেশন বন্ধ করা আছে" "একসাথে ২টি অ্যাপ ব্যবহার করতে একটি অ্যাপ পাশে টেনে আনুন" "\'টাস্কবার\' দেখানোর জন্য উপরের দিকে আস্তে সোয়াইপ করুন" "আপনার রুটিন অনুযায়ী অ্যাপ থেকে সাজেশন পান" "\'টাস্কবার\' অটোমেটিক লুকানোর জন্য, সেটিংসে জেসচার নেভিগেশন চালু করুন" "\'টাস্কবার\' ফিচারের সাহায্যে আরও অনেক কিছু করুন" - "পরবর্তী" - "ফিরুন" "বন্ধ করুন" "হয়ে গেছে" "হোম" diff --git a/quickstep/res/values-bs/strings.xml b/quickstep/res/values-bs/strings.xml index d857edd750..691c72091e 100644 --- a/quickstep/res/values-bs/strings.xml +++ b/quickstep/res/values-bs/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Rotiranje ekrana" "Edukacija o traci zadataka" - "Edukacija o programskoj traci je prikazana" - "Edukacija o programskoj traci je zatvorena" "Prevucite aplikaciju ustranu da odjednom koristite 2 aplikacije" "Sporo prevucite nagore da vidite traku zadataka" "Dobijajte prijedloge aplikacija zasnovane na vašoj rutini" "Uključite navigaciju pokretima u Postavkama da automatski sakrijete traku zadataka" "Uradite više pomoću trake zadataka" - "Naprijed" - "Nazad" "Zatvori" "Gotovo" "Dom" diff --git a/quickstep/res/values-ca/strings.xml b/quickstep/res/values-ca/strings.xml index 4f0cf15151..919712aaaa 100644 --- a/quickstep/res/values-ca/strings.xml +++ b/quickstep/res/values-ca/strings.xml @@ -97,15 +97,11 @@ "Omet" "Gira la pantalla" "Informació sobre Barra de tasques" - "Ha aparegut el tauler educatiu de la barra de tasques" - "S\'ha tancat el tauler educatiu de la barra de tasques" "Arrossega una app al costat per utilitzar 2 apps alhora" "Llisca lentament cap amunt per mostrar la Barra de tasques" "Obtén suggeriments d\'aplicacions basats en la teva rutina" "A Configuració, activa la navegació amb gestos per amagar la Barra de tasques automàticament" "Fes més coses amb la Barra de tasques" - "Següent" - "Enrere" "Tanca" "Fet" "Inici" diff --git a/quickstep/res/values-cs/strings.xml b/quickstep/res/values-cs/strings.xml index bbfc1d55b0..5ac7e7eaa8 100644 --- a/quickstep/res/values-cs/strings.xml +++ b/quickstep/res/values-cs/strings.xml @@ -97,15 +97,11 @@ "Přeskočit" "Otočit obrazovku" "Informace o panelu aplikací" - "Zobrazila se výuka k hlavnímu panelu" - "Výuka k hlavnímu panelu byla zavřena" "Přetáhněte aplikaci na stranu a používejte tak dvě najednou" "Panel aplikací zobrazíte pomalým přejetím prstem nahoru" "Získejte návrhy aplikací na základě vašeho používání" "Pokud chcete panel aplikací automaticky skrýt, zapněte v Nastavení navigaci gesty" "Pomocí panelu aplikací můžete dělat více věcí" - "Další" - "Zpět" "Zavřít" "Hotovo" "Domů" diff --git a/quickstep/res/values-da/strings.xml b/quickstep/res/values-da/strings.xml index 600d2cf979..d0cea4c874 100644 --- a/quickstep/res/values-da/strings.xml +++ b/quickstep/res/values-da/strings.xml @@ -97,15 +97,11 @@ "Spring over" "Roter skærm" "Oplysninger om proceslinjen" - "Vejledningen om proceslinjen blev åbnet" - "Vejledningen om proceslinjen blev lukket" "Træk en app til siden for at bruge 2 apps på én gang" "Stryg langsomt opad for at se proceslinjen" "Få appforslag baseret på din rutine" "Aktivér navigation med bevægelser under Indstillinger for automatisk at skjule proceslinjen" "Få mere fra hånden med proceslinjen" - "Næste" - "Tilbage" "Luk" "Luk" "Hjem" diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml index 3df50c9d30..d906ab80d4 100644 --- a/quickstep/res/values-de/strings.xml +++ b/quickstep/res/values-de/strings.xml @@ -97,15 +97,11 @@ "Überspringen" "Bildschirm drehen" "Informationen zur Taskleiste" - "Anleitung für Taskleiste eingeblendet" - "Anleitung für Taskleiste geschlossen" "App zur Seite ziehen, um zwei Apps gleichzeitig zu nutzen" "Langsam nach oben wischen, um die Taskleiste anzuzeigen" "App-Vorschläge auf Grundlage deiner Nutzung erhalten" "Taskleiste automatisch ausblenden: Aktiviere in „Einstellungen“ die Bedienung über Gesten." "Mehr Möglichkeiten mit der Taskleiste" - "Weiter" - "Zurück" "Schließen" "Fertig" "Startbildschirm" diff --git a/quickstep/res/values-el/strings.xml b/quickstep/res/values-el/strings.xml index bc57d26a71..0fa67fe972 100644 --- a/quickstep/res/values-el/strings.xml +++ b/quickstep/res/values-el/strings.xml @@ -97,15 +97,11 @@ "Παράβλεψη" "Περιστροφή οθόνης" "Πληροφορίες χρήσης της Γραμμής εργαλείων" - "Η εκπαίδευση για τη γραμμή εργασιών εμφανίστηκε" - "Η εκπαίδευση για τη γραμμή εργασιών έκλεισε" "Σύρετε μια εφαρμ. στην άκρη για χρήση δύο εφαρμ. ταυτόχρονα" "Σύρετε αργά προς τα πάνω για εμφάνιση της Γραμμής εργαλείων" "Λάβετε προτεινόμενες εφαρμογές με βάση τη ρουτίνα σας" "Ενεργοπ. την πλοήγηση με κινήσεις στις Ρυθμίσεις για αυτόμ. απόκρυψη της Γραμμής εργαλείων" "Κάντε περισσότερα με τη Γραμμή εργαλείων" - "Επόμενο" - "Πίσω" "Κλείσιμο" "Τέλος" "Αρχική σελίδα" diff --git a/quickstep/res/values-en-rAU/strings.xml b/quickstep/res/values-en-rAU/strings.xml index ce3b17de04..ec90faf5a8 100644 --- a/quickstep/res/values-en-rAU/strings.xml +++ b/quickstep/res/values-en-rAU/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use two apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rCA/strings.xml b/quickstep/res/values-en-rCA/strings.xml index 85b38bdee3..01599c4ec3 100644 --- a/quickstep/res/values-en-rCA/strings.xml +++ b/quickstep/res/values-en-rCA/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use 2 apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rGB/strings.xml b/quickstep/res/values-en-rGB/strings.xml index ce3b17de04..ec90faf5a8 100644 --- a/quickstep/res/values-en-rGB/strings.xml +++ b/quickstep/res/values-en-rGB/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use two apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rIN/strings.xml b/quickstep/res/values-en-rIN/strings.xml index ce3b17de04..ec90faf5a8 100644 --- a/quickstep/res/values-en-rIN/strings.xml +++ b/quickstep/res/values-en-rIN/strings.xml @@ -97,15 +97,11 @@ "Skip" "Rotate screen" "Taskbar education" - "Taskbar education appeared" - "Taskbar education closed" "Drag an app to the side to use two apps at once" "Slow-swipe up to show the Taskbar" "Get app suggestions based on your routine" "Turn on gesture navigation in Settings to auto-hide the Taskbar" "Do more with the Taskbar" - "Next" - "Back" "Close" "Done" "Home" diff --git a/quickstep/res/values-en-rXC/strings.xml b/quickstep/res/values-en-rXC/strings.xml index 1c08788b5a..c8f344edc4 100644 --- a/quickstep/res/values-en-rXC/strings.xml +++ b/quickstep/res/values-en-rXC/strings.xml @@ -97,15 +97,11 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‎‎‎‏‎‏‎‎‎‎‎‏‎‏‎‎‏‏‎‎‎‎Skip‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‏‏‏‎Rotate screen‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‏‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‎‎‏‏‏‏‏‎‏‏‎Taskbar education‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‎‏‎‏‎‏‎‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎‎‏‎Taskbar education appeared‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‏‏‏‏‎‎Taskbar education closed‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‎‏‏‎‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎‏‏‏‎‎‏‏‎‎Drag an app to the side to use 2 apps at once‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎Slow-swipe up to show the Taskbar‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‎‎‎‏‏‎‏‏‎‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‎‎‎‎‎‎‎‏‎‎‎‏‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‎‎Get app suggestions based on your routine‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‎‎‏‎‎‏‎‏‏‏‎Turn on gesture navigation in Settings to auto-hide the Taskbar‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‏‎‎‎‎‏‎‏‎‎‎‎‏‏‎‏‎‏‎‎‏‎‏‎‏‏‏‏‎‎‏‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‎‏‎‎‎‏‎‎Do more with the Taskbar‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‏‏‎‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎‏‎‎‏‎‎‎‎‏‎Next‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‎‎‏‏‎‎‏‏‎‏‏‏‏‎‎‏‎‎‎‏‏‎‏‎‎‏‏‎‎Back‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‎‏‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‏‎‎‎‎‎‏‏‎‎‎‎‏‎Close‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‏‏‎‎‎‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‎‎‏‏‎‎‎‎‏‏‏‏‎‎‏‎Done‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‎‏‎‏‏‏‏‎‎‎‎‎‏‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎Home‎‏‎‎‏‎" diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml index 4944ce91e6..eb2a2960e5 100644 --- a/quickstep/res/values-es-rUS/strings.xml +++ b/quickstep/res/values-es-rUS/strings.xml @@ -97,15 +97,11 @@ "Omitir" "Girar pantalla" "Información sobre la barra de tareas" - "Se abrió la barra de herramientas Educación" - "Se cerró la barra de herramientas Educación" "Arrastra una app a un lado para usar 2 apps a la vez" "Desliza despacio hacia arriba para ver la Barra de tareas" "Recibe sugerencias de aplicaciones basadas en tu rutina" "Activa la navegación por gestos en la Configuración y la Barra de tareas se ocultará sola" "Haz más con la Barra de tareas" - "Siguiente" - "Atrás" "Cerrar" "Listo" "Botón de inicio" diff --git a/quickstep/res/values-es/strings.xml b/quickstep/res/values-es/strings.xml index e68cab82ac..d8beb80126 100644 --- a/quickstep/res/values-es/strings.xml +++ b/quickstep/res/values-es/strings.xml @@ -97,15 +97,11 @@ "Saltar" "Girar la pantalla" "Información sobre la barra de tareas" - "Ha aparecido una nota sobre la barra de tareas" - "Nota sobre la barra de tareas cerrada" "Arrastra una aplicación hacia un lado para usar 2 a la vez" "Desliza hacia arriba lentamente para ver la barra de tareas" "Obtén sugerencias de aplicaciones basadas en tu rutina" "Activa la navegación por gestos en Ajustes para ocultar la barra de tareas automáticamente" "Sácale más partido a la barra de tareas" - "Siguiente" - "Atrás" "Cerrar" "Hecho" "Inicio" diff --git a/quickstep/res/values-et/strings.xml b/quickstep/res/values-et/strings.xml index 80f1c61310..15943379dc 100644 --- a/quickstep/res/values-et/strings.xml +++ b/quickstep/res/values-et/strings.xml @@ -97,15 +97,11 @@ "Jäta vahele" "Pöörake ekraani" "Tegumiriba tutvustus" - "Tegumiriba juhised kuvati" - "Tegumiriba juhised on suletud" "2 rakenduse korraga kasutamiseks lohistage rakendus kõrvale" "Tegumiriba kuvamiseks pühkige aeglaselt üles" "Hankige oma rutiini põhjal rakenduste soovitusi" "Tegumiriba automaatseks peitmiseks lülitage seadetes sisse liigutustega navigeerimine" "Tehke tegumiriba abil enamat" - "Järgmine" - "Tagasi" "Sule" "Valmis" "Avaleht" diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml index 180e582c06..1eba2b7eeb 100644 --- a/quickstep/res/values-eu/strings.xml +++ b/quickstep/res/values-eu/strings.xml @@ -97,15 +97,11 @@ "Saltatu" "Biratu pantaila" "Zereginen barra erabiltzeko argibideak" - "Agertu egin da zereginen barraren tutoriala" - "Itxi egin da zereginen barraren tutoriala" "Bi aplikazio batera erabiltzeko, arrastatu bat albo batera" "Zereginen barra ikusteko, pasatu hatza motel gora" "Jaso aplikazioen iradokizunak erabileran oinarrituta" "Zereginen barra automatikoki ezkutatzeko, aktibatu keinu bidezko nabigazioa ezarpenetan" "Egin gauza gehiago zereginen barrarekin" - "Hurrengoa" - "Atzera" "Itxi" "Eginda" "Hasiera" diff --git a/quickstep/res/values-fa/strings.xml b/quickstep/res/values-fa/strings.xml index 5050de1798..1a35f9c94e 100644 --- a/quickstep/res/values-fa/strings.xml +++ b/quickstep/res/values-fa/strings.xml @@ -97,15 +97,11 @@ "رد شدن" "چرخاندن صفحه" "آموزش نوار وظیفه" - "پانل آموزشی نوار وظیفه نمایان شد" - "پانل آموزشی نوار وظیفه بسته شد" "برای استفاده هم‌زمان از ۲ برنامه، یک برنامه را به کناری بکشید" "برای نمایش «نوار وظیفه»، انگشتتان را آهسته به‌بالا بکشید" "براساس روال‌هایتان، پیشنهاد برنامه دریافت کنید" "برای پنهان‌سازی خودکار «نوار وظیفه»، پیمایش اشاره‌ای را در «تنظیمات» روشن کنید" "با «نوار وظیفه» می‌توانید کارهای بیشتر انجام دهید" - "بعدی" - "برگشت" "بستن" "تمام" "صفحه اصلی" diff --git a/quickstep/res/values-fi/strings.xml b/quickstep/res/values-fi/strings.xml index a539fac781..428011b180 100644 --- a/quickstep/res/values-fi/strings.xml +++ b/quickstep/res/values-fi/strings.xml @@ -97,15 +97,11 @@ "Ohita" "Käännä näyttö" "Tehtäväpalkin ohje" - "Tehtäväpalkin ohje näkyvissä" - "Tehtäväpalkin ohje suljettu" "Vedä sovellus sivuun, niin voit käyttää samalla 2 sellaista" "Näytä tehtäväpalkki pyyhkäisemällä ylös hitaasti" "Sovellussuosituksia käytön perusteella" "Laita eleillä navigointi päälle Asetuksista Tehtäväpalkin piilottamiseksi automaattisesti" "Vinkkejä tehtäväpalkin tehokkaampaan käyttöön" - "Seuraava" - "Takaisin" "Sulje" "Valmis" "Etusivu" diff --git a/quickstep/res/values-fr-rCA/strings.xml b/quickstep/res/values-fr-rCA/strings.xml index 16828c9d0b..af89ae5c91 100644 --- a/quickstep/res/values-fr-rCA/strings.xml +++ b/quickstep/res/values-fr-rCA/strings.xml @@ -97,15 +97,11 @@ "Ignorer" "Faire pivoter l\'écran" "Informations sur la barre des tâches" - "La barre des tâches éducatives s\'est affichée" - "La barre des tâches éducatives est fermée" "Pour utiliser deux applis, faites-les glisser vers le côté" "Balayez lent. vers le haut pour afficher la barre des tâches" "Obtenez des suggestions d\'applis en fonction de vos routines" "Activez la navigation par gestes dans Paramètres pour masquer auto. la barre des tâches" "Faites-en plus avec la barre des tâches" - "Suivant" - "Retour" "Fermer" "OK" "Accueil" diff --git a/quickstep/res/values-fr/strings.xml b/quickstep/res/values-fr/strings.xml index ce48ab8df6..3b08b8969c 100644 --- a/quickstep/res/values-fr/strings.xml +++ b/quickstep/res/values-fr/strings.xml @@ -97,15 +97,11 @@ "Passer" "Faire pivoter l\'écran" "Fonctionnement de la barre des tâches" - "Infos sur la barre des tâches affichées" - "Infos sur la barre des tâches fermées" "Faites glisser une appli sur le côté pour utiliser 2 applis" "Balayez lentement vers le haut pour l\'afficher" "Obtenez des suggestions d\'applis basées sur vos habitudes" "Activez la navigation par gestes dans paramètres pour masquage auto de la barre des tâches" "Faites-en plus avec la barre des tâches" - "Suivant" - "Retour" "Fermer" "OK" "Accueil" diff --git a/quickstep/res/values-gl/strings.xml b/quickstep/res/values-gl/strings.xml index 2eb4d62a71..d5e7550599 100644 --- a/quickstep/res/values-gl/strings.xml +++ b/quickstep/res/values-gl/strings.xml @@ -97,15 +97,11 @@ "Omitir" "Xira a pantalla" "Información sobre a función Barra de tarefas" - "Panel de información de barra de tarefas aberto" - "Panel de información de barra de tarefas pechado" "Arrastra unha aplicación cara a un lado para usar dúas á vez" "Pasa o dedo amodo cara arriba para ver a barra de tarefas" "Obtén suxestións de aplicacións en función da túa rutina" "Activa navegación con xestos en Configuración e oculta automaticamente a barra de tarefas" "Tira máis proveito da barra de tarefas" - "Seguinte" - "Atrás" "Pechar" "Listo" "Inicio" diff --git a/quickstep/res/values-gu/strings.xml b/quickstep/res/values-gu/strings.xml index 80ec49cb0a..0924b681c8 100644 --- a/quickstep/res/values-gu/strings.xml +++ b/quickstep/res/values-gu/strings.xml @@ -97,15 +97,11 @@ "છોડો" "સ્ક્રીન ફેરવો" "ટાસ્કબાર વિશે શિક્ષણ" - "ટાસ્કબારનું શિક્ષણ આપતી પૅનલ દેખાય છે" - "ટાસ્કબારનું શિક્ષણ આપતી પૅનલ બંધ થઈ છે" "એક સાથે 2 ઍપનો ઉપયોગ કરવા માટે, ઍપને ખેંચીને બાજુ પર લઈ જાઓ" "ટાસ્કબાર બતાવવા માટે ઉપરની તરફ ધીમેથી સ્વાઇપ કરો" "તમારા રૂટિનના આધારે ઍપના સુઝાવો મેળવો" "ટાસ્કબારને ઑટોમૅટિક રીતે છુપાવવા માટે સેટિંગમાં સંકેતથી નૅવિગેશનની સુવિધા ચાલુ કરો" "ટાસ્કબાર વડે બીજું ઘણું કરો" - "આગળ" - "પાછળ" "બંધ કરો" "થઈ ગયું" "હોમ" diff --git a/quickstep/res/values-hi/strings.xml b/quickstep/res/values-hi/strings.xml index 4badb4912a..b108371f21 100644 --- a/quickstep/res/values-hi/strings.xml +++ b/quickstep/res/values-hi/strings.xml @@ -97,15 +97,11 @@ "अभी नहीं" "स्क्रीन घुमाएं" "टास्कबार का ट्यूटोरियल" - "टास्कबार ट्यूटोरियल दिखाया गया" - "टास्कबार ट्यूटोरियल बंद किया गया" "किसी ऐप को किनारे की ओर ड्रैग करके 2 ऐप एक साथ इस्तेमाल करें" "टास्कबार दिखाने के लिए, ऊपर की ओर धीरे से स्वाइप करें" "डिवाइस के इस्तेमाल के आधार पर ऐप्लिकेशन के सुझाव पाएं" "टास्कबार अपने-आप छिपाने वाली सुविधा के लिए, सेटिंग में जाकर जेस्चर वाला नेविगेशन चालू करें" "टास्कबार की मदद से कई और काम करें" - "आगे बढ़ें" - "वापस जाएं" "बंद करें" "हो गया" "होम" diff --git a/quickstep/res/values-hr/strings.xml b/quickstep/res/values-hr/strings.xml index da5fbdc0ef..1aadeeac3a 100644 --- a/quickstep/res/values-hr/strings.xml +++ b/quickstep/res/values-hr/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Zakretanje zaslona" "Upute za traku sa zadacima" - "Upute za programsku traku su se pojavile" - "Upute za programsku traku su zatvorene" "Povucite apl. u stranu radi istodobne upotrebe 2 aplikacije" "Polako prijeđite prstom prema gore za prikaz trake sa zadacima" "Primajte prijedloge aplikacija na temelju svoje rutine" "Uključite navigaciju pokretima u postavkama da bi se traka sa zadacima automatski sakrila" "Učinite više uz pomoć trake sa zadacima" - "Dalje" - "Natrag" "Zatvori" "Gotovo" "Početna" diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml index e7fcb70c53..ba75d4f00a 100644 --- a/quickstep/res/values-hu/strings.xml +++ b/quickstep/res/values-hu/strings.xml @@ -97,15 +97,11 @@ "Kihagyás" "Képernyő elforgatása" "Tálca használatának ismertetése" - "Az eszköztár használatát ismertető panel megjelent" - "Az eszköztár használatát ismertető panel bezárult" "Húzzon egy appot oldalra, ha kettőt használna egyidejűleg" "Csúsztassa ujját lassan fel a Feladatsáv megjelenítéséhez" "Alkalmazásjavaslatokat kaphat a rutinja alapján" "A Feladatsáv automatikus elrejtéséhez aktiválja a navigációs kézmozdulatokat a beállításokban" "Jobban kihasználhatja a Feladatsávot" - "Tovább" - "Vissza" "Bezárás" "Kész" "Kezdőlap" diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml index 5ac931d2a3..43a7c5d4a1 100644 --- a/quickstep/res/values-hy/strings.xml +++ b/quickstep/res/values-hy/strings.xml @@ -97,15 +97,11 @@ "Բաց թողնել" "Պտտել էկրանը" "Խնդրագոտու «Կրթություն» պատուհան" - "Խնդրագոտու «Կրթություն» վահանակը բացվեց" - "Խնդրագոտու «Կրթություն» վահանակը փակվեց" "Միաժամանակ օգտագործեք երկու հավելված՝ մեկը մի կողմ քաշելով" "Հավելվածների վահանակը բացելու համար մատը դանդաղ սահեցրեք վեր" "Ստացեք առաջարկներ ձեր գործողությունների հիման վրա" "Կարգավորումներում միացրեք ժեստերով նավիգացիան՝ հավելվածների վահանակը թաքցնելու համար" "Օգտվեք հավելվածների վահանակի բոլոր հնարավորություններից" - "Առաջ" - "Հետ" "Փակել" "Պատրաստ է" "Սկիզբ" diff --git a/quickstep/res/values-in/strings.xml b/quickstep/res/values-in/strings.xml index ea5c19b1e5..6f9d7c6840 100644 --- a/quickstep/res/values-in/strings.xml +++ b/quickstep/res/values-in/strings.xml @@ -97,15 +97,11 @@ "Lewati" "Putar layar" "Pengantar Taskbar" - "Edukasi taskbar ditampilkan" - "Edukasi taskbar ditutup" "Tarik aplikasi ke samping untuk menggunakan 2 aplikasi sekaligus" "Geser perlahan ke atas untuk menampilkan Taskbar" "Dapatkan saran aplikasi berdasarkan rutinitas Anda" "Aktifkan navigasi gestur di Setelan untuk menyembunyikan otomatis Taskbar" "Lakukan lebih banyak dengan Taskbar" - "Berikutnya" - "Kembali" "Tutup" "Selesai" "Layar utama" diff --git a/quickstep/res/values-is/strings.xml b/quickstep/res/values-is/strings.xml index 52c0b81dd3..f58e6de718 100644 --- a/quickstep/res/values-is/strings.xml +++ b/quickstep/res/values-is/strings.xml @@ -97,15 +97,11 @@ "Sleppa" "Snúa skjánum" "Leiðsögn verkefnastiku" - "Leiðsögn verkefnastiku sýnileg" - "Leiðsögn verkefnastiku lokað" "Dragðu forrit til hliðar til að nota 2 forrit í einu" "Strjúktu hægt upp til að birta forritastikuna" "Fáðu forritatillögur sem byggjast á rútínunni þinni" "Kveiktu á bendingastjórnun í stillingunum til að fela forritastikuna sjálfkrafa" "Nýttu forritastikuna betur" - "Áfram" - "Til baka" "Loka" "Lokið" "Heim" diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml index 75314dc8f5..17e379fe2f 100644 --- a/quickstep/res/values-it/strings.xml +++ b/quickstep/res/values-it/strings.xml @@ -97,15 +97,11 @@ "Salta" "Ruota lo schermo" "Informazioni sulla barra delle applicazioni" - "Riquadro Formazione barra delle applicazioni visualizzato" - "Riquadro Formazione barra delle applicazioni chiuso" "Trascina un\'app di lato per usare due app contemporaneamente" "Scorri lentamente in su per mostrare la barra delle app" "Visualizza le app suggerite in base alla tua routine" "Per nascondere automaticamente la barra delle app, attiva la navigazione tramite gesti" "Fai di più con la barra delle app" - "Avanti" - "Indietro" "Chiudi" "Fine" "Home" diff --git a/quickstep/res/values-iw/strings.xml b/quickstep/res/values-iw/strings.xml index 9f5c2114c7..dc30dc686a 100644 --- a/quickstep/res/values-iw/strings.xml +++ b/quickstep/res/values-iw/strings.xml @@ -97,15 +97,11 @@ "דילוג" "סיבוב המסך" "הסבר על סרגל האפליקציות" - "חלונית ההסברים על שורת המשימות מופיעה" - "חלונית ההסברים על שורת המשימות נסגרה" "כדי להשתמש בשתי אפליקציות בו-זמנית, צריך לגרור אפליקציה לצד" "צריך להחליק לאט כדי להציג את סרגל האפליקציות" "קבלת הצעות לאפליקציות על סמך השימוש השגרתי שלך" "אפשר להפעיל את הניווט באמצעות תנועות ב\'הגדרות\' כדי להסתיר אוטומטית את סרגל האפליקציות" "פעולות נוספות שאפשר לעשות עם סרגל האפליקציות" - "הבא" - "חזרה" "סגירה" "סיום" "בית" diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml index 6f30fe6928..75e3bf8a1d 100644 --- a/quickstep/res/values-ja/strings.xml +++ b/quickstep/res/values-ja/strings.xml @@ -97,15 +97,11 @@ "スキップ" "画面を回転" "タスクバーの説明" - "タスクバーの説明を開きました" - "タスクバーの説明を閉じました" "アプリを横にドラッグして 2 個のアプリを同時に使用できます" "タスクバーを表示するには、上にゆっくりとスワイプします" "毎日の使用状況に基づいてアプリの候補が表示されます" "[設定] でジェスチャー ナビゲーションを ON にすると、タスクバーを自動的に非表示にできます" "タスクバーの各種機能" - "次へ" - "戻る" "閉じる" "完了" "ホーム" diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml index 2916aa4e46..13232da1cd 100644 --- a/quickstep/res/values-ka/strings.xml +++ b/quickstep/res/values-ka/strings.xml @@ -97,15 +97,11 @@ "გამოტოვება" "ეკრანის შეტრიალება" "ამოცანათა ზოლი: განათლება" - "ამოცანების ზოლის სასწავლო არე გამოჩნდა" - "ამოცანების ზოლის სასწავლო არე დაიხურა" "2 აპის ერთდროულად გამოსაყენებლად გადაათრიეთ აპი კიდეზე" "მოკლედ გადაფურცლეთ ზემოთ, რომ ამოცანათა ზოლი გამოაჩინოთ" "მიიღეთ აპის შეთავაზებები თქვენი რუტინის მიხედვით" "ჩართეთ ჟესტებით ნავიგაცია პარამეტრებში, რათა ავტომატურად დაიმალოთ სამუშაო ზოლი" "გააკეთეთ მეტი ამოცანათა ზოლის მეშვეობით" - "შემდეგი" - "უკან" "დახურვა" "მზადაა" "მთავარი" diff --git a/quickstep/res/values-kk/strings.xml b/quickstep/res/values-kk/strings.xml index a88d5e13e3..9f006a9eeb 100644 --- a/quickstep/res/values-kk/strings.xml +++ b/quickstep/res/values-kk/strings.xml @@ -97,15 +97,11 @@ "Өткізіп жіберу" "Экранды бұру" "Тапсырмалар жолағы: үйрену" - "Тапсырмалар тақтасы бойынша нұсқаулық ашылды." - "Тапсырмалар тақтасы бойынша нұсқаулық жабылды." "2 қолданбаны бір мезгілде пайдалану үшін қолданбаны шетке сүйреңіз." "Тапсырмалар жолағын көрсету үшін жоғары қарай ақырын сырғытыңыз." "Іс-әрекеттеріңізге негізделген қолданба ұсыныстарын алыңыз." "Тапсырмалар жолағын автоматты түрде жасыру үшін параметрлерден қимылмен басқаруды қосыңыз." "Тапсырмалар жолағында мүмкіндік көп" - "Келесі" - "Артқа" "Жабу" "Дайын" "Негізгі экран" diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml index 017d139d65..738e454469 100644 --- a/quickstep/res/values-km/strings.xml +++ b/quickstep/res/values-km/strings.xml @@ -97,15 +97,11 @@ "រំលង" "បង្វិលអេក្រង់" "ការអប់រំលើរបារកិច្ចការ" - "ការបង្រៀនអំពីរបារកិច្ចការបានបង្ហាញ" - "ការបង្រៀនអំពីរបារកិច្ចការត្រូវបានបិទ" "អូសកម្មវិធីទៅចំហៀង ដើម្បីប្រើកម្មវិធី 2 ក្នុងពេលតែមួយ" "អូសឡើងលើយឺតៗ ដើម្បីបង្ហាញរបារកិច្ចការ" "ទទួលការណែនាំកម្មវិធីដោយផ្អែកលើទម្លាប់របស់អ្នក" "បើកការរុករក​ដោយប្រើចលនានៅក្នុងការកំណត់ ដើម្បីលាក់របារកិច្ចការដោយស្វ័យប្រវត្តិ" "ធ្វើបានកាន់តែច្រើនដោយប្រើរបារកិច្ចការ" - "បន្ទាប់" - "ថយក្រោយ" "បិទ" "រួចរាល់" "ទំព័រដើម" diff --git a/quickstep/res/values-kn/strings.xml b/quickstep/res/values-kn/strings.xml index fa6e5d2a67..37e0acdf15 100644 --- a/quickstep/res/values-kn/strings.xml +++ b/quickstep/res/values-kn/strings.xml @@ -97,15 +97,11 @@ "ಸ್ಕಿಪ್ ಮಾಡಿ" "ಸ್ಕ್ರೀನ್ ತಿರುಗಿಸಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ" - "ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ ಕಾಣಿಸಿಕೊಂಡಿದೆ" - "ಟಾಸ್ಕ್‌ಬಾರ್ ಶಿಕ್ಷಣ ಮುಚ್ಚಿದೆ" "ಒಂದೇ ಬಾರಿಗೆ 2 ಆ್ಯಪ್‌ಗಳನ್ನು ಬಳಸಲು ಆ್ಯಪ್ ಅನ್ನು ಬದಿಗೆ ಎಳೆಯಿರಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಅನ್ನು ತೋರಿಸಲು ನಿಧಾನವಾಗಿ ಮೇಲಕ್ಕೆ ಸ್ವೈಪ್ ಮಾಡಿ" "ನಿಮ್ಮ ದಿನಚರಿಯ ಆಧಾರದ ಮೇಲೆ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಅನ್ನು ಸ್ವಯಂ-ಮರೆಮಾಡಲು ಸೆಟ್ಟಿಂಗ್‌ಗಳಲ್ಲಿ ಗೆಸ್ಚರ್ ನ್ಯಾವಿಗೇಶನ್ ಅನ್ನು ಆನ್ ಮಾಡಿ" "ಟಾಸ್ಕ್‌ಬಾರ್ ಮೂಲಕ ಹೆಚ್ಚಿನದನ್ನು ಮಾಡಿ" - "ಮುಂದೆ" - "ಹಿಂದೆ" "ಮುಚ್ಚಿರಿ" "ಮುಗಿದಿದೆ" "ಮುಖಪುಟ" diff --git a/quickstep/res/values-ko/strings.xml b/quickstep/res/values-ko/strings.xml index 60a50365cd..cff87a13b9 100644 --- a/quickstep/res/values-ko/strings.xml +++ b/quickstep/res/values-ko/strings.xml @@ -97,15 +97,11 @@ "건너뛰기" "화면 회전" "태스크 바 정보" - "작업 표시줄 튜토리얼 패널 표시됨" - "작업 표시줄 튜토리얼 패널 닫힘" "앱을 옆으로 드래그하여 앱 2개를 동시에 사용합니다." "위로 천천히 스와이프하면 태스크 바가 표시됩니다." "사용 습관에 따라 앱 제안을 받습니다." "태스크 바를 자동 숨김하려면 설정에서 동작 탐색을 켜세요." "태스크 바 최대한 활용하기" - "다음" - "뒤로" "닫기" "완료" "홈" diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml index 34285b7fde..4cb31fddf5 100644 --- a/quickstep/res/values-ky/strings.xml +++ b/quickstep/res/values-ky/strings.xml @@ -97,15 +97,11 @@ "Өткрп жиберүү" "Экранды буруу" "Тапшырмалар тактасы жөнүндө маалымат" - "Тапшырмалар тактасынын окутуу панели көрсөтүлдү" - "Тапшырмалар тактасынын окутуу панели жабылды" "2 колдонмону бир убакта пайдалануу үчүн капталга сүйрөңүз" "Тапшырмалар тактасын көрүү үчүн экранды жай өйдө сүрүңүз" "Программаңыздын негизинде сунушталган колдонмолорду алуу" "Тапшырмалар тактасын автоматтык түрдө жашыруу үчүн Тууралоодон жаңсап чабыттоону күйгүзүңүз" "Тапшырмалар тактасы менен көбүрөөк нерселерди аткарыңыз" - "Кийинки" - "Артка" "Жабуу" "Бүттү" "Башкы бет" diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml index 34f8ced3bc..be5d894c06 100644 --- a/quickstep/res/values-lo/strings.xml +++ b/quickstep/res/values-lo/strings.xml @@ -97,15 +97,11 @@ "ຂ້າມ" "ໝຸນໜ້າຈໍ" "ແຖບໜ້າວຽກ Education" - "ສະແດງການສຶກສາແຖບໜ້າວຽກແລ້ວ" - "ປິດການສຶກສາແຖບໜ້າວຽກແລ້ວ" "ລາກແອັບໄປດ້ານຂ້າງເພື່ອໃຊ້ 2 ແອັບໃນເວລາດຽວກັນ" "ປັດຂຶ້ນຊ້າໆເພື່ອສະແດງແຖບໜ້າວຽກ" "ຮັບການແນະນຳແອັບໂດຍອີງໃສ່ສິ່ງທີ່ເຮັດປະຈຳຂອງທ່ານ" "ເປີດການນຳທາງແບບທ່າທາງໃນການຕັ້ງຄ່າເພື່ອເຊື່ອງແຖບໜ້າວຽກໄວ້ໂດຍອັດຕະໂນມັດ" "ເຮັດສິ່ງຕ່າງໆໄດ້ຫຼາຍຂຶ້ນດ້ວຍແຖບໜ້າວຽກ" - "ຕໍ່ໄປ" - "ກັບຄືນ" "ປິດ" "ແລ້ວໆ" "ໜ້າຫຼັກ" diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml index 0549bd53bc..06c4f79088 100644 --- a/quickstep/res/values-lt/strings.xml +++ b/quickstep/res/values-lt/strings.xml @@ -97,15 +97,11 @@ "Praleisti" "Pasukti ekraną" "Užduočių juostos mokomoji informacija" - "Užduočių juostos patarimai rodomi" - "Užduočių juostos patarimai uždaryti" "Nuvilkę programą į šoną vienu metu naudokite dvi programas" "Trumpai perbraukite, kad būtų rodoma Užduočių juosta" "Gaukite programų pasiūlymų pagal savo veiklą" "Įjungę naršymą gestais „Nustatymų“ skiltyje automatiškai paslėpkite Užduočių juostą" "Atlikite daugiau naudodami Užduočių juostą" - "Kitas" - "Atgal" "Uždaryti" "Atlikta" "Pagrindinis" diff --git a/quickstep/res/values-lv/strings.xml b/quickstep/res/values-lv/strings.xml index 3d9cb10e34..9ab8259c15 100644 --- a/quickstep/res/values-lv/strings.xml +++ b/quickstep/res/values-lv/strings.xml @@ -97,15 +97,11 @@ "Izlaist" "Pagriezt ekrānu" "Informācija par uzdevumu joslu" - "Tika atvērta uzdevumjoslas apmācība" - "Tika aizvērta uzdevumjoslas apmācība" "Velciet lietotni sānis, lai izmantotu 2 lietotnes vienlaikus" "Lai skatītu uzdevumu joslu, lēni velciet augšup" "Skatiet ieteiktās lietotnes, balstoties uz jūsu ieradumiem" "Lai Uzdevumu josla tiktu automātiski paslēpta, iestatījumos ieslēdziet žestu navigāciju." "Plašākas iespējas, izmantojot uzdevumu joslu" - "Tālāk" - "Atpakaļ" "Aizvērt" "Gatavs" "Sākums" diff --git a/quickstep/res/values-mk/strings.xml b/quickstep/res/values-mk/strings.xml index 7b4e7056da..bd6b12a722 100644 --- a/quickstep/res/values-mk/strings.xml +++ b/quickstep/res/values-mk/strings.xml @@ -97,15 +97,11 @@ "Прескокни" "Ротирајте го екранот" "Обука за лентата со задачи" - "Се појави лентата за задачи за образование" - "Затворена е лентата за задачи за образование" "Повлечете апликација настрана за да користите 2 апликации" "Полека повлечете нагоре за да се прикаже „Лентата со задачи“" "Добивајте предлози за апликации според вашата рутина" "Вклучете навигација со движење во „Поставки“ за автоматско сокривање на „Лентата со задачи“" "Правете повеќе со една лента со задачи" - "Следно" - "Назад" "Затвори" "Готово" "Дома" diff --git a/quickstep/res/values-ml/strings.xml b/quickstep/res/values-ml/strings.xml index 17363c4058..74fdd756d1 100644 --- a/quickstep/res/values-ml/strings.xml +++ b/quickstep/res/values-ml/strings.xml @@ -97,15 +97,11 @@ "ഒഴിവാക്കുക" "സ്‌ക്രീൻ റൊട്ടേറ്റ് ചെയ്യുക" "ടാസ്‌ക്ബാർ മാർഗ്ഗനിർദ്ദേശ വിൻഡോ" - "ടാസ്ക്ക്ബാർ വിവര പാനൽ ദൃശ്യമായി" - "ടാസ്ക്ക്ബാർ വിവര പാനൽ അടച്ചു" "ഒരേ സമയം 2 ആപ്പുകൾ ഉപയോഗിക്കാൻ ഒരു ആപ്പ് വശത്തേക്ക് വലിച്ചിടൂ" "ടാസ്‌ക്ബാർ ദൃശ്യമാക്കാൻ മുകളിലേക്ക് പതുക്കെ സ്വൈപ്പ് ചെയ്യൂ" "നിങ്ങളുടെ ദിനചര്യ അനുസരിച്ച് ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക" "ടാസ്‌ക്‌ബാർ സ്വയമേവ മറയ്‌ക്കാൻ ക്രമീകരണത്തിൽ ജെസ്ച്ചർ നാവിഗേഷൻ ഓണാക്കുക" "ടാസ്‌ക്‌ബാർ ഉപയോഗിച്ച് കൂടുതൽ ചെയ്യുക" - "അടുത്തത്" - "മടങ്ങുക" "അടയ്ക്കുക" "പൂർത്തിയായി" "ഹോം" diff --git a/quickstep/res/values-mn/strings.xml b/quickstep/res/values-mn/strings.xml index d8f2015270..7c6314e7ab 100644 --- a/quickstep/res/values-mn/strings.xml +++ b/quickstep/res/values-mn/strings.xml @@ -97,15 +97,11 @@ "Алгасах" "Дэлгэцийг эргүүлэх" "Ажлын хэсгийн боловсрол" - "Боловсролын ажлын талбар гарч ирсэн" - "Боловсролын ажлын талбарыг хаасан" "2 аппыг зэрэг ашиглахын тулд аппыг хажуу тийш чирнэ үү" "Ажлын хэсгийг харуулахын тулд аажмаар дээш шударна уу" "Таны хэвшилд тулгуурлан санал болгож буй аппуудыг аваарай" "Ажлын хэсгийг автоматаар хаахын тулд Тохиргоонд зангааны навигацыг асаана уу" "Ажлын хэсгийн тусламжтай илүү ихийг хийгээрэй" - "Дараах" - "Буцах" "Хаах" "Дууссан" "Гэр" diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml index 646c40c874..cfaf2d8864 100644 --- a/quickstep/res/values-mr/strings.xml +++ b/quickstep/res/values-mr/strings.xml @@ -97,15 +97,11 @@ "वगळा" "स्क्रीन फिरवा" "टास्कबारशी संबंधित माहिती" - "टास्कबारशी संबंधित माहिती देणारे पॅनल उघडले आहे" - "टास्कबारशी संबंधित माहिती देणारे पॅनल बंद केले आहे" "दोन ॲप्स एकत्र वापरण्यासाठी एक अ‍ॅप बाजूला ड्रॅग करा" "टास्कबार दाखवण्यासाठी थोडे हळू वरती स्वाइप करा" "तुमच्या दिनक्रमावर आधारित ॲप सूचना मिळवा" "टास्कबार ऑटो हाइड करण्यासाठी सेटिंग्ज मधून जेश्चर नेव्हिगेशन सुरू करा" "टास्कबार चा पुरेपूर वापर करा" - "पुढे" - "मागे जा" "बंद करा" "पूर्ण झाले" "होम" diff --git a/quickstep/res/values-ms/strings.xml b/quickstep/res/values-ms/strings.xml index d1ae233531..4ed6493b84 100644 --- a/quickstep/res/values-ms/strings.xml +++ b/quickstep/res/values-ms/strings.xml @@ -97,15 +97,11 @@ "Langkau" "Putar skrin" "Pendidikan bar tugas" - "Pendidikan bar tugas muncul" - "Pendidikan bar tugas ditutup" "Seret apl ke tepi untuk menggunakan 2 apl serentak" "Leret perlahan ke atas untuk menunjukkan Bar Tugas" "Dapatkan cadangan apl berdasarkan rutin anda" "Hidupkan navigasi gerak isyarat dalam Tetapan untuk autosembunyi Bar Tugas" "Lakukan lebih banyak perkara dengan Bar Tugas" - "Seterusnya" - "Kembali" "Tutup" "Selesai" "Laman Utama" diff --git a/quickstep/res/values-my/strings.xml b/quickstep/res/values-my/strings.xml index fe4e954e11..617473c66f 100644 --- a/quickstep/res/values-my/strings.xml +++ b/quickstep/res/values-my/strings.xml @@ -97,15 +97,11 @@ "ကျော်ရန်" "ဖန်သားပြင်လှည့်ရန်" "လုပ်ဆောင်စရာဘား ပညာပေး" - "ပညာရေး လုပ်ဆောင်စရာဘား ပြထားသည်" - "ပညာရေး လုပ်ဆောင်စရာဘား ပိတ်ထားသည်" "အက်ပ် ၂ ခု တစ်ပြိုင်တည်းသုံးရန် အက်ပ်ကို ဘေးသို့ ဖိဆွဲပါ" "Taskbar ပြရန် အပေါ်သို့ ဖြည်းဖြည်းပွတ်ဆွဲပါ" "ပုံမှန်အစီအစဉ်ပေါ် အခြေခံ၍ အက်ပ်အကြံပြုချက်များကို ရယူပါ" "Taskbar ကို အော်တိုဝှက်ရန် ဆက်တင်များတွင် လက်ဟန်ဖြင့်လမ်းညွှန်ခြင်း ဖွင့်နိုင်သည်" "Taskbar ဖြင့် ပိုမိုလုပ်ဆောင်နိုင်ခြင်း" - "ရှေ့သို့" - "နောက်သို့" "ပိတ်ရန်" "ပြီးပြီ" "ပင်မစာမျက်နှာ" diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml index a5b90bc724..e4d75bebcd 100644 --- a/quickstep/res/values-nb/strings.xml +++ b/quickstep/res/values-nb/strings.xml @@ -97,15 +97,11 @@ "Hopp over" "Rotér skjermen" "Veiledning for oppgavelinjen" - "Opplæringen for oppgavelinjen vises" - "Opplæringen for oppgavelinjen er lukket" "Dra en app til siden for å bruke 2 apper samtidig" "Sveip langsomt opp for å vise oppgavelinjen" "Få appforslag som er basert på rutinene dine" "Slå på navigasjon med bevegelser i innstillingene for å skjule oppgavelinjen automatisk" "Gjør mer med oppgavelinjen" - "Neste" - "Tilbake" "Lukk" "Ferdig" "Hjem" diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml index 526c6c0399..b9e8e1cb8e 100644 --- a/quickstep/res/values-ne/strings.xml +++ b/quickstep/res/values-ne/strings.xml @@ -97,15 +97,11 @@ "स्किप गर्नु…" "स्क्रिन घुमाउनुहोस्" "टास्कबार एजुकेसन" - "टास्कबार एजुकेसन देखिएको छ" - "टास्कबार एजुकेसन बन्द गरिएको छ" "एपलाई छेउतिर ड्र्याग गरेर एकै पटक २ वटा एप चलाउनुहोस्" "टास्कबार देखाउन माथितिर बिस्तारै स्वाइप गर्नुहोस्" "आफ्नो रुटिनका आधारमा एपसम्बन्धी सुझावहरू प्राप्त गर्नुहोस्" "टास्कबार स्वतः लुकाउन सेटिङमा गई इसारामार्फत गरिने नेभिगेसन अन गर्नुहोस्" "टास्कबार प्रयोग गरेर अझ धेरै कार्य गर्नुहोस्" - "अर्को" - "पछाडि" "बन्द गर्नुहोस्" "सम्पन्न भयो" "होम" diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml index 9f9051cec7..f2a9d88fe0 100644 --- a/quickstep/res/values-nl/strings.xml +++ b/quickstep/res/values-nl/strings.xml @@ -97,15 +97,11 @@ "Overslaan" "Scherm draaien" "Taakbalk Onderwijs" - "Uitleg van taakbalk geopend" - "Uitleg van taakbalk gesloten" "Sleep een app naar de zijkant om 2 apps tegelijk te gebruiken" "Swipe kort omhoog om de taakbalk te tonen" "Krijg app-suggesties op basis van je routine" "Zet navigatie met gebaren aan bij Instellingen om de Taakbalk automatisch te verbergen" "Doe meer met de taakbalk" - "Volgende" - "Terug" "Sluiten" "Klaar" "Home" diff --git a/quickstep/res/values-or/strings.xml b/quickstep/res/values-or/strings.xml index a2a598beef..2affa6f5d9 100644 --- a/quickstep/res/values-or/strings.xml +++ b/quickstep/res/values-or/strings.xml @@ -97,15 +97,11 @@ "ବାଦ୍ ଦିଅନ୍ତୁ" "ସ୍କ୍ରିନ ଘୂରାନ୍ତୁ" "ଟାସ୍କବାର ଶିକ୍ଷା" - "ଟାସ୍କବାର୍ ଶିକ୍ଷା ଦେଖାଯାଇଛି" - "ଟାସ୍କବାର୍ ଶିକ୍ଷା ବନ୍ଦ ହୋଇଯାଇଛି" "ଥରକେ 2ଟି ଆପ୍ସ ବ୍ୟବହାର କରିବା ପାଇଁ ଏକ ଆପକୁ ପାର୍ଶ୍ୱକୁ ଡ୍ରାଗ କର" "ଟାସ୍କବାର ଦେଖାଇବା ପାଇଁ ଉପରକୁ ଧୀରେ-ସ୍ୱାଇପ କରନ୍ତୁ" "ଆପଣଙ୍କ ରୁଟିନ ଆଧାରରେ ଆପ ପରାମର୍ଶଗୁଡ଼ିକୁ ପାଆନ୍ତୁ" "ଟାସ୍କବାରକୁ ସ୍ୱତଃ-ଲୁଚାଇବା ପାଇଁ ସେଟିଂସରେ ଜେଶ୍ଚର ନାଭିଗେସନକୁ ଚାଲୁ କରନ୍ତୁ" "ଟାସ୍କବାର ମାଧ୍ୟମରେ ଆହୁରି ଅନେକ କିଛି କରନ୍ତୁ" - "ପରବର୍ତ୍ତୀ" - "ପଛକୁ ଫେରନ୍ତୁ" "ବନ୍ଦ କରନ୍ତୁ" "ହୋଇଗଲା" "ହୋମ" diff --git a/quickstep/res/values-pa/strings.xml b/quickstep/res/values-pa/strings.xml index bfa881bdca..df9cc35279 100644 --- a/quickstep/res/values-pa/strings.xml +++ b/quickstep/res/values-pa/strings.xml @@ -97,15 +97,11 @@ "ਛੱਡੋ" "ਸਕ੍ਰੀਨ ਘੁਮਾਓ" "ਟਾਸਕਬਾਰ ਸਿੱਖਿਆ" - "ਟਾਸਕਵਾਰ ਸਿੱਖਿਆ ਪੈਨਲ ਦਿਖਾਇਆ ਗਿਆ" - "ਟਾਸਕਵਾਰ ਸਿੱਖਿਆ ਪੈਨਲ ਬੰਦ ਕੀਤਾ ਗਿਆ" "ਇੱਕ ਵਾਰ ਵਿੱਚ 2 ਐਪਾਂ ਵਰਤਣ ਲਈ, ਐਪ ਨੂੰ ਪਾਸੇ ਵੱਲ ਘਸੀਟੋ" "ਟਾਸਕਬਾਰ ਦਿਖਾਉਣ ਲਈ ਥੋੜ੍ਹਾ ਉੱਪਰ ਵੱਲ ਸਵਾਈਪ ਕਰੋ" "ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮ ਦੇ ਆਧਾਰ \'ਤੇ ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ" "ਟਾਸਕਬਾਰ ਨੂੰ ਸਵੈ-ਲੁਕਾਉਣ ਲਈ ਸੈਟਿੰਗਾਂ ਵਿੱਚ ਇਸ਼ਾਰਾ ਨੈਵੀਗੇਸ਼ਨ ਨੂੰ ਚਾਲੂ ਕਰੋ" "ਟਾਸਕਬਾਰ ਦਾ ਹੋਰ ਲਾਹਾ ਲਓ" - "ਅੱਗੇ" - "ਪਿੱਛੇ" "ਬੰਦ ਕਰੋ" "ਸਮਝ ਲਿਆ" "ਘਰ" diff --git a/quickstep/res/values-pl/strings.xml b/quickstep/res/values-pl/strings.xml index 7bb37ba08d..f09e41224a 100644 --- a/quickstep/res/values-pl/strings.xml +++ b/quickstep/res/values-pl/strings.xml @@ -97,15 +97,11 @@ "Pomiń" "Obróć ekran" "Informacje o pasku aplikacji" - "Wskazówki na temat paska zadań zostały wyświetlone" - "Wskazówki na temat paska zadań zostały zamknięte" "Przeciągnij aplikację w bok, aby używać 2 aplikacji naraz" "Przesuń palcem krótko w górę, aby wyświetlić pasek aplikacji" "Otrzymuj sugestie aplikacji na podstawie rutyny" "Włącz nawigację przy użyciu gestów w Ustawieniach, aby automatycznie ukrywać pasek aplikacji" "Wykorzystaj potencjał paska aplikacji" - "Dalej" - "Wstecz" "Zamknij" "Gotowe" "Ekran główny" diff --git a/quickstep/res/values-pt-rPT/strings.xml b/quickstep/res/values-pt-rPT/strings.xml index daa0afeadc..2b287b3bdf 100644 --- a/quickstep/res/values-pt-rPT/strings.xml +++ b/quickstep/res/values-pt-rPT/strings.xml @@ -97,15 +97,11 @@ "Ignorar" "Rodar ecrã" "Educação da Barra de tarefas" - "Informação da barra de tarefas apresentada" - "Informação da barra de tarefas fechada" "Arraste uma app para o lado para usar 2 apps em simultâneo" "Deslize lentamente para cima para mostrar a Barra de tarefas" "Obtenha sugestões de apps baseadas na sua rotina" "Ative a navegação por gestos em Definições para ocultar automaticamente a Barra de tarefas" "Faça mais com a Barra de tarefas" - "Seguinte" - "Anterior" "Fechar" "Concluir" "Início" diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml index 2bc1399f80..4092c06690 100644 --- a/quickstep/res/values-pt/strings.xml +++ b/quickstep/res/values-pt/strings.xml @@ -97,15 +97,11 @@ "Pular" "Girar a tela" "Informações sobre a barra de tarefas" - "As dicas sobre a barra de tarefas foram abertas" - "As dicas sobre a barra de tarefas foram fechadas" "Arraste um app para o lado e use dois apps ao mesmo tempo" "Deslize para cima devagar para mostrar a Barra de tarefas" "Receba sugestões de apps com base na sua rotina" "Ative a navegação por gestos nas configs. para ocultar a Barra de tarefas automaticamente" "Aproveite ainda mais a Barra de tarefas" - "Próxima" - "Voltar" "Fechar" "Concluído" "Início" diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml index a31d227dc8..003b867815 100644 --- a/quickstep/res/values-ro/strings.xml +++ b/quickstep/res/values-ro/strings.xml @@ -97,15 +97,11 @@ "Omite" "Rotește ecranul" "Informații despre bara de activități" - "Panoul cu informații despre bara de activități s-a afișat" - "Panoul cu informații despre bara de activități s-a închis" "Trage în lateral o aplicație ca să folosești 2 aplicații deodată" "Glisează lent în sus pentru a afișa bara de activități" "Primește sugestii de aplicații în funcție de rutina ta" "Activează navigarea prin gesturi în Setări ca să ascunzi automat bara de activități" "Fă mai multe din Bara de activități" - "Înainte" - "Înapoi" "Închide" "Gata" "Ecran de pornire" diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml index 7336b25118..166fe7c66f 100644 --- a/quickstep/res/values-ru/strings.xml +++ b/quickstep/res/values-ru/strings.xml @@ -97,15 +97,11 @@ "Пропустить" "Повернуть экран" "Обучение по работе с панелью задач" - "Обучение по работе с панелью задач показано" - "Обучение по работе с панелью задач скрыто" "Используйте два приложения сразу, перетащив одно в сторону." "Чтобы открыть панель задач, медленно проведите снизу вверх." "Получайте рекомендации, основанные на ваших действиях." "Чтобы панель задач скрывалась автоматически, включите навигацию с помощью жестов." "Используйте все возможности панели задач" - "Далее" - "Назад" "Закрыть" "Готово" "Главный экран" diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml index db0e099664..1b850efe90 100644 --- a/quickstep/res/values-si/strings.xml +++ b/quickstep/res/values-si/strings.xml @@ -97,15 +97,11 @@ "මඟ හරින්න" "තිරය කරකවන්න" "කාර්ය තීරු අධ්‍යාපනය" - "කාර්ය තීරු අධ්‍යාපනය දිස් විය" - "කාර්ය තීරු අධ්‍යාපනය වසා ඇත" "එකවර යෙදුම් 2ක් භාවිතා කිරීමට යෙදුමක් පැත්තට අදින්න" "කාර්ය තීරුව පෙන්වීමට ඉහළට සෙමින් ස්වයිප් කරන්න" "ඔබේ දිනචරියාව මත පදනම්ව යෙදුම් යෝජනා ලබා ගන්න" "කාර්ය තීරුව ස්වයංක්‍රීයව සැඟවීමට සැකසීම් තුළ අභින සංචලනය සක්‍රීය කරන්න" "කාර්ය තීරුව සමග තවත් කරන්න" - "ඊළඟ" - "ආපසු" "වසන්න" "නිමයි" "මුල් පිටුව" diff --git a/quickstep/res/values-sk/strings.xml b/quickstep/res/values-sk/strings.xml index 28687dc9a6..b2dff2e2e6 100644 --- a/quickstep/res/values-sk/strings.xml +++ b/quickstep/res/values-sk/strings.xml @@ -97,15 +97,11 @@ "Preskočiť" "Otočiť obrazovku" "Panel vzdelávacích aplikácií" - "Zobrazila sa výuka k hlavnému panelu" - "Výuka k hlavnému panelu bola zatvorená" "Ak chcete použ. dve aplikácie naraz, presuňte aplik. nabok" "Panel aplikácií zobrazíte pomalým potiahnutím nahor" "Získavajte návrhy aplikácií na základe svojich zvykov" "Ak chcete, aby sa panel aplikácií autom. skrýval, zapnite v Nastaveniach navigáciu gestami" "Panel aplikácií vám ponúka ďalšie možnosti" - "Ďalej" - "Späť" "Zavrieť" "Hotovo" "Plocha" diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml index 9964d00b52..e0f1f92b9e 100644 --- a/quickstep/res/values-sl/strings.xml +++ b/quickstep/res/values-sl/strings.xml @@ -97,15 +97,11 @@ "Preskoči" "Sukanje zaslona" "Poučni nasveti o opravilni vrstici" - "Poučni nasveti o opravilni vrstici so prikazani." - "Poučni nasveti o opravilni vrstici so zaprti." "Povlecite aplikacijo na stran za uporabo 2 aplikacij hkrati." "Počasi povlecite navzgor za prikaz opravilne vrstice." "Prejemajte predloge aplikacij na podlagi svojih navad." "V nastavitvah vklopite krmarjenje s potezami, da se bo opravilna vrstica samodejno skrila." "Naredite več z opravilno vrstico" - "Naprej" - "Nazaj" "Zapri" "Končano" "Začetni zaslon" diff --git a/quickstep/res/values-sq/strings.xml b/quickstep/res/values-sq/strings.xml index d234667eee..c0d550be35 100644 --- a/quickstep/res/values-sq/strings.xml +++ b/quickstep/res/values-sq/strings.xml @@ -97,15 +97,11 @@ "Kapërce" "Rrotullo ekranin" "Edukimi për shiritin e detyrave" - "Edukimi i shiritit të detyrave u shfaq" - "Edukimi nga shiriti i detyrave u mbyll" "Zvarrit një aplikacion në anë për të përdorur 2 aplikacione njëherësh" "Rrëshqit lart ngadalë për të shfaqur \"Shiritin e detyrave\"" "Merr sugjerime për aplikacion bazuar në rutinën tënde" "Aktivizo navigimin me gjeste te \"Cilësimet\" për të fshehur \"Shiritin e detyrave\"" "Bëj më shumë me \"Shiritin e detyrave\"" - "Para" - "Pas" "Mbyll" "U krye" "Faqja kryesore" diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml index 44f7ecb695..17802836bc 100644 --- a/quickstep/res/values-sr/strings.xml +++ b/quickstep/res/values-sr/strings.xml @@ -97,15 +97,11 @@ "Прескочи" "Ротирајте екран" "Упутства на траци задатака" - "Едукативно окно из траке задатака се појавило" - "Едукативно окно из траке задатака је затворено" "Превуците на страну да бисте користили 2 апликације одједном" "Накратко превуците нагоре да бисте приказали траку задатака" "Добијајте предлоге апликација на основу рутине" "Укључите навигацију помоћу покрета у Подешавањима ради аутоматског скривања траке задатака" "Урадите више помоћу траке задатака" - "Даље" - "Назад" "Затвори" "Готово" "Почетна" diff --git a/quickstep/res/values-sv/strings.xml b/quickstep/res/values-sv/strings.xml index 2d7bdfd50b..5e8467514d 100644 --- a/quickstep/res/values-sv/strings.xml +++ b/quickstep/res/values-sv/strings.xml @@ -97,15 +97,11 @@ "Hoppa över" "Rotera skärmen" "Aktivitetsfältsutbildning" - "Information om aktivitetsfältet visades" - "Information om aktivitetsfältet stängdes" "Dra en app till sidan om du vill använda två appar samtidigt" "Svep långsamt uppåt för att visa aktivitetsfältet" "Få appförslag utifrån dina rutiner" "Slå på navigering med rörelser i Inställningar för att dölja aktivitetsfältet automatiskt" "Gör mer med aktivitetsfältet" - "Nästa" - "Tillbaka" "Stäng" "Klar" "Startsida" diff --git a/quickstep/res/values-sw/strings.xml b/quickstep/res/values-sw/strings.xml index bd64127f4d..bc7cfb8269 100644 --- a/quickstep/res/values-sw/strings.xml +++ b/quickstep/res/values-sw/strings.xml @@ -97,15 +97,11 @@ "Ruka" "Zungusha skrini" "Elimu ya Upauzana" - "Paneli ya elimu kwenye upau wa shughuli inaonyeshwa" - "Paneli ya elimu kwenye upau wa shughuli imefungwa" "Buruta programu pembeni ili utumie programu 2 kwa wakati mmoja" "Telezesha kidole juu taratibu ili ufungue Upauzana" "Pata mapendekezo ya programu kulingana na ratiba yako" "Washa usogezaji kwa kutumia ishara kwenye Mipangilio ili ufiche Upauzana kiotomatiki" "Kamilisha mengi kwa kutumia Upauzana huu" - "Endelea" - "Nyuma" "Funga" "Imemaliza" "Mwanzo" diff --git a/quickstep/res/values-ta/strings.xml b/quickstep/res/values-ta/strings.xml index b0e52d3827..5ccbc17767 100644 --- a/quickstep/res/values-ta/strings.xml +++ b/quickstep/res/values-ta/strings.xml @@ -97,15 +97,11 @@ "தவிர்" "திரையைச் சுழற்றும்" "செயல் பட்டியைப் பயன்படுத்தும் விதம்" - "பணிப்பட்டியை எவ்வாறு பயன்படுத்துவது என்பது பற்றிய பலகம் காட்டப்படுகிறது" - "பணிப்பட்டியை எவ்வாறு பயன்படுத்துவது என்பது பற்றிய பலகம் மூடப்பட்டது" "ஒரே நேரத்தில் 2 ஆப்ஸைப் பயன்படுத்தப் பக்கவாட்டில் இழுக்கவும்" "செயல் பட்டியைக் காட்ட மேல்நோக்கி மெதுவாக ஸ்வைப் செய்யவும்" "உங்கள் வழக்கத்திற்கேற்ப ஆப்ஸ் பரிந்துரைகளைப் பெறலாம்" "செயல் பட்டியைத் தானாக மறைக்க அமைப்புகளில் சைகை வழிசெலுத்தலை இயக்கவும்" "செயல் பட்டி மூலம் மேலும் பலவற்றைச் செய்யுங்கள்" - "அடுத்து" - "பின்செல்" "மூடுக" "முடிந்தது" "முகப்பு" diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml index 9056325f66..ad0c851ca8 100644 --- a/quickstep/res/values-te/strings.xml +++ b/quickstep/res/values-te/strings.xml @@ -97,15 +97,11 @@ "స్కిప్ చేయండి" "స్క్రీన్‌ను తిప్పండి" "టాస్క్‌బార్ ఎడ్యుకేషన్" - "టాస్క్‌బార్ శిక్షణకు సంబంధించిన ప్యానెల్ కనిపించింది" - "టాస్క్‌బార్ శిక్షణకు సంబంధించిన ప్యానెల్ మూసివేయబడింది" "ఒకేసారి 2 యాప్‌లను ఉపయోగించడానికి యాప్‌ను పక్కకు లాగండి" "టాస్క్‌బార్‌ను చూపడానికి నెమ్మదిగా పైకి స్వైప్ చేయండి" "మీ రొటీన్ ఆధారంగా యాప్ సూచనలను పొందండి" "టాస్క్‌బార్‌ను ఆటోమేటిక్‌గా దాచడానికి, సెట్టింగ్‌లలో సంజ్ఞ నావిగేషన్‌ను ఆన్ చేయండి" "టాస్క్‌బార్‌తో మరిన్ని చేయండి" - "తర్వాత" - "వెనుకకు" "మూసివేయండి" "పూర్తయింది" "మొదటి ట్యాబ్" diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml index 096e1479a7..8cba9b9117 100644 --- a/quickstep/res/values-th/strings.xml +++ b/quickstep/res/values-th/strings.xml @@ -97,15 +97,11 @@ "ข้าม" "หมุนหน้าจอ" "แถบงาน Education" - "แถบงาน Education ปรากฎขึ้น" - "ปิดแถบงาน Education แล้ว" "ลากแอปไปด้านข้างเพื่อใช้ 2 แอปพร้อมกัน" "ปัดขึ้นช้าๆ เพื่อแสดงแถบงาน" "รับคำแนะนำเกี่ยวกับแอปตามกิจวัตรของคุณ" "เปิดการนำทางด้วยท่าทางสัมผัสในการตั้งค่าเพื่อซ่อนแถบงานโดยอัตโนมัติ" "ทำสิ่งต่างๆ ได้มากขึ้นด้วยแถบงาน" - "ถัดไป" - "กลับ" "ปิด" "เสร็จ" "หน้าแรก" diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml index 60ae4456be..ae6dd45e40 100644 --- a/quickstep/res/values-tl/strings.xml +++ b/quickstep/res/values-tl/strings.xml @@ -97,15 +97,11 @@ "Laktawan" "I-rotate ang screen" "Impormasyon sa taskbar" - "Lumabas ang edukasyon sa taskbar" - "Sarado ang edukasyon sa taskbar" "Mag-drag ng app sa gilid para makagamit ng 2 app nang sabay" "Mag-swipe nang mabagal pataas para ipakita ang Taskbar" "Makakuha ng mga iminumungkahing app batay sa iyong routine" "I-on ang navigation gamit ang galaw sa Mga Setting para i-auto hide ang Taskbar" "Mas maraming magawa gamit ang Taskbar" - "Susunod" - "Bumalik" "Isara" "Tapos na" "Home" diff --git a/quickstep/res/values-tr/strings.xml b/quickstep/res/values-tr/strings.xml index b90cc70624..e5d5b6d68f 100644 --- a/quickstep/res/values-tr/strings.xml +++ b/quickstep/res/values-tr/strings.xml @@ -97,15 +97,11 @@ "Atla" "Ekranı döndür" "Görev çubuğu eğitimi" - "Görev çubuğu eğitimi görüntülendi" - "Görev çubuğu eğitimi kapatıldı" "Aynı anda iki uygulama kullanmak için birini yana sürükleyin" "Görev çubuğunu göstermek için yukarı doğru yavaşça kaydırın" "Rutininize göre uygulama önerileri alın" "Görev çubuğunu otomatik olarak gizlemek için Ayarlar\'dan hareketle gezinmeyi etkinleştirin" "Görev çubuğuyla daha fazla şey yapın" - "İleri" - "Geri" "Kapat" "Bitti" "Ana ekran" diff --git a/quickstep/res/values-uk/strings.xml b/quickstep/res/values-uk/strings.xml index d12513debd..36c5bbb6cb 100644 --- a/quickstep/res/values-uk/strings.xml +++ b/quickstep/res/values-uk/strings.xml @@ -97,15 +97,11 @@ "Пропустити" "Обернути екран" "Панель завдань Education" - "Панель завдань Education відкрито" - "Панель завдань Education закрито" "Перетягніть убік, щоб використовувати 2 додатки одночасно" "Щоб відкрити панель завдань, повільно проведіть угору" "Отримуйте рекомендації додатків залежно від їх використання" "Увімкніть навігацію жестами в налаштуваннях, щоб автоматично приховувати панель завдань" "Більше можливостей завдяки панелі завдань" - "Далі" - "Назад" "Закрити" "Готово" "Головний екран" diff --git a/quickstep/res/values-ur/strings.xml b/quickstep/res/values-ur/strings.xml index 63282d1e90..9d1efe49a9 100644 --- a/quickstep/res/values-ur/strings.xml +++ b/quickstep/res/values-ur/strings.xml @@ -97,15 +97,11 @@ "نظر انداز کریں" "اسکرین کو گھمائیں" "ٹاسک بار کی تعلیم" - "ٹاکس بار کا تعلیمی پینل ظاہر ہو گیا" - "ٹاسک بار کا تعلیمی پینل بند ہو گیا" "ایک وقت میں 2 ایپس استعمال کرنے کیلئے ایپ سائیڈ پر گھسیٹیں" "ٹاسک بار دکھانے کے لیے آہستہ سے اوپر سوائپ کریں" "اپنی روٹین پر مبنی ایپس کی تجاویز حاصل کریں" "ٹاسک بار کو خودکار طور پر چھپانے کیلئے \'ترتیبات\' میں اشاروں والی نیویگیشن آن کریں" "ٹاسک بار سے بہت کچھ کریں" - "آگے" - "پیچھے" "بند کریں" "ہو گیا" "ہوم" diff --git a/quickstep/res/values-uz/strings.xml b/quickstep/res/values-uz/strings.xml index 0433177700..cf70ebdde8 100644 --- a/quickstep/res/values-uz/strings.xml +++ b/quickstep/res/values-uz/strings.xml @@ -97,15 +97,11 @@ "Tashlab ketish" "Ekranni burish" "Vazifalar paneli qoʻllanmasi" - "Taʼlim vazifalar paneli chiqdi" - "Taʼlim vazifalar paneli yopildi" "Bitta ilovani yon tomonga sudrab, bir vaqtda 2 ta ilovadan foydalaning." "Vazifalar panelini ochish uchun tepaga asta suring" "Harakatlaringiz asosida tavsiyalar oling." "Vazifalar paneli avtomatik yopilishi uchun ishorali navigatsiyani yoqing" "Vazifalar panelidan maksimal darajada foydalaning" - "Keyingisi" - "Orqaga" "Yopish" "Tayyor" "Bosh ekran" diff --git a/quickstep/res/values-vi/strings.xml b/quickstep/res/values-vi/strings.xml index b225b28c19..ada07bd046 100644 --- a/quickstep/res/values-vi/strings.xml +++ b/quickstep/res/values-vi/strings.xml @@ -97,15 +97,11 @@ "Bỏ qua" "Xoay màn hình" "Cách sử dụng thanh tác vụ" - "Đã hiện bảng hướng dẫn trên thanh tác vụ" - "Đã đóng bảng hướng dẫn trên thanh tác vụ" "Kéo một ứng dụng sang bên để dùng 2 ứng dụng cùng lúc" "Từ từ vuốt lên để Thanh tác vụ xuất hiện" "Nhận ứng dụng đề xuất dựa trên thói quen của bạn" "Bật tính năng thao tác bằng cử chỉ trong phần Cài đặt để tự động ẩn Thanh tác vụ" "Làm nhiều việc hơn qua Thanh tác vụ" - "Tiếp theo" - "Quay lại" "Đóng" "Xong" "Màn hình chính" diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml index 0ea40f30a9..1e3c4ab0e4 100644 --- a/quickstep/res/values-zh-rCN/strings.xml +++ b/quickstep/res/values-zh-rCN/strings.xml @@ -97,15 +97,11 @@ "跳过" "旋转屏幕" "任务栏教程" - "任务栏教程已显示" - "任务栏教程已关闭" "将一个应用拖动到一侧,即可一次使用两个应用" "缓慢向上滑动即可显示任务栏" "根据您的日常安排获取应用建议" "在设置中开启手势导航后,任务栏会自动隐藏" "体验任务栏的更多功能" - "继续" - "返回" "关闭" "完成" "主屏幕" diff --git a/quickstep/res/values-zh-rHK/strings.xml b/quickstep/res/values-zh-rHK/strings.xml index 56ab40b357..432352aa3a 100644 --- a/quickstep/res/values-zh-rHK/strings.xml +++ b/quickstep/res/values-zh-rHK/strings.xml @@ -97,15 +97,11 @@ "略過" "旋轉螢幕" "工作列教學" - "顯示咗工作列教學" - "閂咗工作列教學" "將應用程式拖曳到一邊,即可同時使用 2 個應用程式" "慢慢向上滑動即可顯示工作列" "根據您的日常安排提供應用程式建議" "在「設定」中啟用手勢操作後,工作列就會自動隱藏" "工作列助您事半功倍" - "繼續" - "返回" "關閉" "完成" "住宅" diff --git a/quickstep/res/values-zh-rTW/strings.xml b/quickstep/res/values-zh-rTW/strings.xml index e958c876c7..6926ec5603 100644 --- a/quickstep/res/values-zh-rTW/strings.xml +++ b/quickstep/res/values-zh-rTW/strings.xml @@ -97,15 +97,11 @@ "略過" "旋轉螢幕" "工作列教學課程" - "工作列教學課程已顯示" - "工作列教學課程已關閉" "將應用程式拖曳到一邊即可同時使用 2 個應用程式" "緩慢向上滑動即可讓工作列顯示在畫面上" "根據你的日常安排建議應用程式" "在設定中啟用手勢操作後,工作列就會自動隱藏" "充分發揮工作列的功用" - "繼續" - "返回" "關閉" "完成" "主畫面" diff --git a/quickstep/res/values-zu/strings.xml b/quickstep/res/values-zu/strings.xml index db7919f1f6..246b1216b2 100644 --- a/quickstep/res/values-zu/strings.xml +++ b/quickstep/res/values-zu/strings.xml @@ -97,15 +97,11 @@ "Yeqa" "Zungezisa isikrini" "Imfundo ye-taskbar" - "Imfuno yebha yomsebenzi ivelile" - "Imfundo yebha yomsebenzi ivaliwe" "Hudula i-app ukusebenzisa ama-app ama-2 ngesikhathi esisodwa" "Swayiphela phezulu kancane ukuze ubonise i-Taskbar" "Thola iziphakamiso ze-app ngokusekelwe kumjikelezo wakho" "Vula ukufuna kokuthinta Kumasethingi ukuze ufihle ngokuzenzakalela ibha yomsebenzi" "Yenza okwengeziwe nge-Taskbar" - "Okulandelayo" - "Emuva" "Vala" "Kwenziwe" "Ikhaya" From 228af26d0af4b937eee92c05c24e6a0a64353a9d Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 10 Apr 2023 23:16:39 -0700 Subject: [PATCH 04/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I9d3b54881fddf361e1621fec1295cd9da584aa10 --- res/values-af/strings.xml | 3 +-- res/values-am/strings.xml | 3 +-- res/values-ar/strings.xml | 3 +-- res/values-as/strings.xml | 3 +-- res/values-az/strings.xml | 3 +-- res/values-b+sr+Latn/strings.xml | 3 +-- res/values-be/strings.xml | 3 +-- res/values-bg/strings.xml | 3 +-- res/values-bn/strings.xml | 3 +-- res/values-bs/strings.xml | 7 +++---- res/values-ca/strings.xml | 3 +-- res/values-cs/strings.xml | 3 +-- res/values-da/strings.xml | 3 +-- res/values-de/strings.xml | 3 +-- res/values-el/strings.xml | 3 +-- res/values-en-rAU/strings.xml | 3 +-- res/values-en-rCA/strings.xml | 3 +-- res/values-en-rGB/strings.xml | 3 +-- res/values-en-rIN/strings.xml | 3 +-- res/values-en-rXC/strings.xml | 3 +-- res/values-es-rUS/strings.xml | 5 ++--- res/values-es/strings.xml | 3 +-- res/values-et/strings.xml | 3 +-- res/values-eu/strings.xml | 3 +-- res/values-fa/strings.xml | 3 +-- res/values-fi/strings.xml | 3 +-- res/values-fr-rCA/strings.xml | 3 +-- res/values-fr/strings.xml | 3 +-- res/values-gl/strings.xml | 5 ++--- res/values-gu/strings.xml | 3 +-- res/values-hi/strings.xml | 5 ++--- res/values-hr/strings.xml | 3 +-- res/values-hu/strings.xml | 3 +-- res/values-hy/strings.xml | 5 ++--- res/values-in/strings.xml | 3 +-- res/values-is/strings.xml | 3 +-- res/values-it/strings.xml | 3 +-- res/values-iw/strings.xml | 3 +-- res/values-ja/strings.xml | 7 +++---- res/values-ka/strings.xml | 3 +-- res/values-kk/strings.xml | 3 +-- res/values-km/strings.xml | 3 +-- res/values-kn/strings.xml | 3 +-- res/values-ko/strings.xml | 5 ++--- res/values-ky/strings.xml | 3 +-- res/values-lo/strings.xml | 3 +-- res/values-lt/strings.xml | 3 +-- res/values-lv/strings.xml | 3 +-- res/values-mk/strings.xml | 3 +-- res/values-ml/strings.xml | 7 +++---- res/values-mn/strings.xml | 3 +-- res/values-mr/strings.xml | 3 +-- res/values-ms/strings.xml | 3 +-- res/values-my/strings.xml | 3 +-- res/values-nb/strings.xml | 3 +-- res/values-ne/strings.xml | 7 +++---- res/values-nl/strings.xml | 3 +-- res/values-or/strings.xml | 3 +-- res/values-pa/strings.xml | 3 +-- res/values-pt-rPT/strings.xml | 5 ++--- res/values-pt/strings.xml | 3 +-- res/values-ro/strings.xml | 3 +-- res/values-ru/strings.xml | 3 +-- res/values-si/strings.xml | 3 +-- res/values-sk/strings.xml | 3 +-- res/values-sl/strings.xml | 3 +-- res/values-sq/strings.xml | 3 +-- res/values-sr/strings.xml | 3 +-- res/values-sv/strings.xml | 3 +-- res/values-sw/strings.xml | 3 +-- res/values-ta/strings.xml | 3 +-- res/values-te/strings.xml | 3 +-- res/values-th/strings.xml | 3 +-- res/values-tl/strings.xml | 3 +-- res/values-tr/strings.xml | 3 +-- res/values-uk/strings.xml | 3 +-- res/values-ur/strings.xml | 3 +-- res/values-uz/strings.xml | 5 ++--- res/values-vi/strings.xml | 5 ++--- res/values-zh-rCN/strings.xml | 3 +-- res/values-zh-rHK/strings.xml | 3 +-- res/values-zh-rTW/strings.xml | 3 +-- res/values-zu/strings.xml | 3 +-- 83 files changed, 99 insertions(+), 182 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 99cbd53b72..faee52632e 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -29,8 +29,7 @@ "Tuis" "Verdeelde skerm" "Programinligting vir %1$s" - - + "Stoor apppaar" "Raak en hou om \'n legstuk te skuif." "Dubbeltik en hou om \'n legstuk te skuif of gebruik gepasmaakte handelinge." "%1$d × %2$d" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index 5b10654981..b67a98ea75 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -29,8 +29,7 @@ "መነሻ" "የተከፈለ ማያ ገጽ" "የመተግበሪያ መረጃ ለ%1$s" - - + "የመተግበሪያ ጥምረትን ያስቀምጡ" "ምግብርን ለማንቀሳቀስ ይንኩ እና ይያዙ።" "ምግብርን ለማንቀሳቀስ ወይም ብጁ እርምጃዎችን ለመጠቀም ሁለቴ መታ ያድርጉ እና ይያዙ።" "%1$d × %2$d" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 8f556468ed..a236cd7ca8 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -29,8 +29,7 @@ "الشاشة الرئيسية" "تقسيم الشاشة" "‏معلومات تطبيق %1$s" - - + "حفظ إعدادات ميزة \"استخدام تطبيقين في الوقت نفسه\"" "انقر مع الاستمرار لنقل أداة." "انقر مرتين مع تثبيت إصبعك لنقل أداة أو استخدام الإجراءات المخصّصة." "%1$d × %2$d" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 2378f23738..e7861264b8 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -29,8 +29,7 @@ "গৃহ স্ক্ৰীন" "বিভাজিত স্ক্ৰীন" "%1$sৰ বাবে এপৰ তথ্য" - - + "এপৰ পেয়াৰ ছেভ কৰক" "ৱিজেট স্থানান্তৰ কৰিবলৈ টিপি ধৰি ৰাখক।" "কোনো ৱিজেট স্থানান্তৰ কৰিবলৈ দুবাৰ টিপি ধৰি ৰাখক অথবা কাষ্টম কাৰ্য ব্যৱহাৰ কৰক।" "%1$d × %2$d" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index c24b9a596d..74c6048342 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -29,8 +29,7 @@ "Əsas səhifə" "Ekran bölünməsi" "%1$s ilə bağlı tətbiq məlumatı" - - + "Tətbiq cütünü saxlayın" "Vidceti daşımaq üçün toxunub saxlayın." "Vidceti daşımaq üçün iki dəfə toxunub saxlayın və ya fərdi əməliyyatlardan istifadə edin." "%1$d × %2$d" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 197b3b0e80..a8353c431d 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -29,8 +29,7 @@ "Početni ekran" "Podeljeni ekran" "Informacije o aplikaciji za: %1$s" - - + "Sačuvaj par aplikacija" "Dodirnite i zadržite radi pomeranja vidžeta." "Dvaput dodirnite i zadržite da biste pomerali vidžet ili koristite prilagođene radnje." "%1$d×%2$d" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index cff40b60fc..d74dbd82c2 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -29,8 +29,7 @@ "Галоўны экран" "Падзелены экран" "Інфармацыя пра праграму для: %1$s" - - + "Захаваць спалучэнне праграм" "Націсніце і ўтрымлівайце віджэт для перамяшчэння." "Дакраніцеся двойчы і ўтрымлівайце, каб перамясціць віджэт або выкарыстоўваць спецыяльныя дзеянні." "%1$d × %2$d" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 4d94341950..7d8096b763 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -29,8 +29,7 @@ "Начален екран" "Разделен екран" "Информация за приложението за %1$s" - - + "Запазване на двойката приложения" "Докоснете и задръжте за преместване на приспособление" "Докоснете двукратно и задръжте за преместване на приспособление или използвайте персонал. действия." "%1$d × %2$d" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index d277a3ac49..bd76e6c730 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -29,8 +29,7 @@ "হোম" "স্প্লিট স্ক্রিন" "%1$s-এর জন্য অ্যাপ সম্পর্কিত তথ্য" - - + "অ্যাপ পেয়ার সেভ করুন" "কোনও উইজেট সরাতে সেটি টাচ করে ধরে রাখুন।" "একটি উইজেট সরাতে বা কাস্টম অ্যাকশন ব্যবহার করতে ডবল ট্যাপ করে ধরে রাখুন।" "%1$d × %2$d" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 45fb7f1ab8..1dc1863493 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -29,8 +29,7 @@ "Početni ekran" "Podijeljeni ekran" "Informacije o aplikaciji %1$s" - - + "Sačuvaj par aplikacija" "Dodirnite i zadržite da pomjerite vidžet." "Dvaput dodirnite i zadržite da pomjerite vidžet ili da koristite prilagođene radnje." "%1$d × %2$d" @@ -157,8 +156,8 @@ "Odbaci" "Zatvaranje" "Obavještenje je odbačeno" - "Lične" - "Poslovne" + "Lično" + "Poslovno" "Radni profil" "Poslovne aplikacije su označene i vaš IT administrator ih može vidjeti" "Razumijem" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index be80552b3d..fc462fdafa 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -29,8 +29,7 @@ "Inici" "Pantalla dividida" "Informació de l\'aplicació %1$s" - - + "Desa la parella d\'aplicacions" "Fes doble toc i mantén premut per moure un widget." "Fes doble toc i mantén premut per moure un widget o per utilitzar accions personalitzades." "%1$d × %2$d" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 3402b75392..1d05d8826b 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -29,8 +29,7 @@ "Domů" "Rozdělená obrazovka" "Informace o aplikaci %1$s" - - + "Uložit pár aplikací" "Widget přesunete klepnutím a podržením." "Dvojitým klepnutím a podržením přesunete widget, případně použijte vlastní akce." "%1$d × %2$d" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index b8aa02f175..36e3e7d043 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -29,8 +29,7 @@ "Startskærm" "Opdel skærm" "Appinfo for %1$s" - - + "Gem appsammenknytning" "Hold en widget nede for at flytte den." "Tryk to gange, og hold en widget nede for at flytte den eller bruge tilpassede handlinger." "%1$d × %2$d" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 199bf54410..46367e657d 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -29,8 +29,7 @@ "Startbildschirm" "Geteilter Bildschirm" "App-Info für %1$s" - - + "App-Paar speichern" "Zum Verschieben des Widgets berühren und halten" "Doppeltippen und halten, um ein Widget zu bewegen oder benutzerdefinierte Aktionen zu nutzen." "%1$d × %2$d" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 31fa51ed8f..d52a8b18dc 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -29,8 +29,7 @@ "Αρχική οθόνη" "Διαχωρισμός οθόνης" "Πληροφορίες εφαρμογής για %1$s" - - + "Αποθήκευση ζεύγους εφαρμογών" "Πατήστε παρατετ. για μετακίνηση γραφ. στοιχείου." "Πατήστε δύο φορές παρατεταμένα για μετακίνηση γραφικού στοιχείου ή χρήση προσαρμοσμένων ενεργειών." "%1$d × %2$d" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index c7b55d7a2e..a3b25c844e 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch and hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 7a4e094481..72aa73ec17 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch & hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index c7b55d7a2e..a3b25c844e 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch and hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index c7b55d7a2e..a3b25c844e 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "App info for %1$s" - - + "Save app pair" "Touch and hold to move a widget." "Double-tap & hold to move a widget or use custom actions." "%1$d × %2$d" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 5324bdfa38..23fd7b4c14 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -29,8 +29,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‎‎‎‏‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎Home‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‏‎‏‎‎‏‎‏‏‎‎‏‏‏‏‏‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‎‏‏‏‏‏‏‎Split screen‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‏‏‎‏‏‎‎‏‏‏‎‏‎‏‎‏‎‎‎‎‏‎‎‎‏‎‏‎‎‎App info for %1$s‎‏‎‎‏‎" - - + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‎‎‎‎‎‎‎‎‏‎‎‏‎‎‎‎‎‏‎‏‏‏‏‎‎‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‏‏‎‎‎‎‏‎‎‎‏‏‎Save app pair‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‏‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎‎‏‏‎‎‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‎‎‎‏‎‏‎‎‏‎Touch & hold to move a widget.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‎‏‎‎‎‎‎‎‎‎‎‏‏‎‎Double-tap & hold to move a widget or use custom actions.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‎‏‎‎‎‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‏‏‎%1$d × %2$d‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 1ff063d7ea..7d0cd22f70 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -29,8 +29,7 @@ "Pantalla principal" "Pantalla dividida" "Información de la app de %1$s" - - + "Guardar vinculación de apps" "Mantén presionado para mover un widget." "Presiona dos veces y mantén presionado para mover un widget o usar acciones personalizadas." "%1$d × %2$d" @@ -165,7 +164,7 @@ "Las apps de trabajo están detenidas" "No recibirás notificaciones de las apps de trabajo" "Las apps de trabajo no pueden enviarte notificaciones, usar la batería ni acceder a tu ubicación" - "No recibirás llamadas telefónicas, mensajes de texto ni notificaciones de tus apps de trabajo" + "No recibirás llamadas telefónicas, mensajes de texto ni notificaciones de tus apps de trabajo." "Las apps de trabajo tienen una insignia y el administrador de TI las puede ver" "Entendido" "Detener apps de trabajo" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 777f4c97b5..5c0c8f34d1 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -29,8 +29,7 @@ "Inicio" "Pantalla dividida" "Información de la aplicación %1$s" - - + "Guardar aplicaciones emparejadas" "Mantén pulsado un widget para moverlo" "Toca dos veces y mantén pulsado un widget para moverlo o usar acciones personalizadas." "%1$d × %2$d" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 91d9352572..c7a273d3ae 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -29,8 +29,7 @@ "Avakuva" "Jagatud ekraanikuva" "Rakenduse teave: %1$s" - - + "Salvesta rakendusepaar" "Vidina teisaldamiseks puudutage ja hoidke all." "Vidina teisaldamiseks või kohandatud toimingute kasutamiseks topeltpuudutage ja hoidke all." "%1$d × %2$d" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 66b86791e3..28a323e148 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -29,8 +29,7 @@ "Hasierako pantaila" "Zatitu pantaila" "%1$s aplikazioari buruzko informazioa" - - + "Gorde aplikazio parea" "Eduki sakatuta widget bat mugitzeko." "Sakatu birritan eta eduki sakatuta widget bat mugitzeko edo ekintza pertsonalizatuak erabiltzeko." "%1$d × %2$d" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 42d44ee5c3..bc9f9a669d 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -29,8 +29,7 @@ "صفحه اصلی" "صفحهٔ دونیمه" "‏اطلاعات برنامه %1$s" - - + "ذخیره جفت برنامه" "برای جابه‌جا کردن ابزارک، لمس کنید و نگه دارید." "برای جابه‌جا کردن ابزارک یا استفاده از کنش‌های سفارشی، دوضربه بزنید و نگه دارید." "%1$d × %2$d" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index a6ecd8b9a2..1097417304 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -29,8 +29,7 @@ "Etusivu" "Jaettu näyttö" "Sovellustiedot: %1$s" - - + "Tallenna sovelluspari" "Kosketa pitkään, niin voit siirtää widgetiä." "Kaksoisnapauta ja paina pitkään, niin voit siirtää widgetiä tai käyttää muokattuja toimintoja." "%1$d × %2$d" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index ad60e267fd..a49f0e32da 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -29,8 +29,7 @@ "Accueil" "Écran partagé" "Renseignements sur l\'appli pour %1$s" - - + "Enregistrer la paire d\'applications" "Maintenez le doigt sur un widget pour le déplacer." "Touchez 2x un widget et maintenez le doigt dessus pour le déplacer ou utiliser des actions personnalisées." "%1$d × %2$d" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 983d5a9003..7b48cde2d0 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -29,8 +29,7 @@ "Accueil" "Écran partagé" "Infos sur l\'appli pour %1$s" - - + "Enregistrer la paire d\'applis" "Appuyez de manière prolongée sur un widget pour le déplacer." "Appuyez deux fois et maintenez la pression pour déplacer widget ou utiliser actions personnalisées." "%1$d x %2$d" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index c11c514c39..7d675748ae 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -29,8 +29,7 @@ "Inicio" "Pantalla dividida" "Información da aplicación para %1$s" - - + "Gardar emparellamento de aplicacións" "Mantén premido un widget para movelo." "Toca dúas veces un widget e manteno premido para movelo ou utiliza accións personalizadas." "%1$d × %2$d" @@ -169,7 +168,7 @@ "O administrador de TI pode ver as aplicacións do traballo e engadirlles indicadores" "Entendido" "Pór en pausa aplicacións do traballo" - "Retomar" + "Volver activar" "Filtra" "Buscar no teléfono" "Facer buscas na tableta" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 4b48e7adde..263525fbc6 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -29,8 +29,7 @@ "હોમ સ્ક્રીન" "સ્ક્રીનને વિભાજિત કરો" "%1$s માટે ઍપ માહિતી" - - + "ઍપની જોડી સાચવો" "વિજેટ ખસેડવા ટચ કરીને થોડી વાર દબાવી રાખો." "વિજેટ ખસેડવા બે વાર ટૅપ કરીને દબાવી રાખો અથવા કસ્ટમ ક્રિયાઓનો ઉપયોગ કરો." "%1$d × %2$d" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index be64ff1021..4d292e8796 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -29,8 +29,7 @@ "होम स्क्रीन" "स्प्लिट स्क्रीन" "%1$s के लिए ऐप्लिकेशन की जानकारी" - - + "साथ में इस्तेमाल किए जा सकने वाले ऐप्लिकेशन की जानकारी सेव करें" "किसी विजेट को एक से दूसरी जगह ले जाने के लिए, उसे दबाकर रखें." "किसी विजेट को एक से दूसरी जगह ले जाने के लिए, उस पर दो बार टैप करके दबाकर रखें या पसंद के मुताबिक कार्रवाइयां इस्तेमाल करें." "%1$d × %2$d" @@ -157,7 +156,7 @@ "खारिज करें" "बंद करें" "सूचना को खारिज किया गया" - "निजी ऐप" + "निजी ऐप्लिकेशन" "वर्क ऐप्लिकेशन" "वर्क प्रोफ़ाइल" "वर्क ऐप्लिकेशन बैज किए गए हैं और आईटी एडमिन को दिख रहे हैं" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index b757619a41..6aae2108f4 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -29,8 +29,7 @@ "Početni zaslon" "Podijeljeni zaslon" "Informacije o aplikaciji %1$s" - - + "Spremi par aplikacija" "Dodirnite i zadržite da biste premjestili widget." "Dvaput dodirnite i zadržite pritisak da biste premjestili widget ili upotrijebite prilagođene radnje" "%1$d × %2$d" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index d499022fe2..55c56ff134 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -29,8 +29,7 @@ "Kezdőképernyő" "Osztott képernyő" "Alkalmazásinformáció a következőhöz: %1$s" - - + "Alkalmazáspár mentése" "Tartsa lenyomva a modult az áthelyezéshez." "Modul áthelyezéséhez koppintson duplán, tartsa nyomva az ujját, vagy használjon egyéni műveleteket." "%1$d × %2$d" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 6881661b29..13d82d629c 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -29,8 +29,7 @@ "Հիմնական էկրան" "Տրոհել էկրանը" "Տեղեկություններ %1$s հավելվածի մասին" - - + "Պահել հավելվածների զույգը" "Հպեք և պահեք՝ վիջեթ տեղափոխելու համար։" "Կրկնակի հպեք և պահեք՝ վիջեթ տեղափոխելու համար, կամ օգտվեք հատուկ գործողություններից։" "%1$d × %2$d" @@ -163,7 +162,7 @@ "Աշխատանքային հավելվածները հատուկ նշանակ ունեն և տեսանելի են ՏՏ ադմինիստրատորին" "Եղավ" "Աշխատանքային հավելվածները դադարեցված են" - "Դուք ձեր աշխատանքային հավելվածներից ծանուցումներ չեք ստանա" + "Դուք ծանուցումներ չեք ստանա ձեր աշխատանքային հավելվածներից" "Աշխատանքային հավելվածները չեն կարող ծանուցումներ ուղարկել ձեզ, օգտագործել մարտկոցը և ձեր տեղադրության մասին տվյալներ ստանալ։" "Դուք ձեր աշխատանքային հավելվածներից հեռախոսազանգեր, տեքստային հաղորդագրություններ կամ ծանուցումներ չեք ստանա" "Աշխատանքային հավելվածները հատուկ նշանակ ունեն և տեսանելի են ՏՏ ադմինիստրատորին" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index beff9eaa72..d9cba90827 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -29,8 +29,7 @@ "Layar utama" "Layar terpisah" "Info aplikasi untuk %1$s" - - + "Simpan pasangan aplikasi" "Sentuh lama untuk memindahkan widget." "Ketuk dua kali & tahan untuk memindahkan widget atau gunakan tindakan khusus." "%1$d × %2$d" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 29b11aaf74..84e0f7f965 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -29,8 +29,7 @@ "Heim" "Skipta skjá" "Upplýsingar um forrit fyrir %1$s" - - + "Vista forritapar" "Haltu fingri á græju til að færa hana." "Ýttu tvisvar og haltu fingri á græju til að færa hana eða notaðu sérsniðnar aðgerðir." "%1$d × %2$d" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 519cd5ca42..fce1f672ee 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -29,8 +29,7 @@ "Home" "Schermo diviso" "Informazioni sull\'app %1$s" - - + "Salva coppia di app" "Tocca e tieni premuto per spostare un widget." "Tocca due volte e tieni premuto per spostare un widget o per usare le azioni personalizzate." "%1$d × %2$d" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index ca3230cce5..4542589705 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -29,8 +29,7 @@ "בית" "מסך מפוצל" "‏פרטים על האפליקציה %1$s" - - + "שמירה של צמד אפליקציות" "להעברת ווידג\'ט למקום אחר לוחצים עליו לחיצה ארוכה." "כדי להעביר ווידג\'ט למקום אחר או להשתמש בפעולות מותאמות אישית, יש ללחוץ פעמיים ולא להרפות." "%1$d × %2$d" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 29485255d0..9f9df56179 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -29,8 +29,7 @@ "ホーム" "分割画面" "%1$s のアプリ情報" - - + "アプリのペア設定を保存" "長押ししてウィジェットを移動させます。" "ウィジェットをダブルタップして長押ししながら移動するか、カスタム操作を使用してください。" "%1$dx%2$d" @@ -162,10 +161,10 @@ "仕事用プロファイル" "仕事用アプリはバッジ付きで表示され、IT 管理者に公開されます" "OK" - "仕事用アプリの一時停止" + "仕事用アプリは一時停止されています" "仕事用アプリからの通知は届きません" "仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています" - "電話やテキスト メッセージを受信できなくなり、仕事用アプリからの通知も届きません" + "電話やテキスト メッセージを受信しなくなり、仕事用アプリからの通知も届きません" "仕事用アプリはバッジが付き、IT 管理者に公開されます" "OK" "仕事用アプリを一時停止" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index 9937836a2f..dd975fe906 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -29,8 +29,7 @@ "მთავარი გვერდი" "ეკრანის გაყოფა" "%1$s-ის აპის ინფო" - - + "აპთა წყვილის შენახვა" "შეხებით აირჩიეთ და გეჭიროთ ვიჯეტის გადასაადგილებლად." "ორმაგი შეხებით აირჩიეთ და გეჭიროთ ვიჯეტის გადასაადგილებლად ან მორგებული მოქმედებების გამოსაყენებლად." "%1$d × %2$d" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index a1730eb1bd..cd45fff2bb 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -29,8 +29,7 @@ "Негізгі экран" "Экранды бөлу" "%1$s қолданбасы туралы ақпарат" - - + "Қолданбаларды жұптау әрекетін сақтау" "Виджетті жылжыту үшін басып тұрыңыз." "Виджетті жылжыту үшін екі рет түртіңіз де, ұстап тұрыңыз немесе арнаулы әрекеттерді пайдаланыңыз." "%1$d × %2$d" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index b993eaa738..64bc3bb1e5 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -29,8 +29,7 @@ "អេក្រង់ដើម" "មុខងារ​បំបែកអេក្រង់" "ព័ត៌មានកម្មវិធី​សម្រាប់ %1$s" - - + "រក្សាទុកគូកម្មវិធី" "ចុចឱ្យជាប់​ដើម្បីផ្លាស់ទី​ធាតុក្រាហ្វិក​។" "ចុចពីរដង រួចសង្កត់ឱ្យជាប់ ដើម្បីផ្លាស់ទី​ធាតុក្រាហ្វិក ឬប្រើ​សកម្មភាព​តាមបំណង​។" "%1$d × %2$d" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 06af44cc90..f955277e4e 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -29,8 +29,7 @@ "ಹೋಮ್" "ಸ್ಪ್ಲಿಟ್ ಸ್ಕ್ರೀನ್" "%1$s ಗಾಗಿ ಆ್ಯಪ್ ಮಾಹಿತಿ" - - + "ಆ್ಯಪ್ ಜೋಡಿ ಉಳಿಸಿ" "ವಿಜೆಟ್ ಸರಿಸಲು ಸ್ಪರ್ಶಿಸಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ." "ವಿಜೆಟ್ ಸರಿಸಲು ಅಥವಾ ಕಸ್ಟಮ್ ಕ್ರಿಯೆಗಳನ್ನು ಬಳಸಲು ಡಬಲ್-ಟ್ಯಾಪ್ ಮಾಡಿ ಮತ್ತು ಹಿಡಿದುಕೊಳ್ಳಿ." "%1$d × %2$d" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 29933e11fb..4d621ec5dc 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -29,8 +29,7 @@ "홈" "화면 분할" "%1$s 앱 정보" - - + "앱 페어링 저장" "길게 터치하여 위젯을 이동하세요." "두 번 탭한 다음 길게 터치하여 위젯을 이동하거나 맞춤 작업을 사용하세요." "%1$d×%2$d" @@ -165,7 +164,7 @@ "직장 앱이 일시중지됨" "직장 앱에서 보내는 알림을 받지 않게 됩니다." "직장 앱에서 알림을 보내거나 배터리를 사용하거나 위치 정보에 액세스할 수 없습니다." - "전화, 문자 메시지 또는 직장 앱에서 보내는 알림을 받지 않게 됩니다." + "전화, 문자 메시지 또는 직장 앱에서 보내는 알림을 수신하지 않습니다." "직장 앱에는 배지가 있으며, IT 관리자는 직장 앱을 확인할 수 있습니다." "확인" "직장 앱 일시중지" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index ecae23a14d..0fe280205d 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -29,8 +29,7 @@ "Башкы экран" "Экранды бөлүү" "%1$s колдонмосу жөнүндө маалымат" - - + "Эки колдонмону бир маалда пайдаланууну сактоо" "Виджетти кое бербей басып туруп жылдырыңыз." "Виджетти жылдыруу үчүн эки жолу таптап, кармап туруңуз же ыңгайлаштырылган аракеттерди колдонуңуз." "%1$d × %2$d" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 7158916dd9..72eb3faea9 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -29,8 +29,7 @@ "ໂຮມສະກຣີນ" "ແບ່ງໜ້າຈໍ" "ຂໍ້ມູນແອັບສຳລັບ %1$s" - - + "ບັນທຶກຈັບຄູ່ແອັບ" "ແຕະຄ້າງໄວ້ເພື່ອຍ້າຍວິດເຈັດ." "ແຕະສອງເທື່ອຄ້າງໄວ້ເພື່ອຍ້າຍວິດເຈັດ ຫຼື ໃຊ້ຄຳສັ່ງກຳນົດເອງ." "%1$d × %2$d" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 81164bda42..0f0237620f 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -29,8 +29,7 @@ "Pagrindinis" "Išskaidyto ekrano režimas" "Programos „%1$s“ informacija" - - + "Išsaugoti programų porą" "Dukart pal. ir palaik., kad perkeltumėte valdiklį." "Dukart palieskite ir palaikykite, kad perkeltumėte valdiklį ar naudotumėte tinkintus veiksmus." "%1$d × %2$d" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index e8e25b8fa0..150af9b66b 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -29,8 +29,7 @@ "Sākums" "Sadalīt ekrānu" "%1$s: informācija par lietotni" - - + "Saglabāt lietotņu pāri" "Lai pārvietotu logrīku, pieskarieties un turiet." "Lai pārvietotu logrīku, uz tā veiciet dubultskārienu un turiet. Varat arī veikt pielāgotas darbības." "%1$d × %2$d" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 1b95dcf86b..13ff08ad4a 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -29,8 +29,7 @@ "Почетен екран" "Поделен екран" "Податоци за апликација за %1$s" - - + "Зачувај го парот апликации" "Допрете и задржете за да преместите виџет." "Допрете двапати и задржете за да преместите виџет или користете приспособени дејства." "%1$d × %2$d" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index ab0449352b..e023df8c74 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -29,8 +29,7 @@ "ഹോം" "സ്‌ക്രീൻ വിഭജന മോഡ്" "%1$s എന്നതിന്റെ ആപ്പ് വിവരങ്ങൾ" - - + "ആപ്പ് ജോടി സംരക്ഷിക്കുക" "വിജറ്റ് നീക്കാൻ സ്‌പർശിച്ച് പിടിക്കുക." "വിജറ്റ് നീക്കാൻ ഡബിൾ ടാപ്പ് ചെയ്യൂ, ഹോൾഡ് ചെയ്യൂ അല്ലെങ്കിൽ ഇഷ്‌ടാനുസൃത പ്രവർത്തനങ്ങൾ ഉപയോഗിക്കൂ." "%1$d × %2$d" @@ -158,14 +157,14 @@ "അടയ്ക്കൂ" "അറിയിപ്പ് നിരസിച്ചു" "വ്യക്തിപരം" - "ഔദ്യോഗികം" + "Work" "ഔദ്യോഗിക പ്രൊഫൈൽ" "ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനുമാകും" "മനസ്സിലായി" "ഔദ്യോഗിക ആപ്പുകൾ തൽക്കാലം നിർത്തിയിരിക്കുന്നു" "ഔദ്യോഗിക ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് അറിയിപ്പുകളൊന്നും ലഭിക്കില്ല" "നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല" - "ഔദ്യോഗിക ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" + "Work ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" "ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനും കഴിയും" "മനസ്സിലായി" "ഔദ്യോഗിക ആപ്പുകൾ താൽക്കാലികമായി നിർത്തുക" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 511718c84f..79adc913f1 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -29,8 +29,7 @@ "Нүүр" "Дэлгэцийг хуваах" "%1$s-н аппын мэдээлэл" - - + "Апп хослуулалтыг хадгалах" "Виджетийг зөөх бол хүрээд, удаан дарна уу." "Виджетийг зөөх эсвэл захиалгат үйлдлийг ашиглахын тулд хоёр товшоод, удаан дарна уу." "%1$d × %2$d" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 893d04125c..ff9cb3813e 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -29,8 +29,7 @@ "होम" "स्प्लिट स्क्रीन" "%1$s साठी ॲपशी संबंधित माहिती" - - + "ॲपची जोडी सेव्ह करा" "विजेट हलवण्यासाठी स्पर्श करा आणि धरून ठेवा." "विजेट हलवण्यासाठी किंवा कस्टम कृती वापरण्यासाठी दोनदा टॅप करा आणि धरून ठेवा." "%1$d × %2$d" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 55befdd377..29845cdf87 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -29,8 +29,7 @@ "Rumah" "Skrin pisah" "Maklumat apl untuk %1$s" - - + "Simpan gandingan apl" "Sentuh & tahan untuk menggerakkan widget." "Ketik dua kali & tahan untuk menggerakkan widget atau menggunakan tindakan tersuai." "%1$d × %2$d" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index ccdb08e80a..6c11a61bc0 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -29,8 +29,7 @@ "ပင်မစာမျက်နှာ" "မျက်နှာပြင် ခွဲ၍ပြသခြင်း" "%1$s အတွက် အက်ပ်အချက်အလက်" - - + "အက်ပ်တွဲချိတ်ခြင်း သိမ်းရန်" "ဝိဂျက်ကို ရွှေ့ရန် တို့ပြီး ဖိထားပါ။" "ဝိဂျက်ကို ရွှေ့ရန် (သို့) စိတ်ကြိုက်လုပ်ဆောင်ချက်များကို သုံးရန် နှစ်ချက်တို့ပြီး ဖိထားပါ။" "%1$d × %2$d" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index bb05261217..1b1941cfc6 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -29,8 +29,7 @@ "Startskjerm" "Delt skjerm" "Appinformasjon for %1$s" - - + "Lagre apptilkoblingen" "Trykk og hold for å flytte en modul." "Dobbelttrykk og hold inne for å flytte en modul eller bruke tilpassede handlinger." "%1$d × %2$d" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 3547557c7b..58f2793ee0 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -29,8 +29,7 @@ "होम" "स्प्लिट स्क्रिन" "%1$s का हकमा एपसम्बन्धी जानकारी" - - + "एपको पेयर सेभ गर्नुहोस्" "कुनै विजेट सार्न डबल ट्याप गरेर छोइराख्नुहोस्।" "कुनै विजेट सार्न वा आफ्नो रोजाइका कारबाही प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।" "%1$d × %2$d" @@ -158,11 +157,11 @@ "बन्द गर्नुहोस्" "सूचना खारेज गरियो" "व्यक्तिगत" - "कार्यसम्बन्धी" + "कामसम्बन्धी" "कार्य प्रोफाइल" "कामसम्बन्धी एपहरूमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्छन्" "बुझेँ" - "कार्यसम्बन्धी एपहरू पज गरिएका छन्" + "कामसम्बन्धी एपहरू पज गरिएका छन्" "तपाईं कामसम्बन्धी एपबाट सूचनाहरू प्राप्त गर्नु हुने छैन" "तपाईंका कामसम्बन्धी एपहरूले तपाईंलाई सूचना पठाउन, तपाईंको डिभाइसको ब्याट्री प्रयोग गर्न वा तपाईंको लोकेसन हेर्न सक्दैनन्" "तपाईं कामसम्बन्धी एपबाट फोन कल, टेक्स्ट म्यासेज वा सूचनाहरू प्राप्त गर्नु हुने छैन" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index f4c1017359..97b650b853 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -29,8 +29,7 @@ "Startscherm" "Gesplitst scherm" "App-info voor %1$s" - - + "App-paar opslaan" "Tik en houd vast om een widget te verplaatsen." "Dubbeltik en houd vast om een widget te verplaatsen of aangepaste acties te gebruiken." "%1$d × %2$d" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 52560c1247..304e13f42e 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -29,8 +29,7 @@ "ହୋମ" "ସ୍କ୍ରିନ‌କୁ ସ୍ପ୍ଲିଟ୍ କରନ୍ତୁ" "%1$s ପାଇଁ ଆପ ସୂଚନା" - - + "ଆପ ପେୟାର ସେଭ କରନ୍ତୁ" "ଏକ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ସ୍ପର୍ଶ କରି ଧରି ରଖନ୍ତୁ।" "ଏକ ୱିଜେଟକୁ ମୁଭ୍ କରିବା ପାଇଁ ଦୁଇଥର-ଟାପ୍ କରି ଧରି ରଖନ୍ତୁ କିମ୍ବା କଷ୍ଟମ୍ କାର୍ଯ୍ୟଗୁଡ଼ିକୁ ବ୍ୟବହାର କରନ୍ତୁ।" "%1$d × %2$d" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 0f65479252..24a5f7f6bc 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -29,8 +29,7 @@ "ਮੁੱਖ ਪੰਨਾ" "ਸਪਲਿਟ ਸਕ੍ਰੀਨ" "%1$s ਲਈ ਐਪ ਜਾਣਕਾਰੀ" - - + "ਐਪ ਜੋੜਾਬੱਧ ਰੱਖਿਅਤ ਕਰੋ" "ਕਿਸੇ ਵਿਜੇਟ ਨੂੰ ਲਿਜਾਉਣ ਲਈ ਸਪਰਸ਼ ਕਰਕੇ ਰੱਖੋ।" "ਵਿਜੇਟ ਲਿਜਾਉਣ ਲਈ ਜਾਂ ਵਿਉਂਂਤੀਆਂ ਕਾਰਵਾਈਆਂ ਵਰਤਣ ਲਈ ਦੋ ਵਾਰ ਟੈਪ ਕਰਕੇ ਦਬਾ ਕੇ ਰੱਖੋ।" "%1$d × %2$d" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index e74feac8c4..e9445cf700 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -29,8 +29,7 @@ "Página inicial" "Ecrã dividido" "Informações da app para %1$s" - - + "Guardar par de apps" "Toque sem soltar para mover um widget." "Toque duas vezes sem soltar para mover um widget ou utilizar ações personalizadas." "%1$d × %2$d" @@ -162,7 +161,7 @@ "Perfil de trabalho" "As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI" "OK" - "As apps de trabalho estão suspensas." + "As apps de trabalho estão suspensas" "Não vai receber notificações das apps de trabalho" "As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização" "Não vai receber chamadas, mensagens de texto nem notificações das apps de trabalho" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 4373c064a3..72dd608fad 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -29,8 +29,7 @@ "Início" "Tela dividida" "Informações do app %1$s" - - + "Salvar par de apps" "Toque e pressione para mover um widget." "Toque duas vezes e mantenha a tela pressionada para mover um widget ou usar ações personalizadas." "%1$d × %2$d" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 295809d8ac..dbfbf766b0 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -29,8 +29,7 @@ "Pagina de pornire" "Ecran împărțit" "Informații despre aplicație pentru %1$s" - - + "Salvează perechea de aplicații" "Atinge și ține apăsat pentru a muta un widget." "Atinge de două ori și ține apăsat pentru a muta un widget sau folosește acțiuni personalizate." "%1$d × %2$d" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index d2dd2d653d..134004da14 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -29,8 +29,7 @@ "Главный экран" "Разделить экран" "Сведения о приложении \"%1$s\"" - - + "Сохранить настройки одновременного использования двух приложений" "Чтобы переместить виджет, нажмите на него и удерживайте" "Чтобы использовать специальные действия или перенести виджет, нажмите на него дважды и удерживайте." "%1$d x %2$d" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index bde8ca86a4..01d6ba0026 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -29,8 +29,7 @@ "මුල් පිටුව" "බෙදුම් තිරය" "%1$s සඳහා යෙදුම් තතු" - - + "යෙදුම් යුගල සුරකින්න" "විජට් එකක් ගෙන යාමට ස්පර්ශ කර අල්ලා ගෙන සිටින්න." "විජට් එකක් ගෙන යාමට හෝ අභිරුචි ක්‍රියා භාවිත කිරීමට දෙවරක් තට්ටු කර අල්ලා ගෙන සිටින්න." "%1$d × %2$d" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 3bcc7a2b0f..2c257b7709 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -29,8 +29,7 @@ "Domov" "Rozdeliť obrazovku" "Informácie o aplikácii pre %1$s" - - + "Uložiť pár aplikácií" "Pridržaním presuňte miniaplikáciu." "Dvojitým klepnutím a pridržaním presuňte miniaplikáciu alebo použite vlastné akcie." "%1$d × %2$d" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index b5d3eb1226..2fd10ecd47 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -29,8 +29,7 @@ "Začetni zaslon" "Razdeljen zaslon" "Podatki o aplikaciji za: %1$s" - - + "Shrani par aplikacij" "Pridržite pripomoček, da ga premaknete." "Dvakrat se dotaknite pripomočka in ga pridržite, da ga premaknete, ali pa uporabite dejanja po meri." "%1$d × %2$d" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 02169c8986..994fa9891a 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -29,8 +29,7 @@ "Ekrani bazë" "Ekrani i ndarë" "Informacioni i aplikacionit për %1$s" - - + "Ruaj çiftin e aplikacioneve" "Prek dhe mbaj shtypur një miniaplikacion për ta zhvendosur." "Trokit dy herë dhe mbaje shtypur një miniapliikacion për ta zhvendosur atë ose për të përdorur veprimet e personalizuara." "%1$d × %2$d" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index f924fe7938..544ef0c04f 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -29,8 +29,7 @@ "Почетни екран" "Подељени екран" "Информације о апликацији за: %1$s" - - + "Сачувај пар апликација" "Додирните и задржите ради померања виџета." "Двапут додирните и задржите да бисте померали виџет или користите прилагођене радње." "%1$d×%2$d" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index c5b4ae25c7..9d7f650e3e 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -29,8 +29,7 @@ "Startskärm" "Delad skärm" "Appinformation för %1$s" - - + "Spara appar som ska användas tillsammans" "Tryck länge för att flytta en widget." "Tryck snabbt två gånger och håll kvar för att flytta en widget eller använda anpassade åtgärder." "%1$d × %2$d" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index f4621a1f4f..2fbf7aa5f0 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -29,8 +29,7 @@ "Skrini ya kwanza" "Gawa skrini" "Maelezo ya programu ya %1$s" - - + "Hifadhi jozi ya programu" "Gusa na ushikilie ili usogeze wijeti." "Gusa mara mbili na ushikilie ili usogeze wijeti au utumie vitendo maalum." "%1$d × %2$d" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 56b9a8cdda..bbf22a4ddc 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -29,8 +29,7 @@ "முகப்பு" "திரைப் பிரிப்பு" "%1$sக்கான ஆப்ஸ் தகவல்கள்" - - + "ஆப்ஸ் ஜோடியைச் சேமி" "விட்ஜெட்டை நகர்த்தத் தொட்டுப் பிடிக்கவும்." "விட்ஜெட்டை நகர்த்த இருமுறை தட்டிப் பிடிக்கவும் அல்லது பிரத்தியேகச் செயல்களைப் பயன்படுத்தவும்." "%1$d × %2$d" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 16b5f5a2b4..88fca12453 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -29,8 +29,7 @@ "మొదటి ట్యాబ్" "స్క్రీన్‌ను విభజించు" "%1$s కోసం యాప్ సమాచారం" - - + "యాప్ పెయిర్‌ను సేవ్ చేయండి" "విడ్జెట్‌ను తరలించడానికి తాకి & నొక్కి ఉంచండి." "విడ్జెట్‌ను తరలించడానికి లేదా అనుకూల చర్యలను ఉపయోగించడానికి రెండుసార్లు నొక్కండి & హోల్డ్ చేయి." "%1$d × %2$d" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 45c3914267..6bcc09e9f3 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -29,8 +29,7 @@ "หน้าแรก" "แบ่งหน้าจอ" "ข้อมูลแอปสำหรับ %1$s" - - + "บันทึกคู่แอป" "แตะค้างไว้เพื่อย้ายวิดเจ็ต" "แตะสองครั้งค้างไว้เพื่อย้ายวิดเจ็ตหรือใช้การดำเนินการที่กำหนดเอง" "%1$d × %2$d" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 2d43182d9b..490ce0684a 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -29,8 +29,7 @@ "Home" "Split screen" "Impormasyon ng app para sa %1$s" - - + "I-save ang pares ng app" "Pindutin nang matagal para ilipat ang widget." "I-double tap at pindutin nang matagal para ilipat ang widget o gumamit ng mga custom na pagkilos." "%1$d × %2$d" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index b886cf2a5d..4b2f6dac1b 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -29,8 +29,7 @@ "Ana ekran" "Bölünmüş ekran" "%1$s uygulama bilgileri" - - + "Uygulama çiftini kaydedin" "Widget\'ı taşımak için dokunup basılı tutun." "Widget\'ı taşımak veya özel işlemleri kullanmak için iki kez dokunup basılı tutun." "%1$d × %2$d" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 5758c75892..c8d29f4666 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -29,8 +29,7 @@ "Головний екран" "Розділити екран" "Інформація про додаток для %1$s" - - + "Зберегти пару додатків" "Натисніть і втримуйте, щоб перемістити віджет." "Двічі натисніть і втримуйте віджет, щоб перемістити його або виконати інші дії." "%1$d × %2$d" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 5a5dcc5870..7016491db1 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -29,8 +29,7 @@ "ہوم" "اسپلٹ اسکرین" "‏%1$s کے لیے ایپ کی معلومات" - - + "ایپس کے جوڑے کو محفوظ کریں" "ویجیٹ منتقل کرنے کے لیے ٹچ کریں اور پکڑ کر رکھیں۔" "ویجیٹ کو منتقل کرنے یا حسب ضرورت کارروائیاں استعمال کرنے کے لیے دوبار تھپتھپائیں اور پکڑ کر رکھیں۔" "%1$d × %2$d" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index 5595179fe3..efee72365f 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -29,8 +29,7 @@ "Bosh ekran" "Ekranni ikkiga ajratish" "%1$s ilovasi axboroti" - - + "Ilova juftini saqlash" "Vidjetni bosib turgan holatda suring." "Ikki marta bosib va bosib turgan holatda vidjetni tanlang yoki maxsus amaldan foydalaning." "%1$d × %2$d" @@ -169,7 +168,7 @@ "Ishga oid ilovalarning maxsus belgisi bor hamda ular administratoringizga koʻrinadi" "OK" "Ishga oid ilovalarni pauza qilish" - "Davom ettirish" + "Pauzadan chiqarish" "Saralash" "Telefondan qidirish" "Planshetingizni qidiring" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 32ea78e55e..14b88226f7 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -29,8 +29,7 @@ "Màn hình chính" "Chia đôi màn hình" "Thông tin ứng dụng cho %1$s" - - + "Lưu cặp ứng dụng" "Chạm và giữ để di chuyển một tiện ích." "Nhấn đúp và giữ để di chuyển một tiện ích hoặc sử dụng các thao tác tùy chỉnh." "%1$d × %2$d" @@ -169,7 +168,7 @@ "Các ứng dụng công việc được gắn huy hiệu và quản trị viên CNTT có thể nhìn thấy" "Tôi hiểu" "Tạm dừng các ứng dụng công việc" - "Tiếp tục" + "Bỏ tạm dừng" "Bộ lọc" "Tìm trên điện thoại" "Tìm kiếm trong máy tính bảng của bạn" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index 2c06691892..b30b6ee68c 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -29,8 +29,7 @@ "主屏幕" "分屏" "%1$s 的应用信息" - - + "保存应用对" "轻触并按住即可移动微件。" "点按两次并按住微件即可移动该微件或使用自定义操作。" "%1$d × %2$d" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index d7954de28e..4313e96cb3 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -29,8 +29,7 @@ "主畫面" "分割螢幕" "%1$s 的應用程式資料" - - + "儲存應用程式配對" "輕觸並按住即可移動小工具。" "㩒兩下之後㩒住,就可以郁小工具或者用自訂操作。" "%1$d × %2$d" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 30d7860956..330d65f159 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -29,8 +29,7 @@ "主畫面" "分割畫面" "「%1$s」的應用程式資訊" - - + "儲存應用程式配對" "按住即可移動小工具。" "輕觸兩下並按住即可移動小工具或使用自訂操作。" "%1$d × %2$d" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index ba195b2bd7..39204f4ce1 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -29,8 +29,7 @@ "Ikhaya" "Hlukanisa isikrini" "Ulwazi lwe-App ye-%1$s" - - + "Londoloza i-app ebhangqiwe" "Thinta uphinde ubambe ukuze uhambise iwijethi." "Thepha kabili uphinde ubambe ukuze uhambise iwijethi noma usebenzise izindlela ezingokwezifiso." "%1$d × %2$d" From 673da4dc3fd063070713809a921ace73adf153ef Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 10 Apr 2023 23:17:11 -0700 Subject: [PATCH 05/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ia4a6ad0782cf4ce51f94b740f3fb7247ac692898 --- res/values-bs/strings.xml | 4 ++-- res/values-hi/strings.xml | 2 +- res/values-ja/strings.xml | 2 +- res/values-ml/strings.xml | 2 +- res/values-pt-rPT/strings.xml | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 46bac11fe6..8366d90fbe 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -155,8 +155,8 @@ "Odbaci" "Zatvaranje" "Obavještenje je odbačeno" - "Lične" - "Poslovne" + "Lično" + "Poslovno" "Radni profil" "Poslovne aplikacije su označene i vaš IT administrator ih može vidjeti" "Razumijem" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index b4d358b139..ced9fef53a 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -155,7 +155,7 @@ "खारिज करें" "बंद करें" "सूचना को खारिज किया गया" - "निजी ऐप" + "निजी ऐप्लिकेशन" "वर्क ऐप्लिकेशन" "वर्क प्रोफ़ाइल" "वर्क ऐप्लिकेशन बैज किए गए हैं और आईटी एडमिन को दिख रहे हैं" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 8db2b66306..4710037680 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -160,7 +160,7 @@ "仕事用プロファイル" "仕事用アプリはバッジ付きで表示され、IT 管理者に公開されます" "OK" - "仕事用アプリの一時停止" + "仕事用アプリは一時停止されています" "仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています" "仕事用アプリは OFF になっています。仕事用アプリでは、通知の送信、バッテリーの使用、位置情報の取得が無効になっています" "仕事用アプリはバッジが付き、IT 管理者に公開されます" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index c7ededf15e..e8e3546ee5 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -156,7 +156,7 @@ "അടയ്ക്കൂ" "അറിയിപ്പ് നിരസിച്ചു" "വ്യക്തിപരം" - "ഔദ്യോഗികം" + "Work" "ഔദ്യോഗിക പ്രൊഫൈൽ" "ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനുമാകും" "മനസ്സിലായി" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index b56f857882..d9f1737926 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -160,7 +160,7 @@ "Perfil de trabalho" "As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI" "OK" - "As apps de trabalho estão suspensas." + "As apps de trabalho estão suspensas" "As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização" "As apps de trabalho estão desativadas. As apps de trabalho não podem enviar-lhe notificações, utilizar a bateria ou aceder à sua localização" "As apps de trabalho têm um emblema e estão visíveis para o seu administrador de TI" From 44935cf67813bcf5bfd5bdc07ca1ac2a2a367fb6 Mon Sep 17 00:00:00 2001 From: Brian Isganitis Date: Wed, 12 Apr 2023 13:59:03 -0400 Subject: [PATCH 06/81] Update notification dots in Taskbar All Apps. AllAppsStore already has the business logic for this, we just were not piping along to it. Test: Dismiss notification from tray while All Apps is open, and dot should go away in All Apps. Fix: 277925243 Change-Id: I29c5723fd77d22f683f5518bd6e2e3206ddee999 --- .../launcher3/taskbar/TaskbarPopupController.java | 1 + .../taskbar/allapps/TaskbarAllAppsController.java | 10 +++++++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java index 90fcd37d2e..5abeac7654 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarPopupController.java @@ -137,6 +137,7 @@ public class TaskbarPopupController implements TaskbarControllers.LoggableTaskba if (folder != null) { folder.iterateOverItems(op); } + mControllers.taskbarAllAppsController.updateNotificationDots(updatedDots); } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java index 4a95a8f718..0c9dc5b9e3 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java @@ -24,8 +24,10 @@ import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.taskbar.TaskbarControllers; import com.android.launcher3.taskbar.overlay.TaskbarOverlayContext; +import com.android.launcher3.util.PackageUserKey; import java.util.List; +import java.util.function.Predicate; /** * Handles the all apps overlay window initialization, updates, and its data. @@ -91,6 +93,13 @@ public final class TaskbarAllAppsController { } } + /** Updates the current notification dots. */ + public void updateNotificationDots(Predicate updatedDots) { + if (mAppsView != null) { + mAppsView.getAppsStore().updateNotificationDots(updatedDots); + } + } + /** Opens the {@link TaskbarAllAppsContainerView} in a new window. */ public void show() { show(true); @@ -135,7 +144,6 @@ public final class TaskbarAllAppsController { overlayContext.getDragController().setDisallowLongClick(mDisallowLongClick); } - @VisibleForTesting public int getTaskbarAllAppsTopPadding() { // Allow null-pointer since this should only be null if the apps view is not showing. From fa8cc97e5f1229f567ee05bd531ce862b7d7ee73 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 12 Apr 2023 13:24:04 -0700 Subject: [PATCH 07/81] Revert "Fix bug where taskbar is translated during hotseat handoff." This reverts commit ecb55ef4719fd8b25231225bf15b297f7afe047c. Bug: 277942460 Test: tablet/foldable device check taskbar animation b/w states and during drag Change-Id: I48e37d58afa6e168a683e1b9c73ae15432920030 --- .../taskbar/TaskbarLauncherStateController.java | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index c9e7df45a1..58cb558a40 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -642,14 +642,8 @@ public class TaskbarLauncherStateController { long resetDuration = mControllers.taskbarStashController.isInApp() ? duration : duration / 2; - boolean shouldReset = - mControllers.taskbarTranslationController.shouldResetBackToZero(resetDuration); - boolean goingToLauncher = isAnimatingToLauncher(); - boolean isNormalState = mLauncherState == LauncherState.NORMAL; - // Taskbar should always reset when animating to launcher in normal state to ensure there - // is no jump during the handoff to the hotseat. - if ((goingToLauncher && isNormalState) - || (shouldReset && (goingToLauncher || isNormalState))) { + if (mControllers.taskbarTranslationController.shouldResetBackToZero(resetDuration) + && (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL)) { animatorSet.play(mControllers.taskbarTranslationController .createAnimToResetTranslation(resetDuration)); } From c9a4c1ceaed8660d2ecaa87d7d2e2b48c7de7390 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Wed, 12 Apr 2023 13:28:36 -0700 Subject: [PATCH 08/81] Revert "Allow user gesture to take priority over taskbar translation reset animnatiuon." This reverts commit 41b580bc63518716c4b9fa5878ae84d294cdc2b0. Bug: 277942460 Test: tablet/foldable device check taskbar animation b/w states and during drag Change-Id: Ib8b362102d08d155d3153b652db47364feb5df0a --- .../TaskbarLauncherStateController.java | 2 +- .../taskbar/TaskbarTranslationController.java | 21 +++++-------------- 2 files changed, 6 insertions(+), 17 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index 58cb558a40..9bc8cdd44b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -642,7 +642,7 @@ public class TaskbarLauncherStateController { long resetDuration = mControllers.taskbarStashController.isInApp() ? duration : duration / 2; - if (mControllers.taskbarTranslationController.shouldResetBackToZero(resetDuration) + if (!mControllers.taskbarTranslationController.willAnimateToZeroBefore(resetDuration) && (isAnimatingToLauncher() || mLauncherState == LauncherState.NORMAL)) { animatorSet.play(mControllers.taskbarTranslationController .createAnimToResetTranslation(resetDuration)); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java index 4b18bb6556..065d1117c8 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarTranslationController.java @@ -54,7 +54,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable private boolean mHasSprungOnceThisGesture; private @Nullable ValueAnimator mSpringBounce; private boolean mGestureEnded; - private boolean mGestureInProgress; private boolean mAnimationToHomeRunning; private final boolean mIsTransientTaskbar; @@ -124,7 +123,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable private void reset() { mGestureEnded = false; - mGestureInProgress = false; mHasSprungOnceThisGesture = false; } @@ -136,24 +134,18 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable } /** - * Returns {@code true} if we should reset the animation back to zero. - * - * Returns {@code false} if there is a gesture in progress, or if we are already animating - * to 0 within the specified duration. + * Returns true if we will animate to zero before the input duration. */ - public boolean shouldResetBackToZero(long duration) { - if (mGestureInProgress) { - return false; - } + public boolean willAnimateToZeroBefore(long duration) { if (mSpringBounce != null && mSpringBounce.isRunning()) { long springDuration = mSpringBounce.getDuration(); long current = mSpringBounce.getCurrentPlayTime(); - return (springDuration - current >= duration); + return (springDuration - current < duration); } if (mTranslationYForSwipe.isAnimatingToValue(0)) { - return mTranslationYForSwipe.getRemainingTime() >= duration; + return mTranslationYForSwipe.getRemainingTime() < duration; } - return true; + return false; } /** @@ -196,7 +188,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable mAnimationToHomeRunning = false; cancelSpringIfExists(); reset(); - mGestureInProgress = true; } /** * Called when there is movement to move the taskbar. @@ -220,7 +211,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable mGestureEnded = true; startSpring(); } - mGestureInProgress = false; } } @@ -232,7 +222,6 @@ public class TaskbarTranslationController implements TaskbarControllers.Loggable pw.println(prefix + "\tmHasSprungOnceThisGesture=" + mHasSprungOnceThisGesture); pw.println(prefix + "\tmAnimationToHomeRunning=" + mAnimationToHomeRunning); pw.println(prefix + "\tmGestureEnded=" + mGestureEnded); - pw.println(prefix + "\tmGestureInProgress=" + mGestureInProgress); pw.println(prefix + "\tmSpringBounce is running=" + (mSpringBounce != null && mSpringBounce.isRunning())); } From 85f1024f44b9e67399bc1403ce09fc45513e6dce Mon Sep 17 00:00:00 2001 From: Stefan Andonian Date: Tue, 11 Apr 2023 23:23:03 +0000 Subject: [PATCH 09/81] Make all debug feature flags boot aware. Bug: 276090194 Test: FeatureFlags worked on device. Change-Id: I710801d63e6f4283bf15daea2b5be5874de21cc8 --- .../uioverrides/flags/FlagTogglerPrefUi.java | 18 +++++-------- .../uioverrides/flags/FlagsFactory.java | 25 +++++++++++++------ .../launcher3/config/FeatureFlags.java | 2 -- 3 files changed, 23 insertions(+), 22 deletions(-) diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java index 9c59361431..87c836bbac 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java +++ b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagTogglerPrefUi.java @@ -16,12 +16,10 @@ package com.android.launcher3.uioverrides.flags; -import static com.android.launcher3.config.FeatureFlags.FLAGS_PREF_NAME; import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD; import static com.android.launcher3.uioverrides.flags.FlagsFactory.TEAMFOOD_FLAG; import android.content.Context; -import android.content.SharedPreferences; import android.os.Handler; import android.os.Process; import android.text.Html; @@ -52,31 +50,27 @@ public final class FlagTogglerPrefUi { private final PreferenceFragmentCompat mFragment; private final Context mContext; - private final SharedPreferences mSharedPreferences; - private final PreferenceDataStore mDataStore = new PreferenceDataStore() { @Override public void putBoolean(String key, boolean value) { - mSharedPreferences.edit().putBoolean(key, value).apply(); + FlagsFactory.getSharedPreferences().edit().putBoolean(key, value).apply(); updateMenu(); } @Override public boolean getBoolean(String key, boolean defaultValue) { - return mSharedPreferences.getBoolean(key, defaultValue); + return FlagsFactory.getSharedPreferences().getBoolean(key, defaultValue); } }; public FlagTogglerPrefUi(PreferenceFragmentCompat fragment) { mFragment = fragment; mContext = fragment.getActivity(); - mSharedPreferences = mContext.getSharedPreferences( - FLAGS_PREF_NAME, Context.MODE_PRIVATE); } public void applyTo(PreferenceGroup parent) { - Set modifiedPrefs = mSharedPreferences.getAll().keySet(); + Set modifiedPrefs = FlagsFactory.getSharedPreferences().getAll().keySet(); List flags = FlagsFactory.getDebugFlags(); flags.sort((f1, f2) -> { // Sort first by any prefs that the user has changed, then alphabetically. @@ -102,7 +96,7 @@ public final class FlagTogglerPrefUi { public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); holder.itemView.setOnLongClickListener(v -> { - mSharedPreferences.edit().remove(flag.key).apply(); + FlagsFactory.getSharedPreferences().edit().remove(flag.key).apply(); setChecked(getFlagStateFromSharedPrefs(flag)); updateSummary(this, flag); updateMenu(); @@ -133,7 +127,7 @@ public final class FlagTogglerPrefUi { private void updateSummary(SwitchPreference switchPreference, DebugFlag flag) { String summary = flag.defaultValue == TEAMFOOD ? "[TEAMFOOD] " : ""; - if (mSharedPreferences.contains(flag.key)) { + if (FlagsFactory.getSharedPreferences().contains(flag.key)) { summary += "[OVERRIDDEN] "; } if (!TextUtils.isEmpty(summary)) { @@ -156,7 +150,7 @@ public final class FlagTogglerPrefUi { public void onOptionsItemSelected(MenuItem item) { if (item.getItemId() == R.id.menu_apply_flags) { - mSharedPreferences.edit().commit(); + FlagsFactory.getSharedPreferences().edit().commit(); Log.e(TAG, "Killing launcher process " + Process.myPid() + " to apply new flag values"); System.exit(0); diff --git a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java index d066abe335..a68e753589 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java +++ b/quickstep/src/com/android/launcher3/uioverrides/flags/FlagsFactory.java @@ -21,7 +21,6 @@ import static android.app.ActivityThread.currentApplication; import static com.android.launcher3.BuildConfig.IS_DEBUG_DEVICE; import static com.android.launcher3.config.FeatureFlags.FlagState.DISABLED; import static com.android.launcher3.config.FeatureFlags.FlagState.ENABLED; -import static com.android.launcher3.config.FeatureFlags.FlagState.TEAMFOOD; import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; import android.content.Context; @@ -30,6 +29,8 @@ import android.provider.DeviceConfig; import android.provider.DeviceConfig.Properties; import android.util.Log; +import androidx.annotation.NonNull; + import com.android.launcher3.config.FeatureFlags.BooleanFlag; import com.android.launcher3.config.FeatureFlags.FlagState; import com.android.launcher3.config.FeatureFlags.IntFlag; @@ -52,10 +53,11 @@ public class FlagsFactory { private static final FlagsFactory INSTANCE = new FlagsFactory(); private static final boolean FLAG_AUTO_APPLY_ENABLED = true; - public static final String FLAGS_PREF_NAME = "featureFlags"; + private static final String FLAGS_PREF_NAME = "featureFlags"; public static final String NAMESPACE_LAUNCHER = "launcher"; private static final List sDebugFlags = new ArrayList<>(); + private static SharedPreferences sSharedPreferences; static final BooleanFlag TEAMFOOD_FLAG = getReleaseFlag( 0, "LAUNCHER_TEAMFOOD", DISABLED, "Enable this flag to opt-in all team food flags"); @@ -93,10 +95,8 @@ public class FlagsFactory { public static BooleanFlag getDebugFlag( int bugId, String key, FlagState flagState, String description) { if (IS_DEBUG_DEVICE) { - SharedPreferences prefs = currentApplication() - .getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE); boolean defaultValue = getEnabledValue(flagState); - boolean currentValue = prefs.getBoolean(key, defaultValue); + boolean currentValue = getSharedPreferences().getBoolean(key, defaultValue); DebugFlag flag = new DebugFlag(key, description, flagState, currentValue); sDebugFlags.add(flag); return flag; @@ -115,9 +115,7 @@ public class FlagsFactory { boolean defaultValueInCode = getEnabledValue(flagState); boolean defaultValue = DeviceConfig.getBoolean(NAMESPACE_LAUNCHER, key, defaultValueInCode); if (IS_DEBUG_DEVICE) { - SharedPreferences prefs = currentApplication() - .getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE); - boolean currentValue = prefs.getBoolean(key, defaultValue); + boolean currentValue = getSharedPreferences().getBoolean(key, defaultValue); DebugFlag flag = new DeviceFlag(key, description, flagState, currentValue, defaultValueInCode); sDebugFlags.add(flag); @@ -145,6 +143,17 @@ public class FlagsFactory { } } + /** Returns the SharedPreferences instance backing Debug FeatureFlags. */ + @NonNull + static SharedPreferences getSharedPreferences() { + if (sSharedPreferences == null) { + sSharedPreferences = currentApplication() + .createDeviceProtectedStorageContext() + .getSharedPreferences(FLAGS_PREF_NAME, Context.MODE_PRIVATE); + } + return sSharedPreferences; + } + /** * Dumps the current flags state to the print writer */ diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 14cd964a94..bcc9ccf4df 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -39,8 +39,6 @@ import java.util.function.ToIntFunction; */ public final class FeatureFlags { - public static final String FLAGS_PREF_NAME = "featureFlags"; - @VisibleForTesting public static Predicate sBooleanReader = f -> f.mCurrentValue; @VisibleForTesting From eb27546cc378fd970c3b4620e46a5f1152f4beba Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Wed, 12 Apr 2023 15:50:32 -0700 Subject: [PATCH 10/81] Removing remaining code around ENABLE_DATABASE_RESTORE ENABLE_DATABASE_RESTORE feature is already removed Also migrating some tests from BackupRestoreTest to RestoreDbTaskTest Bug: 270392706 Test: Presubmit Flag: N/A Change-Id: I71822bbc2232008b3d2b4b9fbed0db5d889591e4 --- .../hybridhotseat/HotseatRestoreHelper.java | 11 +- .../launcher3/AppWidgetsRestoredReceiver.java | 6 - .../android/launcher3/LauncherSettings.java | 11 - .../launcher3/model/GridBackupTable.java | 120 +--------- .../launcher3/provider/RestoreDbTask.java | 60 +---- .../android/launcher3/util/ContentWriter.java | 14 +- .../launcher3/model/BackupRestoreTest.java | 211 ------------------ .../launcher3/provider/RestoreDbTaskTest.java | 128 ++++++++++- .../launcher3/util/LauncherModelHelper.java | 53 ----- 9 files changed, 132 insertions(+), 482 deletions(-) delete mode 100644 tests/src/com/android/launcher3/model/BackupRestoreTest.java diff --git a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java index 4956fa1b86..726abff5da 100644 --- a/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java +++ b/quickstep/src/com/android/launcher3/hybridhotseat/HotseatRestoreHelper.java @@ -21,7 +21,6 @@ import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; import android.content.Context; -import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.model.GridBackupTable; @@ -42,10 +41,7 @@ public class HotseatRestoreHelper { context.getContentResolver(), LauncherSettings.Settings.METHOD_NEW_TRANSACTION) .getBinder(LauncherSettings.Settings.EXTRA_VALUE)) { - InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - GridBackupTable backupTable = new GridBackupTable(context, - transaction.getDb(), idp.numDatabaseHotseatIcons, idp.numColumns, - idp.numRows); + GridBackupTable backupTable = new GridBackupTable(context, transaction.getDb()); backupTable.createCustomBackupTable(HYBRID_HOTSEAT_BACKUP_TABLE); transaction.commit(); LauncherSettings.Settings.call(context.getContentResolver(), @@ -67,10 +63,7 @@ public class HotseatRestoreHelper { if (!tableExists(transaction.getDb(), HYBRID_HOTSEAT_BACKUP_TABLE)) { return; } - InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - GridBackupTable backupTable = new GridBackupTable(context, - transaction.getDb(), idp.numDatabaseHotseatIcons, idp.numColumns, - idp.numRows); + GridBackupTable backupTable = new GridBackupTable(context, transaction.getDb()); backupTable.restoreFromCustomBackupTable(HYBRID_HOTSEAT_BACKUP_TABLE, true); transaction.commit(); LauncherAppState.getInstance(context).getModel().forceReload(); diff --git a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java index 9d5b08eab5..e54337050d 100644 --- a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java +++ b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java @@ -107,12 +107,6 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver { cursor.close(); } } - // attempt to update widget id in backup table as well - new ContentWriter(context, ContentWriter.CommitParams.backupCommitParams( - "appWidgetId=? and profileId=?", args)) - .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i]) - .put(LauncherSettings.Favorites.RESTORED, state) - .commit(); } LauncherAppState app = LauncherAppState.getInstanceNoCreate(); diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java index 1bbb09afe4..82dbe53da8 100644 --- a/src/com/android/launcher3/LauncherSettings.java +++ b/src/com/android/launcher3/LauncherSettings.java @@ -138,11 +138,6 @@ public class LauncherSettings { public static final String TABLE_NAME = "favorites"; - /** - * Backup table created when the favorites table is modified during grid migration - */ - public static final String BACKUP_TABLE_NAME = "favorites_bakup"; - /** * Backup table created when user hotseat is moved to workspace for hybrid hotseat */ @@ -164,12 +159,6 @@ public class LauncherSettings { public static final Uri CONTENT_URI = Uri.parse("content://" + LauncherProvider.AUTHORITY + "/" + TABLE_NAME); - /** - * The content:// style URL for "favorites_bakup" table - */ - public static final Uri BACKUP_CONTENT_URI = Uri.parse("content://" - + LauncherProvider.AUTHORITY + "/" + BACKUP_TABLE_NAME); - /** * The content:// style URL for "favorites_preview" table */ diff --git a/src/com/android/launcher3/model/GridBackupTable.java b/src/com/android/launcher3/model/GridBackupTable.java index 51cbf4b770..6bd8518c95 100644 --- a/src/com/android/launcher3/model/GridBackupTable.java +++ b/src/com/android/launcher3/model/GridBackupTable.java @@ -15,18 +15,12 @@ */ package com.android.launcher3.model; -import static com.android.launcher3.LauncherSettings.Favorites.BACKUP_TABLE_NAME; import static com.android.launcher3.provider.LauncherDbUtils.dropTable; import static com.android.launcher3.provider.LauncherDbUtils.tableExists; -import android.content.ContentValues; import android.content.Context; -import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.os.Process; -import android.util.Log; - -import androidx.annotation.IntDef; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.pm.UserCache; @@ -36,50 +30,13 @@ import com.android.launcher3.pm.UserCache; * within the same data base. */ public class GridBackupTable { - private static final String TAG = "GridBackupTable"; - - private static final int ID_PROPERTY = -1; - - private static final String KEY_HOTSEAT_SIZE = Favorites.SCREEN; - private static final String KEY_GRID_X_SIZE = Favorites.SPANX; - private static final String KEY_GRID_Y_SIZE = Favorites.SPANY; - private static final String KEY_DB_VERSION = Favorites.RANK; - - public static final int OPTION_REQUIRES_SANITIZATION = 1; - - /** STATE_NOT_FOUND indicates backup doesn't exist in the db. */ - private static final int STATE_NOT_FOUND = 0; - /** - * STATE_RAW indicates the backup has not yet been sanitized. This implies it might still - * posses app info that doesn't exist in the workspace and needed to be sanitized before - * put into use. - */ - private static final int STATE_RAW = 1; - /** STATE_SANITIZED indicates the backup has already been sanitized, thus can be used as-is. */ - private static final int STATE_SANITIZED = 2; private final Context mContext; private final SQLiteDatabase mDb; - private final int mOldHotseatSize; - private final int mOldGridX; - private final int mOldGridY; - - private int mRestoredHotseatSize; - private int mRestoredGridX; - private int mRestoredGridY; - - @IntDef({STATE_NOT_FOUND, STATE_RAW, STATE_SANITIZED}) - private @interface BackupState { } - - public GridBackupTable(Context context, SQLiteDatabase db, int hotseatSize, int gridX, - int gridY) { + public GridBackupTable(Context context, SQLiteDatabase db) { mContext = context; mDb = db; - - mOldHotseatSize = hotseatSize; - mOldGridX = gridX; - mOldGridY = gridY; } /** @@ -89,7 +46,6 @@ public class GridBackupTable { long profileId = UserCache.INSTANCE.get(mContext).getSerialNumberForUser( Process.myUserHandle()); copyTable(mDb, Favorites.TABLE_NAME, tableName, profileId); - encodeDBProperties(0); } /** @@ -114,78 +70,6 @@ public class GridBackupTable { private static void copyTable(SQLiteDatabase db, String from, String to, long userSerial) { dropTable(db, to); Favorites.addTableToDb(db, userSerial, false, to); - db.execSQL("INSERT INTO " + to + " SELECT * FROM " + from + " where _id > " + ID_PROPERTY); - } - - private void encodeDBProperties(int options) { - ContentValues values = new ContentValues(); - values.put(Favorites._ID, ID_PROPERTY); - values.put(KEY_DB_VERSION, mDb.getVersion()); - values.put(KEY_GRID_X_SIZE, mOldGridX); - values.put(KEY_GRID_Y_SIZE, mOldGridY); - values.put(KEY_HOTSEAT_SIZE, mOldHotseatSize); - values.put(Favorites.OPTIONS, options); - mDb.insert(BACKUP_TABLE_NAME, null, values); - } - - /** - * Load DB properties from grid backup table. - */ - public @BackupState int loadDBProperties() { - try (Cursor c = mDb.query(BACKUP_TABLE_NAME, new String[] { - KEY_DB_VERSION, // 0 - KEY_GRID_X_SIZE, // 1 - KEY_GRID_Y_SIZE, // 2 - KEY_HOTSEAT_SIZE, // 3 - Favorites.OPTIONS}, // 4 - "_id=" + ID_PROPERTY, null, null, null, null)) { - if (!c.moveToNext()) { - Log.e(TAG, "Meta data not found in backup table"); - return STATE_NOT_FOUND; - } - if (!validateDBVersion(mDb.getVersion(), c.getInt(0))) { - return STATE_NOT_FOUND; - } - - mRestoredGridX = c.getInt(1); - mRestoredGridY = c.getInt(2); - mRestoredHotseatSize = c.getInt(3); - boolean isSanitized = (c.getInt(4) & OPTION_REQUIRES_SANITIZATION) == 0; - return isSanitized ? STATE_SANITIZED : STATE_RAW; - } - } - - /** - * Restore workspace from raw backup if available. - */ - public boolean restoreFromRawBackupIfAvailable(long oldProfileId) { - if (!tableExists(mDb, Favorites.BACKUP_TABLE_NAME) - || loadDBProperties() != STATE_RAW - || mOldHotseatSize != mRestoredHotseatSize - || mOldGridX != mRestoredGridX - || mOldGridY != mRestoredGridY) { - // skip restore if dimensions in backup table differs from current setup. - return false; - } - copyTable(mDb, Favorites.BACKUP_TABLE_NAME, Favorites.TABLE_NAME, oldProfileId); - Log.d(TAG, "Backup restored"); - return true; - } - - /** - * Performs a backup on the workspace layout. - */ - public void doBackup(long profileId, int options) { - copyTable(mDb, Favorites.TABLE_NAME, Favorites.BACKUP_TABLE_NAME, profileId); - encodeDBProperties(options); - } - - private static boolean validateDBVersion(int expected, int actual) { - if (expected != actual) { - Log.e(TAG, String.format("Launcher.db version mismatch, expecting %d but %d was found", - expected, actual)); - return false; - } - return true; + db.execSQL("INSERT INTO " + to + " SELECT * FROM " + from); } } diff --git a/src/com/android/launcher3/provider/RestoreDbTask.java b/src/com/android/launcher3/provider/RestoreDbTask.java index c4eb14f8c2..ba5249c144 100644 --- a/src/com/android/launcher3/provider/RestoreDbTask.java +++ b/src/com/android/launcher3/provider/RestoreDbTask.java @@ -39,21 +39,19 @@ import android.util.LongSparseArray; import android.util.SparseLongArray; import androidx.annotation.NonNull; +import androidx.annotation.VisibleForTesting; import com.android.launcher3.AppWidgetsRestoredReceiver; import com.android.launcher3.InvariantDeviceProfile; -import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherPrefs; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.Utilities; import com.android.launcher3.logging.FileLog; import com.android.launcher3.model.DatabaseHelper; import com.android.launcher3.model.DeviceGridState; -import com.android.launcher3.model.GridBackupTable; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.LauncherAppWidgetInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; -import com.android.launcher3.pm.UserCache; import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction; import com.android.launcher3.uioverrides.ApiWrapper; import com.android.launcher3.util.IntArray; @@ -108,7 +106,6 @@ public class RestoreDbTask { SQLiteDatabase db = helper.getWritableDatabase(); try (SQLiteTransaction t = new SQLiteTransaction(db)) { RestoreDbTask task = new RestoreDbTask(); - task.backupWorkspace(context, db); task.sanitizeDB(context, helper, db, new BackupManager(context)); task.restoreAppWidgetIdsIfExists(context); t.commit(); @@ -119,49 +116,6 @@ public class RestoreDbTask { } } - /** - * Restore the workspace if backup is available. - */ - public static boolean restoreIfPossible(@NonNull Context context, - @NonNull DatabaseHelper helper, @NonNull BackupManager backupManager) { - final SQLiteDatabase db = helper.getWritableDatabase(); - try (SQLiteTransaction t = new SQLiteTransaction(db)) { - RestoreDbTask task = new RestoreDbTask(); - task.restoreWorkspace(context, db, helper, backupManager); - t.commit(); - return true; - } catch (Exception e) { - FileLog.e(TAG, "Failed to restore db", e); - return false; - } - } - - /** - * Backup the workspace so that if things go south in restore, we can recover these entries. - */ - private void backupWorkspace(Context context, SQLiteDatabase db) throws Exception { - InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - new GridBackupTable(context, db, idp.numDatabaseHotseatIcons, idp.numColumns, idp.numRows) - .doBackup(getDefaultProfileId(db), GridBackupTable.OPTION_REQUIRES_SANITIZATION); - } - - private void restoreWorkspace(@NonNull Context context, @NonNull SQLiteDatabase db, - @NonNull DatabaseHelper helper, @NonNull BackupManager backupManager) - throws Exception { - final InvariantDeviceProfile idp = LauncherAppState.getIDP(context); - GridBackupTable backupTable = new GridBackupTable(context, db, idp.numDatabaseHotseatIcons, - idp.numColumns, idp.numRows); - if (backupTable.restoreFromRawBackupIfAvailable(getDefaultProfileId(db))) { - int itemsDeleted = sanitizeDB(context, helper, db, backupManager); - LauncherAppState.getInstance(context).getModel().forceReload(); - restoreAppWidgetIdsIfExists(context); - if (itemsDeleted == 0) { - // all the items are restored, we no longer need the backup table - dropTable(db, Favorites.BACKUP_TABLE_NAME); - } - } - } - /** * Makes the following changes in the provider DB. * 1. Removes all entries belonging to any profiles that were not restored. @@ -174,7 +128,8 @@ public class RestoreDbTask { * * @return number of items deleted. */ - private int sanitizeDB(Context context, DatabaseHelper helper, SQLiteDatabase db, + @VisibleForTesting + protected int sanitizeDB(Context context, DatabaseHelper helper, SQLiteDatabase db, BackupManager backupManager) throws Exception { // Primary user ids long myProfileId = helper.getDefaultUserSerial(); @@ -258,7 +213,7 @@ public class RestoreDbTask { } // Override shortcuts - maybeOverrideShortcuts(context, db, myProfileId); + maybeOverrideShortcuts(context, helper, db, myProfileId); return itemsDeleted; } @@ -388,8 +343,8 @@ public class RestoreDbTask { APP_WIDGET_IDS.to(IntArray.wrap(newIds).toConcatString())); } - protected static void maybeOverrideShortcuts(Context context, SQLiteDatabase db, - long currentUser) { + protected static void maybeOverrideShortcuts(Context context, DatabaseHelper helper, + SQLiteDatabase db, long currentUser) { Map activityOverrides = ApiWrapper.getActivityOverrides( context); @@ -412,8 +367,7 @@ public class RestoreDbTask { if (override != null) { ContentValues values = new ContentValues(); values.put(Favorites.PROFILE_ID, - UserCache.INSTANCE.get(context).getSerialNumberForUser( - override.getUser())); + helper.getSerialNumberForUser(override.getUser())); values.put(Favorites.INTENT, AppInfo.makeLaunchIntent(override).toUri(0)); db.update(Favorites.TABLE_NAME, values, String.format("%s=?", Favorites._ID), new String[]{String.valueOf(c.getInt(idIndex))}); diff --git a/src/com/android/launcher3/util/ContentWriter.java b/src/com/android/launcher3/util/ContentWriter.java index ee64e9865d..55c2585f4a 100644 --- a/src/com/android/launcher3/util/ContentWriter.java +++ b/src/com/android/launcher3/util/ContentWriter.java @@ -118,21 +118,9 @@ public class ContentWriter { final String[] mSelectionArgs; public CommitParams(String where, String[] selectionArgs) { - this(LauncherSettings.Favorites.CONTENT_URI, where, selectionArgs); - } - - private CommitParams(Uri uri, String where, String[] selectionArgs) { - mUri = uri; + mUri = LauncherSettings.Favorites.CONTENT_URI; mWhere = where; mSelectionArgs = selectionArgs; } - - /** - * Creates commit params for backup table. - */ - public static CommitParams backupCommitParams(String where, String[] selectionArgs) { - return new CommitParams( - LauncherSettings.Favorites.BACKUP_CONTENT_URI, where, selectionArgs); - } } } diff --git a/tests/src/com/android/launcher3/model/BackupRestoreTest.java b/tests/src/com/android/launcher3/model/BackupRestoreTest.java deleted file mode 100644 index 41914de1ab..0000000000 --- a/tests/src/com/android/launcher3/model/BackupRestoreTest.java +++ /dev/null @@ -1,211 +0,0 @@ -/* - * Copyright (C) 2020 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.launcher3.model; - -import static android.content.pm.PackageManager.INSTALL_REASON_DEVICE_RESTORE; -import static android.os.Process.myUserHandle; - -import static com.android.launcher3.LauncherSettings.Favorites.BACKUP_TABLE_NAME; -import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME; -import static com.android.launcher3.LauncherSettings.Favorites.addTableToDb; -import static com.android.launcher3.provider.LauncherDbUtils.dropTable; -import static com.android.launcher3.provider.LauncherDbUtils.tableExists; -import static com.android.launcher3.util.LauncherModelHelper.APP_ICON; -import static com.android.launcher3.util.LauncherModelHelper.NO__ICON; -import static com.android.launcher3.util.LauncherModelHelper.SHORTCUT; -import static com.android.launcher3.util.ReflectionHelpers.getField; -import static com.android.launcher3.util.ReflectionHelpers.setField; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertTrue; -import static org.mockito.ArgumentMatchers.eq; -import static org.mockito.Mockito.doReturn; -import static org.mockito.Mockito.spy; - -import android.app.backup.BackupManager; -import android.content.pm.PackageInstaller; -import android.database.Cursor; -import android.database.sqlite.SQLiteDatabase; -import android.os.UserHandle; -import android.util.ArrayMap; -import android.util.LongSparseArray; - -import androidx.test.ext.junit.runners.AndroidJUnit4; -import androidx.test.filters.SmallTest; - -import com.android.launcher3.InvariantDeviceProfile; -import com.android.launcher3.pm.UserCache; -import com.android.launcher3.provider.RestoreDbTask; -import com.android.launcher3.util.LauncherModelHelper; -import com.android.launcher3.util.SafeCloseable; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.runner.RunWith; - -/** - * Tests to verify backup and restore flow. - */ -@SmallTest -@RunWith(AndroidJUnit4.class) -public class BackupRestoreTest { - - private static final int PER_USER_RANGE = 200000; - - - private long mCurrentMyProfileId; - private long mOldMyProfileId; - - private long mCurrentWorkProfileId; - private long mOldWorkProfileId; - - private BackupManager mBackupManager; - private LauncherModelHelper mModelHelper; - private SQLiteDatabase mDb; - private InvariantDeviceProfile mIdp; - - private UserHandle mWorkUserHandle; - - private SafeCloseable mUserChangeListener; - - @Before - public void setUp() { - mModelHelper = new LauncherModelHelper(); - - mCurrentMyProfileId = mModelHelper.defaultProfileId; - mOldMyProfileId = mCurrentMyProfileId + 1; - mCurrentWorkProfileId = mOldMyProfileId + 1; - mOldWorkProfileId = mCurrentWorkProfileId + 1; - - mWorkUserHandle = UserHandle.getUserHandleForUid(PER_USER_RANGE); - mUserChangeListener = UserCache.INSTANCE.get(mModelHelper.sandboxContext) - .addUserChangeListener(() -> { }); - - setupUserManager(); - setupBackupManager(); - RestoreDbTask.setPending(mModelHelper.sandboxContext); - mDb = mModelHelper.provider.getDb(); - mIdp = InvariantDeviceProfile.INSTANCE.get(mModelHelper.sandboxContext); - - } - - @After - public void tearDown() { - mUserChangeListener.close(); - mModelHelper.destroy(); - } - - private void setupUserManager() { - UserCache cache = UserCache.INSTANCE.get(mModelHelper.sandboxContext); - synchronized (cache) { - LongSparseArray users = getField(cache, "mUsers"); - users.clear(); - users.put(mCurrentMyProfileId, myUserHandle()); - users.put(mCurrentWorkProfileId, mWorkUserHandle); - - ArrayMap userMap = getField(cache, "mUserToSerialMap"); - userMap.clear(); - userMap.put(myUserHandle(), mCurrentMyProfileId); - userMap.put(mWorkUserHandle, mCurrentWorkProfileId); - } - } - - private void setupBackupManager() { - mBackupManager = spy(new BackupManager(mModelHelper.sandboxContext)); - doReturn(myUserHandle()).when(mBackupManager) - .getUserForAncestralSerialNumber(eq(mOldMyProfileId)); - doReturn(mWorkUserHandle).when(mBackupManager) - .getUserForAncestralSerialNumber(eq(mOldWorkProfileId)); - } - - @Test - public void testOnCreateDbIfNotExists_CreatesBackup() { - assertTrue(tableExists(mDb, BACKUP_TABLE_NAME)); - } - - @Test - public void testOnRestoreSessionWithValidCondition_PerformsRestore() throws Exception { - setupBackup(); - verifyTableIsFilled(BACKUP_TABLE_NAME, false); - verifyTableIsEmpty(TABLE_NAME); - createRestoreSession(); - verifyTableIsFilled(TABLE_NAME, true); - } - - private void setupBackup() { - createTableUsingOldProfileId(); - // setup grid for main user on first screen - mModelHelper.createGrid(new int[][][]{{ - { APP_ICON, APP_ICON, SHORTCUT, SHORTCUT}, - { SHORTCUT, SHORTCUT, NO__ICON, NO__ICON}, - { NO__ICON, NO__ICON, SHORTCUT, SHORTCUT}, - { APP_ICON, SHORTCUT, SHORTCUT, APP_ICON}, - }}, 1, mOldMyProfileId); - // setup grid for work profile on second screen - mModelHelper.createGrid(new int[][][]{{ - { NO__ICON, APP_ICON, SHORTCUT, SHORTCUT}, - { SHORTCUT, SHORTCUT, NO__ICON, NO__ICON}, - { NO__ICON, NO__ICON, SHORTCUT, SHORTCUT}, - { APP_ICON, SHORTCUT, SHORTCUT, NO__ICON}, - }}, 2, mOldWorkProfileId); - // simulates the creation of backup upon restore - new GridBackupTable(mModelHelper.sandboxContext, mDb, mIdp.numDatabaseHotseatIcons, - mIdp.numColumns, mIdp.numRows).doBackup( - mOldMyProfileId, GridBackupTable.OPTION_REQUIRES_SANITIZATION); - // reset favorites table - createTableUsingOldProfileId(); - } - - private void verifyTableIsEmpty(String tableName) { - assertEquals(0, getCount(mDb, "SELECT * FROM " + tableName)); - } - - private void verifyTableIsFilled(String tableName, boolean sanitized) { - assertEquals(sanitized ? 12 : 13, getCount(mDb, - "SELECT * FROM " + tableName + " WHERE profileId = " - + (sanitized ? mCurrentMyProfileId : mOldMyProfileId))); - assertEquals(10, getCount(mDb, "SELECT * FROM " + tableName + " WHERE profileId = " - + (sanitized ? mCurrentWorkProfileId : mOldWorkProfileId))); - } - - private void createTableUsingOldProfileId() { - // simulates the creation of favorites table on old device - dropTable(mDb, TABLE_NAME); - addTableToDb(mDb, mOldMyProfileId, false); - } - - private void createRestoreSession() throws Exception { - final PackageInstaller.SessionParams params = new PackageInstaller.SessionParams( - PackageInstaller.SessionParams.MODE_FULL_INSTALL); - final PackageInstaller installer = mModelHelper.sandboxContext.getPackageManager() - .getPackageInstaller(); - final int sessionId = installer.createSession(params); - final PackageInstaller.SessionInfo info = installer.getSessionInfo(sessionId); - setField(info, "installReason", INSTALL_REASON_DEVICE_RESTORE); - // TODO: (b/148410677) we should verify the following call instead - // InstallSessionHelper.INSTANCE.get(getContext()).restoreDbIfApplicable(info); - RestoreDbTask.restoreIfPossible(mModelHelper.sandboxContext, - mModelHelper.provider.getHelper(), mBackupManager); - } - - private static int getCount(SQLiteDatabase db, String sql) { - try (Cursor c = db.rawQuery(sql, null)) { - return c.getCount(); - } - } -} diff --git a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java index aa091b630d..67de1f5fb1 100644 --- a/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java +++ b/tests/src/com/android/launcher3/provider/RestoreDbTaskTest.java @@ -15,17 +15,35 @@ */ package com.android.launcher3.provider; +import static android.os.Process.myUserHandle; + +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; + +import static com.android.launcher3.LauncherSettings.Favorites.CONTAINER_DESKTOP; +import static com.android.launcher3.LauncherSettings.Favorites.ITEM_TYPE_APPLICATION; +import static com.android.launcher3.LauncherSettings.Favorites.TABLE_NAME; + import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertEquals; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.doReturn; +import static org.mockito.Mockito.spy; +import android.app.backup.BackupManager; import android.content.ContentValues; +import android.content.Context; +import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; +import android.os.UserHandle; +import android.os.UserManager; +import android.util.LongSparseArray; -import androidx.test.InstrumentationRegistry; +import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; -import androidx.test.runner.AndroidJUnit4; +import com.android.launcher3.LauncherAppState; +import com.android.launcher3.LauncherSettings; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.model.DatabaseHelper; @@ -39,6 +57,10 @@ import org.junit.runner.RunWith; @RunWith(AndroidJUnit4.class) public class RestoreDbTaskTest { + private static final int PER_USER_RANGE = 200000; + + private final UserHandle mWorkUser = UserHandle.getUserHandleForUid(PER_USER_RANGE); + @Test public void testGetProfileId() throws Exception { SQLiteDatabase db = new MyDatabaseHelper(23).getWritableDatabase(); @@ -88,6 +110,90 @@ public class RestoreDbTaskTest { assertEquals(1, getCount(db, "select * from favorites where profileId = 33")); } + @Test + public void testSanitizeDB_bothProfiles() throws Exception { + Context context = getInstrumentation().getTargetContext(); + UserHandle myUser = myUserHandle(); + long myProfileId = context.getSystemService(UserManager.class) + .getSerialNumberForUser(myUser); + long myProfileId_old = myProfileId + 1; + long workProfileId = myProfileId + 2; + long workProfileId_old = myProfileId + 3; + + MyDatabaseHelper helper = new MyDatabaseHelper(myProfileId); + SQLiteDatabase db = helper.getWritableDatabase(); + BackupManager bm = spy(new BackupManager(context)); + doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old)); + doReturn(mWorkUser).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old)); + helper.users.put(workProfileId, mWorkUser); + + addIconsBulk(helper, 10, 1, myProfileId_old); + addIconsBulk(helper, 6, 2, workProfileId_old); + assertEquals(10, getItemCountForProfile(db, myProfileId_old)); + assertEquals(6, getItemCountForProfile(db, workProfileId_old)); + + RestoreDbTask task = new RestoreDbTask(); + task.sanitizeDB(context, helper, helper.getWritableDatabase(), bm); + + // All the data has been migrated to the new user ids + assertEquals(0, getItemCountForProfile(db, myProfileId_old)); + assertEquals(0, getItemCountForProfile(db, workProfileId_old)); + assertEquals(10, getItemCountForProfile(db, myProfileId)); + assertEquals(6, getItemCountForProfile(db, workProfileId)); + } + + @Test + public void testSanitizeDB_workItemsRemoved() throws Exception { + Context context = getInstrumentation().getTargetContext(); + UserHandle myUser = myUserHandle(); + long myProfileId = context.getSystemService(UserManager.class) + .getSerialNumberForUser(myUser); + long myProfileId_old = myProfileId + 1; + long workProfileId_old = myProfileId + 3; + + MyDatabaseHelper helper = new MyDatabaseHelper(myProfileId); + SQLiteDatabase db = helper.getWritableDatabase(); + BackupManager bm = spy(new BackupManager(context)); + doReturn(myUserHandle()).when(bm).getUserForAncestralSerialNumber(eq(myProfileId_old)); + // Work profile is not migrated + doReturn(null).when(bm).getUserForAncestralSerialNumber(eq(workProfileId_old)); + + addIconsBulk(helper, 10, 1, myProfileId_old); + addIconsBulk(helper, 6, 2, workProfileId_old); + assertEquals(10, getItemCountForProfile(db, myProfileId_old)); + assertEquals(6, getItemCountForProfile(db, workProfileId_old)); + + RestoreDbTask task = new RestoreDbTask(); + task.sanitizeDB(context, helper, helper.getWritableDatabase(), bm); + + // All the data has been migrated to the new user ids + assertEquals(0, getItemCountForProfile(db, myProfileId_old)); + assertEquals(0, getItemCountForProfile(db, workProfileId_old)); + assertEquals(10, getItemCountForProfile(db, myProfileId)); + assertEquals(10, getCount(db, "select * from favorites")); + } + + private void addIconsBulk(DatabaseHelper helper, int count, int screen, long profileId) { + int columns = LauncherAppState.getIDP(getInstrumentation().getTargetContext()).numColumns; + String packageName = getInstrumentation().getContext().getPackageName(); + for (int i = 0; i < count; i++) { + ContentValues values = new ContentValues(); + values.put(LauncherSettings.Favorites._ID, helper.generateNewItemId()); + values.put(LauncherSettings.Favorites.CONTAINER, CONTAINER_DESKTOP); + values.put(LauncherSettings.Favorites.SCREEN, screen); + values.put(LauncherSettings.Favorites.CELLX, i % columns); + values.put(LauncherSettings.Favorites.CELLY, i / columns); + values.put(LauncherSettings.Favorites.SPANX, 1); + values.put(LauncherSettings.Favorites.SPANY, 1); + values.put(LauncherSettings.Favorites.PROFILE_ID, profileId); + values.put(LauncherSettings.Favorites.ITEM_TYPE, ITEM_TYPE_APPLICATION); + values.put(LauncherSettings.Favorites.INTENT, + new Intent(Intent.ACTION_MAIN).setPackage(packageName).toUri(0)); + helper.getWritableDatabase().insert(TABLE_NAME, null, values); + } + } + + @Test public void testRemoveScreenIdGaps_firstScreenEmpty() { runRemoveScreenIdGapsTest( @@ -116,7 +222,7 @@ public class RestoreDbTaskTest { ContentValues values = new ContentValues(); values.put(Favorites._ID, i); values.put(Favorites.SCREEN, screenIds[i]); - values.put(Favorites.CONTAINER, Favorites.CONTAINER_DESKTOP); + values.put(Favorites.CONTAINER, CONTAINER_DESKTOP); db.insert(Favorites.TABLE_NAME, null, values); } // Verify items are added @@ -138,6 +244,10 @@ public class RestoreDbTaskTest { assertArrayEquals(expectedScreenIds, resultScreenIds); } + public int getItemCountForProfile(SQLiteDatabase db, long profileId) { + return getCount(db, "select * from favorites where profileId = " + profileId); + } + private int getCount(SQLiteDatabase db, String sql) { try (Cursor c = db.rawQuery(sql, null)) { return c.getCount(); @@ -146,16 +256,18 @@ public class RestoreDbTaskTest { private class MyDatabaseHelper extends DatabaseHelper { - private final long mProfileId; + public final LongSparseArray users; MyDatabaseHelper(long profileId) { - super(InstrumentationRegistry.getInstrumentation().getTargetContext(), null, false); - mProfileId = profileId; + super(getInstrumentation().getTargetContext(), null, false); + users = new LongSparseArray<>(); + users.put(profileId, myUserHandle()); } @Override - public long getDefaultUserSerial() { - return mProfileId; + public long getSerialNumberForUser(UserHandle user) { + int index = users.indexOfValue(user); + return index >= 0 ? users.keyAt(index) : -1; } @Override diff --git a/tests/src/com/android/launcher3/util/LauncherModelHelper.java b/tests/src/com/android/launcher3/util/LauncherModelHelper.java index 5548364927..9e88c06a9c 100644 --- a/tests/src/com/android/launcher3/util/LauncherModelHelper.java +++ b/tests/src/com/android/launcher3/util/LauncherModelHelper.java @@ -61,7 +61,6 @@ import com.android.launcher3.LauncherSettings; import com.android.launcher3.model.AllAppsList; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.BgDataModel.Callbacks; -import com.android.launcher3.model.DatabaseHelper; import com.android.launcher3.model.ItemInstallQueue; import com.android.launcher3.model.ModelDbController; import com.android.launcher3.model.data.AppInfo; @@ -371,54 +370,6 @@ public class LauncherModelHelper { sandboxContext.getContentResolver().delete(uri, null, null); } - public int[][][] createGrid(int[][][] typeArray) { - return createGrid(typeArray, 1); - } - - public int[][][] createGrid(int[][][] typeArray, int startScreen) { - LauncherSettings.Settings.call(sandboxContext.getContentResolver(), - LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB); - LauncherSettings.Settings.call(sandboxContext.getContentResolver(), - LauncherSettings.Settings.METHOD_CLEAR_EMPTY_DB_FLAG); - return createGrid(typeArray, startScreen, defaultProfileId); - } - - /** - * Initializes the DB with mock elements to represent the provided grid structure. - * @param typeArray A 3d array of item types. {@see #addItem(int, long, long, int, int)} for - * type definitions. The first dimension represents the screens and the next - * two represent the workspace grid. - * @param startScreen First screen id from where the icons will be added. - * @return the same grid representation where each entry is the corresponding item id. - */ - public int[][][] createGrid(int[][][] typeArray, int startScreen, long profileId) { - int[][][] ids = new int[typeArray.length][][]; - for (int i = 0; i < typeArray.length; i++) { - // Add screen to DB - int screenId = startScreen + i; - - // Keep the screen id counter up to date - LauncherSettings.Settings.call(sandboxContext.getContentResolver(), - LauncherSettings.Settings.METHOD_NEW_SCREEN_ID); - - ids[i] = new int[typeArray[i].length][]; - for (int y = 0; y < typeArray[i].length; y++) { - ids[i][y] = new int[typeArray[i][y].length]; - for (int x = 0; x < typeArray[i][y].length; x++) { - if (typeArray[i][y][x] < 0) { - // Empty cell - ids[i][y][x] = -1; - } else { - ids[i][y][x] = addItem( - typeArray[i][y][x], screenId, DESKTOP, x, y, profileId); - } - } - } - } - - return ids; - } - /** * Sets up a mock provider to load the provided layout by default, next time the layout loads */ @@ -479,10 +430,6 @@ public class LauncherModelHelper { public SQLiteDatabase getDb() { return mModelDbController.getDatabaseHelper().getWritableDatabase(); } - - public DatabaseHelper getHelper() { - return mModelDbController.getDatabaseHelper(); - } } public static boolean deleteContents(File dir) { From ab2f808196dd4701c742ca17d475aebc07be5366 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 11 Apr 2023 11:35:43 -0700 Subject: [PATCH 11/81] Using a runtime generated layout for tests instead of defining xml This allows support for easily setting up default layouts Bug: 277345535 Test: Presubmit Flag: N/A Change-Id: I1c089d60ac3f8add8d7e1060d343e04d30afe094 --- .../testing/DebugTestInformationHandler.java | 39 -------- .../android/quickstep/TaplTestsTaskbar.java | 16 ++- res/xml/default_tapl_test_workspace.xml | 28 ------ res/xml/default_test2_workspace.xml | 57 ----------- res/xml/default_test_workspace.xml | 29 ------ .../android/launcher3/AutoInstallsLayout.java | 49 +++++++++- .../android/launcher3/LauncherProvider.java | 8 -- .../android/launcher3/LauncherSettings.java | 13 +-- .../launcher3/model/ModelDbController.java | 97 ++++++++++--------- tests/Android.bp | 1 + .../testing/shared/TestProtocol.java | 5 - .../launcher3/ui/TaplTestsLauncher3.java | 17 +++- .../ui/workspace/TwoPanelWorkspaceTest.java | 24 ++++- .../com/android/launcher3/util/TestUtil.java | 45 +++++++++ .../tapl/LauncherInstrumentation.java | 30 ------ 15 files changed, 193 insertions(+), 265 deletions(-) delete mode 100644 res/xml/default_tapl_test_workspace.xml delete mode 100644 res/xml/default_test2_workspace.xml delete mode 100644 res/xml/default_test_workspace.xml diff --git a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java index 4f9c32ade5..3fddd9d693 100644 --- a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java +++ b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java @@ -218,29 +218,6 @@ public class DebugTestInformationHandler extends TestInformationHandler { } } - case TestProtocol.REQUEST_USE_TEST_WORKSPACE_LAYOUT: { - useTestWorkspaceLayout( - LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TEST); - return response; - } - - case TestProtocol.REQUEST_USE_TEST2_WORKSPACE_LAYOUT: { - useTestWorkspaceLayout( - LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TEST2); - return response; - } - - case TestProtocol.REQUEST_USE_TAPL_WORKSPACE_LAYOUT: { - useTestWorkspaceLayout( - LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TAPL); - return response; - } - - case TestProtocol.REQUEST_USE_DEFAULT_WORKSPACE_LAYOUT: { - useTestWorkspaceLayout(null); - return response; - } - case TestProtocol.REQUEST_HOTSEAT_ICON_NAMES: { return getLauncherUIProperty(Bundle::putStringArrayList, l -> { ShortcutAndWidgetContainer hotseatIconsContainer = @@ -278,20 +255,4 @@ public class DebugTestInformationHandler extends TestInformationHandler { return super.call(method, arg, extras); } } - - private void useTestWorkspaceLayout(String layout) { - final long identity = Binder.clearCallingIdentity(); - try { - if (layout != null) { - LauncherSettings.Settings.call(mContext.getContentResolver(), - LauncherSettings.Settings.METHOD_SET_USE_TEST_WORKSPACE_LAYOUT_FLAG, - layout); - } else { - LauncherSettings.Settings.call(mContext.getContentResolver(), - LauncherSettings.Settings.METHOD_CLEAR_USE_TEST_WORKSPACE_LAYOUT_FLAG); - } - } finally { - Binder.restoreCallingIdentity(identity); - } - } } diff --git a/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java b/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java index 735c5e6fd4..624347131b 100644 --- a/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java +++ b/quickstep/tests/src/com/android/quickstep/TaplTestsTaskbar.java @@ -29,6 +29,8 @@ import androidx.test.runner.AndroidJUnit4; import com.android.launcher3.tapl.Taskbar; import com.android.launcher3.ui.TaplTestsLauncher3; +import com.android.launcher3.util.LauncherLayoutBuilder; +import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord; import com.android.quickstep.TaskbarModeSwitchRule.TaskbarModeSwitch; @@ -49,11 +51,17 @@ public class TaplTestsTaskbar extends AbstractQuickStepTest { private static final String CALCULATOR_APP_PACKAGE = resolveSystemApp(Intent.CATEGORY_APP_CALCULATOR); + private AutoCloseable mLauncherLayout; + @Override public void setUp() throws Exception { Assume.assumeTrue(mLauncher.isTablet()); super.setUp(); - mLauncher.useTestWorkspaceLayoutOnReload(); + + LauncherLayoutBuilder layoutBuilder = new LauncherLayoutBuilder().atHotseat(0).putApp( + "com.google.android.apps.nexuslauncher.tests", + "com.android.launcher3.testcomponent.BaseTestingActivity"); + mLauncherLayout = TestUtil.setLauncherDefaultLayout(mTargetContext, layoutBuilder); TaplTestsLauncher3.initialize(this); startAppFast(CALCULATOR_APP_PACKAGE); @@ -62,9 +70,11 @@ public class TaplTestsTaskbar extends AbstractQuickStepTest { } @After - public void tearDown() { - mLauncher.useDefaultWorkspaceLayoutOnReload(); + public void tearDown() throws Exception { mLauncher.enableBlockTimeout(false); + if (mLauncherLayout != null) { + mLauncherLayout.close(); + } } @Test diff --git a/res/xml/default_tapl_test_workspace.xml b/res/xml/default_tapl_test_workspace.xml deleted file mode 100644 index 24d76f3b1a..0000000000 --- a/res/xml/default_tapl_test_workspace.xml +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - diff --git a/res/xml/default_test2_workspace.xml b/res/xml/default_test2_workspace.xml deleted file mode 100644 index c560104b9e..0000000000 --- a/res/xml/default_test2_workspace.xml +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/res/xml/default_test_workspace.xml b/res/xml/default_test_workspace.xml deleted file mode 100644 index bd718b3b14..0000000000 --- a/res/xml/default_test_workspace.xml +++ /dev/null @@ -1,29 +0,0 @@ - - - - - - - - - - - - diff --git a/src/com/android/launcher3/AutoInstallsLayout.java b/src/com/android/launcher3/AutoInstallsLayout.java index 197aa5a178..ede7e2f950 100644 --- a/src/com/android/launcher3/AutoInstallsLayout.java +++ b/src/com/android/launcher3/AutoInstallsLayout.java @@ -27,6 +27,8 @@ import android.content.pm.LauncherActivityInfo; import android.content.pm.LauncherApps; import android.content.pm.PackageManager; import android.content.res.Resources; +import android.content.res.Resources.NotFoundException; +import android.content.res.XmlResourceParser; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Bundle; @@ -38,7 +40,9 @@ import android.util.Log; import android.util.Xml; import androidx.annotation.Nullable; +import androidx.annotation.StringRes; import androidx.annotation.WorkerThread; +import androidx.annotation.XmlRes; import com.android.launcher3.LauncherProvider.SqlArguments; import com.android.launcher3.LauncherSettings.Favorites; @@ -161,7 +165,7 @@ public class AutoInstallsLayout { protected final LayoutParserCallback mCallback; protected final PackageManager mPackageManager; - protected final Resources mSourceRes; + protected final SourceResources mSourceRes; protected final Supplier mInitialLayoutSupplier; private final InvariantDeviceProfile mIdp; @@ -178,11 +182,12 @@ public class AutoInstallsLayout { public AutoInstallsLayout(Context context, LauncherWidgetHolder appWidgetHolder, LayoutParserCallback callback, Resources res, int layoutId, String rootTag) { - this(context, appWidgetHolder, callback, res, () -> res.getXml(layoutId), rootTag); + this(context, appWidgetHolder, callback, SourceResources.wrap(res), + () -> res.getXml(layoutId), rootTag); } public AutoInstallsLayout(Context context, LauncherWidgetHolder appWidgetHolder, - LayoutParserCallback callback, Resources res, + LayoutParserCallback callback, SourceResources res, Supplier initialLayoutSupplier, String rootTag) { mContext = context; mAppWidgetHolder = appWidgetHolder; @@ -703,4 +708,42 @@ public class AutoInstallsLayout { to.put(key, from.getAsInteger(key)); } + /** + * Wrapper over resources for easier abstraction + */ + public interface SourceResources { + + /** + * Refer {@link Resources#getXml(int)} + */ + default XmlResourceParser getXml(@XmlRes int id) throws NotFoundException { + throw new NotFoundException(); + } + + /** + * Refer {@link Resources#getString(int)} + */ + default String getString(@StringRes int id) throws NotFoundException { + throw new NotFoundException(); + } + + /** + * Returns a {@link SourceResources} corresponding to the provided resources + */ + static SourceResources wrap(Resources res) { + return new SourceResources() { + @Override + public XmlResourceParser getXml(int id) { + return res.getXml(id); + } + + @Override + public String getString(int id) { + return res.getString(id); + } + }; + } + } + + } diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index dee3205c92..d30d23ceda 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -244,14 +244,6 @@ public class LauncherProvider extends ContentProvider { mModelDbController.createEmptyDB(); return null; } - case LauncherSettings.Settings.METHOD_SET_USE_TEST_WORKSPACE_LAYOUT_FLAG: { - mModelDbController.setUseTestWorkspaceLayout(arg); - return null; - } - case LauncherSettings.Settings.METHOD_CLEAR_USE_TEST_WORKSPACE_LAYOUT_FLAG: { - mModelDbController.setUseTestWorkspaceLayout(null); - return null; - } case LauncherSettings.Settings.METHOD_LOAD_DEFAULT_FAVORITES: { mModelDbController.loadDefaultFavoritesIfNecessary(); return null; diff --git a/src/com/android/launcher3/LauncherSettings.java b/src/com/android/launcher3/LauncherSettings.java index 1bbb09afe4..1ca3747eec 100644 --- a/src/com/android/launcher3/LauncherSettings.java +++ b/src/com/android/launcher3/LauncherSettings.java @@ -374,15 +374,6 @@ public class LauncherSettings { public static final String METHOD_CREATE_EMPTY_DB = "create_empty_db"; - public static final String METHOD_SET_USE_TEST_WORKSPACE_LAYOUT_FLAG = - "set_use_test_workspace_layout_flag"; - public static final String ARG_DEFAULT_WORKSPACE_LAYOUT_TEST = "default_test_workspace"; - public static final String ARG_DEFAULT_WORKSPACE_LAYOUT_TEST2 = "default_test2_workspace"; - public static final String ARG_DEFAULT_WORKSPACE_LAYOUT_TAPL = "default_tapl_workspace"; - - public static final String METHOD_CLEAR_USE_TEST_WORKSPACE_LAYOUT_FLAG = - "clear_use_test_workspace_layout_flag"; - public static final String METHOD_LOAD_DEFAULT_FAVORITES = "load_default_favorites"; public static final String METHOD_REMOVE_GHOST_WIDGETS = "remove_ghost_widgets"; @@ -399,6 +390,10 @@ public class LauncherSettings { public static final String EXTRA_DB_NAME = "db_name"; + public static final String LAYOUT_DIGEST_KEY = "launcher3.layout.provider.blob"; + public static final String LAYOUT_DIGEST_LABEL = "launcher-layout"; + public static final String LAYOUT_DIGEST_TAG = "ignore"; + public static Bundle call(ContentResolver cr, String method) { return call(cr, method, null /* arg */); } diff --git a/src/com/android/launcher3/model/ModelDbController.java b/src/com/android/launcher3/model/ModelDbController.java index 7452bcd7fc..9b54ce131d 100644 --- a/src/com/android/launcher3/model/ModelDbController.java +++ b/src/com/android/launcher3/model/ModelDbController.java @@ -15,38 +15,49 @@ */ package com.android.launcher3.model; +import static android.util.Base64.NO_PADDING; +import static android.util.Base64.NO_WRAP; + import static com.android.launcher3.DefaultLayoutParser.RES_PARTNER_DEFAULT_LAYOUT; +import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_KEY; +import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_LABEL; +import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_TAG; import static com.android.launcher3.model.DatabaseHelper.EMPTY_DATABASE_CREATED; import static com.android.launcher3.provider.LauncherDbUtils.copyTable; import static com.android.launcher3.provider.LauncherDbUtils.tableExists; +import android.app.blob.BlobHandle; +import android.app.blob.BlobStoreManager; +import android.content.ContentResolver; import android.content.ContentValues; import android.content.Context; import android.content.SharedPreferences; +import android.content.pm.PackageManager; import android.content.pm.ProviderInfo; +import android.content.res.Resources; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.net.Uri; import android.os.Binder; import android.os.Bundle; +import android.os.ParcelFileDescriptor; import android.os.Process; import android.os.UserManager; import android.provider.Settings; import android.text.TextUtils; +import android.util.Base64; import android.util.Log; import android.util.Xml; -import androidx.annotation.Nullable; - import com.android.launcher3.AutoInstallsLayout; +import com.android.launcher3.AutoInstallsLayout.SourceResources; import com.android.launcher3.DefaultLayoutParser; import com.android.launcher3.InvariantDeviceProfile; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherPrefs; import com.android.launcher3.LauncherSettings; import com.android.launcher3.LauncherSettings.Favorites; -import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.provider.LauncherDbUtils; import com.android.launcher3.provider.LauncherDbUtils.SQLiteTransaction; @@ -69,14 +80,7 @@ import java.util.function.Supplier; public class ModelDbController { private static final String TAG = "LauncherProvider"; - private static final int TEST_WORKSPACE_LAYOUT_RES_XML = R.xml.default_test_workspace; - private static final int TEST2_WORKSPACE_LAYOUT_RES_XML = R.xml.default_test2_workspace; - private static final int TAPL_WORKSPACE_LAYOUT_RES_XML = R.xml.default_tapl_test_workspace; - protected DatabaseHelper mOpenHelper; - protected String mProviderAuthority; - - private int mDefaultWorkspaceLayoutOverride = 0; private final Context mContext; @@ -223,21 +227,6 @@ public class ModelDbController { mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); } - /** - * Overrides the default xml to be used for setting up workspace - */ - public void setUseTestWorkspaceLayout(@Nullable String layout) { - if (LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TEST.equals(layout)) { - mDefaultWorkspaceLayoutOverride = TEST_WORKSPACE_LAYOUT_RES_XML; - } else if (LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TEST2.equals(layout)) { - mDefaultWorkspaceLayoutOverride = TEST2_WORKSPACE_LAYOUT_RES_XML; - } else if (LauncherSettings.Settings.ARG_DEFAULT_WORKSPACE_LAYOUT_TAPL.equals(layout)) { - mDefaultWorkspaceLayoutOverride = TAPL_WORKSPACE_LAYOUT_RES_XML; - } else { - mDefaultWorkspaceLayoutOverride = 0; - } - } - /** * Removes any widget which are present in the framework, but not in out internal DB */ @@ -403,39 +392,55 @@ public class ModelDbController { */ private AutoInstallsLayout createWorkspaceLoaderFromAppRestriction( LauncherWidgetHolder widgetHolder) { - final String authority; - if (!TextUtils.isEmpty(mProviderAuthority)) { - authority = mProviderAuthority; - } else { - authority = Settings.Secure.getString(mContext.getContentResolver(), - "launcher3.layout.provider"); + ContentResolver cr = mContext.getContentResolver(); + String blobHandlerDigest = Settings.Secure.getString(cr, LAYOUT_DIGEST_KEY); + if (Utilities.ATLEAST_R && !TextUtils.isEmpty(blobHandlerDigest)) { + BlobStoreManager blobManager = mContext.getSystemService(BlobStoreManager.class); + try (InputStream in = new ParcelFileDescriptor.AutoCloseInputStream( + blobManager.openBlob(BlobHandle.createWithSha256( + Base64.decode(blobHandlerDigest, NO_WRAP | NO_PADDING), + LAYOUT_DIGEST_LABEL, 0, LAYOUT_DIGEST_TAG)))) { + return getAutoInstallsLayoutFromIS(in, widgetHolder, new SourceResources() { }); + } catch (Exception e) { + Log.e(TAG, "Error getting layout from blob handle" , e); + return null; + } } + + String authority = Settings.Secure.getString(cr, "launcher3.layout.provider"); if (TextUtils.isEmpty(authority)) { return null; } - ProviderInfo pi = mContext.getPackageManager().resolveContentProvider(authority, 0); + PackageManager pm = mContext.getPackageManager(); + ProviderInfo pi = pm.resolveContentProvider(authority, 0); if (pi == null) { Log.e(TAG, "No provider found for authority " + authority); return null; } Uri uri = getLayoutUri(authority, mContext); - try (InputStream in = mContext.getContentResolver().openInputStream(uri)) { - // Read the full xml so that we fail early in case of any IO error. - String layout = new String(IOUtils.toByteArray(in)); - XmlPullParser parser = Xml.newPullParser(); - parser.setInput(new StringReader(layout)); - + try (InputStream in = cr.openInputStream(uri)) { Log.d(TAG, "Loading layout from " + authority); - return new AutoInstallsLayout(mContext, widgetHolder, mOpenHelper, - mContext.getPackageManager().getResourcesForApplication(pi.applicationInfo), - () -> parser, AutoInstallsLayout.TAG_WORKSPACE); + + Resources res = pm.getResourcesForApplication(pi.applicationInfo); + return getAutoInstallsLayoutFromIS(in, widgetHolder, SourceResources.wrap(res)); } catch (Exception e) { Log.e(TAG, "Error getting layout stream from: " + authority , e); return null; } } + private AutoInstallsLayout getAutoInstallsLayoutFromIS(InputStream in, + LauncherWidgetHolder widgetHolder, SourceResources res) throws Exception { + // Read the full xml so that we fail early in case of any IO error. + String layout = new String(IOUtils.toByteArray(in)); + XmlPullParser parser = Xml.newPullParser(); + parser.setInput(new StringReader(layout)); + + return new AutoInstallsLayout(mContext, widgetHolder, mOpenHelper, res, + () -> parser, AutoInstallsLayout.TAG_WORKSPACE); + } + private static Uri getLayoutUri(String authority, Context ctx) { InvariantDeviceProfile grid = LauncherAppState.getIDP(ctx); return new Uri.Builder().scheme("content").authority(authority).path("launcher_layout") @@ -448,13 +453,9 @@ public class ModelDbController { private DefaultLayoutParser getDefaultLayoutParser(LauncherWidgetHolder widgetHolder) { InvariantDeviceProfile idp = LauncherAppState.getIDP(mContext); - int defaultLayout = mDefaultWorkspaceLayoutOverride > 0 - ? mDefaultWorkspaceLayoutOverride : idp.defaultLayoutId; - - if (mContext.getSystemService(UserManager.class).isDemoUser() - && idp.demoModeLayoutId != 0) { - defaultLayout = idp.demoModeLayoutId; - } + int defaultLayout = idp.demoModeLayoutId != 0 + && mContext.getSystemService(UserManager.class).isDemoUser() + ? idp.demoModeLayoutId : idp.defaultLayoutId; return new DefaultLayoutParser(mContext, widgetHolder, mOpenHelper, mContext.getResources(), defaultLayout); diff --git a/tests/Android.bp b/tests/Android.bp index 81853d15ff..da8d844542 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -45,6 +45,7 @@ filegroup { "src/com/android/launcher3/ui/AbstractLauncherUiTest.java", "src/com/android/launcher3/ui/PortraitLandscapeRunner.java", "src/com/android/launcher3/ui/TaplTestsLauncher3.java", + "src/com/android/launcher3/util/LauncherLayoutBuilder.java", "src/com/android/launcher3/util/TestUtil.java", "src/com/android/launcher3/util/Wait.java", "src/com/android/launcher3/util/WidgetUtils.java", diff --git a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java index a37c3cd3c8..dc835e2485 100644 --- a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java +++ b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java @@ -106,11 +106,6 @@ public final class TestProtocol { public static final String REQUEST_GET_HAD_NONTEST_EVENTS = "get-had-nontest-events"; public static final String REQUEST_STOP_EVENT_LOGGING = "stop-event-logging"; public static final String REQUEST_CLEAR_DATA = "clear-data"; - public static final String REQUEST_USE_TEST_WORKSPACE_LAYOUT = "use-test-workspace-layout"; - public static final String REQUEST_USE_TEST2_WORKSPACE_LAYOUT = "use-test2-workspace-layout"; - public static final String REQUEST_USE_TAPL_WORKSPACE_LAYOUT = "use-tapl-workspace-layout"; - public static final String REQUEST_USE_DEFAULT_WORKSPACE_LAYOUT = - "use-default-workspace-layout"; public static final String REQUEST_HOTSEAT_ICON_NAMES = "get-hotseat-icon-names"; public static final String REQUEST_IS_TABLET = "is-tablet"; public static final String REQUEST_IS_TWO_PANELS = "is-two-panel"; diff --git a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java index 217bec3aa1..81f1525ee4 100644 --- a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java +++ b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java @@ -54,12 +54,14 @@ import com.android.launcher3.tapl.HomeAppIcon; import com.android.launcher3.tapl.HomeAppIconMenuItem; import com.android.launcher3.tapl.Widgets; import com.android.launcher3.tapl.Workspace; +import com.android.launcher3.util.LauncherLayoutBuilder; import com.android.launcher3.util.TestUtil; import com.android.launcher3.util.rule.ScreenRecordRule.ScreenRecord; import com.android.launcher3.util.rule.TISBindRule; import com.android.launcher3.widget.picker.WidgetsFullSheet; import com.android.launcher3.widget.picker.WidgetsRecyclerView; +import org.junit.After; import org.junit.Before; import org.junit.Ignore; import org.junit.Rule; @@ -83,6 +85,8 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { @Rule public TISBindRule mTISBindRule = new TISBindRule(); + private AutoCloseable mLauncherLayout; + @Before public void setUp() throws Exception { super.setUp(); @@ -101,6 +105,13 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { AbstractLauncherUiTest.checkDetectedLeaks(test.mLauncher); } + @After + public void tearDown() throws Exception { + if (mLauncherLayout != null) { + mLauncherLayout.close(); + } + } + // Please don't add negative test cases for methods that fail only after a long wait. public static void expectFail(String message, Runnable action) { boolean failed = false; @@ -230,8 +241,10 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { @Test @ScreenRecord // b/202433017 public void testWorkspace() throws Exception { - // Make sure there is an instance of chrome on the hotseat - mLauncher.useTaplWorkspaceLayoutOnReload(); + // Set workspace that includes the chrome Activity app icon on the hotseat. + LauncherLayoutBuilder builder = new LauncherLayoutBuilder() + .atHotseat(0).putApp("com.android.chrome", "com.google.android.apps.chrome.Main"); + mLauncherLayout = TestUtil.setLauncherDefaultLayout(mTargetContext, builder); clearLauncherData(); final Workspace workspace = mLauncher.getWorkspace(); diff --git a/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java b/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java index 3abafdfccb..c4b6d43466 100644 --- a/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java +++ b/tests/src/com/android/launcher3/ui/workspace/TwoPanelWorkspaceTest.java @@ -30,6 +30,8 @@ import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.tapl.Workspace; import com.android.launcher3.ui.AbstractLauncherUiTest; import com.android.launcher3.ui.TaplTestsLauncher3; +import com.android.launcher3.util.LauncherLayoutBuilder; +import com.android.launcher3.util.TestUtil; import org.junit.After; import org.junit.Before; @@ -49,12 +51,24 @@ import java.util.stream.Collectors; @RunWith(AndroidJUnit4.class) public class TwoPanelWorkspaceTest extends AbstractLauncherUiTest { + private AutoCloseable mLauncherLayout; + @Before public void setUp() throws Exception { super.setUp(); - mLauncher.useTest2WorkspaceLayoutOnReload(); - TaplTestsLauncher3.initialize(this); + // Set layout that includes Maps/Play on workspace, and Messaging/Chrome on hotseat. + LauncherLayoutBuilder builder = new LauncherLayoutBuilder() + .atHotseat(0).putApp( + "com.google.android.apps.messaging", + "com.google.android.apps.messaging.ui.ConversationListActivity") + .atHotseat(1).putApp("com.android.chrome", "com.google.android.apps.chrome.Main") + .atWorkspace(0, -1, 0).putApp( + "com.google.android.apps.maps", "com.google.android.maps.MapsActivity") + .atWorkspace(3, -1, 0).putApp( + "com.android.vending", "com.android.vending.AssetBrowserActivity"); + mLauncherLayout = TestUtil.setLauncherDefaultLayout(mTargetContext, builder); + TaplTestsLauncher3.initialize(this); assumeTrue(mLauncher.isTwoPanels()); // Pre verifying the screens @@ -67,9 +81,11 @@ public class TwoPanelWorkspaceTest extends AbstractLauncherUiTest { } @After - public void tearDown() { + public void tearDown() throws Exception { executeOnLauncher(launcher -> launcher.enableHotseatEdu(true)); - mLauncher.useDefaultWorkspaceLayoutOnReload(); + if (mLauncherLayout != null) { + mLauncherLayout.close(); + } } @Test diff --git a/tests/src/com/android/launcher3/util/TestUtil.java b/tests/src/com/android/launcher3/util/TestUtil.java index 433fd31bcc..4981795fe5 100644 --- a/tests/src/com/android/launcher3/util/TestUtil.java +++ b/tests/src/com/android/launcher3/util/TestUtil.java @@ -15,15 +15,29 @@ */ package com.android.launcher3.util; +import static android.util.Base64.NO_PADDING; +import static android.util.Base64.NO_WRAP; + import static androidx.test.InstrumentationRegistry.getContext; import static androidx.test.InstrumentationRegistry.getInstrumentation; import static androidx.test.InstrumentationRegistry.getTargetContext; +import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_KEY; +import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_LABEL; +import static com.android.launcher3.LauncherSettings.Settings.LAYOUT_DIGEST_TAG; + +import android.app.blob.BlobHandle; +import android.app.blob.BlobStoreManager; +import android.content.Context; import android.content.pm.LauncherApps; import android.content.res.Resources; +import android.os.AsyncTask; import android.os.Handler; import android.os.Looper; +import android.os.ParcelFileDescriptor.AutoCloseOutputStream; import android.os.UserHandle; +import android.provider.Settings; +import android.util.Base64; import androidx.test.uiautomator.UiDevice; @@ -36,6 +50,8 @@ import org.junit.Assert; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; +import java.io.OutputStream; +import java.security.MessageDigest; import java.util.concurrent.CountDownLatch; import java.util.function.Predicate; import java.util.function.ToIntFunction; @@ -109,6 +125,35 @@ public class TestUtil { "pm uninstall " + DUMMY_PACKAGE); } + /** + * Sets the default layout for Launcher and returns an object which can be used to clear + * the data + */ + public static AutoCloseable setLauncherDefaultLayout( + Context context, LauncherLayoutBuilder layoutBuilder) throws Exception { + byte[] data = layoutBuilder.build().getBytes(); + byte[] digest = MessageDigest.getInstance("SHA-256").digest(data); + + BlobHandle handle = BlobHandle.createWithSha256( + digest, LAYOUT_DIGEST_LABEL, 0, LAYOUT_DIGEST_TAG); + BlobStoreManager blobManager = context.getSystemService(BlobStoreManager.class); + final long sessionId = blobManager.createSession(handle); + CountDownLatch wait = new CountDownLatch(1); + try (BlobStoreManager.Session session = blobManager.openSession(sessionId)) { + try (OutputStream out = new AutoCloseOutputStream(session.openWrite(0, -1))) { + out.write(data); + } + session.allowPublicAccess(); + session.commit(AsyncTask.THREAD_POOL_EXECUTOR, i -> wait.countDown()); + } + + String key = Base64.encodeToString(digest, NO_WRAP | NO_PADDING); + Settings.Secure.putString(context.getContentResolver(), LAYOUT_DIGEST_KEY, key); + wait.await(); + return () -> + Settings.Secure.putString(context.getContentResolver(), LAYOUT_DIGEST_KEY, null); + } + private static class PackageInstallCheck extends LauncherApps.Callback implements AutoCloseable { diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java index 9905603852..ba8f070aec 100644 --- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java +++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java @@ -1851,36 +1851,6 @@ public final class LauncherInstrumentation { getTestInfo(TestProtocol.REQUEST_CLEAR_DATA); } - /** - * Reloads the workspace with a test layout that includes the Test Activity app icon on the - * hotseat. - */ - public void useTestWorkspaceLayoutOnReload() { - getTestInfo(TestProtocol.REQUEST_USE_TEST_WORKSPACE_LAYOUT); - } - - /** - * Reloads the workspace with a test layout that includes Maps/Play on workspace, and - * Dialer/Messaging/Chrome/Camera on hotseat. - */ - public void useTest2WorkspaceLayoutOnReload() { - getTestInfo(TestProtocol.REQUEST_USE_TEST2_WORKSPACE_LAYOUT); - } - - - /** - * Reloads the workspace with a test layout that includes the chrome Activity app icon on the - * hotseat. - */ - public void useTaplWorkspaceLayoutOnReload() { - getTestInfo(TestProtocol.REQUEST_USE_TAPL_WORKSPACE_LAYOUT); - } - - /** Reloads the workspace with the default layout defined by the user's grid size selection. */ - public void useDefaultWorkspaceLayoutOnReload() { - getTestInfo(TestProtocol.REQUEST_USE_DEFAULT_WORKSPACE_LAYOUT); - } - /** Shows the taskbar if it is hidden, otherwise does nothing. */ public void showTaskbarIfHidden() { getTestInfo(TestProtocol.REQUEST_UNSTASH_TASKBAR_IF_STASHED); From 593ff77267b51cf9869c1b78c6049d2348927e2a Mon Sep 17 00:00:00 2001 From: Mike Schneider Date: Thu, 13 Apr 2023 13:21:06 +0200 Subject: [PATCH 12/81] Revert ag/22195243 and solve the initialization issue it was supposed to fix differently The fix caused a flicker tests to fail, but that is specific to the persistent taskbar used in tests only. Bug: 277470898 Bug: 277003116 Fixed: 277470898 Fixed: 277003116 Test: Flicker tests passes Test: Manual (http://shortn/_kiAZykhZsp) Test: Tapl presubmit tests Change-Id: Ib9daebf3b06af2f1a4a3b7461acf91f204ff281b --- .../taskbar/LauncherTaskbarUIController.java | 9 ++++---- .../taskbar/TaskbarActivityContext.java | 2 +- .../TaskbarLauncherStateController.java | 22 ++++++++++--------- .../taskbar/TaskbarUIController.java | 2 +- .../RecentsAnimationDeviceState.java | 2 +- 5 files changed, 19 insertions(+), 18 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java index b74964ceae..fdef39f2eb 100644 --- a/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/LauncherTaskbarUIController.java @@ -93,15 +93,14 @@ public class LauncherTaskbarUIController extends TaskbarUIController { protected void init(TaskbarControllers taskbarControllers) { super.init(taskbarControllers); - mTaskbarLauncherStateController.init(mControllers, mLauncher); + mTaskbarLauncherStateController.init(mControllers, mLauncher, + mControllers.getSharedState().sysuiStateFlags); mLauncher.setTaskbarUIController(this); onLauncherResumedOrPaused(mLauncher.hasBeenResumed(), true /* fromInit */); onStashedInAppChanged(mLauncher.getDeviceProfile()); - mTaskbarLauncherStateController.updateStateForSysuiFlags( - mControllers.getSharedState().sysuiStateFlags, true /* fromInit */); mLauncher.addOnDeviceProfileChangeListener(mOnDeviceProfileChangeListener); // Restore the in-app display progress from before Taskbar was recreated. @@ -325,8 +324,8 @@ public class LauncherTaskbarUIController extends TaskbarUIController { } @Override - public void updateStateForSysuiFlags(int sysuiFlags, boolean skipAnim) { - mTaskbarLauncherStateController.updateStateForSysuiFlags(sysuiFlags, skipAnim); + public void updateStateForSysuiFlags(int sysuiFlags) { + mTaskbarLauncherStateController.updateStateForSysuiFlags(sysuiFlags); } @Override diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 5c53b5f844..c48d06252c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -592,7 +592,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mControllers.voiceInteractionWindowController.setIsVoiceInteractionWindowVisible( (systemUiStateFlags & SYSUI_STATE_VOICE_INTERACTION_WINDOW_SHOWING) != 0, fromInit); - mControllers.uiController.updateStateForSysuiFlags(systemUiStateFlags, fromInit); + mControllers.uiController.updateStateForSysuiFlags(systemUiStateFlags); } /** diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java index c9e7df45a1..2744b43348 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarLauncherStateController.java @@ -210,7 +210,9 @@ public class TaskbarLauncherStateController { } }; - public void init(TaskbarControllers controllers, QuickstepLauncher launcher) { + /** Initializes the controller instance, and applies the initial state immediately. */ + public void init(TaskbarControllers controllers, QuickstepLauncher launcher, + int sysuiStateFlags) { mCanSyncViews = false; mControllers = controllers; @@ -229,6 +231,8 @@ public class TaskbarLauncherStateController { mLauncher.getStateManager().addStateListener(mStateListener); mLauncherState = launcher.getStateManager().getState(); + updateStateForSysuiFlags(sysuiStateFlags, /*applyState*/ false); + applyState(0); mCanSyncViews = true; @@ -298,7 +302,11 @@ public class TaskbarLauncherStateController { } /** SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values. */ - public void updateStateForSysuiFlags(int systemUiStateFlags, boolean skipAnim) { + public void updateStateForSysuiFlags(int systemUiStateFlags) { + updateStateForSysuiFlags(systemUiStateFlags, /* applyState */ true); + } + + private void updateStateForSysuiFlags(int systemUiStateFlags, boolean applyState) { final boolean prevIsAwake = hasAnyFlag(FLAG_AWAKE); final boolean currIsAwake = hasAnyFlag(systemUiStateFlags, SYSUI_STATE_AWAKE); @@ -322,9 +330,7 @@ public class TaskbarLauncherStateController { || (systemUiStateFlags & SYSUI_STATE_WAKEFULNESS_MASK) != WAKEFULNESS_AWAKE; updateStateForFlag(FLAG_TASKBAR_HIDDEN, isTaskbarHidden); - if (skipAnim) { - applyState(0); - } else { + if (applyState) { applyState(); } } @@ -361,10 +367,6 @@ public class TaskbarLauncherStateController { applyState(duration, true); } - public Animator applyState(boolean start) { - return applyState(mControllers.taskbarStashController.getStashDuration(), start); - } - public Animator applyState(long duration, boolean start) { if (mControllers.taskbarActivityContext.isDestroyed()) { return null; @@ -420,7 +422,7 @@ public class TaskbarLauncherStateController { } } - if (hasAnyFlag(changedFlags, FLAGS_LAUNCHER_ACTIVE | FLAG_AWAKE)) { + if (hasAnyFlag(changedFlags, FLAGS_LAUNCHER_ACTIVE)) { animatorSet.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationStart(Animator animation) { diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java index 1435cb0996..f3e2ee2e9d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarUIController.java @@ -127,7 +127,7 @@ public class TaskbarUIController { /** * SysUI flags updated, see QuickStepContract.SYSUI_STATE_* values. */ - public void updateStateForSysuiFlags(int sysuiFlags, boolean skipAnim){ + public void updateStateForSysuiFlags(int sysuiFlags) { } /** diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java index 9a23557fdf..d3e4ce5db8 100644 --- a/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java +++ b/quickstep/src/com/android/quickstep/RecentsAnimationDeviceState.java @@ -98,7 +98,7 @@ public class RecentsAnimationDeviceState implements DisplayInfoChangeListener { private final ArrayList mOnDestroyActions = new ArrayList<>(); - private @SystemUiStateFlags int mSystemUiStateFlags; + private @SystemUiStateFlags int mSystemUiStateFlags = QuickStepContract.SYSUI_STATE_AWAKE; private NavigationMode mMode = THREE_BUTTONS; private NavBarPosition mNavBarPosition; From 5624523835d346e8bcc74ae7476d6405a37c9a37 Mon Sep 17 00:00:00 2001 From: Tiger Date: Thu, 13 Apr 2023 20:26:26 +0800 Subject: [PATCH 13/81] Always suppress scrim for taskbar Taskbar never needs a semi-transparent scrim drawn by the decor view at the insets area, because taskbar has the background color on its own if needed. Bug: 197615177 Test: SystemUIGoogleBiometricsScreenshotTests Change-Id: Ic49c8af3ecbefcc83d1bd987812625c7e2f37157 --- .../com/android/launcher3/taskbar/TaskbarInsetsController.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt index fcb20423fa..c029097b71 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarInsetsController.kt @@ -21,6 +21,7 @@ import android.os.Binder import android.os.IBinder import android.view.InsetsFrameProvider import android.view.InsetsFrameProvider.SOURCE_DISPLAY +import android.view.InsetsSource.FLAG_SUPPRESS_SCRIM import android.view.ViewTreeObserver import android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_FRAME import android.view.ViewTreeObserver.InternalInsetsInfo.TOUCHABLE_INSETS_REGION @@ -86,7 +87,8 @@ class TaskbarInsetsController(val context: TaskbarActivityContext) : LoggableTas if (context.isGestureNav) { windowLayoutParams.providedInsets = arrayOf( - InsetsFrameProvider(insetsOwner, 0, navigationBars()), + InsetsFrameProvider(insetsOwner, 0, navigationBars()) + .setFlags(FLAG_SUPPRESS_SCRIM, FLAG_SUPPRESS_SCRIM), InsetsFrameProvider(insetsOwner, 0, tappableElement()), InsetsFrameProvider(insetsOwner, 0, mandatorySystemGestures()), InsetsFrameProvider(insetsOwner, INDEX_LEFT, systemGestures()) From 435f1e2e0868c2f3ad1d215c58eb259690d141c3 Mon Sep 17 00:00:00 2001 From: Fengjiang Li Date: Wed, 12 Apr 2023 14:33:25 -0700 Subject: [PATCH 14/81] Add COLD_DEVICE_REBOOTING LatencyType Since launcher COLD startup latency is drastically different when device is rebooting vs not, we will add COLD_DEVICE_REBOOTING LatencyType See "Add Startup Latency Type" section in go/launcher-startup-latency Bug: b/277962421 Test: app build Change-Id: I4d0a22c105417b5bcdbae9ed9fc72aa927f9adc9 --- src/com/android/launcher3/logging/StatsLogManager.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/logging/StatsLogManager.java b/src/com/android/launcher3/logging/StatsLogManager.java index 7f46324e7f..5b4a02b296 100644 --- a/src/com/android/launcher3/logging/StatsLogManager.java +++ b/src/com/android/launcher3/logging/StatsLogManager.java @@ -797,6 +797,7 @@ public class StatsLogManager implements ResourceBasedOverride { enum LatencyType { UNKNOWN(0), + // example: launcher restart that happens via daily backup and restore COLD(1), HOT(2), TIMEOUT(3), @@ -804,7 +805,9 @@ public class StatsLogManager implements ResourceBasedOverride { COLD_USERWAITING(5), ATOMIC(6), CONTROLLED(7), - CACHED(8); + CACHED(8), + // example: device is rebooting via power key or shell command `adb reboot` + COLD_DEVICE_REBOOTING(9); private final int mId; LatencyType(int id) { From e7c3d3d4cee3a58df3d1aa96e6ab280244a4c6fb Mon Sep 17 00:00:00 2001 From: Sebastian Franco Date: Tue, 10 Jan 2023 10:47:46 -0600 Subject: [PATCH 15/81] Parsing test boards from text files to be able to add more and bigger tests It also adds an assets folder inside of Launcher3 tests. It also fixes a bug in fullReorder. Test: atest ReorderWidgets Flag: none Bug: 229292911 Change-Id: I7dadd42a3057d353326691163bb7db71a2e9dcc4 --- tests/Android.bp | 1 + tests/assets/ReorderWidgets/full_reorder_case | 28 +++ .../ReorderWidgets/move_out_reorder_case | 44 +++++ tests/assets/ReorderWidgets/push_reorder_case | 44 +++++ .../assets/ReorderWidgets/simple_reorder_case | 56 ++++++ tests/res/raw/reorder_algorithm_test.txt | 9 + .../launcher3/celllayout/CellLayoutBoard.java | 11 +- .../celllayout/CellLayoutTestCaseReader.java | 162 ++++++++++++++++++ .../celllayout/CellLayoutTestUtils.java | 4 +- .../MultipleCellLayoutsSimpleReorder.java | 2 + .../{testcases => }/ReorderTestCase.java | 4 +- .../launcher3/celllayout/ReorderWidgets.java | 65 ++++--- .../celllayout/testcases/FullReorderCase.java | 109 ------------ .../testcases/MoveOutReorderCase.java | 69 -------- .../celllayout/testcases/PushReorderCase.java | 70 -------- .../testcases/SimpleReorderCase.java | 87 ---------- 16 files changed, 398 insertions(+), 367 deletions(-) create mode 100644 tests/assets/ReorderWidgets/full_reorder_case create mode 100644 tests/assets/ReorderWidgets/move_out_reorder_case create mode 100644 tests/assets/ReorderWidgets/push_reorder_case create mode 100644 tests/assets/ReorderWidgets/simple_reorder_case create mode 100644 tests/res/raw/reorder_algorithm_test.txt create mode 100644 tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java rename tests/src/com/android/launcher3/celllayout/{testcases => }/ReorderTestCase.java (93%) delete mode 100644 tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java delete mode 100644 tests/src/com/android/launcher3/celllayout/testcases/MoveOutReorderCase.java delete mode 100644 tests/src/com/android/launcher3/celllayout/testcases/PushReorderCase.java delete mode 100644 tests/src/com/android/launcher3/celllayout/testcases/SimpleReorderCase.java diff --git a/tests/Android.bp b/tests/Android.bp index 81853d15ff..f9d6f04c4d 100644 --- a/tests/Android.bp +++ b/tests/Android.bp @@ -69,6 +69,7 @@ filegroup { android_library { name: "Launcher3TestLib", srcs: [ ], + asset_dirs: ["assets"], resource_dirs: ["res"], static_libs: [ "launcher-aosp-tapl", diff --git a/tests/assets/ReorderWidgets/full_reorder_case b/tests/assets/ReorderWidgets/full_reorder_case new file mode 100644 index 0000000000..33ebaaea28 --- /dev/null +++ b/tests/assets/ReorderWidgets/full_reorder_case @@ -0,0 +1,28 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +# Test 4x4 +board: 4x4 +xxxx +bbmm +iimm +iiaa +arguments: 0 3 +board: 4x4 +xxxx +bbii +mmii +mmaa \ No newline at end of file diff --git a/tests/assets/ReorderWidgets/move_out_reorder_case b/tests/assets/ReorderWidgets/move_out_reorder_case new file mode 100644 index 0000000000..db0a91dd54 --- /dev/null +++ b/tests/assets/ReorderWidgets/move_out_reorder_case @@ -0,0 +1,44 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +# Test 5x5 +board: 5x5 +xxxxx +cd-m- +cgaaa +ctaaa +ctaaa +arguments: 1 2 +board: 5x5 +xxxxx +cde-- +cgaaa +ctaaa +ctaaa +# Test 6x5 +board: 6x5 +xxxxxx +cd-m-- +cgaaaa +ctaaaa +ctaaaa +arguments: 1 2 +board: 6x5 +xxxxxx +cdg--- +cmaaaa +ctaaaa +ctaaaa \ No newline at end of file diff --git a/tests/assets/ReorderWidgets/push_reorder_case b/tests/assets/ReorderWidgets/push_reorder_case new file mode 100644 index 0000000000..8e845a2462 --- /dev/null +++ b/tests/assets/ReorderWidgets/push_reorder_case @@ -0,0 +1,44 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +#Test 5x5 +board: 5x5 +xxxxx +bbbm- +--ccc +--ddd +----- +arguments: 2 1 +board: 5x5 +xxxxx +--m-- +bbb-- +--ccc +--ddd +#6x5 Test +board: 6x5 +xxxxxx +bbbbm- +--aaa- +--ddd- +------ +arguments: 2 1 +board: 6x5 +xxxxxx +--m--- +bbbb-- +--aaa- +--ddd- \ No newline at end of file diff --git a/tests/assets/ReorderWidgets/simple_reorder_case b/tests/assets/ReorderWidgets/simple_reorder_case new file mode 100644 index 0000000000..f5eb7b6f5c --- /dev/null +++ b/tests/assets/ReorderWidgets/simple_reorder_case @@ -0,0 +1,56 @@ +################################################################################################### +# This file contains test case composed of the following tags: +# * # (coments): Lines starting with this character would be ignored. +# * arguments: is set of words separated by spaces that can later be parsed +# * board: represent a workspace, the first line is the dimensions of the board width x height (wxh) +# There are different characters on the board that represent different things: +# * x: The x character represents spaces that would be ignored, for example it can be used in +# the first row if we don't know how wide the smartspace is. +# * i: Represents an icon on the workspace, none in particular just an icon +# * [a-z]: Represents a widget and it can be any number or character +# except any other already in use. The whole continuos are of the same character is the +# area of the widget. +# * [A-Z]: Represents a folder and number of icons in the folder is represented by the order of +# letter in the alphabet, A=2, B=3, C=4 ... etc. +# Test are parsed by CellLayoutTestCaseReader.java and boards are parsed by CellLayoutBoard.java +################################################################################################### +# Test 5x5 +board: 5x5 +xxxxx +--mm- +--mm- +----- +----- +arguments: 0 4 +board: 5x5 +xxxxx +----- +----- +mm--- +mm--- +# Test 4x4 +board: 4x4 +xxxx +--mm +--mm +---- +arguments: 3 3 +board: 4x4 +xxxx +---- +--mm +--mm +# Test 6x5 +board: 6x5 +xxxxxx +-mm--- +-mm--- +------ +------ +arguments: 4 3 +board: 6x5 +xxxxxx +------ +------ +----mm +----mm \ No newline at end of file diff --git a/tests/res/raw/reorder_algorithm_test.txt b/tests/res/raw/reorder_algorithm_test.txt new file mode 100644 index 0000000000..4930e932a4 --- /dev/null +++ b/tests/res/raw/reorder_algorithm_test.txt @@ -0,0 +1,9 @@ +arguments: 5 6 normal +board: 6x5 +xxxxx- +------ +------ +---3-- +---3-- +---3-- +# this is a comment \ No newline at end of file diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java b/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java index 6d75180f8c..cf96f04e37 100644 --- a/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java +++ b/tests/src/com/android/launcher3/celllayout/CellLayoutBoard.java @@ -179,7 +179,6 @@ public class CellLayoutBoard implements Comparable { Map mWidgetsMap = new HashMap<>(); List mIconPoints = new ArrayList<>(); - Map mIconsMap = new HashMap<>(); WidgetRect mMain = null; @@ -270,7 +269,9 @@ public class CellLayoutBoard implements Comparable { } public void addIcon(int x, int y) { - removeOverlappingItems(new Point(x, y)); + Point iconCoord = new Point(x, y); + removeOverlappingItems(iconCoord); + mIconPoints.add(new IconPoint(iconCoord, CellType.ICON)); mWidget[x][y] = 'i'; } @@ -306,8 +307,12 @@ public class CellLayoutBoard implements Comparable { return new WidgetRect(type, widgetRect); } + public static boolean isFolder(char type) { + return type >= 'A' && type <= 'Z'; + } + public static boolean isWidget(char type) { - return type != CellType.ICON && type != CellType.EMPTY; + return type != CellType.ICON && type != CellType.EMPTY && (type >= 'a' && type <= 'z'); } public static boolean isIcon(char type) { diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java b/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java new file mode 100644 index 0000000000..e33a304941 --- /dev/null +++ b/tests/src/com/android/launcher3/celllayout/CellLayoutTestCaseReader.java @@ -0,0 +1,162 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.launcher3.celllayout; + +import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation; + +import android.graphics.Point; + +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Iterator; +import java.util.List; +import java.util.Locale; +import java.util.stream.Collectors; + +public class CellLayoutTestCaseReader { + + public abstract static class TestSection { + State state; + + public TestSection(State state) { + this.state = state; + } + + public State getState() { + return state; + } + + public void setState(State state) { + this.state = state; + } + } + + public static class Comment extends TestSection { + public Comment() { + super(State.COMMENT); + } + } + + public static class Arguments extends TestSection { + String[] arguments; + + public Arguments(String[] arguments) { + super(State.ARGUMENTS); + this.arguments = arguments; + } + } + + public static class Board extends TestSection { + Point gridSize; + String board; + + public Board(Point gridSize, String board) { + super(State.BOARD); + this.gridSize = gridSize; + this.board = board; + } + } + + public enum State { + START, + ARGUMENTS, + BOARD, + END, + COMMENT + } + + String mTest; + + protected CellLayoutTestCaseReader(String test) { + mTest = test; + } + + public static CellLayoutTestCaseReader readFromFile(String fileName) throws IOException { + String fileStr = new BufferedReader(new InputStreamReader( + getInstrumentation().getContext().getAssets().open(fileName)) + ).lines().collect(Collectors.joining("\n")); + return new CellLayoutTestCaseReader(fileStr); + } + + private State getStateFromLine(String line) { + String typeWithColons = line.trim().split(" ")[0].trim(); + String type = typeWithColons.substring(0, typeWithColons.length() - 1); + try { + return Enum.valueOf(State.class, type.toUpperCase()); + } catch (Exception e) { + throw new RuntimeException( + "The given tag " + typeWithColons + " doesn't match with the existing tags"); + } + } + + private String removeTag(String line) { + return line.split(":")[1]; + } + + private TestSection parseNextLine(Iterator it) { + String line = it.next(); + if (line.trim().charAt(0) == '#') { + return new Comment(); + } + State state = getStateFromLine(line); + line = removeTag(line); + switch (state) { + case ARGUMENTS: + return new Arguments(parseArgumentsLine(line)); + case BOARD: + Point grid = parseGridSize(line); + return new Board(grid, parseBoard(it, grid.y)); + default: + return new Comment(); + } + } + + List parse() { + List sections = new ArrayList<>(); + String[] lines = mTest.split("\n"); + Iterator it = Arrays.stream(lines).iterator(); + while (it.hasNext()) { + TestSection section = parseNextLine(it); + if (section.state == State.COMMENT) { + continue; + } + sections.add(section); + } + return sections; + } + + private String parseBoard(Iterator it, int rows) { + StringBuilder board = new StringBuilder(); + for (int j = 0; j < rows; j++) { + board.append(it.next() + "\n"); + } + return board.toString(); + } + + private String[] parseArgumentsLine(String line) { + return Arrays.stream(line.trim().split(" ")).map(String::trim).toArray(String[]::new); + } + + private Point parseGridSize(String line) { + String[] values = line.toLowerCase(Locale.ROOT).split("x"); + int x = Integer.parseInt(values[0].trim()); + int y = Integer.parseInt(values[1].trim()); + return new Point(x, y); + } +} diff --git a/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java b/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java index 2960807098..e3d07a99f1 100644 --- a/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java +++ b/tests/src/com/android/launcher3/celllayout/CellLayoutTestUtils.java @@ -51,8 +51,8 @@ public class CellLayoutTestUtils { board.addIcon(pos.cellX, pos.cellY); } else { // is widget - board.addWidget(pos.cellX, pos.cellY, params.cellHSpan, params.cellVSpan, - (char) ('A' + widgetCount)); + board.addWidget(params.getCellX(), params.getCellY(), params.cellHSpan, + params.cellVSpan, (char) ('a' + widgetCount)); widgetCount++; } } diff --git a/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java b/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java index 9b52fe826c..706c1a7187 100644 --- a/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java +++ b/tests/src/com/android/launcher3/celllayout/MultipleCellLayoutsSimpleReorder.java @@ -17,6 +17,8 @@ package com.android.launcher3.celllayout.testcases; import android.graphics.Point; +import com.android.launcher3.celllayout.ReorderTestCase; + import java.util.Map; /** diff --git a/tests/src/com/android/launcher3/celllayout/testcases/ReorderTestCase.java b/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java similarity index 93% rename from tests/src/com/android/launcher3/celllayout/testcases/ReorderTestCase.java rename to tests/src/com/android/launcher3/celllayout/ReorderTestCase.java index 98fc20c228..ed84a60fae 100644 --- a/tests/src/com/android/launcher3/celllayout/testcases/ReorderTestCase.java +++ b/tests/src/com/android/launcher3/celllayout/ReorderTestCase.java @@ -13,12 +13,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package com.android.launcher3.celllayout.testcases; +package com.android.launcher3.celllayout; import android.graphics.Point; -import com.android.launcher3.celllayout.CellLayoutBoard; - import java.util.Arrays; import java.util.List; import java.util.stream.Collectors; diff --git a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java index c2fe3de407..e8dd3c0455 100644 --- a/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java +++ b/tests/src/com/android/launcher3/celllayout/ReorderWidgets.java @@ -25,12 +25,7 @@ import androidx.test.ext.junit.runners.AndroidJUnit4; import androidx.test.filters.SmallTest; import com.android.launcher3.InvariantDeviceProfile; -import com.android.launcher3.celllayout.testcases.FullReorderCase; -import com.android.launcher3.celllayout.testcases.MoveOutReorderCase; import com.android.launcher3.celllayout.testcases.MultipleCellLayoutsSimpleReorder; -import com.android.launcher3.celllayout.testcases.PushReorderCase; -import com.android.launcher3.celllayout.testcases.ReorderTestCase; -import com.android.launcher3.celllayout.testcases.SimpleReorderCase; import com.android.launcher3.tapl.Widget; import com.android.launcher3.tapl.WidgetResizeFrame; import com.android.launcher3.testing.shared.TestProtocol; @@ -40,12 +35,14 @@ import com.android.launcher3.util.rule.ShellCommandRule; import org.junit.Assume; import org.junit.Before; -import org.junit.Ignore; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; +import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutionException; @@ -159,27 +156,23 @@ public class ReorderWidgets extends AbstractLauncherUiTest { } @Test - public void simpleReorder() throws ExecutionException, InterruptedException { - runTestCaseMap(SimpleReorderCase.TEST_BY_GRID_SIZE, - SimpleReorderCase.class.getSimpleName()); - } - - @Ignore - @Test - public void pushTest() throws ExecutionException, InterruptedException { - runTestCaseMap(PushReorderCase.TEST_BY_GRID_SIZE, PushReorderCase.class.getSimpleName()); - } - - @Ignore - @Test - public void fullReorder() throws ExecutionException, InterruptedException { - runTestCaseMap(FullReorderCase.TEST_BY_GRID_SIZE, FullReorderCase.class.getSimpleName()); + public void simpleReorder() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/simple_reorder_case"), "push_reorder_case"); } @Test - public void moveOutReorder() throws ExecutionException, InterruptedException { - runTestCaseMap(MoveOutReorderCase.TEST_BY_GRID_SIZE, - MoveOutReorderCase.class.getSimpleName()); + public void pushTest() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/push_reorder_case"), "push_reorder_case"); + } + + @Test + public void fullReorder() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/full_reorder_case"), "full_reorder_case"); + } + + @Test + public void moveOutReorder() throws Exception { + runTestCaseMap(getTestMap("ReorderWidgets/move_out_reorder_case"), "move_out_reorder_case"); } @Test @@ -188,4 +181,28 @@ public class ReorderWidgets extends AbstractLauncherUiTest { runTestCaseMap(MultipleCellLayoutsSimpleReorder.TEST_BY_GRID_SIZE, MultipleCellLayoutsSimpleReorder.class.getSimpleName()); } + + private void addTestCase(Iterator sections, + Map testCaseMap) { + CellLayoutTestCaseReader.Board startBoard = + ((CellLayoutTestCaseReader.Board) sections.next()); + CellLayoutTestCaseReader.Arguments point = + ((CellLayoutTestCaseReader.Arguments) sections.next()); + CellLayoutTestCaseReader.Board endBoard = + ((CellLayoutTestCaseReader.Board) sections.next()); + Point moveTo = new Point(Integer.parseInt(point.arguments[0]), + Integer.parseInt(point.arguments[1])); + testCaseMap.put(startBoard.gridSize, + new ReorderTestCase(startBoard.board, moveTo, endBoard.board)); + } + + private Map getTestMap(String testPath) throws IOException { + Map testCaseMap = new HashMap<>(); + Iterator iterableSection = + CellLayoutTestCaseReader.readFromFile(testPath).parse().iterator(); + while (iterableSection.hasNext()) { + addTestCase(iterableSection, testCaseMap); + } + return testCaseMap; + } } diff --git a/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java deleted file mode 100644 index d68d2ede61..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/FullReorderCase.java +++ /dev/null @@ -1,109 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class FullReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "222mm\n" - + "222mm\n" - + "ii111\n" - + "ii111"; - private static final Point MOVE_TO_5x5 = new Point(0, 4); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "222ii\n" - + "222ii\n" - + "mm111\n" - + "mm111"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "2222mm\n" - + "2222mm\n" - + "ii1111\n" - + "ii1111"; - private static final Point MOVE_TO_6x5 = new Point(0, 4); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "2222ii\n" - + "2222ii\n" - + "mm1111\n" - + "mm1111"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - /** 4x4 Test - **/ - private static final String START_BOARD_STR_4x4 = "" - + "xxxx\n" - + "22mm\n" - + "iimm\n" - + "ii11"; - private static final Point MOVE_TO_4x4 = new Point(0, 3); - private static final String END_BOARD_STR_4x4 = "" - + "xxxx\n" - + "22ii\n" - + "mmii\n" - + "mm11"; - - private static final ReorderTestCase TEST_CASE_4x4 = new ReorderTestCase(START_BOARD_STR_4x4, - MOVE_TO_4x4, - END_BOARD_STR_4x4); - - /** 4x4 Test - **/ - private static final String START_BOARD_STR_4x5 = "" - + "xxxx\n" - + "22mm\n" - + "iimm\n" - + "ii11\n" - + "ii11"; - private static final Point MOVE_TO_4x5 = new Point(0, 3); - private static final String END_BOARD_STR_4x5 = "" - + "xxxx\n" - + "22ii\n" - + "mmii\n" - + "mm11\n" - + "ii11"; - - private static final ReorderTestCase TEST_CASE_4x5 = new ReorderTestCase(START_BOARD_STR_4x5, - MOVE_TO_4x5, - END_BOARD_STR_4x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(6, 5), TEST_CASE_6x5, - new Point(4, 4), TEST_CASE_4x4, - new Point(4, 5), TEST_CASE_4x5); -} diff --git a/tests/src/com/android/launcher3/celllayout/testcases/MoveOutReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/MoveOutReorderCase.java deleted file mode 100644 index 047d3422df..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/MoveOutReorderCase.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class MoveOutReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "34-m-\n" - + "35111\n" - + "32111\n" - + "32111"; - private static final Point MOVE_TO_5x5 = new Point(1, 2); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "345--\n" - + "3m111\n" - + "32111\n" - + "32111"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "34-m--\n" - + "351111\n" - + "321111\n" - + "321111"; - private static final Point MOVE_TO_6x5 = new Point(1, 2); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "345---\n" - + "3m1111\n" - + "321111\n" - + "321111"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(6, 5), TEST_CASE_6x5); -} diff --git a/tests/src/com/android/launcher3/celllayout/testcases/PushReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/PushReorderCase.java deleted file mode 100644 index 38c9aee0fd..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/PushReorderCase.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class PushReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "222m-\n" - + "--111\n" - + "--333\n" - + "-----"; - private static final Point MOVE_TO_5x5 = new Point(2, 1); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "--m--\n" - + "222--\n" - + "--111\n" - + "--333"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "2222m-\n" - + "--111-\n" - + "--333-\n" - + "------"; - private static final Point MOVE_TO_6x5 = new Point(2, 1); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "--m---\n" - + "2222--\n" - + "--111-\n" - + "--333-"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(6, 5), TEST_CASE_6x5); -} diff --git a/tests/src/com/android/launcher3/celllayout/testcases/SimpleReorderCase.java b/tests/src/com/android/launcher3/celllayout/testcases/SimpleReorderCase.java deleted file mode 100644 index c9f6849854..0000000000 --- a/tests/src/com/android/launcher3/celllayout/testcases/SimpleReorderCase.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Copyright (C) 2022 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package com.android.launcher3.celllayout.testcases; - -import android.graphics.Point; - -import java.util.Map; - -/** - * The grids represent the workspace to be build by TestWorkspaceBuilder, to see what each character - * in the board mean refer to {@code CellType} - */ -public class SimpleReorderCase { - - /** 5x5 Test - **/ - private static final String START_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "--mm-\n" - + "--mm-\n" - + "-----\n" - + "-----"; - private static final Point MOVE_TO_5x5 = new Point(0, 4); - private static final String END_BOARD_STR_5x5 = "" - + "xxxxx\n" - + "-----\n" - + "-----\n" - + "mm---\n" - + "mm---"; - private static final ReorderTestCase TEST_CASE_5x5 = new ReorderTestCase(START_BOARD_STR_5x5, - MOVE_TO_5x5, - END_BOARD_STR_5x5); - - /** 4x4 Test - **/ - private static final String START_BOARD_STR_4x4 = "" - + "xxxx\n" - + "--mm\n" - + "--mm\n" - + "----"; - private static final Point MOVE_TO_4x4 = new Point(3, 3); - private static final String END_BOARD_STR_4x4 = "" - + "xxxx\n" - + "----\n" - + "--mm\n" - + "--mm"; - private static final ReorderTestCase TEST_CASE_4x4 = new ReorderTestCase(START_BOARD_STR_4x4, - MOVE_TO_4x4, - END_BOARD_STR_4x4); - - /** 6x5 Test - **/ - private static final String START_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "-mm---\n" - + "-mm---\n" - + "------\n" - + "------"; - private static final Point MOVE_TO_6x5 = new Point(4, 3); - private static final String END_BOARD_STR_6x5 = "" - + "xxxxxx\n" - + "------\n" - + "------\n" - + "----mm\n" - + "----mm"; - private static final ReorderTestCase TEST_CASE_6x5 = new ReorderTestCase(START_BOARD_STR_6x5, - MOVE_TO_6x5, - END_BOARD_STR_6x5); - - public static final Map TEST_BY_GRID_SIZE = - Map.of(new Point(5, 5), TEST_CASE_5x5, - new Point(4, 4), TEST_CASE_4x4, - new Point(6, 5), TEST_CASE_6x5); -} From 84e19a9beacef7d5f1b13a280b5cb67cfc4f0443 Mon Sep 17 00:00:00 2001 From: fbaron Date: Thu, 13 Apr 2023 12:09:06 -0700 Subject: [PATCH 16/81] Fix droptarget button wrong radius on hover Fix: 277470359 Test: drag app to uninstall or remove on tablet, verify the button shape doesn't change when hovered over Change-Id: I6b8b2de7357f8d19cdee7632a9957624a3f242a1 --- res/drawable/drop_target_frame.xml | 2 +- res/drawable/drop_target_frame_hover.xml | 2 +- res/values/dimens.xml | 1 + 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/res/drawable/drop_target_frame.xml b/res/drawable/drop_target_frame.xml index 9f04103510..0a73b3f05a 100644 --- a/res/drawable/drop_target_frame.xml +++ b/res/drawable/drop_target_frame.xml @@ -17,6 +17,6 @@ - + \ No newline at end of file diff --git a/res/drawable/drop_target_frame_hover.xml b/res/drawable/drop_target_frame_hover.xml index ddf3a4d799..6acffd1542 100644 --- a/res/drawable/drop_target_frame_hover.xml +++ b/res/drawable/drop_target_frame_hover.xml @@ -17,5 +17,5 @@ - + \ No newline at end of file diff --git a/res/values/dimens.xml b/res/values/dimens.xml index 923883b5f0..1aa1871ac5 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -233,6 +233,7 @@ 8dp 16dp 8dp + 80dp 28dp 0dp From f00760ac23d9957406dfd1ebb5d8d13949952dae Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 10 Apr 2023 15:50:05 -0700 Subject: [PATCH 17/81] Prevent taskbar on phone from crashing * Update code behind flag to work with transient taskbar * We explicitly set the mDestroyed flag to false in TaskbarActivityContext because it gets set to true when the flag is on, but nothing resets it unless it gets recreated normally. Bug: 274517647 Flag: persist.wm.debug.hide_navbar_window Test: Enable flag and verify no crash Change-Id: I9a149ffb47a10efedfc9dff8399d12d4c1a31553 --- .../taskbar/NavbarButtonsViewController.java | 8 ++++++-- .../taskbar/TaskbarActivityContext.java | 11 +++++++++-- .../taskbar/TaskbarBackgroundRenderer.kt | 11 ++++++++++- .../launcher3/taskbar/TaskbarDragLayer.java | 2 +- .../launcher3/taskbar/TaskbarView.java | 3 ++- .../quickstep/TouchInteractionService.java | 19 +++++++++++++------ 6 files changed, 41 insertions(+), 13 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java index a713ff53a7..9a9e0ba70c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java +++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java @@ -714,6 +714,8 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT * setup wizard, or normal 3 button nav. */ private void updateButtonLayoutSpacing() { + boolean isThreeButtonNav = mContext.isThreeButtonNav(); + DeviceProfile dp = mContext.getDeviceProfile(); Resources res = mContext.getResources(); boolean isInSetup = !mContext.isUserSetupComplete(); @@ -721,7 +723,9 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT boolean isInKidsMode = mContext.isNavBarKidsModeActive(); if (TaskbarManager.FLAG_HIDE_NAVBAR_WINDOW) { - boolean isThreeButtonNav = mContext.isThreeButtonNav(); + if (!isThreeButtonNav) { + return; + } NavButtonLayoutter navButtonLayoutter = NavButtonLayoutFactory.Companion.getUiLayoutter( @@ -803,7 +807,7 @@ public class NavbarButtonsViewController implements TaskbarControllers.LoggableT mNavButtonContainer.requestLayout(); mHomeButton.setOnLongClickListener(null); - } else if (mContext.isThreeButtonNav()) { + } else if (isThreeButtonNav) { final RotateDrawable rotateDrawable = new RotateDrawable(); rotateDrawable.setDrawable(mContext.getDrawable(R.drawable.ic_sysbar_back)); rotateDrawable.setFromDegrees(0f); diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index 5c53b5f844..232b76157d 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -186,7 +186,8 @@ public class TaskbarActivityContext extends BaseTaskbarContext { mRightCorner = display.getRoundedCorner(RoundedCorner.POSITION_BOTTOM_RIGHT); // Inflate views. - int taskbarLayout = DisplayController.isTransientTaskbar(this) + boolean phoneMode = TaskbarManager.isPhoneMode(mDeviceProfile); + int taskbarLayout = DisplayController.isTransientTaskbar(this) && !phoneMode ? R.layout.transient_taskbar : R.layout.taskbar; mDragLayer = (TaskbarDragLayer) mLayoutInflater.inflate(taskbarLayout, null, false); @@ -254,6 +255,12 @@ public class TaskbarActivityContext extends BaseTaskbarContext { sharedState.systemBarAttrsBehavior); onNavButtonsDarkIntensityChanged(sharedState.navButtonsDarkIntensity); + if (FLAG_HIDE_NAVBAR_WINDOW) { + // W/ the flag not set this entire class gets re-created, which resets the value of + // mIsDestroyed. We re-use the class for small-screen, so we explicitly have to mark + // this class as non-destroyed + mIsDestroyed = false; + } if (!mAddedWindow) { mWindowManager.addView(mDragLayer, mWindowLayoutParams); @@ -334,7 +341,7 @@ public class TaskbarActivityContext extends BaseTaskbarContext { public WindowManager.LayoutParams createDefaultWindowLayoutParams(int type, String title) { DeviceProfile deviceProfile = getDeviceProfile(); // Taskbar is on the logical bottom of the screen - boolean isVerticalBarLayout = TaskbarManager.isPhoneMode(deviceProfile) && + boolean isVerticalBarLayout = TaskbarManager.isPhoneButtonNavMode(this) && deviceProfile.isLandscape; int windowFlags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt index 07cea01e91..fe365f73b2 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarBackgroundRenderer.kt @@ -16,11 +16,13 @@ package com.android.launcher3.taskbar +import android.content.res.Resources import android.graphics.Canvas import android.graphics.Color import android.graphics.Paint import android.graphics.Path import android.graphics.RectF +import com.android.launcher3.DeviceProfile import com.android.launcher3.R import com.android.launcher3.Utilities import com.android.launcher3.Utilities.mapRange @@ -61,7 +63,7 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { private val invertedLeftCornerPath: Path = Path() private val invertedRightCornerPath: Path = Path() - private val stashedHandleWidth = + private var stashedHandleWidth = context.resources.getDimensionPixelSize(R.dimen.taskbar_stashed_handle_width) private val stashedHandleHeight = @@ -86,6 +88,13 @@ class TaskbarBackgroundRenderer(context: TaskbarActivityContext) { setCornerRoundness(DEFAULT_ROUNDNESS) } + fun updateStashedHandleWidth(dp: DeviceProfile, res: Resources) { + stashedHandleWidth = res.getDimensionPixelSize( + if (TaskbarManager.isPhoneMode(dp)) R.dimen.taskbar_stashed_small_screen + else R.dimen.taskbar_stashed_handle_width + ) + } + /** * Sets the roundness of the round corner above Taskbar. No effect on transient Taskkbar. * diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java index c53460d104..7681fe0e96 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarDragLayer.java @@ -71,7 +71,7 @@ public class TaskbarDragLayer extends BaseDragLayer { public void init(TaskbarDragLayerController.TaskbarDragLayerCallbacks callbacks) { mControllerCallbacks = callbacks; - + mBackgroundRenderer.updateStashedHandleWidth(mActivity.getDeviceProfile(), getResources()); recreateControllers(); } diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java index a3e681403a..603473945c 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarView.java @@ -114,7 +114,8 @@ public class TaskbarView extends FrameLayout implements FolderIcon.FolderIconPar mActivityContext = ActivityContext.lookupContext(context); mIconLayoutBounds = mActivityContext.getTransientTaskbarBounds(); Resources resources = getResources(); - boolean isTransientTaskbar = DisplayController.isTransientTaskbar(mActivityContext); + boolean isTransientTaskbar = DisplayController.isTransientTaskbar(mActivityContext) + && !TaskbarManager.isPhoneMode(mActivityContext.getDeviceProfile()); mIsRtl = Utilities.isRtl(resources); mTransientTaskbarMinWidth = mContext.getResources().getDimension( R.dimen.transient_taskbar_min_width); diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 1cf682bffc..ba9988d32d 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -77,6 +77,7 @@ import androidx.annotation.Nullable; import androidx.annotation.UiThread; import com.android.launcher3.BaseDraggingActivity; +import com.android.launcher3.DeviceProfile; import com.android.launcher3.LauncherPrefs; import com.android.launcher3.R; import com.android.launcher3.Utilities; @@ -835,12 +836,18 @@ public class TouchInteractionService extends Service // If Taskbar is present, we listen for long press to unstash it. TaskbarActivityContext tac = mTaskbarManager.getCurrentActivityContext(); - if (tac != null && canStartSystemGesture) { - reasonString.append(NEWLINE_PREFIX) - .append(reasonPrefix) - .append(SUBSTRING_PREFIX) - .append("TaskbarActivityContext != null, using TaskbarStashInputConsumer"); - base = new TaskbarStashInputConsumer(this, base, mInputMonitorCompat, tac); + if (tac != null) { + // Present always on large screen or on small screen w/ flag + DeviceProfile dp = tac.getDeviceProfile(); + boolean useTaskbarConsumer = dp.isTaskbarPresent && !TaskbarManager.isPhoneMode(dp); + if (canStartSystemGesture && useTaskbarConsumer) { + reasonString.append(NEWLINE_PREFIX) + .append(reasonPrefix) + .append(SUBSTRING_PREFIX) + .append("TaskbarActivityContext != null, " + + "using TaskbarStashInputConsumer"); + base = new TaskbarStashInputConsumer(this, base, mInputMonitorCompat, tac); + } } if (mDeviceState.isBubblesExpanded()) { From 4ba9c11568c599ec9903ffdfa27ad03a939748db Mon Sep 17 00:00:00 2001 From: Federico Baron Date: Tue, 31 Jan 2023 10:42:26 -0800 Subject: [PATCH 18/81] Improve color, contrast, and dimensions to match new spec for download icon Here we update the values to the correct HCT values according to the specs, as well as the size of the icon Bug: 267272201 Test: Turn on flag ENABLE_DOWNLOAD_APP_UX_V3 and download an app to see the changes. Change-Id: I2cc2417f7500c4c08c41056bfeef3c33f4eab174 --- .../graphics/PreloadIconDrawable.java | 73 +++++++++++++++---- 1 file changed, 60 insertions(+), 13 deletions(-) diff --git a/src/com/android/launcher3/graphics/PreloadIconDrawable.java b/src/com/android/launcher3/graphics/PreloadIconDrawable.java index 0fe79e7781..b569fc334d 100644 --- a/src/com/android/launcher3/graphics/PreloadIconDrawable.java +++ b/src/com/android/launcher3/graphics/PreloadIconDrawable.java @@ -20,6 +20,7 @@ package com.android.launcher3.graphics; import static com.android.launcher3.anim.Interpolators.EMPHASIZED; import static com.android.launcher3.anim.Interpolators.LINEAR; import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V2; +import static com.android.launcher3.config.FeatureFlags.ENABLE_DOWNLOAD_APP_UX_V3; import android.animation.Animator; import android.animation.AnimatorListenerAdapter; @@ -34,6 +35,8 @@ import android.graphics.PathMeasure; import android.graphics.Rect; import android.util.Property; +import androidx.core.graphics.ColorUtils; + import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatedFloat; @@ -73,12 +76,11 @@ public class PreloadIconDrawable extends FastBitmapDrawable { // Duration = COMPLETE_ANIM_FRACTION * DURATION_SCALE private static final float COMPLETE_ANIM_FRACTION = 1f; - private static final float SMALL_SCALE = 0.7f; + private static final float SMALL_SCALE = ENABLE_DOWNLOAD_APP_UX_V3.get() ? 0.8f : 0.7f; private static final float PROGRESS_STROKE_SCALE = ENABLE_DOWNLOAD_APP_UX_V2.get() - ? 0.0655f + ? 0.06666667f : 0.075f; - private static final float PROGRESS_BOUNDS_SCALE = 0.075f; - + private static final float PROGRESS_BOUNDS_SCALE = 0.08f; private static final int PRELOAD_ACCENT_COLOR_INDEX = 0; private static final int PRELOAD_BACKGROUND_COLOR_INDEX = 1; @@ -97,6 +99,11 @@ public class PreloadIconDrawable extends FastBitmapDrawable { private final int mIndicatorColor; private final int mSystemAccentColor; private final int mSystemBackgroundColor; + + private int mProgressColor; + private int mTrackColor; + private int mPlateColor; + private final boolean mIsDarkMode; private float mTrackLength; @@ -137,8 +144,35 @@ public class PreloadIconDrawable extends FastBitmapDrawable { mProgressPaint = new Paint(Paint.ANTI_ALIAS_FLAG | Paint.FILTER_BITMAP_FLAG); mProgressPaint.setStrokeCap(Paint.Cap.ROUND); + if (ENABLE_DOWNLOAD_APP_UX_V3.get()) { + mProgressPaint.setAlpha(MAX_PAINT_ALPHA); + } mIndicatorColor = indicatorColor; + // This is the color + int primaryIconColor = mItem.bitmap.color; + + // Progress color + float[] m3HCT = new float[3]; + ColorUtils.colorToM3HCT(primaryIconColor, m3HCT); + mProgressColor = ColorUtils.M3HCTtoColor( + m3HCT[0], + m3HCT[1], + isDarkMode ? Math.max(m3HCT[2], 55) : Math.min(m3HCT[2], 40)); + + // Track color + mTrackColor = ColorUtils.M3HCTtoColor( + m3HCT[0], + 16, + isDarkMode ? 30 : 90 + ); + // Plate color + mPlateColor = ColorUtils.M3HCTtoColor( + m3HCT[0], + isDarkMode ? 36 : 24, + isDarkMode ? (isThemed() ? 10 : 20) : 80 + ); + mSystemAccentColor = preloadColors[PRELOAD_ACCENT_COLOR_INDEX]; mSystemBackgroundColor = preloadColors[PRELOAD_BACKGROUND_COLOR_INDEX]; mIsDarkMode = isDarkMode; @@ -156,10 +190,7 @@ public class PreloadIconDrawable extends FastBitmapDrawable { protected void onBoundsChange(Rect bounds) { super.onBoundsChange(bounds); - - float progressWidth = bounds.width() * (ENABLE_DOWNLOAD_APP_UX_V2.get() - ? PROGRESS_BOUNDS_SCALE - : PROGRESS_STROKE_SCALE); + float progressWidth = bounds.width() * PROGRESS_BOUNDS_SCALE; mTmpMatrix.setScale( (bounds.width() - 2 * progressWidth) / DEFAULT_PATH_SIZE, (bounds.height() - 2 * progressWidth) / DEFAULT_PATH_SIZE); @@ -181,20 +212,32 @@ public class PreloadIconDrawable extends FastBitmapDrawable { return; } - if (!ENABLE_DOWNLOAD_APP_UX_V2.get() && mInternalStateProgress > 0) { + if (mInternalStateProgress > 0 + && (ENABLE_DOWNLOAD_APP_UX_V3.get() || !ENABLE_DOWNLOAD_APP_UX_V2.get())) { // Draw background. - mProgressPaint.setStyle(Paint.Style.FILL_AND_STROKE); - mProgressPaint.setColor(mSystemBackgroundColor); + mProgressPaint.setStyle(ENABLE_DOWNLOAD_APP_UX_V3.get() + ? Paint.Style.FILL + : Paint.Style.FILL_AND_STROKE); + mProgressPaint.setColor(ENABLE_DOWNLOAD_APP_UX_V3.get() + ? mPlateColor + : mSystemBackgroundColor); canvas.drawPath(mScaledTrackPath, mProgressPaint); } if (!ENABLE_DOWNLOAD_APP_UX_V2.get() || mInternalStateProgress > 0) { // Draw track and progress. mProgressPaint.setStyle(Paint.Style.STROKE); - mProgressPaint.setColor(mSystemAccentColor); - mProgressPaint.setAlpha(TRACK_ALPHA); + mProgressPaint.setColor(ENABLE_DOWNLOAD_APP_UX_V3.get() + ? mTrackColor + : mSystemAccentColor); + if (!ENABLE_DOWNLOAD_APP_UX_V3.get()) { + mProgressPaint.setAlpha(TRACK_ALPHA); + } canvas.drawPath(mScaledTrackPath, mProgressPaint); mProgressPaint.setAlpha(MAX_PAINT_ALPHA); + if (ENABLE_DOWNLOAD_APP_UX_V3.get()) { + mProgressPaint.setColor(mProgressColor); + } canvas.drawPath(mScaledProgressPath, mProgressPaint); } @@ -234,6 +277,10 @@ public class PreloadIconDrawable extends FastBitmapDrawable { public void maybePerformFinishedAnimation( PreloadIconDrawable oldIcon, Runnable onFinishCallback) { + mProgressColor = oldIcon.mProgressColor; + mTrackColor = oldIcon.mTrackColor; + mPlateColor = oldIcon.mPlateColor; + if (oldIcon.mInternalStateProgress >= 1) { mInternalStateProgress = oldIcon.mInternalStateProgress; } From ff8b89cea4a75e324c2f3bcfc3645e54537652a7 Mon Sep 17 00:00:00 2001 From: fbaron Date: Thu, 13 Apr 2023 14:56:10 -0700 Subject: [PATCH 19/81] Turn on flag for download app ux V3 Bug: 267272201 Test: Verify that when the flag is on the new app download animation is visible Change-Id: Ic4c5cd9678d6eb5dd9d66114e82eb9d93d48fd46 --- src/com/android/launcher3/config/FeatureFlags.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 924e800920..0c653cd7f8 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -272,7 +272,7 @@ public final class FeatureFlags { + " to have better visuals"); public static final BooleanFlag ENABLE_DOWNLOAD_APP_UX_V3 = getDebugFlag(270395186, - "ENABLE_DOWNLOAD_APP_UX_V3", DISABLED, "Updates the download app UX" + "ENABLE_DOWNLOAD_APP_UX_V3", ENABLED, "Updates the download app UX" + " to have better visuals, improve contrast, and color"); public static final BooleanFlag FORCE_PERSISTENT_TASKBAR = getDebugFlag(270395077, From 56df78ab1a1e135c3727657af8ad369d59abb3ed Mon Sep 17 00:00:00 2001 From: Pat Manning Date: Fri, 14 Apr 2023 14:14:22 +0100 Subject: [PATCH 20/81] Add feature flag for cursor hover states in Launcher. Bug: 243191650 Test: manual. Flag: ENABLE_CURSOR_HOVER_STATES Change-Id: Ibf8e62c3f3e03b9391a87af4f18f3843252c57bf --- src/com/android/launcher3/config/FeatureFlags.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 8cde18d0f4..abe3a59e74 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -400,6 +400,10 @@ public final class FeatureFlags { "Enables the ability to create and save app pairs on the Home screen for easy" + " split screen launching."); + public static final BooleanFlag ENABLE_CURSOR_HOVER_STATES = getDebugFlag(243191650, + "ENABLE_CURSOR_HOVER_STATES", DISABLED, + "Enables cursor hover states for certain elements."); + public static class BooleanFlag { private final boolean mCurrentValue; From e12d344b61999cd4e9befbd1b369b9122224c4cf Mon Sep 17 00:00:00 2001 From: Fengjiang Li Date: Fri, 14 Apr 2023 11:27:16 -0700 Subject: [PATCH 21/81] Format switch case block of TouchInteractionService so that future change is not blocked by lint Test: test launching app Bug: 278092752 Change-Id: I6d3be682d653f7378bb4c9ce4b6a1048e49386dc --- .../android/quickstep/TouchInteractionService.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java index 1cf682bffc..89920f0b03 100644 --- a/quickstep/src/com/android/quickstep/TouchInteractionService.java +++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java @@ -81,7 +81,6 @@ import com.android.launcher3.LauncherPrefs; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.anim.AnimatedFloat; -import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.provider.RestoreDbTask; import com.android.launcher3.statehandlers.DesktopVisibilityController; import com.android.launcher3.statemanager.StatefulActivity; @@ -678,7 +677,9 @@ public class TouchInteractionService extends Service if (mUncheckedConsumer != InputConsumer.NO_OP) { switch (event.getActionMasked()) { - case ACTION_DOWN, ACTION_UP -> + case ACTION_DOWN: + // fall through + case ACTION_UP: ActiveGestureLog.INSTANCE.addLog( /* event= */ "onMotionEvent(" + (int) event.getRawX() + ", " + (int) event.getRawY() + "): " @@ -687,15 +688,18 @@ public class TouchInteractionService extends Service /* gestureEvent= */ event.getActionMasked() == ACTION_DOWN ? MOTION_DOWN : MOTION_UP); - case ACTION_MOVE -> + break; + case ACTION_MOVE: ActiveGestureLog.INSTANCE.addLog("onMotionEvent: " + MotionEvent.actionToString(event.getActionMasked()) + "," + MotionEvent.classificationToString(event.getClassification()) + ", pointerCount: " + event.getPointerCount(), MOTION_MOVE); - default -> + break; + default: { ActiveGestureLog.INSTANCE.addLog("onMotionEvent: " + MotionEvent.actionToString(event.getActionMasked()) + "," + MotionEvent.classificationToString(event.getClassification())); + } } } From 89aea61bc4c73b3c1369669951777e6a12fafb62 Mon Sep 17 00:00:00 2001 From: Andrew Cole Date: Fri, 7 Apr 2023 12:09:20 -0700 Subject: [PATCH 22/81] Screen recording flakey test Adding back the screen recording on the test to see more information about what is failing Test: Manual Bug: b/258071914 Change-Id: I6114c66f3fc78e9713cd9f13fd8d8008d9921a32 --- tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java index 81f1525ee4..9d9fdc9c9f 100644 --- a/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java +++ b/tests/src/com/android/launcher3/ui/TaplTestsLauncher3.java @@ -522,6 +522,7 @@ public class TaplTestsLauncher3 extends AbstractLauncherUiTest { } @Test + @ScreenRecord // b/258071914 @PortraitLandscape public void testUninstallFromAllApps() throws Exception { installDummyAppAndWaitForUIUpdate(); From ce953a36ec7c9f3905331d51ed878d78af00f5c4 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 14 Apr 2023 14:08:37 -0700 Subject: [PATCH 23/81] Moving ModelDbController from LauncehrProvider to LauncherModel Migrating some of the class to use the controller directly, will update the remaining calls in follow up cls Bug: 277345535 Test: Presubmit Change-Id: I8edc7c43665f94702ac64bd92932d6c94cb544a4 --- .../launcher3/AppWidgetsRestoredReceiver.java | 13 +++--- src/com/android/launcher3/LauncherModel.java | 8 ++++ .../android/launcher3/LauncherProvider.java | 43 ++++++++++--------- .../android/launcher3/model/LoaderCursor.java | 3 ++ .../launcher3/model/ModelDbController.java | 19 ++++++++ .../android/launcher3/model/ModelWriter.java | 12 +++--- .../launcher3/provider/RestoreDbTask.java | 6 +-- .../android/launcher3/util/ContentWriter.java | 12 +++--- .../launcher3/util/LauncherModelHelper.java | 4 +- 9 files changed, 76 insertions(+), 44 deletions(-) diff --git a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java index e54337050d..f041ffbe6c 100644 --- a/src/com/android/launcher3/AppWidgetsRestoredReceiver.java +++ b/src/com/android/launcher3/AppWidgetsRestoredReceiver.java @@ -16,6 +16,7 @@ import androidx.annotation.NonNull; import androidx.annotation.WorkerThread; import com.android.launcher3.LauncherSettings.Favorites; +import com.android.launcher3.model.DatabaseHelper; import com.android.launcher3.model.LoaderTask; import com.android.launcher3.model.WidgetsModel; import com.android.launcher3.model.data.LauncherAppWidgetInfo; @@ -51,8 +52,8 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver { * Updates the app widgets whose id has changed during the restore process. */ @WorkerThread - public static void restoreAppWidgetIds(Context context, int[] oldWidgetIds, int[] newWidgetIds, - @NonNull AppWidgetHost host) { + public static void restoreAppWidgetIds(Context context, DatabaseHelper helper, + int[] oldWidgetIds, int[] newWidgetIds, @NonNull AppWidgetHost host) { if (WidgetsModel.GO_DISABLE_WIDGETS) { Log.e(TAG, "Skipping widget ID remap as widgets not supported"); host.deleteHost(); @@ -90,14 +91,16 @@ public class AppWidgetsRestoredReceiver extends BroadcastReceiver { String oldWidgetId = Integer.toString(oldWidgetIds[i]); final String where = "appWidgetId=? and (restored & 1) = 1 and profileId=?"; final String[] args = new String[] { oldWidgetId, Long.toString(mainProfileId) }; - int result = new ContentWriter(context, new ContentWriter.CommitParams(where, args)) + int result = new ContentWriter(context, + new ContentWriter.CommitParams(helper, where, args)) .put(LauncherSettings.Favorites.APPWIDGET_ID, newWidgetIds[i]) .put(LauncherSettings.Favorites.RESTORED, state) .commit(); if (result == 0) { - Cursor cursor = cr.query(Favorites.CONTENT_URI, + Cursor cursor = helper.getWritableDatabase().query( + Favorites.TABLE_NAME, new String[] {Favorites.APPWIDGET_ID}, - "appWidgetId=?", new String[] { oldWidgetId }, null); + "appWidgetId=?", new String[] { oldWidgetId }, null, null, null); try { if (!cursor.moveToFirst()) { // The widget no long exists. diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 06ac44a744..0e027f8478 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -50,6 +50,7 @@ import com.android.launcher3.model.CacheDataUpdatedTask; import com.android.launcher3.model.ItemInstallQueue; import com.android.launcher3.model.LauncherBinder; import com.android.launcher3.model.LoaderTask; +import com.android.launcher3.model.ModelDbController; import com.android.launcher3.model.ModelDelegate; import com.android.launcher3.model.ModelWriter; import com.android.launcher3.model.PackageIncrementalDownloadUpdatedTask; @@ -94,6 +95,8 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi @NonNull private final LauncherAppState mApp; @NonNull + private final ModelDbController mModelDbController; + @NonNull private final Object mLock = new Object(); @Nullable private LoaderTask mLoaderTask; @@ -143,6 +146,7 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi @NonNull final IconCache iconCache, @NonNull final AppFilter appFilter, final boolean isPrimaryInstance) { mApp = app; + mModelDbController = new ModelDbController(context); mBgAllAppsList = new AllAppsList(iconCache, appFilter); mModelDelegate = ModelDelegate.newInstance(context, app, mBgAllAppsList, mBgDataModel, isPrimaryInstance); @@ -153,6 +157,10 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi return mModelDelegate; } + public ModelDbController getModelDbController() { + return mModelDbController; + } + /** * Adds the provided items to the workspace. */ diff --git a/src/com/android/launcher3/LauncherProvider.java b/src/com/android/launcher3/LauncherProvider.java index d30d23ceda..0df4bd409e 100644 --- a/src/com/android/launcher3/LauncherProvider.java +++ b/src/com/android/launcher3/LauncherProvider.java @@ -50,8 +50,6 @@ public class LauncherProvider extends ContentProvider { public static final String AUTHORITY = BuildConfig.APPLICATION_ID + ".settings"; - protected ModelDbController mModelDbController; - /** * $ adb shell dumpsys activity provider com.android.launcher3 */ @@ -69,7 +67,6 @@ public class LauncherProvider extends ContentProvider { if (FeatureFlags.IS_STUDIO_BUILD) { Log.d(TAG, "Launcher process started"); } - mModelDbController = new ModelDbController(getContext()); // The content provider exists for the entire duration of the launcher main process and // is the first component to get created. @@ -77,6 +74,10 @@ public class LauncherProvider extends ContentProvider { return true; } + public ModelDbController getModelDbController() { + return LauncherAppState.getInstance(getContext()).getModel().getModelDbController(); + } + @Override public String getType(Uri uri) { SqlArguments args = new SqlArguments(uri, null, null); @@ -95,7 +96,7 @@ public class LauncherProvider extends ContentProvider { SQLiteQueryBuilder qb = new SQLiteQueryBuilder(); qb.setTables(args.table); - Cursor result = mModelDbController.query( + Cursor result = getModelDbController().query( args.table, projection, args.where, args.args, sortOrder); result.setNotificationUri(getContext().getContentResolver(), uri); return result; @@ -120,7 +121,7 @@ public class LauncherProvider extends ContentProvider { } SqlArguments args = new SqlArguments(uri); - int rowId = mModelDbController.insert(args.table, initialValues); + int rowId = getModelDbController().insert(args.table, initialValues); if (rowId < 0) return null; uri = ContentUris.withAppendedId(uri, rowId); @@ -130,7 +131,7 @@ public class LauncherProvider extends ContentProvider { private boolean initializeExternalAdd(ContentValues values) { // 1. Ensure that externally added items have a valid item id - int id = mModelDbController.generateNewItemId(); + int id = getModelDbController().generateNewItemId(); values.put(LauncherSettings.Favorites._ID, id); // 2. In the case of an app widget, and if no app widget id is specified, we @@ -171,7 +172,7 @@ public class LauncherProvider extends ContentProvider { @Override public int bulkInsert(Uri uri, ContentValues[] values) { SqlArguments args = new SqlArguments(uri); - mModelDbController.bulkInsert(args.table, values); + getModelDbController().bulkInsert(args.table, values); reloadLauncherIfExternal(); return values.length; } @@ -180,7 +181,7 @@ public class LauncherProvider extends ContentProvider { @Override public ContentProviderResult[] applyBatch(ArrayList operations) throws OperationApplicationException { - try (SQLiteTransaction t = mModelDbController.newTransaction()) { + try (SQLiteTransaction t = getModelDbController().newTransaction()) { final int numOperations = operations.size(); final ContentProviderResult[] results = new ContentProviderResult[numOperations]; for (int i = 0; i < numOperations; i++) { @@ -196,7 +197,7 @@ public class LauncherProvider extends ContentProvider { @Override public int delete(Uri uri, String selection, String[] selectionArgs) { SqlArguments args = new SqlArguments(uri, selection, selectionArgs); - int count = mModelDbController.delete(args.table, args.where, args.args); + int count = getModelDbController().delete(args.table, args.where, args.args); if (count > 0) { reloadLauncherIfExternal(); } @@ -206,7 +207,7 @@ public class LauncherProvider extends ContentProvider { @Override public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) { SqlArguments args = new SqlArguments(uri, selection, selectionArgs); - int count = mModelDbController.update(args.table, values, args.where, args.args); + int count = getModelDbController().update(args.table, values, args.where, args.args); reloadLauncherIfExternal(); return count; } @@ -219,59 +220,59 @@ public class LauncherProvider extends ContentProvider { switch (method) { case LauncherSettings.Settings.METHOD_CLEAR_EMPTY_DB_FLAG: { - mModelDbController.clearEmptyDbFlag(); + getModelDbController().clearEmptyDbFlag(); return null; } case LauncherSettings.Settings.METHOD_DELETE_EMPTY_FOLDERS: { Bundle result = new Bundle(); result.putIntArray(LauncherSettings.Settings.EXTRA_VALUE, - mModelDbController.deleteEmptyFolders().toArray()); + getModelDbController().deleteEmptyFolders().toArray()); return result; } case LauncherSettings.Settings.METHOD_NEW_ITEM_ID: { Bundle result = new Bundle(); result.putInt(LauncherSettings.Settings.EXTRA_VALUE, - mModelDbController.generateNewItemId()); + getModelDbController().generateNewItemId()); return result; } case LauncherSettings.Settings.METHOD_NEW_SCREEN_ID: { Bundle result = new Bundle(); result.putInt(LauncherSettings.Settings.EXTRA_VALUE, - mModelDbController.getNewScreenId()); + getModelDbController().getNewScreenId()); return result; } case LauncherSettings.Settings.METHOD_CREATE_EMPTY_DB: { - mModelDbController.createEmptyDB(); + getModelDbController().createEmptyDB(); return null; } case LauncherSettings.Settings.METHOD_LOAD_DEFAULT_FAVORITES: { - mModelDbController.loadDefaultFavoritesIfNecessary(); + getModelDbController().loadDefaultFavoritesIfNecessary(); return null; } case LauncherSettings.Settings.METHOD_REMOVE_GHOST_WIDGETS: { - mModelDbController.removeGhostWidgets(); + getModelDbController().removeGhostWidgets(); return null; } case LauncherSettings.Settings.METHOD_NEW_TRANSACTION: { Bundle result = new Bundle(); result.putBinder(LauncherSettings.Settings.EXTRA_VALUE, - mModelDbController.newTransaction()); + getModelDbController().newTransaction()); return result; } case LauncherSettings.Settings.METHOD_REFRESH_HOTSEAT_RESTORE_TABLE: { - mModelDbController.refreshHotseatRestoreTable(); + getModelDbController().refreshHotseatRestoreTable(); return null; } case LauncherSettings.Settings.METHOD_UPDATE_CURRENT_OPEN_HELPER: { Bundle result = new Bundle(); result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE, - mModelDbController.updateCurrentOpenHelper(arg /* dbFile */)); + getModelDbController().updateCurrentOpenHelper(arg /* dbFile */)); return result; } case LauncherSettings.Settings.METHOD_PREP_FOR_PREVIEW: { Bundle result = new Bundle(); result.putBoolean(LauncherSettings.Settings.EXTRA_VALUE, - mModelDbController.prepareForPreview(arg /* dbFile */)); + getModelDbController().prepareForPreview(arg /* dbFile */)); return result; } } diff --git a/src/com/android/launcher3/model/LoaderCursor.java b/src/com/android/launcher3/model/LoaderCursor.java index c237f5b80b..a5dccc1fab 100644 --- a/src/com/android/launcher3/model/LoaderCursor.java +++ b/src/com/android/launcher3/model/LoaderCursor.java @@ -65,6 +65,7 @@ public class LoaderCursor extends CursorWrapper { private final LongSparseArray allUsers; + private final LauncherAppState mApp; private final Uri mContentUri; private final Context mContext; private final PackageManager mPM; @@ -111,6 +112,7 @@ public class LoaderCursor extends CursorWrapper { UserManagerState userManagerState) { super(cursor); + mApp = app; allUsers = userManagerState.allUsers; mContentUri = contentUri; mContext = app.getContext(); @@ -388,6 +390,7 @@ public class LoaderCursor extends CursorWrapper { */ public ContentWriter updater() { return new ContentWriter(mContext, new ContentWriter.CommitParams( + mApp.getModel().getModelDbController().getDatabaseHelper(), BaseColumns._ID + "= ?", new String[]{Integer.toString(id)})); } diff --git a/src/com/android/launcher3/model/ModelDbController.java b/src/com/android/launcher3/model/ModelDbController.java index 9b54ce131d..97bce8c25a 100644 --- a/src/com/android/launcher3/model/ModelDbController.java +++ b/src/com/android/launcher3/model/ModelDbController.java @@ -50,6 +50,8 @@ import android.util.Base64; import android.util.Log; import android.util.Xml; +import androidx.annotation.WorkerThread; + import com.android.launcher3.AutoInstallsLayout; import com.android.launcher3.AutoInstallsLayout.SourceResources; import com.android.launcher3.DefaultLayoutParser; @@ -115,6 +117,7 @@ public class ModelDbController { /** * Refer {@link SQLiteDatabase#query} */ + @WorkerThread public Cursor query(String table, String[] projection, String selection, String[] selectionArgs, String sortOrder) { createDbIfNotExists(); @@ -131,6 +134,7 @@ public class ModelDbController { /** * Refer {@link SQLiteDatabase#insert(String, String, ContentValues)} */ + @WorkerThread public int insert(String table, ContentValues initialValues) { createDbIfNotExists(); @@ -146,6 +150,7 @@ public class ModelDbController { /** * Similar to insert but for adding multiple values in a transaction. */ + @WorkerThread public int bulkInsert(String table, ContentValues[] values) { createDbIfNotExists(); @@ -167,6 +172,7 @@ public class ModelDbController { /** * Refer {@link SQLiteDatabase#delete(String, String, String[])} */ + @WorkerThread public int delete(String table, String selection, String[] selectionArgs) { createDbIfNotExists(); SQLiteDatabase db = mOpenHelper.getWritableDatabase(); @@ -185,6 +191,7 @@ public class ModelDbController { /** * Refer {@link SQLiteDatabase#update(String, ContentValues, String, String[])} */ + @WorkerThread public int update(String table, ContentValues values, String selection, String[] selectionArgs) { createDbIfNotExists(); @@ -198,6 +205,7 @@ public class ModelDbController { /** * Clears a previously set flag corresponding to empty db creation */ + @WorkerThread public void clearEmptyDbFlag() { createDbIfNotExists(); clearFlagEmptyDbCreated(); @@ -206,6 +214,7 @@ public class ModelDbController { /** * Generates an id to be used for new item in the favorites table */ + @WorkerThread public int generateNewItemId() { createDbIfNotExists(); return mOpenHelper.generateNewItemId(); @@ -214,6 +223,7 @@ public class ModelDbController { /** * Generates an id to be used for new workspace screen */ + @WorkerThread public int getNewScreenId() { createDbIfNotExists(); return mOpenHelper.getNewScreenId(); @@ -222,6 +232,7 @@ public class ModelDbController { /** * Creates an empty DB clearing all existing data */ + @WorkerThread public void createEmptyDB() { createDbIfNotExists(); mOpenHelper.createEmptyDB(mOpenHelper.getWritableDatabase()); @@ -230,6 +241,7 @@ public class ModelDbController { /** * Removes any widget which are present in the framework, but not in out internal DB */ + @WorkerThread public void removeGhostWidgets() { createDbIfNotExists(); mOpenHelper.removeGhostWidgets(mOpenHelper.getWritableDatabase()); @@ -238,6 +250,7 @@ public class ModelDbController { /** * Returns a new {@link SQLiteTransaction} */ + @WorkerThread public SQLiteTransaction newTransaction() { createDbIfNotExists(); return new SQLiteTransaction(mOpenHelper.getWritableDatabase()); @@ -246,6 +259,7 @@ public class ModelDbController { /** * Refreshes the internal state corresponding to presence of hotseat table */ + @WorkerThread public void refreshHotseatRestoreTable() { createDbIfNotExists(); mOpenHelper.mHotseatRestoreTableExists = tableExists( @@ -256,6 +270,7 @@ public class ModelDbController { * Updates the current DB and copies all the existing data to the temp table * @param dbFile name of the target db file name */ + @WorkerThread public boolean updateCurrentOpenHelper(String dbFile) { createDbIfNotExists(); return prepForMigration( @@ -270,6 +285,7 @@ public class ModelDbController { * Returns the current DatabaseHelper. * Only for tests */ + @WorkerThread public DatabaseHelper getDatabaseHelper() { createDbIfNotExists(); return mOpenHelper; @@ -278,6 +294,7 @@ public class ModelDbController { /** * Prepares the DB for preview by copying all existing data to preview table */ + @WorkerThread public boolean prepareForPreview(String dbFile) { createDbIfNotExists(); return prepForMigration( @@ -296,6 +313,7 @@ public class ModelDbController { * Deletes any empty folder from the DB. * @return Ids of deleted folders. */ + @WorkerThread public IntArray deleteEmptyFolders() { createDbIfNotExists(); @@ -338,6 +356,7 @@ public class ModelDbController { * 3) From a partner configuration APK, already in the system image * 4) The default configuration for the particular device */ + @WorkerThread public synchronized void loadDefaultFavoritesIfNecessary() { createDbIfNotExists(); SharedPreferences sp = LauncherPrefs.getPrefs(mContext); diff --git a/src/com/android/launcher3/model/ModelWriter.java b/src/com/android/launcher3/model/ModelWriter.java index 772ffa4271..ddb8b05839 100644 --- a/src/com/android/launcher3/model/ModelWriter.java +++ b/src/com/android/launcher3/model/ModelWriter.java @@ -33,7 +33,6 @@ import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherModel; import com.android.launcher3.LauncherModel.CallbackTask; import com.android.launcher3.LauncherProvider; -import com.android.launcher3.LauncherSettings; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.LauncherSettings.Settings; import com.android.launcher3.Utilities; @@ -267,8 +266,7 @@ public class ModelWriter { item.onAddToDatabase(writer); writer.put(Favorites._ID, item.id); - cr.insert(Favorites.CONTENT_URI, writer.getValues(mContext)); - + mModel.getModelDbController().insert(Favorites.TABLE_NAME, writer.getValues(mContext)); synchronized (mBgDataModel) { checkItemInfoLocked(item.id, item, stackTrace); mBgDataModel.addItem(mContext, item, true); @@ -324,13 +322,13 @@ public class ModelWriter { notifyDelete(Collections.singleton(info)); enqueueDeleteRunnable(() -> { - ContentResolver cr = mContext.getContentResolver(); - cr.delete(LauncherSettings.Favorites.CONTENT_URI, - LauncherSettings.Favorites.CONTAINER + "=" + info.id, null); + mModel.getModelDbController().delete(Favorites.TABLE_NAME, + Favorites.CONTAINER + "=" + info.id, null); mBgDataModel.removeItem(mContext, info.contents); info.contents.clear(); - cr.delete(LauncherSettings.Favorites.getContentUri(info.id), null, null); + mModel.getModelDbController().delete(Favorites.TABLE_NAME, + Favorites._ID + "=" + info.id, null); mBgDataModel.removeItem(mContext, info); verifier.verifyModel(); }); diff --git a/src/com/android/launcher3/provider/RestoreDbTask.java b/src/com/android/launcher3/provider/RestoreDbTask.java index ba5249c144..ac7216449b 100644 --- a/src/com/android/launcher3/provider/RestoreDbTask.java +++ b/src/com/android/launcher3/provider/RestoreDbTask.java @@ -107,7 +107,7 @@ public class RestoreDbTask { try (SQLiteTransaction t = new SQLiteTransaction(db)) { RestoreDbTask task = new RestoreDbTask(); task.sanitizeDB(context, helper, db, new BackupManager(context)); - task.restoreAppWidgetIdsIfExists(context); + task.restoreAppWidgetIdsIfExists(context, helper); t.commit(); return true; } catch (Exception e) { @@ -321,11 +321,11 @@ public class RestoreDbTask { .putSync(RESTORE_DEVICE.to(new DeviceGridState(context).getDeviceType())); } - private void restoreAppWidgetIdsIfExists(Context context) { + private void restoreAppWidgetIdsIfExists(Context context, DatabaseHelper helper) { LauncherPrefs lp = LauncherPrefs.get(context); if (lp.has(APP_WIDGET_IDS, OLD_APP_WIDGET_IDS)) { AppWidgetHost host = new AppWidgetHost(context, APPWIDGET_HOST_ID); - AppWidgetsRestoredReceiver.restoreAppWidgetIds(context, + AppWidgetsRestoredReceiver.restoreAppWidgetIds(context, helper, IntArray.fromConcatString(lp.get(OLD_APP_WIDGET_IDS)).toArray(), IntArray.fromConcatString(lp.get(APP_WIDGET_IDS)).toArray(), host); diff --git a/src/com/android/launcher3/util/ContentWriter.java b/src/com/android/launcher3/util/ContentWriter.java index 55c2585f4a..e509235688 100644 --- a/src/com/android/launcher3/util/ContentWriter.java +++ b/src/com/android/launcher3/util/ContentWriter.java @@ -19,13 +19,14 @@ package com.android.launcher3.util; import android.content.ContentValues; import android.content.Context; import android.content.Intent; -import android.net.Uri; import android.os.UserHandle; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; +import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.icons.BitmapInfo; import com.android.launcher3.icons.GraphicsUtils; +import com.android.launcher3.model.DatabaseHelper; import com.android.launcher3.pm.UserCache; /** @@ -105,7 +106,8 @@ public class ContentWriter { public int commit() { if (mCommitParams != null) { - return mContext.getContentResolver().update(mCommitParams.mUri, getValues(mContext), + mCommitParams.mDatabaseHelper.getWritableDatabase().update( + Favorites.TABLE_NAME, getValues(mContext), mCommitParams.mWhere, mCommitParams.mSelectionArgs); } return 0; @@ -113,12 +115,12 @@ public class ContentWriter { public static final class CommitParams { - final Uri mUri; + final DatabaseHelper mDatabaseHelper; final String mWhere; final String[] mSelectionArgs; - public CommitParams(String where, String[] selectionArgs) { - mUri = LauncherSettings.Favorites.CONTENT_URI; + public CommitParams(DatabaseHelper helper, String where, String[] selectionArgs) { + mDatabaseHelper = helper; mWhere = where; mSelectionArgs = selectionArgs; } diff --git a/tests/src/com/android/launcher3/util/LauncherModelHelper.java b/tests/src/com/android/launcher3/util/LauncherModelHelper.java index 9e88c06a9c..bf31e39ccc 100644 --- a/tests/src/com/android/launcher3/util/LauncherModelHelper.java +++ b/tests/src/com/android/launcher3/util/LauncherModelHelper.java @@ -62,7 +62,6 @@ import com.android.launcher3.model.AllAppsList; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.BgDataModel.Callbacks; import com.android.launcher3.model.ItemInstallQueue; -import com.android.launcher3.model.ModelDbController; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.pm.InstallSessionHelper; @@ -423,12 +422,11 @@ public class LauncherModelHelper { @Override public boolean onCreate() { - mModelDbController = new ModelDbController(getContext()); return true; } public SQLiteDatabase getDb() { - return mModelDbController.getDatabaseHelper().getWritableDatabase(); + return getModelDbController().getDatabaseHelper().getWritableDatabase(); } } From 282f0935333c0c86c4a06b1389fdd4653f676d90 Mon Sep 17 00:00:00 2001 From: Jagrut Desai Date: Fri, 14 Apr 2023 16:08:52 -0700 Subject: [PATCH 24/81] Refactoring instance variable for ArrowPopup.java refactoring naming for instance variables to be more in sync with java codestyle Test: presubmit Bug: 278291850 Flag: not needed Change-Id: I24eb1433941b44404871b305acf0d2d145662080 --- .../quickstep/views/TaskMenuViewWithArrow.kt | 12 ++--- .../android/launcher3/popup/ArrowPopup.java | 44 +++++++++---------- 2 files changed, 28 insertions(+), 28 deletions(-) diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt index 428bd95159..8ee0fbb671 100644 --- a/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt +++ b/quickstep/src/com/android/quickstep/views/TaskMenuViewWithArrow.kt @@ -77,10 +77,10 @@ class TaskMenuViewWithArrow : ArrowPopup { shouldScaleArrow = true mIsArrowRotated = true // This synchronizes the arrow and menu to open at the same time - OPEN_CHILD_FADE_START_DELAY = OPEN_FADE_START_DELAY - OPEN_CHILD_FADE_DURATION = OPEN_FADE_DURATION - CLOSE_FADE_START_DELAY = CLOSE_CHILD_FADE_START_DELAY - CLOSE_FADE_DURATION = CLOSE_CHILD_FADE_DURATION + mOpenChildFadeStartDelay = mOpenFadeStartDelay + mOpenChildFadeDuration = mOpenFadeDuration + mCloseFadeStartDelay = mCloseChildFadeStartDelay + mCloseFadeDuration = mCloseChildFadeDuration } private var alignedOptionIndex: Int = 0 @@ -213,7 +213,7 @@ class TaskMenuViewWithArrow : ArrowPopup { scrim?.let { anim.play( ObjectAnimator.ofFloat(it, View.ALPHA, 0f, scrimAlpha) - .setDuration(OPEN_DURATION.toLong()) + .setDuration(mOpenDuration.toLong()) ) } } @@ -222,7 +222,7 @@ class TaskMenuViewWithArrow : ArrowPopup { scrim?.let { anim.play( ObjectAnimator.ofFloat(it, View.ALPHA, scrimAlpha, 0f) - .setDuration(CLOSE_DURATION.toLong()) + .setDuration(mCloseDuration.toLong()) ) } } diff --git a/src/com/android/launcher3/popup/ArrowPopup.java b/src/com/android/launcher3/popup/ArrowPopup.java index 5b493c2a65..b59b37aebf 100644 --- a/src/com/android/launcher3/popup/ArrowPopup.java +++ b/src/com/android/launcher3/popup/ArrowPopup.java @@ -70,17 +70,17 @@ public abstract class ArrowPopup extends AbstractFloatingView { // Duration values (ms) for popup open and close animations. - protected int OPEN_DURATION = 276; - protected int OPEN_FADE_START_DELAY = 0; - protected int OPEN_FADE_DURATION = 38; - protected int OPEN_CHILD_FADE_START_DELAY = 38; - protected int OPEN_CHILD_FADE_DURATION = 76; + protected int mOpenDuration = 276; + protected int mOpenFadeStartDelay = 0; + protected int mOpenFadeDuration = 38; + protected int mOpenChildFadeStartDelay = 38; + protected int mOpenChildFadeDuration = 76; - protected int CLOSE_DURATION = 200; - protected int CLOSE_FADE_START_DELAY = 140; - protected int CLOSE_FADE_DURATION = 50; - protected int CLOSE_CHILD_FADE_START_DELAY = 0; - protected int CLOSE_CHILD_FADE_DURATION = 140; + protected int mCloseDuration = 200; + protected int mCloseFadeStartDelay = 140; + protected int mCloseFadeDuration = 50; + protected int mCloseChildFadeStartDelay = 0; + protected int mCloseChildFadeDuration = 140; private static final int OPEN_DURATION_U = 200; private static final int OPEN_FADE_START_DELAY_U = 0; @@ -583,11 +583,11 @@ public abstract class ArrowPopup EMPHASIZED_DECELERATE) : getOpenCloseAnimator( true, - OPEN_DURATION, - OPEN_FADE_START_DELAY, - OPEN_FADE_DURATION, - OPEN_CHILD_FADE_START_DELAY, - OPEN_CHILD_FADE_DURATION, + mOpenDuration, + mOpenFadeStartDelay, + mOpenFadeDuration, + mOpenChildFadeStartDelay, + mOpenChildFadeDuration, DECELERATED_EASE); onCreateOpenAnimation(mOpenCloseAnimator); @@ -672,8 +672,8 @@ public abstract class ArrowPopup } mIsOpen = false; - mOpenCloseAnimator = getOpenCloseAnimator(false, CLOSE_DURATION, CLOSE_FADE_START_DELAY, - CLOSE_FADE_DURATION, CLOSE_CHILD_FADE_START_DELAY, CLOSE_CHILD_FADE_DURATION, + mOpenCloseAnimator = getOpenCloseAnimator(false, mCloseDuration, mCloseFadeStartDelay, + mCloseFadeDuration, mCloseChildFadeStartDelay, mCloseChildFadeDuration, ACCELERATED_EASE); mOpenCloseAnimator = ENABLE_MATERIAL_U_POPUP.get() @@ -686,11 +686,11 @@ public abstract class ArrowPopup CLOSE_CHILD_FADE_DURATION_U, EMPHASIZED_ACCELERATE) : getOpenCloseAnimator(false, - CLOSE_DURATION, - CLOSE_FADE_START_DELAY, - CLOSE_FADE_DURATION, - CLOSE_CHILD_FADE_START_DELAY, - CLOSE_CHILD_FADE_DURATION, + mCloseDuration, + mCloseFadeStartDelay, + mCloseFadeDuration, + mCloseChildFadeStartDelay, + mCloseChildFadeDuration, ACCELERATED_EASE); onCreateCloseAnimation(mOpenCloseAnimator); From 28ad76fb6472e706a2c5addec3482d01da84c72b Mon Sep 17 00:00:00 2001 From: fbaron Date: Fri, 14 Apr 2023 16:41:28 -0700 Subject: [PATCH 25/81] Fix progress and plate width for download app It looks like the plate width wasn't quite right as it's supposed to be half the width of the progress bar width. This should fix that. Bug: 267272201 Test: Verify that the download app ux matches spec in bug Change-Id: Ifbcb1e2d31cd8d9c20a69e8c64104198563f7cf9 --- src/com/android/launcher3/graphics/PreloadIconDrawable.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/graphics/PreloadIconDrawable.java b/src/com/android/launcher3/graphics/PreloadIconDrawable.java index b569fc334d..d366c4ae0d 100644 --- a/src/com/android/launcher3/graphics/PreloadIconDrawable.java +++ b/src/com/android/launcher3/graphics/PreloadIconDrawable.java @@ -78,9 +78,9 @@ public class PreloadIconDrawable extends FastBitmapDrawable { private static final float SMALL_SCALE = ENABLE_DOWNLOAD_APP_UX_V3.get() ? 0.8f : 0.7f; private static final float PROGRESS_STROKE_SCALE = ENABLE_DOWNLOAD_APP_UX_V2.get() - ? 0.06666667f + ? 0.055f : 0.075f; - private static final float PROGRESS_BOUNDS_SCALE = 0.08f; + private static final float PROGRESS_BOUNDS_SCALE = 0.075f; private static final int PRELOAD_ACCENT_COLOR_INDEX = 0; private static final int PRELOAD_BACKGROUND_COLOR_INDEX = 1; From 5285763d99ee07b041768d2db652dc91aed1382d Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Mon, 27 Mar 2023 11:16:29 -0700 Subject: [PATCH 26/81] Update the All set page lottie animation to use dynamic colors Flag: not needed Fixes: 263088674 Test: Launched the All set page on handheld, foldable and tablet Change-Id: I5c742985c3fcce32742553f0ab5d237c1a77f991 --- quickstep/res/color/all_set_bg_primary.xml | 19 ++++ quickstep/res/color/all_set_bg_tertiary.xml | 19 ++++ quickstep/res/raw-land/all_set_page_bg.json | 1 + .../res/raw-sw600dp-land/all_set_page_bg.json | 2 +- .../res/raw-sw600dp/all_set_page_bg.json | 2 +- .../res/raw-sw720dp-land/all_set_page_bg.json | 1 + .../res/raw-sw720dp/all_set_page_bg.json | 1 + quickstep/res/raw/all_set_page_bg.json | 2 +- .../taskbar/TaskbarEduTooltipController.kt | 13 +-- .../quickstep/interaction/AllSetActivity.java | 20 ++++- .../util/LottieAnimationColorUtils.java | 90 +++++++++++++++++++ 11 files changed, 153 insertions(+), 17 deletions(-) create mode 100644 quickstep/res/color/all_set_bg_primary.xml create mode 100644 quickstep/res/color/all_set_bg_tertiary.xml create mode 100644 quickstep/res/raw-land/all_set_page_bg.json create mode 100644 quickstep/res/raw-sw720dp-land/all_set_page_bg.json create mode 100644 quickstep/res/raw-sw720dp/all_set_page_bg.json create mode 100644 quickstep/src/com/android/quickstep/util/LottieAnimationColorUtils.java diff --git a/quickstep/res/color/all_set_bg_primary.xml b/quickstep/res/color/all_set_bg_primary.xml new file mode 100644 index 0000000000..4cf857d0e6 --- /dev/null +++ b/quickstep/res/color/all_set_bg_primary.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/quickstep/res/color/all_set_bg_tertiary.xml b/quickstep/res/color/all_set_bg_tertiary.xml new file mode 100644 index 0000000000..e62b094971 --- /dev/null +++ b/quickstep/res/color/all_set_bg_tertiary.xml @@ -0,0 +1,19 @@ + + + + + diff --git a/quickstep/res/raw-land/all_set_page_bg.json b/quickstep/res/raw-land/all_set_page_bg.json new file mode 100644 index 0000000000..9e94c47a63 --- /dev/null +++ b/quickstep/res/raw-land/all_set_page_bg.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":796,"h":412,"nm":"SUW_Welcome_Handheld_Landscape_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-55]},{"t":180,"s":[0]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.942},"o":{"x":0.167,"y":0.167},"t":0,"s":[700.266,85.857,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.043},"t":95,"s":[700.266,-103.727,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[700.266,85.857,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[-18.2,18.2,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[10.989],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[10.989],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.047]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[-0.035]},"t":95,"s":[-67]},{"t":180,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.073]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[319.023]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[-0.054]},"t":95,"s":[388.573]},{"t":180,"s":[319.023]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.927]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[565.531]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.773],"y":[0.054]},"t":95,"s":[482.331]},{"t":180,"s":[565.531]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[65,65,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[1193.125,1815.766],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":2,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[398,206,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[2472,5352],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"Rectangle Path 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"st","c":{"a":0,"k":[0.125489994124,0.1294119891,0.141176006841,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Rectangle 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/quickstep/res/raw-sw600dp-land/all_set_page_bg.json b/quickstep/res/raw-sw600dp-land/all_set_page_bg.json index f53128cbdf..63b64da7fa 100644 --- a/quickstep/res/raw-sw600dp-land/all_set_page_bg.json +++ b/quickstep/res/raw-sw600dp-land/all_set_page_bg.json @@ -1 +1 @@ -{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":1280,"h":800,"nm":"3Second_MainWelcomeScreen_Tablet_Landscape_V02","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,540,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"F4BA9E","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[375.832,-1006.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[375.832,-1811,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[375.832,-1006.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[110,110,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"C0C9C0","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[75]},{"t":180,"s":[57]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2618]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[2442]},{"t":180,"s":[2618]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[891]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[694]},{"t":180,"s":[891]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":841,"h":701,"nm":"SUW_WelcomeScreen_FoldableOpen_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[55]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.939},"o":{"x":0.167,"y":0.167},"t":0,"s":[140.975,228.318,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.045},"t":95,"s":[140.975,47.65,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[140.975,228.318,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[18,18,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[11.111],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[11.111],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.619]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.263]},"t":95,"s":[82]},{"t":180,"s":[67]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.913]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[639]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.06]},"t":95,"s":[704]},{"t":180,"s":[639]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.12]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[527.25]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.083]},"t":95,"s":[471]},{"t":180,"s":[527.25]}],"ix":4}},"a":{"k":[{"s":[164.438,1433.781,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[164.438,1433.781,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[-25,25,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2361.125,4541.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"k":[{"s":[6],"t":0,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}},{"s":[6],"t":180,"i":{"x":[1],"y":[1]},"o":{"x":[0],"y":[0]}}]},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[420.5,350.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[420.5,-350.5],[-420.5,-350.5],[-420.5,350.5],[420.5,350.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/quickstep/res/raw-sw600dp/all_set_page_bg.json b/quickstep/res/raw-sw600dp/all_set_page_bg.json index b2dd530551..f2998a038a 100644 --- a/quickstep/res/raw-sw600dp/all_set_page_bg.json +++ b/quickstep/res/raw-sw600dp/all_set_page_bg.json @@ -1 +1 @@ -{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":800,"h":1280,"nm":"3Second_MainWelcomeScreen_Tablet_Portrait_V02","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,528,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"F4BA9E","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[999.832,-2238.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[999.832,-3043,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[999.832,-2238.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[200,200,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"C0C9C0","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-39]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[-21]},{"t":180,"s":[-39]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1490]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[1314]},{"t":180,"s":[1490]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2967]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[2770]},{"t":180,"s":[2967]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[168,168,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"5.8.1","fr":60,"ip":0,"op":181,"w":701,"h":841,"nm":"SUW_WelcomeScreen_FoldableOpen_Portrait_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[55]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.949},"o":{"x":0.167,"y":0.167},"t":0,"s":[181.172,148.425,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.038},"t":95,"s":[181.172,-68.377,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[181.172,148.425,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[21.6,21.6,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[100.594,-128.921],[118.85,-93.491],[148.984,-67.406],[148.684,-27.55],[163.244,9.552],[144.457,44.702],[140.106,84.321],[107.136,106.715],[84.872,139.773],[45.271,144.279],[10.194,163.205],[-26.964,148.792],[-66.818,149.249],[-93.023,119.218],[-128.524,101.101],[-137.771,62.332],[-160.786,29.793],[-150.957,-8.833],[-156.215,-48.341],[-129.561,-77.974],[-115.856,-115.401],[-78.484,-129.253],[-48.956,-156.023],[-9.427,-150.921],[29.159,-160.903],[61.789,-138.015]],"o":[[-100.594,128.921],[-118.85,93.491],[-148.984,67.406],[-148.684,27.55],[-163.244,-9.552],[-144.456,-44.702],[-140.106,-84.321],[-107.136,-106.715],[-84.872,-139.773],[-45.271,-144.279],[-10.194,-163.205],[26.964,-148.792],[66.818,-149.249],[93.023,-119.218],[128.524,-101.101],[137.771,-62.332],[160.786,-29.793],[150.957,8.833],[156.215,48.341],[129.561,77.974],[115.856,115.4],[78.484,129.253],[48.956,156.023],[9.427,150.921],[-29.159,160.903],[-61.789,138.015]],"v":[[975.226,761.299],[707.165,899.424],[509.8,1127.42],[208.253,1125.148],[-72.46,1235.308],[-338.41,1093.162],[-638.164,1060.25],[-807.592,810.792],[-1057.715,642.348],[-1091.808,342.727],[-1235.002,77.338],[-1125.948,-203.807],[-1129.407,-505.342],[-902.191,-703.604],[-765.123,-972.207],[-471.796,-1042.166],[-225.603,-1216.305],[66.637,-1141.935],[365.557,-1181.715],[589.761,-980.053],[872.928,-876.361],[977.734,-593.606],[1180.277,-370.197],[1141.675,-71.124],[1217.196,220.821],[1044.029,467.699]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[1,0.713725490196,0.556862745098,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":9.3,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.619]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[67]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.263]},"t":95,"s":[82]},{"t":180,"s":[67]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[0.927]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[458.803]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[-0.05]},"t":95,"s":[536.803]},{"t":180,"s":[458.803]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.1]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[707.143]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.069]},"t":95,"s":[639.643]},{"t":180,"s":[707.143]}],"ix":4}},"a":{"k":[{"s":[164.438,1433.781,0],"t":0,"i":{"x":1,"y":1},"o":{"x":0,"y":0}},{"s":[164.438,1433.781,0],"t":180,"i":{"x":1,"y":1},"o":{"x":0,"y":0}}],"l":2},"s":{"a":0,"k":[-30,30,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[2361.125,4541.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":1,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.901960784314,0.764705882353,0.423529411765,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":5,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false}],"ip":0,"op":181,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".black","cl":"black","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":90,"ix":10},"p":{"a":0,"k":[350.5,420.5,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[420.5,-350.5],[-420.5,-350.5],[-420.5,350.5],[420.5,350.5]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0,0,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Vector","np":2,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":181,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/quickstep/res/raw-sw720dp-land/all_set_page_bg.json b/quickstep/res/raw-sw720dp-land/all_set_page_bg.json new file mode 100644 index 0000000000..a994b0f658 --- /dev/null +++ b/quickstep/res/raw-sw720dp-land/all_set_page_bg.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":1280,"h":800,"nm":"SUW_WelcomeScreen_Tablet_Landscape_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,540,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[375.832,-1006.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[375.832,-1811,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[375.832,-1006.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[110,110,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[57]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[75]},{"t":180,"s":[57]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2618]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[2442]},{"t":180,"s":[2618]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[891]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[694]},{"t":180,"s":[891]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[120,120,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/quickstep/res/raw-sw720dp/all_set_page_bg.json b/quickstep/res/raw-sw720dp/all_set_page_bg.json new file mode 100644 index 0000000000..1030ffa543 --- /dev/null +++ b/quickstep/res/raw-sw720dp/all_set_page_bg.json @@ -0,0 +1 @@ +{"v":"5.8.1","fr":60,"ip":0,"op":180,"w":800,"h":1280,"nm":"SUW_WelcomeScreen_Tablet_Portrait_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 5","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[288,528,0],"ix":2,"l":2},"a":{"a":0,"k":[50,50,0],"ix":1,"l":2},"s":{"a":0,"k":[25,25,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":600,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":180,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[999.832,-2238.545,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":95,"s":[999.832,-3043,0],"to":[0,0,0],"ti":[0,0,0]},{"t":180,"s":[999.832,-2238.545,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[200,200,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.956862745098,0.729411764706,0.619607843137,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","parent":1,"sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-39]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":95,"s":[-21]},{"t":180,"s":[-39]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1490]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":95,"s":[1314]},{"t":180,"s":[1490]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[2967]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":95,"s":[2770]},{"t":180,"s":[2967]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[168,168,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.752941176471,0.788235294118,0.752941176471,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":10,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":600,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/quickstep/res/raw/all_set_page_bg.json b/quickstep/res/raw/all_set_page_bg.json index 859d3567a2..4ae179dba5 100644 --- a/quickstep/res/raw/all_set_page_bg.json +++ b/quickstep/res/raw/all_set_page_bg.json @@ -1 +1 @@ -{"v":"5.7.8","fr":24,"ip":0,"op":72,"w":2472,"h":5352,"nm":"3Second_MAIN_Welcome","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 60","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1508,1364,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"PinkFlower","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":72,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[1505.832,1379.455,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":38,"s":[1505.832,575,0],"to":[0,0,0],"ti":[0,0,0]},{"t":72,"s":[1505.832,1379.455,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.839215686275,0.439215686275,0.388235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.839215746113,0.439215716194,0.388235324037,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":288,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"Ellipse_Bottom","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":38,"s":[-38]},{"t":72,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1720]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":38,"s":[1544]},{"t":72,"s":[1720]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[4069]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":38,"s":[3872]},{"t":72,"s":[4069]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.305882352941,0.309803921569,0.321568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"fl","c":{"a":0,"k":[0.882353001015,0.894118006089,0.886274988511,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"Fill 1","mn":"ADBE Vector Graphic - Fill","hd":true},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}],"markers":[]} \ No newline at end of file +{"v":"5.8.1","fr":24,"ip":0,"op":72,"w":2472,"h":5352,"nm":"SUW_Welcome_Handheld_Dynamic","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":1,"ty":3,"nm":"Null 60","sr":1,"ks":{"o":{"a":0,"k":0,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[1508,1364,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":".primary","cl":"primary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0]},{"t":72,"s":[56]}],"ix":10},"p":{"a":1,"k":[{"i":{"x":0.07,"y":0.986},"o":{"x":0.167,"y":0.167},"t":0,"s":[1505.832,1379.455,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.833,"y":0.833},"o":{"x":0.773,"y":0.01},"t":38,"s":[1505.832,575,0],"to":[0,0,0],"ti":[0,0,0]},{"t":72,"s":[1505.832,1379.455,0]}],"ix":2,"l":2},"a":{"a":0,"k":[-3514.717,-358.642,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[75.615,-96.908],[89.338,-70.276],[111.99,-50.668],[111.764,-20.709],[122.709,7.18],[108.586,33.602],[105.316,63.383],[80.533,80.216],[63.797,105.066],[34.03,108.453],[7.663,122.679],[-20.269,111.845],[-50.226,112.189],[-69.924,89.614],[-96.61,75.997],[-103.56,46.854],[-120.861,22.395],[-113.472,-6.639],[-117.425,-36.337],[-97.389,-58.612],[-87.087,-86.745],[-58.996,-97.158],[-36.8,-117.281],[-7.086,-113.445],[21.918,-120.948],[46.446,-103.744]],"o":[[-75.615,96.909],[-89.338,70.276],[-111.99,50.668],[-111.764,20.709],[-122.709,-7.18],[-108.586,-33.602],[-105.316,-63.383],[-80.533,-80.216],[-63.797,-105.066],[-34.03,-108.453],[-7.663,-122.679],[20.269,-111.845],[50.226,-112.188],[69.924,-89.614],[96.61,-75.997],[103.56,-46.854],[120.861,-22.395],[113.472,6.64],[117.425,36.337],[97.389,58.612],[87.088,86.745],[58.995,97.158],[36.8,117.281],[7.087,113.445],[-21.918,120.948],[-46.446,103.744]],"v":[[733.209,572.105],[531.711,675.932],[383.354,847.313],[156.685,845.606],[-54.323,928.412],[-254.235,821.562],[-479.555,796.823],[-606.913,609.309],[-794.927,482.691],[-820.554,257.47],[-928.191,57.981],[-846.217,-153.353],[-848.817,-380.013],[-678.021,-529.044],[-574.99,-730.949],[-354.499,-783.537],[-169.439,-914.435],[50.234,-858.532],[274.928,-888.434],[443.46,-736.847],[656.313,-658.903],[735.094,-446.359],[887.344,-278.426],[858.327,-53.616],[915.095,165.835],[784.928,351.409]],"c":true},"ix":2},"nm":"Path 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.839215686275,0.439215686275,0.388235294118,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-3509.952,-363.731],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Polystar 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":288,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":".tertiary","cl":"tertiary","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.248]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[-56]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.172]},"t":38,"s":[-38]},{"t":72,"s":[-56]}],"ix":10},"p":{"s":true,"x":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.032]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[1720]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.022]},"t":38,"s":[1544]},{"t":72,"s":[1720]}],"ix":3},"y":{"a":1,"k":[{"i":{"x":[0.07],"y":[1.034]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[4069]},{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.719],"y":[0.024]},"t":38,"s":[3872]},{"t":72,"s":[4069]}],"ix":4}},"a":{"a":0,"k":[164.438,1433.781,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[3079.125,4685.989],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"Ellipse Path 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.305882352941,0.309803921569,0.321568627451,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"Stroke 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[164.438,1481.781],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"Transform"}],"nm":"Ellipse 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":240,"st":0,"bm":0}],"markers":[]} \ No newline at end of file diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt index 22ed28472e..4149e74605 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarEduTooltipController.kt @@ -15,8 +15,6 @@ */ 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 @@ -27,8 +25,6 @@ import android.view.accessibility.AccessibilityNodeInfo import androidx.annotation.IntDef import androidx.annotation.LayoutRes import com.airbnb.lottie.LottieAnimationView -import com.airbnb.lottie.LottieProperty.COLOR_FILTER -import com.airbnb.lottie.model.KeyPath import com.android.launcher3.R import com.android.launcher3.Utilities import com.android.launcher3.config.FeatureFlags.ENABLE_TASKBAR_EDU_TOOLTIP @@ -36,6 +32,7 @@ import com.android.launcher3.taskbar.TaskbarAutohideSuspendController.FLAG_AUTOH import com.android.launcher3.taskbar.TaskbarControllers.LoggableTaskbarController import com.android.launcher3.util.DisplayController import com.android.launcher3.util.OnboardingPrefs.TASKBAR_EDU_TOOLTIP_STEP +import com.android.quickstep.util.LottieAnimationColorUtils import java.io.PrintWriter /** First EDU step for swiping up to show transient Taskbar. */ @@ -240,11 +237,5 @@ private fun LottieAnimationView.supportLightTheme() { return } - addLottieOnCompositionLoadedListener { - DARK_TO_LIGHT_COLORS.forEach { (key, color) -> - addValueCallback(KeyPath("**", key, "**"), COLOR_FILTER) { - PorterDuffColorFilter(context.getColor(color), SRC_ATOP) - } - } - } + LottieAnimationColorUtils.updateColors(this, DARK_TO_LIGHT_COLORS, context.theme) } diff --git a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java index 79971de0e8..8274a51ff7 100644 --- a/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java +++ b/quickstep/src/com/android/quickstep/interaction/AllSetActivity.java @@ -26,6 +26,7 @@ import android.app.Activity; import android.content.Context; import android.content.Intent; import android.content.res.Configuration; +import android.content.res.Resources; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.ColorFilter; @@ -63,11 +64,13 @@ import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.util.Executors; import com.android.quickstep.GestureState; import com.android.quickstep.TouchInteractionService.TISBinder; +import com.android.quickstep.util.LottieAnimationColorUtils; import com.android.quickstep.util.TISBindHelper; import com.airbnb.lottie.LottieAnimationView; import java.net.URISyntaxException; +import java.util.Map; /** * A page shows after SUW flow to hint users to swipe up from the bottom of the screen to go home @@ -82,6 +85,9 @@ public class AllSetActivity extends Activity { private static final String EXTRA_ACCENT_COLOR_LIGHT_MODE = "suwColorAccentLight"; private static final String EXTRA_DEVICE_NAME = "suwDeviceName"; + private static final String LOTTIE_PRIMARY_COLOR_TOKEN = ".primary"; + private static final String LOTTIE_TERTIARY_COLOR_TOKEN = ".tertiary"; + private static final float HINT_BOTTOM_FACTOR = 1 - .94f; private static final int MAX_SWIPE_DURATION = 350; @@ -114,7 +120,8 @@ public class AllSetActivity extends Activity { | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); - int mode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; + Resources resources = getResources(); + int mode = resources.getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; boolean isDarkTheme = mode == Configuration.UI_MODE_NIGHT_YES; Intent intent = getIntent(); int accentColor = intent.getIntExtra( @@ -126,7 +133,7 @@ public class AllSetActivity extends Activity { mBackground = new BgDrawable(this); findViewById(R.id.root_view).setBackground(mBackground); mContentView = findViewById(R.id.content_view); - mSwipeUpShift = getResources().getDimension(R.dimen.allset_swipe_up_shift); + mSwipeUpShift = resources.getDimension(R.dimen.allset_swipe_up_shift); TextView subtitle = findViewById(R.id.subtitle); String suwDeviceName = intent.getStringExtra(EXTRA_DEVICE_NAME); @@ -188,8 +195,15 @@ public class AllSetActivity extends Activity { // There's a bug in the currently used external Lottie library (v5.2.0), and it doesn't load // the correct animation from the raw resources when configuration changes, so we need to // manually load the resource and pass it to Lottie. - mAnimatedBackground.setAnimation(getResources().openRawResource(R.raw.all_set_page_bg), + mAnimatedBackground.setAnimation(resources.openRawResource(R.raw.all_set_page_bg), null); + + LottieAnimationColorUtils.updateColors( + mAnimatedBackground, + Map.of(LOTTIE_PRIMARY_COLOR_TOKEN, R.color.all_set_bg_primary, + LOTTIE_TERTIARY_COLOR_TOKEN, R.color.all_set_bg_tertiary), + getTheme()); + startBackgroundAnimation(); } diff --git a/quickstep/src/com/android/quickstep/util/LottieAnimationColorUtils.java b/quickstep/src/com/android/quickstep/util/LottieAnimationColorUtils.java new file mode 100644 index 0000000000..f98b04bf54 --- /dev/null +++ b/quickstep/src/com/android/quickstep/util/LottieAnimationColorUtils.java @@ -0,0 +1,90 @@ +/* + * Copyright (C) 2023 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.android.quickstep.util; + +import static com.airbnb.lottie.LottieProperty.COLOR_FILTER; + +import android.content.res.Resources; +import android.content.res.Resources.Theme; +import android.graphics.PorterDuff; +import android.graphics.PorterDuffColorFilter; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; + +import com.airbnb.lottie.LottieAnimationView; +import com.airbnb.lottie.model.KeyPath; + +import java.util.Map; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** Utility class for programmatically updating Lottie animation tokenized colors. */ +public final class LottieAnimationColorUtils { + + private LottieAnimationColorUtils() {} + + /** + * Updates the given Lottie animation's tokenized colors according to the given mapping. + *

+ * Use this method signature only when {@code tokenToColorCodeMap} maps to packed ARBG color + * integers. + *

+ * @param animationView {@link LottieAnimationView} whose animation's colors need to be updated + * @param tokenToColorCodeMap A mapping from the color tokens used in the Lottie file used in + * {@code animationView} to packed ARBG color integers. + */ + public static void updateColors( + @NonNull LottieAnimationView animationView, + @NonNull Map tokenToColorCodeMap) { + updateColors(animationView, tokenToColorCodeMap, null); + } + + /** + * Updates the given Lottie animation's tokenized colors according to the given mapping. + *

+ * Use this method signature with a non-null theme only when {@code tokenToColorCodeMap} maps + * to color resource references. + *

+ * @param animationView {@link LottieAnimationView} whose animation's colors need to be updated + * @param tokenToColorCodeMap A mapping from the color tokens used in the Lottie file used in + * {@code animationView} to packed ARBG color integers or color + * resource references. + * @param theme {@link Theme} to be used when resolving color resource references. {@code null} + * iff {@code tokenToColorCodeMap} maps to packed ARBG color integers. + */ + public static void updateColors( + @NonNull LottieAnimationView animationView, + @NonNull Map tokenToColorCodeMap, + @Nullable Theme theme) { + Resources resources = animationView.getResources(); + final Map tokenToColorMap = theme == null + // tokenToColorCodeMap maps directly to ARBG values + ? tokenToColorCodeMap + // tokenToColorCodeMap maps to color references, build a mapping to resolved colors + : tokenToColorCodeMap.keySet().stream().collect(Collectors.toMap( + Function.identity(), + token -> resources.getColor(tokenToColorCodeMap.get(token), theme))); + + animationView.addLottieOnCompositionLoadedListener( + composition -> tokenToColorMap.forEach( + (token, color) -> animationView.addValueCallback( + new KeyPath("**", token, "**"), + COLOR_FILTER, + frameInfo -> new PorterDuffColorFilter( + color, PorterDuff.Mode.SRC_ATOP)))); + } +} From 01be7eeb5733c1a0b54aa7700644d24ccc471752 Mon Sep 17 00:00:00 2001 From: Brian Isganitis Date: Mon, 17 Apr 2023 18:15:05 +0000 Subject: [PATCH 27/81] Properly compute scroll for Taskbar All Apps. It was hooked up to Launcher All Apps scroll, which is a separate instance from Taskbar. Test: atest WMShellFlickerTests Fix: 270770472 Change-Id: I14b11c8b5f1143886dd5976a12bba9e4ee66aa96 --- .../android/launcher3/taskbar/TaskbarActivityContext.java | 5 +++++ .../taskbar/allapps/TaskbarAllAppsController.java | 7 ++++++- .../android/quickstep/QuickstepTestInformationHandler.java | 7 +++++++ .../com/android/launcher3/testing/shared/TestProtocol.java | 1 + tests/tapl/com/android/launcher3/tapl/AllApps.java | 5 +---- .../com/android/launcher3/tapl/AllAppsFromTaskbar.java | 6 ++++++ tests/tapl/com/android/launcher3/tapl/HomeAllApps.java | 6 ++++++ 7 files changed, 32 insertions(+), 5 deletions(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java index c48d06252c..f9dd10c3b0 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java @@ -1122,4 +1122,9 @@ public class TaskbarActivityContext extends BaseTaskbarContext { public int getTaskbarAllAppsTopPadding() { return mControllers.taskbarAllAppsController.getTaskbarAllAppsTopPadding(); } + + @VisibleForTesting + public int getTaskbarAllAppsScroll() { + return mControllers.taskbarAllAppsController.getTaskbarAllAppsScroll(); + } } diff --git a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java index 4a95a8f718..31d392cb7b 100644 --- a/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java +++ b/quickstep/src/com/android/launcher3/taskbar/allapps/TaskbarAllAppsController.java @@ -135,10 +135,15 @@ public final class TaskbarAllAppsController { overlayContext.getDragController().setDisallowLongClick(mDisallowLongClick); } - @VisibleForTesting public int getTaskbarAllAppsTopPadding() { // Allow null-pointer since this should only be null if the apps view is not showing. return mAppsView.getActiveRecyclerView().getClipBounds().top; } + + @VisibleForTesting + public int getTaskbarAllAppsScroll() { + // Allow null-pointer since this should only be null if the apps view is not showing. + return mAppsView.getActiveRecyclerView().computeVerticalScrollOffset(); + } } diff --git a/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java b/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java index 5391f4d46c..5df4734eee 100644 --- a/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java +++ b/quickstep/src/com/android/quickstep/QuickstepTestInformationHandler.java @@ -125,6 +125,13 @@ public class QuickstepTestInformationHandler extends TestInformationHandler { .getTaskbarAllAppsTopPadding()); } + case TestProtocol.REQUEST_TASKBAR_APPS_LIST_SCROLL_Y: { + return getTISBinderUIProperty(Bundle::putInt, tisBinder -> + tisBinder.getTaskbarManager() + .getCurrentActivityContext() + .getTaskbarAllAppsScroll()); + } + case TestProtocol.REQUEST_ENABLE_BLOCK_TIMEOUT: runOnTISBinder(tisBinder -> { enableBlockingTimeout(tisBinder, true); diff --git a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java index dc835e2485..8c95d1223d 100644 --- a/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java +++ b/tests/shared/com/android/launcher3/testing/shared/TestProtocol.java @@ -93,6 +93,7 @@ public final class TestProtocol { public static final String REQUEST_RECREATE_TASKBAR = "recreate-taskbar"; public static final String REQUEST_APP_LIST_FREEZE_FLAGS = "app-list-freeze-flags"; public static final String REQUEST_APPS_LIST_SCROLL_Y = "apps-list-scroll-y"; + public static final String REQUEST_TASKBAR_APPS_LIST_SCROLL_Y = "taskbar-apps-list-scroll-y"; public static final String REQUEST_WIDGETS_SCROLL_Y = "widgets-scroll-y"; public static final String REQUEST_TARGET_INSETS = "target-insets"; public static final String REQUEST_WINDOW_INSETS = "window-insets"; diff --git a/tests/tapl/com/android/launcher3/tapl/AllApps.java b/tests/tapl/com/android/launcher3/tapl/AllApps.java index 885707c268..399abc7ad2 100644 --- a/tests/tapl/com/android/launcher3/tapl/AllApps.java +++ b/tests/tapl/com/android/launcher3/tapl/AllApps.java @@ -261,10 +261,7 @@ public abstract class AllApps extends LauncherInstrumentation.VisibleContainer { } } - private int getAllAppsScroll() { - return mLauncher.getTestInfo(TestProtocol.REQUEST_APPS_LIST_SCROLL_Y) - .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD); - } + protected abstract int getAllAppsScroll(); protected UiObject2 getAppListRecycler(UiObject2 allAppsContainer) { return mLauncher.waitForObjectInContainer(allAppsContainer, "apps_list_view"); diff --git a/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java b/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java index f804e28ceb..c4744a1e67 100644 --- a/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java +++ b/tests/tapl/com/android/launcher3/tapl/AllAppsFromTaskbar.java @@ -56,4 +56,10 @@ public class AllAppsFromTaskbar extends AllApps { return mLauncher.getTestInfo(TestProtocol.REQUEST_TASKBAR_ALL_APPS_TOP_PADDING) .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD); } + + @Override + protected int getAllAppsScroll() { + return mLauncher.getTestInfo(TestProtocol.REQUEST_TASKBAR_APPS_LIST_SCROLL_Y) + .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD); + } } diff --git a/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java b/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java index 44de65a43e..1239d7a0b3 100644 --- a/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java +++ b/tests/tapl/com/android/launcher3/tapl/HomeAllApps.java @@ -118,4 +118,10 @@ public class HomeAllApps extends AllApps { public Qsb getQsb() { return new AllAppsQsb(mLauncher, verifyActiveContainer()); } + + @Override + protected int getAllAppsScroll() { + return mLauncher.getTestInfo(TestProtocol.REQUEST_APPS_LIST_SCROLL_Y) + .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD); + } } From c4acfd34814c388ba7389491196059c7808463b9 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 17 Apr 2023 14:38:25 -0700 Subject: [PATCH 28/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I63782983c81aa196210241ec83bd40a8b30de835 --- quickstep/res/values-as/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml index c424ca1c52..825a396f33 100644 --- a/quickstep/res/values-as/strings.xml +++ b/quickstep/res/values-as/strings.xml @@ -24,7 +24,7 @@ "কোনো শেহতীয়া বস্তু নাই" "এপে ব্যৱহাৰ কৰা ডেটাৰ ছেটিং" "আটাইবোৰ মচক" - "শেহতীয়া এপসমূহ" + "শেহতীয়া এপ্‌সমূহ" "কাৰ্য বন্ধ কৰা হ’ল" "%1$s, %2$s" "< ১ মিনিট" From 93f0be3966d606af366baa101bdddf0a570e3319 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 17 Apr 2023 14:38:51 -0700 Subject: [PATCH 29/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I12e36d24e6b85c01bf533124f31f3055334764f3 --- quickstep/res/values-as/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml index 17fa259e8c..058ff29417 100644 --- a/quickstep/res/values-as/strings.xml +++ b/quickstep/res/values-as/strings.xml @@ -24,7 +24,7 @@ "কোনো শেহতীয়া বস্তু নাই" "এপে ব্যৱহাৰ কৰা ডেটাৰ ছেটিং" "আটাইবোৰ মচক" - "শেহতীয়া এপসমূহ" + "শেহতীয়া এপ্‌সমূহ" "কাৰ্য বন্ধ কৰা হ’ল" "%1$s, %2$s" "< ১ মিনিট" From b9b86a22f0994378f3d2cc118d4bbec1566aa035 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 17 Apr 2023 14:40:10 -0700 Subject: [PATCH 30/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I935d7839185c696387eb2141f6343ccd8876af4d --- res/values-af/strings.xml | 2 +- res/values-am/strings.xml | 3 ++- res/values-ar/strings.xml | 7 ++++--- res/values-as/strings.xml | 6 +++--- res/values-az/strings.xml | 3 ++- res/values-b+sr+Latn/strings.xml | 3 ++- res/values-be/strings.xml | 3 ++- res/values-bg/strings.xml | 3 ++- res/values-bn/strings.xml | 7 ++++--- res/values-bs/strings.xml | 2 +- res/values-ca/strings.xml | 7 ++++--- res/values-cs/strings.xml | 3 ++- res/values-da/strings.xml | 3 ++- res/values-de/strings.xml | 3 ++- res/values-el/strings.xml | 3 ++- res/values-en-rAU/strings.xml | 2 +- res/values-en-rCA/strings.xml | 2 +- res/values-en-rGB/strings.xml | 2 +- res/values-en-rIN/strings.xml | 2 +- res/values-en-rXC/strings.xml | 2 +- res/values-es-rUS/strings.xml | 3 ++- res/values-es/strings.xml | 2 +- res/values-et/strings.xml | 3 ++- res/values-eu/strings.xml | 3 ++- res/values-fa/strings.xml | 2 +- res/values-fi/strings.xml | 3 ++- res/values-fr-rCA/strings.xml | 3 ++- res/values-fr/strings.xml | 5 +++-- res/values-gl/strings.xml | 3 ++- res/values-gu/strings.xml | 3 ++- res/values-hi/strings.xml | 3 ++- res/values-hr/strings.xml | 2 +- res/values-hu/strings.xml | 3 ++- res/values-hy/strings.xml | 2 +- res/values-in/strings.xml | 5 +++-- res/values-is/strings.xml | 2 +- res/values-it/strings.xml | 3 ++- res/values-iw/strings.xml | 3 ++- res/values-ja/strings.xml | 2 +- res/values-ka/strings.xml | 2 +- res/values-kk/strings.xml | 3 ++- res/values-km/strings.xml | 2 +- res/values-kn/strings.xml | 2 +- res/values-ko/strings.xml | 3 ++- res/values-ky/strings.xml | 3 ++- res/values-lo/strings.xml | 2 +- res/values-lt/strings.xml | 2 +- res/values-lv/strings.xml | 3 ++- res/values-mk/strings.xml | 3 ++- res/values-ml/strings.xml | 4 ++-- res/values-mn/strings.xml | 3 ++- res/values-mr/strings.xml | 2 +- res/values-ms/strings.xml | 2 +- res/values-my/strings.xml | 2 +- res/values-nb/strings.xml | 3 ++- res/values-ne/strings.xml | 4 ++-- res/values-nl/strings.xml | 2 +- res/values-or/strings.xml | 7 ++++--- res/values-pa/strings.xml | 7 ++++--- res/values-pl/strings.xml | 10 +++++----- res/values-pt-rPT/strings.xml | 2 +- res/values-pt/strings.xml | 2 +- res/values-ro/strings.xml | 3 ++- res/values-ru/strings.xml | 7 ++++--- res/values-si/strings.xml | 3 ++- res/values-sk/strings.xml | 2 +- res/values-sl/strings.xml | 3 ++- res/values-sq/strings.xml | 3 ++- res/values-sr/strings.xml | 3 ++- res/values-sv/strings.xml | 3 ++- res/values-sw/strings.xml | 2 +- res/values-ta/strings.xml | 5 +++-- res/values-te/strings.xml | 2 +- res/values-th/strings.xml | 2 +- res/values-tl/strings.xml | 2 +- res/values-tr/strings.xml | 3 ++- res/values-uk/strings.xml | 3 ++- res/values-ur/strings.xml | 2 +- res/values-uz/strings.xml | 2 +- res/values-vi/strings.xml | 3 ++- res/values-zh-rCN/strings.xml | 6 +++--- res/values-zh-rHK/strings.xml | 2 +- res/values-zh-rTW/strings.xml | 2 +- res/values-zu/strings.xml | 2 +- 84 files changed, 154 insertions(+), 109 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index faee52632e..377025a49c 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -81,7 +81,6 @@ "Laat die program toe om die instellings en kortpaaie op tuisskerm te lees." "skryf tuis-instellings en -kortpaaie" "Laat die program toe om die instellings en kortpaaie op tuisskerm te verander." - "%1$s word nie toegelaat om foonoproepe te maak nie" "Kan nie legstuk laai nie" "Legstukinstellings" "Tik om opstelling te voltooi" @@ -101,6 +100,7 @@ "Vouer: %1$s, %2$d of meer items" "Muurpapiere" "Muurpapier en styl" + "Wysig tuisskerm" "Tuis-instellings" "Gedeaktiveer deur jou administrateur" "Laat toe dat tuisskerm gedraai word" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index b67a98ea75..4638bc3245 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -81,7 +81,6 @@ "ቅንብሮችን እና አቋራጮችን በመነሻ ለማንበብ ለትግበራ ይፈቅዳል።" "መነሻ ቅንብሮች እና አቋራጮች ጻፍ" "ቅንብሮችን እና አቋራጮችን በመነሻ ለመለወጥ ለመተግበሪያ ይፈቅዳል።" - "%1$s የስልክ ጥሪዎችን ለማድረግ አልተፈቀደለትም" "ምግብርን መጫን አልተቻለም" "የምግብር ቅንብሮች" "ማዋቀርን ለመጨረስ መታ ያድርጉ" @@ -101,6 +100,8 @@ "አቃፊ፦ %1$s%2$d ወይም ተጨማሪ ንጥሎች" "የግድግዳ ወረቀቶች" "ልጣፍ እና ቅጥ" + + "የመነሻ ቅንብሮች" "በእርስዎ አስተዳዳሪ የተሰናከለ" "የመነሻ ማያ ገጽ ማሽከርከርን ይፍቀዱ" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index a236cd7ca8..094fcac7e1 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -81,7 +81,6 @@ "يسمح هذا الإذن للتطبيق بالاطلاع على الإعدادات والاختصارات على الشاشة الرئيسية." "تعديل الإعدادات والاختصارات على الشاشة الرئيسية" "يسمح هذا الإذن للتطبيق بتغيير الإعدادات والاختصارات على الشاشة الرئيسية." - "%1$s غير مسموح به لإجراء مكالمات هاتفية" "يتعذّر تحميل الأداة." "إعدادات الأداة" "انقر لإكمال الإعداد." @@ -101,6 +100,8 @@ "المجلد: %1$s، %2$d عنصر أو أكثر" "الخلفيات" "الخلفية والأسلوب" + + "إعدادات الشاشة الرئيسية" "أوقف المشرف هذه الميزة" "السماح بتدوير الشاشة الرئيسية" @@ -159,13 +160,13 @@ "شخصية" "للعمل" "الملف الشخصي للعمل" - "تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات." + "تحمل تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات." "حسنًا" "تطبيقات العمل متوقفة مؤقتًا" "لن تتلقّى إشعارات من تطبيقات العمل." "لا يمكن لتطبيقات العمل إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي." "لن تتلقّى مكالمات هاتفية أو رسائل نصية أو إشعارات من تطبيقات العمل." - "تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات." + "تكون تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات." "حسنًا" "إيقاف تطبيقات العمل مؤقتًا" "إلغاء الإيقاف المؤقت" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index e7861264b8..583a5c4bbd 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -55,8 +55,8 @@ "ৱিজেটৰ ছেটিং সলনি কৰিবলৈ টিপক" "বুজি পালোঁ" "ৱিজেটৰ ছেটিং সলনি কৰক" - "এপসমূহ সন্ধান কৰক" - "এপসমূহ ল’ড কৰি থকা হৈছে…" + "এপ্‌সমূহ সন্ধান কৰক" + "এপ্‌সমূহ ল’ড কৰি থকা হৈছে…" "\"%1$s\"ৰ সৈতে মিলা কোনো এপ্ বিচাৰি পোৱা নগ\'ল" "এপ্" "আটাইবোৰ এপ্" @@ -81,7 +81,6 @@ "এপ্‌টোক গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ পঢ়াৰ অনুমতি দিয়ে।" "গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ লিখা" "এপ্‌টোক গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ সলনি কৰাৰ অনুমতি দিয়ে।" - "%1$sক ফ\'ন কলবোৰ কৰাৰ অনুমতি দিয়া হোৱা নাই" "ৱিজেট ল’ড কৰিব নোৱাৰি" "ৱিজেটৰ ছেটিং" "ছেটআপ সমাপ্ত কৰিবলৈ টিপক" @@ -101,6 +100,7 @@ "ফ’ল্ডাৰ: %1$s, %2$d টা অথবা তাতকৈ অধিক বস্তু" "ৱালপেপাৰসমূহ" "ৱালপেপাৰ আৰু শৈলী" + "গৃহ স্ক্ৰীন সম্পাদনা কৰক" "গৃহ ছেটিং" "আপোনাৰ প্ৰশাসকে অক্ষম কৰি ৰাখিছে" "গৃহ স্ক্ৰীন ঘূৰোৱাৰ অনুমতি দিয়ক" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 74c6048342..2879158f14 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -81,7 +81,6 @@ "Tətbiqə Əsas səhifədə ayarları və qısayolları oxumağa icazə verir." "Əsas səhifə ayarlarını və qısayollarını yazmaq" "Tətbiqə Əsas səhifədə ayarları və qısayolları dəyişməyə icazə verir." - "%1$s tətbiqinə telefon zəngləri etmək üçün icazə verilmir" "Vidceti yükləmək olmur" "Vidcet ayarları" "Ayarlamanı tamamlamaq üçün toxunun" @@ -101,6 +100,8 @@ "Qovluq: %1$s, %2$d və ya daha çox element" "Divar kağızları" "Divar kağızı və üslub" + + "Home ayarları" "Admininiz tərəfindən deaktiv edilib" "Əsas ekran çevrilsin" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index a8353c431d..124cc7e2ac 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -81,7 +81,6 @@ "Dozvoljava aplikaciji da čita podešavanja i prečice na početnom ekranu." "upisivanje podešavanja i prečica na početnom ekranu" "Dozvoljava aplikaciji da menja podešavanja i prečice na početnom ekranu." - "%1$s nema dozvolu za upućivanje telefonskih poziva" "Učitavanje vidžeta nije uspelo" "Podešavanja vidžeta" "Dodirnite da biste dovršili podešavanje" @@ -101,6 +100,8 @@ "Folder: %1$s, %2$d ili više stavki" "Pozadine" "Pozadina i stil" + + "Podešavanja početnog ekrana" "Administrator je onemogućio" "Dozvoli rotaciju početnog ekrana" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index d74dbd82c2..7bdd1ec50c 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -81,7 +81,6 @@ "Дазваляе праграме счытваць налады і ярлыкі на галоўным экране." "запісваць налады і ярлыкі на галоўны экран" "Дазваляе праграме змяняць налады і ярлыкі на галоўным экране." - "%1$s не мае дазволу на здзяйсненне тэлефонных званкоў" "Не ўдаецца загрузіць віджэт" "Налады віджэта" "Націсніце, каб завяршыць наладжванне" @@ -101,6 +100,8 @@ "Папка: %1$s, элементы: %2$d ці больш" "Шпалеры" "Шпалеры і стыль" + + "Налады галоўнага экрана" "Адключаная адміністратарам" "Дазволіць паварот галоўнага экрана" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 7d8096b763..6dd0d25d67 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -81,7 +81,6 @@ "Разрешава на приложението да чете настройките и преките пътища на началния екран." "запис на настройките и преките пътища на началния екран" "Разрешава на приложението да променя настройките и преките пътища на началния екран." - "%1$s няма разрешение да извършва телефонни обаждания" "Приспособлението не може да се зареди" "Настройки за приспособленията" "Докоснете, за да завършите настройването" @@ -101,6 +100,8 @@ "Папка: „%1$s“ – %2$d или повече елементи" "Тапети" "Тапет и стил" + + "Настройки за началния екран" "Деактивирано от администратора ви" "Разрешаване на завъртането на началния екран" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index bd76e6c730..995166fb36 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -81,7 +81,6 @@ "অ্যাপকে হোম স্ক্রিনে সেটিংস ও শর্টকাট পড়ার অনুমতি দেয়।" "হোম স্ক্রিনে সেটিংস ও শর্টকাট লিখুন" "অ্যাপকে হোম স্ক্রিনে সেটিংস ও শর্টকাট পরিবর্তন করার অনুমতি দেয়।" - "ফোন কলগুলি করার জন্য %1$s এর অনুমতি নেই" "উইজেট লোড করা যাচ্ছে না" "উইজেট সেটিংস" "সেটআপ সম্পূর্ণ করতে ট্যাপ করুন" @@ -101,6 +100,8 @@ "ফোল্ডার: %1$s, %2$dটি বা তার বেশি আইটেম" "ওয়ালপেপারগুলি" "ওয়ালপেপার এবং স্টাইল" + + "হোম সেটিংস" "আপনার প্রশাসক দ্বারা অক্ষম করা হয়েছে" "হোম স্ক্রিন রোটেট করার অনুমতি দিন" @@ -159,13 +160,13 @@ "ব্যক্তিগত" "অফিস" "অফিসের প্রোফাইল" - "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন" + "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন" "বুঝেছি" "অফিস অ্যাপ বন্ধ করা আছে" "আপনার অফিসের অ্যাপ থেকে আপনি কোনও বিজ্ঞপ্তি পাবেন না" "অফিসের অ্যাপ আপনাকে নোটিফিকেশন পাঠাতে পারবে না। এছাড়া, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না" "আপনি কোনও ফোন কল, টেক্সট মেসেজ বা অফিসের অ্যাপ থেকে বিজ্ঞপ্তি পাবেন না" - "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন" + "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন" "বুঝেছি" "অফিসের অ্যাপ পজ করুন" "আনপজ করুন" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 1dc1863493..20fc18a6cc 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -81,7 +81,6 @@ "Dopušta aplikaciji čitanje postavki i prečica na početnom ekranu." "zapisuje postavke na početnom ekranu i prečice" "Dopušta aplikaciji promjenu postavki i prečica na početnom ekranu." - "%1$s nema odobrenje da uspostavlja telefonske pozive" "Nije moguće učitati vidžet" "Postavke vidžeta" "Dodirnite da završite postavljanje" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d ili više stavki" "Pozadinske slike" "Pozadinska slika i stil" + "Uredi Početni ekran" "Postavke početnog ekrana" "Onemogućio vaš administrator" "Dozvoli rotiranje početnog ekrana" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index fc462fdafa..7d45271cea 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -81,7 +81,6 @@ "Permet que l\'aplicació llegeixi la configuració i les dreceres de la pantalla d\'inici." "escriure la configuració i les dreceres de la pantalla d\'inici" "Permet que l\'aplicació canviï la configuració i les dreceres de la pantalla d\'inici." - "%1$s no té permís per fer trucades telefòniques" "No es pot carregar el widget" "Configuració del widget" "Toca per finalitzar la configuració" @@ -101,6 +100,8 @@ "Carpeta: %1$s, %2$d o més elements" "Fons de pantalla" "Estil i fons de pantalla" + + "Config. pantalla d\'inici" "Desactivada per l\'administrador" "Permet la rotació de la pantalla d\'inici" @@ -159,13 +160,13 @@ "Personal" "Treball" "Perfil de treball" - "Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI" + "Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure" "Entesos" "Les aplicacions de treball estan en pausa" "No rebràs cap notificació de les aplicacions de treball" "Les aplicacions de treball no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació" "No rebràs trucades, missatges de text ni notificacions de les aplicacions de treball" - "Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI" + "Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure" "Entesos" "Posa en pausa les aplicacions de treball" "Reactiva" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 1d05d8826b..ac093e45f1 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -81,7 +81,6 @@ "Umožňuje aplikaci číst nastavení a zkratky na ploše." "zápis nastavení a zkratek plochy" "Umožňuje aplikaci změnit nastavení a zkratky na ploše." - "Aplikace %1$s nemá oprávnění telefonovat" "Widget se nepodařilo načíst" "Nastavení widgetů" "Klepnutím dokončíte konfiguraci" @@ -101,6 +100,8 @@ "Složka: %1$s, počet položek: %2$d nebo více" "Tapety" "Tapeta a styl" + + "Nastavení plochy" "Zakázáno administrátorem" "Povolit otáčení plochy" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 36e3e7d043..66a191a34d 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -81,7 +81,6 @@ "Tillader, at appen læser indstillingerne og genvejene på startskærmen." "skriv indstillinger og genveje for startskærm" "Tillader, at appen ændrer indstillingerne og genvejene på startskærmen." - "%1$s har ikke tilladelse til at foretage telefonopkald" "Widgetten kan ikke indlæses" "Widget-indstillinger" "Tryk for at fuldføre konfigurationen" @@ -101,6 +100,8 @@ "Mappe: %1$s, %2$d eller flere elementer" "Baggrunde" "Baggrund og stil" + + "Indst. for startskærm" "Deaktiveret af din administrator" "Tillad rotation af startskærmen" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 46367e657d..959840ddec 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -81,7 +81,6 @@ "Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu lesen." "Einstellungen und Verknüpfungen für den Startbildschirm schreiben" "Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu ändern." - "%1$s darf keine Telefonanrufe tätigen." "Widget kann nicht geladen werden" "Widget-Einstellungen" "Tippen, um Einrichtung abzuschließen" @@ -101,6 +100,8 @@ "Ordner: %1$s, %2$d oder mehr Elemente" "Hintergründe" "Hintergrund & Stil" + + "Einstellungen" "Von deinem Administrator deaktiviert" "Drehen des Startbildschirms zulassen" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index d52a8b18dc..b517975162 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -81,7 +81,6 @@ "Επιτρέπει στην εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη." "εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης" "Επιτρέπει στην εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη." - "Η εφαρμογή %1$s δεν επιτρέπεται να πραγματοποιεί τηλεφωνικές κλήσεις" "Δεν είναι δυνατή η φόρτωση του γραφικού στοιχείου" "Ρυθμίσεις γραφικών στοιχείων" "Πατήστε για να ολοκληρώσετε τη ρύθμιση" @@ -101,6 +100,8 @@ "Φάκελος: %1$s, %2$d ή περισσότερα στοιχεία" "Ταπετσαρίες" "Ταπετσαρία και στιλ" + + "Ρυθμίσεις Αρχ. Οθ." "Απενεργοποιήθηκε από τον διαχειριστή σας" "Να επιτρέπεται η περιστροφή της αρχικής οθόνης" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index a3b25c844e..eea6581f36 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" "Allows the app to change the settings and shortcuts in Home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper and style" + "Edit home screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 72aa73ec17..b00fee6e35 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in home." "write home settings and shortcuts" "Allows the app to change the settings and shortcuts in home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper & style" + "Edit Home Screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index a3b25c844e..eea6581f36 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" "Allows the app to change the settings and shortcuts in Home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper and style" + "Edit home screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index a3b25c844e..eea6581f36 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" "Allows the app to change the settings and shortcuts in Home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper and style" + "Edit home screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 23fd7b4c14..31fea4b7be 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -81,7 +81,6 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎Allows the app to read the settings and shortcuts in home.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‎write home settings and shortcuts‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‎Allows the app to change the settings and shortcuts in home.‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎ is not allowed to make phone calls‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‏‎Can\'t load widget‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎Widget settings‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎Tap to finish setup‎‏‎‎‏‎" @@ -101,6 +100,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎Folder: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎%2$d‎‏‎‎‏‏‏‎ or more items‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎Wallpapers‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎Wallpaper & style‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‎Edit Home Screen‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎Home settings‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎Disabled by your admin‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‏‏‎‏‎‎Allow home screen rotation‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 7d0cd22f70..35b6124b23 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -81,7 +81,6 @@ "Permite que la app lea los parámetros de configuración y los accesos directos de la página principal." "escribir parámetros de configuración y accesos directos de la página principal" "Permite que la app cambie los parámetros de configuración y los accesos directos de la página principal." - "%1$s no puede realizar llamadas telefónicas" "No se puede cargar el widget" "Configuración del widget" "Presiona para finalizar la configuración" @@ -101,6 +100,8 @@ "Carpeta: %1$s, %2$d o más elementos" "Fondos de pantalla" "Fondo de pantalla y estilo" + + "Configuración de pantalla principal" "El administrador inhabilitó esta función" "Permitir la rotación de la pantalla principal" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 5c0c8f34d1..323feb0c70 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -81,7 +81,6 @@ "Permite que la aplicación lea los ajustes y los accesos directos de la pantalla de inicio." "escribir ajustes y accesos directos de la pantalla de inicio" "Permite que la aplicación cambie los ajustes y los accesos directos de la pantalla de inicio." - "%1$s no puede hacer llamadas" "No se puede cargar el widget" "Ajustes de widget" "Toca para finalizar la configuración" @@ -101,6 +100,7 @@ "Carpeta: %1$s (%2$d o más elementos)" "Fondos de pantalla" "Fondo de pantalla y estilo" + "Editar pantalla de inicio" "Ajustes de la pantalla de inicio" "Inhabilitado por el administrador" "Permitir rotación de la pantalla de inicio" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index c7a273d3ae..cf6e1c4c45 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -81,7 +81,6 @@ "Võimaldab rakendusel lugeda avakuva seadeid ja otseteid." "avakuva seadete ja otseteede kirjutamine" "Võimaldab rakendusel muuta avakuval seadeid ja otseteid." - "Rakendusel %1$s pole lubatud helistada" "Vidinat ei saa laadida" "Vidina seaded" "Puudutage seadistuse lõpuleviimiseks" @@ -101,6 +100,8 @@ "Kaust: %1$s, %2$d või rohkem üksust" "Taustapildid" "Taustapilt ja stiil" + + "Avakuva seaded" "Keelas administraator" "Luba avakuva pööramine" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 28a323e148..88f3a95ca6 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -81,7 +81,6 @@ "Hasierako pantailako ezarpenak eta lasterbideak irakurtzeko baimena ematen die aplikazioei." "idatzi hasierako pantailako ezarpenak eta lasterbideak" "Hasierako pantailako ezarpenak eta lasterbideak aldatzeko baimena ematen die aplikazioei." - "%1$s aplikazioak ez du telefono-deiak egiteko baimenik" "Ezin da kargatu widgeta" "Widgetaren ezarpenak" "Sakatu konfiguratzen amaitzeko" @@ -101,6 +100,8 @@ "%1$s karpeta (%2$d elementu edo gehiago)" "Horma-paperak" "Horma-papera eta estiloa" + + "Hasierako pantailaren ezarpenak" "Administratzaileak desgaitu du" "Eman hasierako pantaila biratzeko baimena" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index bc9f9a669d..6708519c14 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -81,7 +81,6 @@ "به برنامه اجازه می‌دهد تنظیمات و میان‌برهای صفحه اصلی را بخواند." "نوشتن تنظیمات و میان‌برهای صفحه اصلی" "به برنامه اجازه می‌دهد تنظیمات و میان‌برهای صفحه اصلی را تغییر دهد." - "%1$s مجاز نیست تماس تلفنی برقرار کند" "ابزارک را نمی‌توان بار کرد" "تنظیمات ابزارک" "برای تکمیل راه‌اندازی ضربه بزنید" @@ -101,6 +100,7 @@ "پوشه: %1$s، %2$d مورد یا بیشتر" "کاغذدیواری‌ها" "کاغذدیواری و سبک" + "ویرایش «صفحه اصلی»" "تنظیمات صفحه اصلی" "توسط سرپرست سیستم غیرفعال شده است" "مجاز کردن چرخش صفحه اصلی" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 1097417304..df7b6ac222 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -81,7 +81,6 @@ "Antaa sovelluksen lukea aloitusnäytön asetuksia ja pikakuvakkeita" "muokata aloitusnäytön asetuksia ja pikakuvakkeita" "Antaa sovelluksen muuttaa aloitusnäytön asetuksia ja pikakuvakkeita" - "%1$s ei saa soittaa puheluita." "Widgetiä ei voi ladata" "Widgetin asetukset" "Viimeistele asennus napauttamalla" @@ -101,6 +100,8 @@ "Kansio: %1$s, ainakin %2$d kohdetta" "Taustakuvat" "Taustakuva ja tyyli" + + "Aloitusnäyttö" "Järjestelmänvalvoja on poistanut toiminnon käytöstä." "Salli aloitusnäytön kiertäminen" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index a49f0e32da..6adcb61185 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -81,7 +81,6 @@ "Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil." "modifier les paramètres et les raccourcis de la page d\'accueil" "Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil." - "L\'application %1$s n\'est pas autorisée à faire des appels téléphoniques" "Impossible de charger le widget" "Paramètres du widget" "Touchez pour terminer la configuration" @@ -101,6 +100,8 @@ "Dossier : %1$s, %2$d éléments ou plus" "Fonds d\'écran" "Fond d\'écran et style" + + "Paramètres d\'accueil" "Cette fonction est désactivée par votre administrateur" "Autoriser la rotation de l\'écran d\'accueil" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 7b48cde2d0..8b546281ec 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -81,7 +81,6 @@ "Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil." "Modifier les paramètres de la page d\'accueil et les raccourcis" "Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil." - "L\'application %1$s n\'est pas autorisée à passer des appels téléphoniques." "Impossible de charger le widget" "Paramètres du widget" "Appuyez pour terminer la configuration" @@ -101,12 +100,14 @@ "Dossier : %1$s, %2$d éléments ou plus" "Fonds d\'écran" "Fond d\'écran et style" + + "Paramètres de l\'accueil" "Désactivé par votre administrateur" "Autoriser la rotation de l\'écran d\'accueil" "Lorsque vous faites pivoter le téléphone" "Pastilles de notification" - "Activées" + "Activé" "Désactivées" "Accès aux notifications requis" "Pour afficher les pastilles de notification, activez les notifications de l\'application %1$s" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 7d675748ae..c1f4f3c636 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -81,7 +81,6 @@ "Permite que a aplicación lea a configuración e os atallos da pantalla de inicio." "editar a configuración e os atallos da pantalla de inicio" "Permite que a aplicación cambie a configuración e os atallos da pantalla de inicio." - "%1$s non ten permiso para facer chamadas telefónicas" "Non se puido cargar o widget" "Configuración do widget" "Toca para rematar a configuración" @@ -101,6 +100,8 @@ "Cartafol: %1$s, %2$d elementos ou máis" "Fondos de pantalla" "Estilo e fondo de pantalla" + + "Axustes de Inicio" "Función desactivada polo administrador" "Permitir xirar a pantalla de inicio" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 263525fbc6..a804870ddb 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -81,7 +81,6 @@ "ઍપને હોમમાંના સેટિંગ અને શૉર્ટકટ વાંચવાની મંજૂરી આપે છે." "હોમ સેટિંગ અને શૉર્ટકટ લખો" "ઍપને હોમમાંના સેટિંગ અને શૉર્ટકટમાં ફેરફાર કરવાની મંજૂરી આપે છે." - "%1$s ને ફોન કૉલ્સ કરવાની મંજૂરી નથી" "વિજેટ લોડ કરી શકાતું નથી" "વિજેટ સેટિંગ" "સેટઅપ પૂર્ણ કરવા માટે ટૅપ કરો" @@ -101,6 +100,8 @@ "ફોલ્ડર: %1$s, %2$d કે વધુ આઇટમ" "વૉલપેપર" "વૉલપેપર અને સ્ટાઇલ" + + "હોમ સેટિંગ" "તમારા વ્યવસ્થાપક દ્વારા અક્ષમ કરેલ" "હોમ સ્ક્રીનને ફેરવવાની મંજૂરી આપો" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 4d292e8796..ce83230be1 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -81,7 +81,6 @@ "इससे ऐप्लिकेशन, होम स्क्रीन की सेटिंग और शॉर्टकट पढ़ पाएगा." "होम स्क्रीन की सेटिंग और शॉर्टकट में बदलाव करने की अनुमति" "इससे ऐप्लिकेशन, होम स्क्रीन की सेटिंग और शॉर्टकट बदल पाएगा." - "%1$s को फ़ोन कॉल करने की अनुमति नहीं है" "विजेट को लोड नहीं किया जा सका" "विजेट की सेटिंग" "सेट अप पूरा करने के लिए टैप करें" @@ -101,6 +100,8 @@ "फ़ोल्डर: %1$s, %2$d या इससे ज़्यादा आइटम" "वॉलपेपर" "वॉलपेपर और स्टाइल" + + "होम पेज की सेटिंग" "आपके एडमिन ने बंद किया हुआ है" "होम स्क्रीन घुमाने की अनुमति दें" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 6aae2108f4..73e366f04c 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -81,7 +81,6 @@ "Aplikaciji omogućuje čitanje postavki i prečaca na početnom zaslonu." "pisati postavke i prečace početnog zaslona" "Aplikaciji omogućuje promjenu postavki i prečaca na početnom zaslonu." - "%1$s nema dopuštenje za telefonske pozive" "Widget se ne može učitati" "Postavke widgeta" "Dodirnite da biste dovršili postavljanje" @@ -101,6 +100,7 @@ "Mapa: %1$s, %2$d ili više stavki" "Pozadine" "Pozadina i stil" + "Uredi početni zaslon" "Postavke početnog zaslona" "Onemogućio administrator" "Dopusti zakretanje početnog zaslona" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 55c56ff134..338047620d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -81,7 +81,6 @@ "Lehetővé teszi az alkalmazás számára a kezdőképernyő beállításainak és parancsikonjainak olvasását." "kezdőképernyő beállításainak és parancsikonjainak írása" "Lehetővé teszi az alkalmazás számára a kezdőképernyő beállításainak és parancsikonjainak módosítását." - "A(z) %1$s nem kezdeményezhet telefonhívásokat" "Nem tölthető le a modul" "Modulbeállítások" "Koppintson a beállítás befejezéséhez" @@ -101,6 +100,8 @@ "Mappa: %1$s, %2$d vagy több elem" "Háttérképek" "Háttérkép és stílus" + + "Kezdőképernyő beállításai" "A rendszergazda letiltotta" "A kezdőképernyő elforgatásának engedélyezése" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 13d82d629c..5fee7a8fec 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -81,7 +81,6 @@ "Հավելվածին թույլ է տալիս կարդալ հիմնական էկրանի կարգավորումներն ու դյուրանցումները։" "փոփոխել հիմնական էկրանի կարգավորումներն ու դյուրանցումները" "Հավելվածին թույլ է տալիս փոփոխել հիմնական էկրանի կարգավորումներն ու դյուրանցումները։" - "%1$s հավելվածին չի թույլատրվում հեռախոսազանգեր կատարել" "Չհաջողվեց բեռնել վիջեթը" "Վիջեթի կարգավորումներ" "Հպեք՝ կարգավորումն ավարտելու համար" @@ -101,6 +100,7 @@ "Պանակ՝ %1$s, %2$d կամ ավելի տարրեր" "Պաստառներ" "Պաստառ և ոճ" + "Փոփոխել հիմնական էկրանը" "Գլխավոր էկրանի կարգավորումներ" "Անջատվել է ձեր ադմինիստրատորի կողմից" "Թույլ տալ հիմնական էկրանի պտտումը" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index d9cba90827..33a77b533f 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -81,7 +81,6 @@ "Mengizinkan aplikasi membaca setelan dan pintasan di layar utama." "menulis setelan dan pintasan layar utama" "Mengizinkan aplikasi mengubah setelan dan pintasan di layar utama." - "%1$s tidak diizinkan untuk melakukan panggilan telepon" "Tidak dapat memuat widget" "Setelan widget" "Ketuk untuk menyelesaikan penyiapan" @@ -101,7 +100,9 @@ "Folder: %1$s, %2$d item atau lebih" "Wallpaper" "Wallpaper & gaya" - "Setelan Layar utama" + + + "Setelan layar utama" "Dinonaktifkan oleh admin" "Izinkan layar utama diputar" "Saat ponsel diputar" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 84e0f7f965..5e7af5f988 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -81,7 +81,6 @@ "Leyfir forriti að lesa stillingar og flýtileiðir heimaskjás." "skrifa stillingar og flýtileiðir heimaskjás" "Leyfir forriti að breyta stillingum og flýtileiðum heimaskjás." - "%1$s hefur ekki leyfi til að hringja símtöl" "Ekki hægt að hlaða græju" "Græjustillingar" "Ýttu til að ljúka við uppsetningu" @@ -101,6 +100,7 @@ "Mappa: %1$s, %2$d eða fleiri atriði" "Veggfóður" "Veggfóður og stíll" + "Breyta heimaskjá" "Heimastillingar" "Gert óvirkt af kerfisstjóra" "Leyfa snúning á heimaskjá" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index fce1f672ee..3251006a6a 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -81,7 +81,6 @@ "Consente all\'app di leggere le impostazioni e le scorciatoie nella schermata Home." "creare impostazioni e scorciatoie nella schermata Home" "Consente all\'app di modificare le impostazioni e le scorciatoie nella schermata Home." - "L\'app %1$s non è autorizzata a effettuare telefonate" "Impossibile caricare il widget" "Impostazioni widget" "Tocca per completare la configurazione" @@ -101,6 +100,8 @@ "Cartella: %1$s, %2$d o più elementi" "Sfondi" "Sfondo e stile" + + "Impostazioni schermata Home" "Disattivata dall\'amministratore" "Consenti rotazione della schermata Home" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 4542589705..103e4e067a 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -81,7 +81,6 @@ "מאפשרת לאפליקציה לקרוא את ההגדרות וקיצורי הדרך בדף הבית." "כתיבת ההגדרות וקיצורי הדרך בדף הבית" "מאפשרת לאפליקציה לשנות את ההגדרות וקיצורי הדרך בדף הבית." - "%1$s אינו רשאי להתקשר" "לא ניתן לטעון את הווידג\'ט" "הגדרות הווידג\'ט" "צריך להקיש כדי לסיים את תהליך ההגדרה" @@ -101,6 +100,8 @@ "תיקייה: %1$s, %2$d פריטים או יותר" "טפטים" "טפט וסגנון" + + "הגדרות של מסך הבית" "הושבת על ידי מנהל המערכת שלך" "אישור לסיבוב מסך הבית" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 9f9df56179..7552eaf01d 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -81,7 +81,6 @@ "ホームの設定とショートカットの読み取りをアプリに許可します。" "ホームの設定とショートカットの書き込み" "ホームの設定とショートカットの変更をアプリに許可します。" - "「%1$s」から電話をかけることはできません" "ウィジェットを読み込めません" "ウィジェットの設定" "タップして設定を完了してください" @@ -101,6 +100,7 @@ "フォルダ: %1$s%2$d 件以上のアイテム" "壁紙" "壁紙とスタイル" + "ホーム画面を編集" "ホームの設定" "管理者により無効にされています" "ホーム画面の回転を許可" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index dd975fe906..e56b58012a 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -81,7 +81,6 @@ "აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვის უფლების მიცემა." "მთავარი ეკრანის პარამეტრებისა და მალსახმობების ჩაწერა" "აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების შეცვლის უფლების მიცემა." - "%1$s-ს არ აქვს სატელეფონო ზარების განხორციელების უფლება" "ვიჯეტის ჩატვირთვა ვერ ხერხდება" "ვიჯეტის პარამეტრები" "შეეხეთ დაყენების დასასრულებლად" @@ -101,6 +100,7 @@ "საქაღალდე: %1$s, %2$d ან მეტი ერთეული" "ფონები" "ფონი და სტილი" + "მთავარი ეკრანის რედაქტირება" "მთავარი გვერდის პარამეტრები" "გათიშულია თქვენი ადმინისტრატორის მიერ" "მთავარი ეკრანის შეტრიალების დაშვება" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index cd45fff2bb..4da44a8ea3 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -81,7 +81,6 @@ "Қолданбаға негізгі экрандағы параметрлер мен таңбашаларды оқуға мүмкіндік береді." "негізгі экран параметрлері мен таңбашаларын жазу" "Қолданбаға негізгі экрандағы параметрлер мен таңбашаларды өзгертуге мүмкіндік береді." - "%1$s арқылы телефон қоңырауларын соғуға рұқсат етілмеген" "Виджетті жүктеу мүмкін емес." "Виджет параметрлері" "Реттеуді аяқтау үшін түртіңіз." @@ -101,6 +100,8 @@ "Қалта: %1$s, %2$d не одан көп элемент бар" "Тұсқағаздар" "Тұсқағаз және стиль" + + "Негізгі экран параметрлері" "Әкімші өшірді" "Негізгі экранды бұруға рұқсат ету" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 64bc3bb1e5..6aa399b95c 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -81,7 +81,6 @@ "អនុញ្ញាតឱ្យកម្មវិធីអានការកំណត់ និងផ្លូវកាត់នៅក្នុងអេក្រង់ដើម។" "សរសេរការកំណត់ និងផ្លូវកាត់សម្រាប់អេក្រង់ដើម" "អនុញ្ញាតឱ្យកម្មវិធីប្ដូរការកំណត់ និងផ្លូវកាត់នៅក្នុងអេក្រង់ដើម។" - "%1$s មិនត្រូវបានអនុញ្ញាតឲ្យធ្វើការហៅទូរស័ព្ទទេ" "មិនអាចផ្ទុក​ធាតុក្រាហ្វិក​បានទេ" "ការកំណត់​ធាតុក្រាហ្វិក" "ចុច​ដើម្បី​បញ្ចប់​ការរៀបចំ" @@ -101,6 +100,7 @@ "ថត៖ %1$s, ធាតុ %2$d ឬច្រើនជាងនេះ" "ផ្ទាំង​រូបភាព" "ផ្ទាំងរូបភាព និងរចនាប័ទ្ម" + "កែអេក្រង់ដើម" "ការកំណត់​ទំព័រដើម" "បានបិទដំណើរការដោយអ្នកគ្រប់គ្រងរបស់អ្នក" "អនុញ្ញាតការបងិ្វលអេក្រង់ដើម" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index f955277e4e..e27483e503 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -81,7 +81,6 @@ "ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಓದಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ." "ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬರೆಯಿರಿ" "ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ." - "ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು %1$s ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ" "ವಿಜೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ" "ವಿಜೆಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು" "ಸೆಟಪ್ ಪೂರ್ಣಗೊಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ" @@ -101,6 +100,7 @@ "ಫೋಲ್ಡರ್: %1$s, %2$d ಅಥವಾ ಹೆಚ್ಚಿನ ಐಟಂಗಳು" "ವಾಲ್‌ಪೇಪರ್‌ಗಳು" "ವಾಲ್‌ಪೇಪರ್ ಮತ್ತು ಶೈಲಿ" + "ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ" "ಮುಖಪುಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು" "ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ" "ಹೋಮ್ ಸ್ಕ್ರೀನ್ ತಿರುಗುವಿಕೆಯನ್ನು ಅನುಮತಿಸಿ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 4d621ec5dc..b0bcff7cfd 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -81,7 +81,6 @@ "앱이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 허용합니다." "홈 설정 및 바로가기 쓰기" "앱이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 허용합니다." - "%1$s에서 전화를 걸 수 없습니다." "위젯을 로드할 수 없습니다." "위젯 설정" "탭하여 설정을 완료하세요." @@ -101,6 +100,8 @@ "폴더: %1$s, 항목 %2$d개 이상" "배경화면" "배경화면 및 스타일" + + "홈 설정" "관리자가 사용 중지함" "홈 화면 회전 허용" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 0fe280205d..24fca36e2c 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -81,7 +81,6 @@ "Колдонмого үйдүн параметрлерин жана ыкчам баскычтарын окууга уруксат берет." "үйдүн параметрлерин жана ыкчам баскычтарын жазуу" "Колдонмого үйдүн параметрлерин жана ыкчам баскычтарын өзгөртүүгө уруксат берет." - "%1$s телефон чалууларды аткарууга уруксаты жок" "Виджет жүктөлбөй жатат" "Виджеттин параметрлери" "Аягына чейин тууралоо үчүн басып коюңуз" @@ -101,6 +100,8 @@ "%1$s папкасындагы объекттер: %2$d же андан көбүрөөк" "Тушкагаздар" "Тушкагаз жана стиль" + + "Башкы бет параметрлери" "Администраторуңуз өчүрүп койгон" "Башкы экранды бурууга уруксат берүү" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 72eb3faea9..21481787a5 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -81,7 +81,6 @@ "ອະນຸຍາດໃຫ້ແອັບອ່ານການຕັ້ງຄ່າ ແລະ ທາງລັດໃນໜ້າຫຼັກ." "ຂຽນການຕັ້ງຄ່າໜ້າຫຼັກ ແລະ ທາງລັດ" "ອະນຸຍາດໃຫ້ແອັບປ່ຽນການຕັ້ງຄ່າ ແລະ ທາງລັດໃນໜ້າຫຼັກ." - "%1$s ບໍ່​ໄດ້​ຮັບ​ອະ​ນຸ​ຍາດ​ໃຫ້​ໂທ" "ບໍ່ສາມາດໂຫຼດວິດເຈັດໄດ້" "ການຕັ້ງຄ່າວິດເຈັດ" "ແຕະເພື່ອຕັ້ງຄ່າໃຫ້ແລ້ວ" @@ -101,6 +100,7 @@ "ໂຟນເດີ: %1$s, %2$d ຫຼື ລາຍການເພີ່ມເຕີມ" "ພາບພື້ນຫຼັງ" "ຮູບພື້ນຫຼັງ ແລະ ຮູບແບບ" + "ແກ້ໄຂໂຮມສະກຣີນ" "ການຕັ້ງຄ່າໜ້າຫຼັກ" "ຖືກປິດການນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ" "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍຢູ່ໂຮມສະກຣີນໄດ້" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 0f0237620f..2ea7174933 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -81,7 +81,6 @@ "Programai leidžiama skaityti pagrindinio ekrano nustatymus ir sparčiuosius klavišus." "rašyti pagrindinio ekrano nustatymus ir sparčiuosius klavišus" "Programai leidžiama keisti pagrindinio ekrano nustatymus ir sparčiuosius klavišus." - "„%1$s“ neleidžiama skambinti" "Nepavyko įkelti valdiklio" "Valdiklio nustatymai" "Palieskite, kad užbaigtumėte sąranką" @@ -101,6 +100,7 @@ "Aplankas: „%1$s“, elementų: %2$d ar daugiau" "Ekrano fonai" "Ekrano fonas ir stilius" + "Redaguoti pagrindinį ekraną" "„Home“ nustatymai" "Išjungė administratorius" "Leisti pasukti pagrindinį ekraną" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 150af9b66b..3a848dd229 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -81,7 +81,6 @@ "Ļauj lietotnei lasīt iestatījumus un saīsnes sākuma ekrānā." "sākuma ekrāna iestatījumu un saīšņu rakstīšana" "Ļauj lietotnei mainīt iestatījumus un saīsnes sākuma ekrānā." - "Lietotnei %1$s nav atļauts veikt tālruņa zvanus." "Nevar ielādēt logrīku." "Logrīka iestatījumi" "Pieskarieties, lai pabeigtu iestatīšanu" @@ -101,6 +100,8 @@ "Mape %1$s, vienumu skaits mapē: vismaz %2$d" "Fona tapetes" "Fona tapete un stils" + + "Sākumlapas iestatījumi" "Atspējojis administrators" "Atļaut sākuma ekrāna pagriešanu" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 13ff08ad4a..6de6141875 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -81,7 +81,6 @@ "Овозможува апликацијата да ги чита поставките и кратенките на почетната страница." "да пишува поставки и кратенки на почетна страница" "Овозможува апликацијата да ги менува поставките и кратенките на почетната страница." - "%1$s нема дозвола за телефонски повици" "Не може да се вчита виџетот" "Поставки за виџет" "Допрете за да го завршите поставувањето" @@ -101,6 +100,8 @@ "Папка: %1$s, %2$d или повеќе ставки" "Тапети" "Тапет и стил" + + "Поставки за почетен екран" "Оневозможено од администраторот" "Дозволи ротирање на почетниот екран" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index e023df8c74..59827f28eb 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -81,7 +81,6 @@ "ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും വായിക്കാൻ ആപ്പിനെ അനുവദിക്കുന്നു." "ഹോം ക്രമീകരണവും കുറുക്കുവഴികളും എഴുതുക" "ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും മാറ്റാൻ ആപ്പിനെ അനുവദിക്കുന്നു." - "ഫോൺ കോൾ ചെയ്യാൻ %1$s എന്നതിനെ അനുവദിച്ചിട്ടില്ല" "വിജറ്റ് ലോഡ് ചെയ്യാനാകുന്നില്ല" "വിജറ്റ് ക്രമീകരണം" "സജ്ജീകരണം പൂർത്തിയാക്കാൻ ടാപ്പ് ചെയ്യുക" @@ -101,6 +100,7 @@ "ഫോൾഡർ: %1$s, %2$d അല്ലെങ്കിൽ അതിലധികം ഇനങ്ങൾ" "വാൾപേപ്പർ" "വാൾപേപ്പറും സ്‌റ്റൈലും" + "ഹോം സ്‌ക്രീൻ എഡിറ്റ് ചെയ്യുക" "ഹോം ക്രമീകരണം" "അഡ്മിൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു" "ഹോം സ്ക്രീൻ റൊട്ടേഷൻ അനുവദിക്കുക" @@ -164,7 +164,7 @@ "ഔദ്യോഗിക ആപ്പുകൾ തൽക്കാലം നിർത്തിയിരിക്കുന്നു" "ഔദ്യോഗിക ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് അറിയിപ്പുകളൊന്നും ലഭിക്കില്ല" "നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല" - "Work ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" + "വർക്ക് ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" "ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനും കഴിയും" "മനസ്സിലായി" "ഔദ്യോഗിക ആപ്പുകൾ താൽക്കാലികമായി നിർത്തുക" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 79adc913f1..eea9195d18 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -81,7 +81,6 @@ "Аппад нүүрэн дэх тохиргоо болон товчлолыг уншихыг зөвшөөрнө." "нүүрний тохиргоо болон товчлолыг бичих" "Аппад нүүрэн дэх тохиргоо болон товчлолыг өөрчлөхийг зөвшөөрнө." - "%1$s утасны дуудлага хийх боломжгүй" "Жижиг хэрэгслийг ачаалах боломжгүй" "Виджетийн тохиргоо" "Тохируулгыг дуусгахын тулд товшино уу" @@ -101,6 +100,8 @@ "Фолдер: %1$s, %2$d эсвэл үүнээс олон зүйл" "Дэлгэцийн зураг" "Дэлгэцийн зураг, загвар" + + "Нүүр хуудасны тохиргоо" "Таны админ идэвхгүй болгосон" "Үндсэн нүүрийг эргүүлэхийг зөвшөөрөх" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index ff9cb3813e..b74a8f50ed 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -81,7 +81,6 @@ "अ‍ॅपला होममधील सेटिंग्ज आणि शॉर्टकट वाचण्याची अनुमती देते." "होम सेटिंग्ज आणि शॉर्टकट लिहा" "अ‍ॅपला होममधील सेटिंग्ज आणि शॉर्टकट बदलण्याची अनुमती देते." - "%1$s ला फोन कॉल करण्याची अनुमती नाही" "विजेट लोड करू शकत नाही" "विजेटची सेटिंग्ज" "सेटअप पूर्ण करण्‍यासाठी टॅप करा" @@ -101,6 +100,7 @@ "फोल्डर: %1$s, %2$d किंवा त्याहून अधिक आयटम" "वॉलपेपर" "वॉलपेपर आणि शैली" + "होम स्क्रीन संपादित करा" "होम सेटिंग्‍ज" "आपल्या प्रशासकाने अक्षम केले" "होम स्क्रीन फिरवण्‍याची अनुमती द्या" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 29845cdf87..7d1a4d172a 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -81,7 +81,6 @@ "Membenarkan apl membaca tetapan dan pintasan di skrin utama." "menulis tetapan dan pintasan skrin utama" "Membenarkan apl menukar tetapan dan pintasan di skrin utama." - "%1$s tidak dibenarkan membuat panggilan telefon" "Tidak dapat memuatkan widget" "Tetapan widget" "Ketik untuk menyelesaikan persediaan" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d atau lebih banyak item" "Hiasan latar" "Kertas dinding & gaya" + "Edit Skrin Utama" "Tetapan skrin utama" "Dilumpuhkan oleh pentadbir anda" "Benarkan putaran skrin utama" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 6c11a61bc0..1a6b0de1e6 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -81,7 +81,6 @@ "ပင်မတွင်ရှိသော ဆက်တင်များနှင့် ဖြတ်လမ်းလင့်ခ်များကို အက်ပ်အား ဖတ်ခွင့်ပြုနိုင်သည်။" "ပင်မဆက်တင်နှင့် ဖြတ်လမ်းလင့်ခ်များ ရေးသားခြင်း" "ပင်မတွင်ရှိသော ဆက်တင်များနှင့် ဖြတ်လမ်းလင့်ခ်များကို အက်ပ်အား ပြောင်းခွင့်ပြုနိုင်သည်။" - "%1$sသည် ဖုန်းခေါ်ဆိုခွင့် မရှိပါ" "ဝိဂျက်ကို ဖွင့်၍မရပါ" "ဝိဂျက်ဆက်တင်များ" "စနစ်ထည့်သွင်းခြင်း အပြီးသတ်ရန် တို့ပါ" @@ -101,6 +100,7 @@ "ဖိုင်တွဲ - %1$s%2$d သို့မဟုတ် နောက်ထပ်ဖိုင်များ" "နောက်ခံများ" "နောက်ခံနှင့် ပုံစံ" + "ပင်မစာမျက်နှာ တည်းဖြတ်ရန်" "ပင်မဆက်တင်များ" "သင့်စီမံခန့်ခွဲသူက ပိတ်လိုက်ပါသည်" "ပင်မစာမျက်နှာလှည့်ခြင်းကို ခွင့်ပြုခြင်း" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 1b1941cfc6..41fb8c084d 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -81,7 +81,6 @@ "Lar appen lese innstillingene og snarveiene på startsiden." "angi startsideinnstillinger og -snarveier" "Lar appen endre innstillingene og snarveiene på startsiden." - "%1$s har ikke tillatelse til å ringe" "Kan ikke laste inn modulen" "Modulinnstillinger" "Trykk for å fullføre konfigureringen" @@ -101,6 +100,8 @@ "Mappe: %1$s, %2$d eller flere elementer" "Bakgrunner" "Bakgrunn og stil" + + "Startsideinnstillinger" "Administratoren har slått av funksjonen" "Tillat at startskjermen roterer" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 58f2793ee0..8ce5603451 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -81,7 +81,6 @@ "एपलाई होम स्क्रिनबाट सेटिङ र सर्टकटहरू रिड गर्ने अनुमति दिन्छ।" "होम स्क्रिनका सेटिङ र सर्टकटहरू राइट गरियोस्" "एपलाई होम स्क्रिनबाट सेटिङ र सर्टकट बदल्ने अनुमति दिन्छ" - "%1$s ले फोन कलहरू गर्न अनुमति छैन" "विजेट लोड गर्न सकिएन" "विजेटका सेटिङ" "सेटअप पूरा गर्न ट्याप गर्नुहोस्" @@ -101,6 +100,7 @@ "फोल्डर: %1$s, %2$d वा सोभन्दा बढी वस्तुहरू" "वालपेपरहरु" "वालपेपर तथा शैली" + "होम स्क्रिन बदल्नुहोस्" "होम पेजका सेटिङहरू" "तपाईँको प्रशासकद्वारा असक्षम गरिएको" "होम स्क्रिन रोटेट हुन दिइयोस्" @@ -167,7 +167,7 @@ "तपाईं कामसम्बन्धी एपबाट फोन कल, टेक्स्ट म्यासेज वा सूचनाहरू प्राप्त गर्नु हुने छैन" "कामसम्बन्धी एपमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्नुहुन्छ" "बुझेँ" - "कामसम्बन्धी एपहरू अस्थायी रूपमा रोक्का गर्नुहोस्" + "कामसम्बन्धी एपहरू पज गर्नुहोस्" "सुचारु गर्नुहोस्" "फिल्टर" "आफ्नो फोन खोज्नुहोस्" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 97b650b853..2241a58b87 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -81,7 +81,6 @@ "De app toestaan de instellingen en snelkoppelingen op het startscherm te lezen." "instellingen en snelkoppelingen op startscherm wijzigen" "De app toestaan de instellingen en snelkoppelingen op het startscherm te wijzigen." - "%1$s mag niet bellen" "Kan widget niet laden" "Widgetinstellingen" "Tik om instellen af te ronden" @@ -101,6 +100,7 @@ "Map: %1$s, %2$d of meer items" "Achtergrond" "Achtergrond en stijl" + "Startscherm bewerken" "Instellingen start" "Uitgezet door je beheerder" "Draaien van startscherm toestaan" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 304e13f42e..5a93d91a83 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -81,7 +81,6 @@ "ହୋମରେ ଥିବା ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ପଢ଼ିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଏ।" "ହୋମ ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ଲେଖନ୍ତୁ" "ହୋମରେ ଥିବା ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଏ।" - "ଫୋନ୍‌ କଲ୍‌ କରିବାକୁ %1$sକୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ" "ୱିଜେଟ୍ ଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ" "ୱିଜେଟ ସେଟିଂସ" "ସେଟଅପ ସମ୍ପୂର୍ଣ୍ଣ କରିବାକୁ ଟାପ କରନ୍ତୁ" @@ -101,6 +100,8 @@ "ଫୋଲ୍ଡର୍: %1$s, %2$d କିମ୍ବା ଅଧିକ ଆଇଟମ୍" "ୱାଲପେପର୍‌" "ୱାଲପେପର ଏବଂ ଷ୍ଟାଇଲ" + + "ହୋମ ସେଟିଂସ" "ଆପଣଙ୍କ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଅକ୍ଷମ କରାଯାଇଛି" "ହୋମ ସ୍କ୍ରିନ ରୋଟେସନକୁ ଅନୁମତି ଦିଅନ୍ତୁ" @@ -159,13 +160,13 @@ "ବ୍ୟକ୍ତିଗତ" "ୱାର୍କ" "ୱର୍କ ପ୍ରୋଫାଇଲ୍‌" - "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" + "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" "ବୁଝିଗଲି" "ୱାର୍କ ଆପ୍ସ ବିରତ କରାଯାଇଛି" "ଆପଣ ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସରୁ ବିଜ୍ଞପ୍ତି ପାଇବେ ନାହିଁ" "ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ କରିପାରିବ ନାହିଁ" "ଆପଣ ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସରୁ ଫୋନ କଲ, ଟେକ୍ସଟ ମେସେଜ କିମ୍ବା ବିଜ୍ଞପ୍ତି ପାଇବେ ନାହିଁ" - "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦେଖାଯାଉଛି" + "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" "ବୁଝିଗଲି" "ୱାର୍କ ଆପ୍ସ ବିରତ କରନ୍ତୁ" "ପୁଣି ଚାଲୁ କରନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 24a5f7f6bc..ae10c8f068 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -81,7 +81,6 @@ "ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਪੜ੍ਹਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।" "ਹੋਮ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਲਿਖੋ" "ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।" - "%1$s ਨੂੰ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ" "ਵਿਜੇਟ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" "ਵਿਜੇਟ ਸੈਟਿੰਗਾਂ" "ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ" @@ -101,6 +100,8 @@ "ਫੋਲਡਰ: %1$s, %2$d ਜਾਂ ਹੋਰ ਆਈਟਮਾਂ" "ਵਾਲਪੇਪਰ" "ਵਾਲਪੇਪਰ ਅਤੇ ਸਟਾਈਲ" + + "ਹੋਮ ਸੈਟਿੰਗਾਂ" "ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਈ ਗਈ" "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" @@ -159,13 +160,13 @@ "ਨਿੱਜੀ" "ਕੰਮ ਸੰਬੰਧੀ" "ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ" - "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" + "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" "ਸਮਝ ਲਿਆ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ" "ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੋਂ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੀਆਂ" "ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ" "ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੋਂ ਫ਼ੋਨ ਕਾਲਾਂ, ਲਿਖਤ ਸੁਨੇਹੇ ਜਾਂ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੀਆਂ" - "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" + "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" "ਸਮਝ ਲਿਆ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਰੋਕੋ" "ਰੋਕ ਹਟਾਓ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index d8645f0c25..6f73d5fdfe 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -29,8 +29,7 @@ "Ekran główny" "Podziel ekran" "Informacje o aplikacji: %1$s" - - + "Zapisz parę aplikacji" "Naciśnij i przytrzymaj, aby przenieść widżet." "Naciśnij dwukrotnie i przytrzymaj, aby przenieść widżet lub użyć działań niestandardowych." "%1$d × %2$d" @@ -82,7 +81,6 @@ "Umożliwia aplikacji odczytywanie ustawień i skrótów na ekranie głównym." "Zapisuje ustawienia i skróty na ekranie głównym" "Umożliwia aplikacji zmianę ustawień i skrótów na ekranie głównym." - "%1$s nie może wykonywać połączeń telefonicznych" "Nie udało się załadować widżetu" "Ustawienia widżetu" "Kliknij, aby dokończyć konfigurację" @@ -102,13 +100,15 @@ "Folder: %1$s, liczba elementów: %2$d lub więcej" "Tapety" "Tapeta i styl" + + "Ustawienia ekranu głównego" "Funkcja wyłączona przez administratora" "Zezwalaj na obrót ekranu głównego" "Po obróceniu telefonu" "Kropki powiadomień" - "Włączono" - "Wyłączono" + "Włączone" + "Wyłączone" "Wymagany jest dostęp do powiadomień" "Aby pokazywać kropki powiadomień, włącz powiadomienia aplikacji %1$s" "Zmień ustawienia" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index e9445cf700..dcbbe1dd3c 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -81,7 +81,6 @@ "Permite que a app leia as definições e os atalhos no ecrã principal." "escrever definições e atalhos do ecrã principal" "Permite que a app altere as definições e os atalhos no ecrã principal." - "O %1$s não tem autorização para efetuar chamadas telefónicas" "Não é possível carregar o widget" "Definições de widget" "Toque para concluir a configuração" @@ -101,6 +100,7 @@ "Pasta: %1$s, %2$d ou mais itens" "Imagens de fundo" "Imagem fundo/estilo" + "Editar ecrã principal" "Definições de início" "Desativada pelo gestor" "Permitir rotação do ecrã principal" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 72dd608fad..421f2dd24e 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -81,7 +81,6 @@ "Permite que o app leia as configurações e os atalhos na tela inicial." "gravar configurações e atalhos da tela inicial" "Permite que o app mude as configurações e os atalhos na tela inicial." - "%1$s não tem permissão para fazer chamadas" "Não é possível carregar o widget" "Configurações de widget" "Toque para concluir a configuração" @@ -101,6 +100,7 @@ "Pasta: %1$s, %2$d ou mais itens" "Planos de fundo" "Plano de fundo e estilo" + "Editar tela inicial" "Configurações da tela inicial" "Desativado pelo administrador" "Permitir a rotação da tela inicial" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index dbfbf766b0..0f2c079952 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -81,7 +81,6 @@ "Permite aplicației să citească setările și comenzile rapide de pe ecranul de pornire." "scrie setările și comenzile rapide de pe ecranul de pornire" "Permite aplicației să modifice setările și comenzile rapide de pe ecranul de pornire." - "%1$s nu are permisiunea de a apela" "Widgetul nu poate fi încărcat" "Setări pentru widget" "Atinge pentru a finaliza configurarea" @@ -101,6 +100,8 @@ "Dosar: %1$s, %2$d sau mai multe elemente" "Imagini de fundal" "Imagine de fundal și stil" + + "Setări ecran de pornire" "Dezactivată de administrator" "Permite rotirea ecranului de pornire" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 134004da14..5d67c6aeb1 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -81,7 +81,6 @@ "Приложение получит доступ к данным о настройках и ярлыках на главном экране." "Изменение настроек и ярлыков на главном экране" "Приложение сможет изменять настройки и ярлыки на главном экране." - "Приложение %1$s не может делать телефонные звонки" "Не удается загрузить виджет." "Настройки виджета" "Нажмите, чтобы завершить настройку." @@ -101,6 +100,8 @@ "Папка \"%1$s\" (объектов: %2$d или больше)" "Обои" "Обои и стиль" + + "Главный экран" "Функция отключена администратором" "Разрешить поворачивать главный экран" @@ -159,13 +160,13 @@ "Личные" "Рабочие" "Рабочий профиль" - "У рабочих приложений есть специальная пометка. Они видны системному администратору." + "У рабочих приложений есть специальный значок. Они видны системному администратору." "ОК" "Рабочие приложения приостановлены" "Вы не будете получать уведомления от рабочих приложений." "Рабочие приложения не могут отправлять уведомления, расходовать заряд батареи и получать доступ к данным о вашем местоположении." "Вы не будете получать вызовы, текстовые сообщения и уведомления от рабочих приложений." - "У рабочих приложений есть специальная пометка. Они видны системному администратору." + "У рабочих приложений есть специальный значок. Они видны системному администратору." "ОК" "Приостановить рабочие приложения" "Возобновить" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 01d6ba0026..c11b8d4d93 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -81,7 +81,6 @@ "මුල් පිටුවේ ඇති සැකසීම් සහ කෙටි මං කියවීමට යෙදුමට ඉඩ දෙයි." "මුල් පිටු සැකසීම් සහ කෙටි මං ලියන්න" "මුල් පිටුවේ සැකසීම් සහ කෙටි මං ඉවත් කිරීමට යෙදුමට ඉඩ දෙයි." - "%1$s හට දුරකථන ඇමතුම් සිදු කිරීමට ඉඩ නොදේ" "විජට් පූරණය කළ නොහැකිය" "විජට් සැකසීම්" "පිහිටුවීම අවසන් කිරීමට තට්ටු කරන්න" @@ -101,6 +100,8 @@ "ෆෝල්ඩර: %1$s, අයිතම %2$dක් හෝ වැඩි ගණනක්" "වෝල්පේපර" "වෝල්පේපරය සහ මෝස්තරය" + + "නිවසේ සැකසීම්" "ඔබගේ පරිපාලක විසින් අබල කරන ලදී" "මුල් තිරය කරකැවීමට ඉඩ දෙන්න" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 2c257b7709..434e416327 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -81,7 +81,6 @@ "Povoľuje aplikácii čítať nastavenia a odkazy na ploche." "zápis nastavení a odkazov plochy" "Povoľuje aplikácii meniť nastavenia a odkazy na ploche." - "Aplikácia %1$s nemá povolenie uskutočňovať telefonické hovory" "Miniaplikáciu sa nepodarilo načítať" "Nastavenia miniaplikácie" "Nastavenie dokončíte klepnutím" @@ -101,6 +100,7 @@ "Priečinok: %1$s, %2$d alebo viac položiek" "Tapety" "Tapeta a štýl" + "Upraviť plochu" "Nastavenia plochy" "Zakázané vaším správcom" "Povoliť otáčanie plochy" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 2fd10ecd47..1a9f835325 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -81,7 +81,6 @@ "Aplikaciji dovoli branje nastavitev in bližnjic na začetnem zaslonu." "zapisovanje nastavitev in bližnjic začetnega zaslona" "Aplikaciji dovoli spreminjanje nastavitev in bližnjic na začetnem zaslonu." - "Aplikaciji %1$s ni dovoljeno opravljanje klicev" "Pripomočka ni mogoče naložiti." "Nastavitve pripomočka" "Dotaknite se, da dokončate postopek nastavitve." @@ -101,6 +100,8 @@ "Mapa: %1$s, %2$d ali več elementov" "Ozadja" "Zaslonsko ozadje in slog" + + "Domače nastavitve" "Onemogočil skrbnik." "Dovoli sukanje začetnega zaslona" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 994fa9891a..41c6d96100 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -81,7 +81,6 @@ "Lejon aplikacionin që të lexojë cilësimet dhe shkurtoret në ekranin bazë." "shkruaj cilësimet dhe shkurtoret e ekranit bazë" "Lejon aplikacionin që të ndryshojë cilësimet dhe shkurtoret në ekranin bazë." - "%1$s nuk lejohet të kryejë telefonata" "S\'mund të ngarkohet miniaplikacioni" "Cilësimet e miniaplikacionit" "Trokit për të përfunduar konfigurimin" @@ -101,6 +100,8 @@ "Dosja: %1$s, %2$d ose më shumë artikuj" "Imazhet e sfondit" "Imazhi i sfondit dhe stili" + + "Cilësimet e ekranit bazë" "Çaktivizuar nga administratori" "Lejo rrotullimin e ekranit bazë" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 544ef0c04f..4ce61fdd14 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -81,7 +81,6 @@ "Дозвољава апликацији да чита подешавања и пречице на почетном екрану." "уписивање подешавања и пречица на почетном екрану" "Дозвољава апликацији да мења подешавања и пречице на почетном екрану." - "%1$s нема дозволу за упућивање телефонских позива" "Учитавање виџета није успело" "Подешавања виџета" "Додирните да бисте довршили подешавање" @@ -101,6 +100,8 @@ "Фолдер: %1$s, %2$d или више ставки" "Позадине" "Позадина и стил" + + "Подешавања почетног екрана" "Администратор је онемогућио" "Дозволи ротацију почетног екрана" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 9d7f650e3e..8c918a0a2c 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -81,7 +81,6 @@ "Tillåter att appen läser inställningar och genvägar på startskärmen." "skriva inställningar och genvägar på startskärmen" "Tillåter att appen ändrar inställningar och genvägar på startskärmen." - "%1$s har inte behörighet att ringa samtal" "Det gick inte att läsa in widgeten" "Widgetinställningar" "Tryck för att slutföra konfigureringen" @@ -101,6 +100,8 @@ "Mapp: %1$s, %2$d eller fler objekt" "Bakgrunder" "Bakgrund och utseende" + + "Startinställningar" "Inaktiverat av administratören" "Tillåt rotering av startskärmen" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 2fbf7aa5f0..b992037748 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -81,7 +81,6 @@ "Huruhusu programu kusoma mipangilio na njia za mikato katika skrini ya kwanza." "kuandika mipangilio ya skrini ya kwanza na njia za mkato" "Huruhusu programu kubadilisha mipangilio na njia za mkato katika skrini ya kwanza." - "%1$s hairuhusiwi kupiga simu" "Imeshindwa kupakia wijeti" "Mipangilio ya wijeti" "Gusa ili umalize kuweka mipangilio" @@ -101,6 +100,7 @@ "Folda: %1$s, vipengee %2$d au zaidi" "Mandhari" "Mandhari na mtindo" + "Badilisha Skrini ya Kwanza" "Mipangilio ya mwanzo" "Imezimwa na msimamizi wako" "Ruhusu kipengele cha kuzungusha skrini ya kwanza" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index bbf22a4ddc..2742361cd7 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -81,7 +81,6 @@ "முகப்புத் திரையிலுள்ள அமைப்புகளையும் ஷார்ட்கட்களையும் படிக்க ஆப்ஸை அனுமதிக்கும்." "முகப்புத் திரையின் அமைப்புகளையும் ஷார்ட்கட்களையும் எழுதுதல்" "முகப்புத் திரையிலுள்ள அமைப்புகளையும் ஷார்ட்கட்களையும் மாற்ற ஆப்ஸை அனுமதிக்கும்." - "ஃபோன் அழைப்புகள் செய்ய, %1$s அனுமதிக்கப்படவில்லை" "விட்ஜெட்டை ஏற்ற முடியவில்லை" "விட்ஜெட் அமைப்புகள்" "அமைவை நிறைவுசெய்யத் தட்டவும்" @@ -101,6 +100,8 @@ "ஃபோல்டர்: %1$s, %2$d அல்லது அதற்கு அதிகமான ஃபைல்கள்" "வால்பேப்பர்கள்" "வால்பேப்பர் & ஸ்டைல்" + + "முகப்பு அமைப்புகள்" "உங்கள் நிர்வாகி முடக்கியுள்ளார்" "முகப்புத் திரை சுழற்சியை அனுமதித்தல்" @@ -159,7 +160,7 @@ "தனிப்பட்டவை" "பணி" "பணிக் கணக்கு" - "பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டுள்ளன. உங்கள் IT நிர்வாகியால் அவற்றைப் பார்க்க முடியும்" + "பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டிருக்கும், உங்கள் IT நிர்வாகியால் பணி ஆப்ஸைப் பார்க்க முடியும்" "முடிந்தது" "பணி ஆப்ஸ் இடைநிறுத்தப்பட்டுள்ளன" "உங்கள் பணி ஆப்ஸிலிருந்து அறிவிப்புகளைப் பெறமாட்டீர்கள்" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 88fca12453..bafa95519d 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -81,7 +81,6 @@ "హోమ్‌లో సెట్టింగ్‌లు, షార్ట్‌కట్‌లను చదవడానికి యాప్‌ను అనుమతిస్తుంది." "హోమ్ సెట్టింగ్‌లు, షార్ట్‌కట్‌లను రాయండి" "హోమ్‌లో సెట్టింగ్‌లు, షార్ట్‌కట్‌లను మార్చడానికి యాప్‌ను అనుమతిస్తుంది." - "ఫోన్ కాల్స్‌ను చేసేందుకు %1$sకి అనుమతి లేదు" "విడ్జెట్‌ను లోడ్ చేయడం సాధ్యం కాలేదు" "విడ్జెట్ సెట్టింగ్‌లు" "సెటప్‌ను ముగించడానికి ట్యాప్ చేయండి" @@ -101,6 +100,7 @@ "ఫోల్డర్: %1$s, %2$d లేదా అంతకంటే ఎక్కువ ఐటెమ్‌లు" "వాల్‌పేపర్‌లు" "వాల్‌పేపర్ & స్టయిల్" + "మొదటి స్క్రీన్‌ను ఎడిట్ చేయండి" "మొదటి స్క్రీన్ సెట్టింగ్‌లు" "మీ నిర్వాహకులు నిలిపివేసారు" "మొదటి స్క్రీన్ రొటేషన్‌ను అనుమతించండి" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 6bcc09e9f3..c75c5326ae 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -81,7 +81,6 @@ "อนุญาตให้แอปอ่านการตั้งค่าและทางลัดในหน้าแรก" "เขียนการตั้งค่าและทางลัดในหน้าแรก" "อนุญาตให้แอปเปลี่ยนการตั้งค่าและทางลัดในหน้าแรก" - "%1$s ไม่ได้รับอนุญาตให้โทรออก" "โหลดวิดเจ็ตไม่ได้" "การตั้งค่าวิดเจ็ต" "แตะเพื่อสิ้นสุดการตั้งค่า" @@ -101,6 +100,7 @@ "โฟลเดอร์: %1$s, อย่างน้อย %2$d รายการ" "วอลเปเปอร์" "วอลเปเปอร์และรูปแบบ" + "แก้ไขหน้าจอหลัก" "การตั้งค่าหน้าจอหลัก" "ปิดใช้โดยผู้ดูแลระบบ" "อนุญาตให้หมุนหน้าจอหลัก" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 490ce0684a..b91d67e8be 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -81,7 +81,6 @@ "Binibigyang-daan ang app na basahin ang mga setting at shortcut sa home." "magsulat ng mga setting at shortcut ng home" "Binibigyang-daan ang app na baguhin ang mga setting at shortcut sa home." - "Hindi pinahihintulutang tumawag ang %1$s" "Hindi ma-load ang widget" "Mga setting ng widget" "I-tap para tapusin ang pag-set up" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d o higit pang item" "Mga Wallpaper" "Wallpaper & istilo" + "I-edit ang Home Screen" "Mga setting ng Home" "Na-disable ng iyong admin" "Payagan ang pag-rotate ng home screen" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 4b2f6dac1b..ed0e6cfa50 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -81,7 +81,6 @@ "Uygulamaya ana ekrandaki ayarları ve kısayolları okuma izni verir." "ana ekran ayarlarını ve kısayollarını yaz" "Uygulamaya ana ekrandaki ayarları ve kısayolları değiştirme izni verir." - "%1$s uygulamasının telefon etmesine izin verilmiyor" "Widget yüklenemiyor" "Widget ayarları" "Kurulumu tamamlamak için dokunun" @@ -101,6 +100,8 @@ "Klasör: %1$s, %2$d veya daha fazla öğe" "Duvar Kağıtları" "Duvar kağıdı ve stil" + + "Ana ekran ayarları" "Yöneticiniz tarafından devre dışı bırakıldı" "Ana ekranı döndürmeye izin ver" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index c8d29f4666..8c9524aae9 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -81,7 +81,6 @@ "Дозволяє додатку читати налаштування та ярлики на головному екрані." "записувати налаштування та ярлики головного екрана" "Дозволяє додатку змінювати налаштування та ярлики на головному екрані." - "Додаток %1$s не має дозволу телефонувати" "Не вдається завантажити віджет" "Налаштування віджета" "Торкніться, щоб завершити налаштування" @@ -101,6 +100,8 @@ "Папка \"%1$s\", елементів: %2$d або більше" "Фонові малюнки" "Оформлення і стиль" + + "Налаштування головного екрана" "Вимкнув адміністратор" "Дозволити обертання головного екрана" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 7016491db1..5b10dd21ee 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -81,7 +81,6 @@ "اس سے ایپ کو ہوم اسکرین میں ترتیبات اور شارٹ کٹس کو پڑھنے کی اجازت ملتی ہے۔" "ہوم ترتیبات اور شارٹ کٹس کو لکھیں" "اس سے ایپ کو ہوم اسکرین میں ترتیبات اور شارٹ کٹس کو تبدیل کرنے کی اجازت ملتی ہے۔" - "%1$s کو فون کالیں کرنے کی اجازت نہیں ہے" "ویجیٹ لوڈ نہیں کیا جا سکتا" "ویجیٹ کی ترتیبات" "سیٹ اپ مکمل کرنے کیلئے تھپتھپائیں" @@ -101,6 +100,7 @@ "فولڈر: %1$s، %2$d یا مزید آئٹمز" "وال پیپرز" "وال پیپر اور طرز" + "ہوم اسکرین میں ترمیم کریں" "ہوم ترتیبات" "آپ کے منتظم کی طرف سے غیر فعال کر دیا گیا" "ہوم اسکرین گھمانے کی اجازت دیں" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index efee72365f..81ad4dce90 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -81,7 +81,6 @@ "Ilovaga bosh ekrandagi yorliqlar va sozlamalarni oʻqish uchun ruxsat beradi." "Bosh ekrandagi sozlamalar va yorliqlarni oʻzgartirish" "Ilova bosh ekrandagi yorliqlar va sozlamalarni oʻzgartirishi mumkin." - "%1$s ilovasiga qo‘ng‘iroqlarni amalga oshirishga ruxsat berilmagan" "Vidjet yuklanmadi" "Vidjet sozlamalari" "Sozlashni yakunlash uchun bosing" @@ -101,6 +100,7 @@ "Jild: %1$s, %2$d va undan ortiq fayllar" "Fon rasmlari" "Fon rasmi va uslubi" + "Bosh ekranni tahrirlash" "Bosh ekran sozlamalari" "Administrator tomonidan o‘chirilgan" "Bosh ekranni burishga ruxsat" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 14b88226f7..ba7b0ce2cf 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -81,7 +81,6 @@ "Cho phép ứng dụng đọc các chế độ cài đặt và lối tắt trên màn hình chính." "ghi lối tắt và các chế độ cài đặt trên màn hình chính" "Cho phép ứng dụng thay đổi các chế độ cài đặt và lối tắt trên màn hình chính." - "%1$s không được phép thực hiện cuộc gọi điện thoại" "Không thể tải tiện ích" "Cài đặt tiện ích" "Nhấn để hoàn tất thiết lập" @@ -101,6 +100,8 @@ "Thư mục: %1$s, %2$d mục trở lên" "Hình nền" "Hình nền và phong cách" + + "Cài đặt màn hình chính" "Bị tắt bởi quản trị viên của bạn" "Cho phép xoay màn hình chính" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index b30b6ee68c..415f5fa93d 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -81,7 +81,6 @@ "允许此应用读取主屏幕中的设置和快捷方式。" "写入主屏幕设置和快捷方式" "允许此应用更改主屏幕中的设置和快捷方式。" - "不允许使用“%1$s”拨打电话" "无法加载微件" "微件设置" "点按即可完成设置" @@ -101,6 +100,7 @@ "文件夹:%1$s%2$d 个或更多项目" "壁纸" "壁纸和样式" + "修改主屏幕" "主屏幕设置" "已被您的管理员停用" "允许旋转主屏幕" @@ -159,13 +159,13 @@ "个人" "工作" "工作资料" - "工作应用带有标志,您的 IT 管理员可以看到此类应用" + "工作应用都有相应的标志,且您的 IT 管理员可以看到它们" "知道了" "工作应用已暂停" "您将不会收到来自工作应用的通知" "工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息" "您将不会收到来自工作应用的来电、短信或通知" - "工作应用带有标志,您的 IT 管理员可以看到工作应用" + "工作应用都有相应的标志,且您的 IT 管理员可以看到它们" "知道了" "暂停工作应用" "取消暂停" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 4313e96cb3..14291697d2 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -81,7 +81,6 @@ "允許應用程式讀取主畫面中的設定和捷徑。" "寫入主畫面設定和捷徑" "允許應用程式變更主畫面中的設定和捷徑。" - "不允許 %1$s 撥打電話" "無法載入小工具" "小工具設定" "輕按即可完成設定" @@ -101,6 +100,7 @@ "資料夾:%1$s%2$d 個或以上的項目" "桌布" "桌布和樣式" + "編輯主畫面" "主畫面設定" "已由您的管理員停用" "允許旋轉主畫面" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 330d65f159..7f949e8e41 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -81,7 +81,6 @@ "允許應用程式讀取主畫面中的設定和捷徑。" "寫入主畫面設定和捷徑" "允許應用程式變更主畫面中的設定和捷徑。" - "%1$s 無法撥打電話" "無法載入小工具" "小工具設定" "輕觸即可完成設定" @@ -101,6 +100,7 @@ "資料夾:%1$s%2$d 個以上的項目" "桌布" "桌布和樣式" + "編輯主畫面" "主畫面設定" "已由你的管理員停用" "允許旋轉主畫面" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 39204f4ce1..6b457d116e 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -81,7 +81,6 @@ "Ivumela i-app ukuthi ifunde amasethingi nezinqamuleli ekhaya." "bhala amasethingi wasekhaya nezinqamuleli" "Ivumela ama-app ukushintsha amasethingi nezinqamuleli ekhaya." - "%1$s ayivunyelwe ukwenza amakholi wefoni" "Ayikwazi ukulayisha iwijethi" "Amasethingi ewijethi" "Thepha ukuze uqede ukusetha" @@ -101,6 +100,7 @@ "Ifolda: %1$s, %2$d noma izinto eziningi" "Izithombe zangemuva" "Isithombe sangemuva nesitayela" + "Hlela Isikrini Sasekhaya" "Amasethingi asekhaya" "Kukhutshazwe umlawuli wakho" "Vumela ukuzungezisa kwesikrini sasekhaya" From 5dc55f5de1fd2006fb01d5fad135f56227b4d0f6 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 17 Apr 2023 14:40:57 -0700 Subject: [PATCH 31/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ifcdcd02f83d4dfc5f708b44239e6514d935309eb --- res/values-ar/strings.xml | 4 ++-- res/values-as/strings.xml | 4 ++-- res/values-bn/strings.xml | 4 ++-- res/values-ca/strings.xml | 4 ++-- res/values-fr/strings.xml | 2 +- res/values-in/strings.xml | 2 +- res/values-ne/strings.xml | 2 +- res/values-or/strings.xml | 4 ++-- res/values-pa/strings.xml | 4 ++-- res/values-pl/strings.xml | 4 ++-- res/values-ru/strings.xml | 4 ++-- res/values-ta/strings.xml | 2 +- res/values-zh-rCN/strings.xml | 4 ++-- 13 files changed, 22 insertions(+), 22 deletions(-) diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index 85ebc22501..d8087e3df5 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -158,12 +158,12 @@ "شخصية" "للعمل" "الملف الشخصي للعمل" - "تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات." + "تحمل تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات." "حسنًا" "تطبيقات العمل متوقفة مؤقتًا" "لا يمكن لتطبيقات العمل إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي." "تطبيقات العمل غير مفعّلة، وبالتالي لا يمكنها إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي." - "تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات." + "تكون تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات." "حسنًا" "إيقاف تطبيقات العمل مؤقتًا" "تفعيل تطبيقات العمل" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index a0461bc07d..b4015a9047 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -54,8 +54,8 @@ "ৱিজেটৰ ছেটিং সলনি কৰিবলৈ টিপক" "বুজি পালোঁ" "ৱিজেটৰ ছেটিং সলনি কৰক" - "এপসমূহ সন্ধান কৰক" - "এপসমূহ ল’ড কৰি থকা হৈছে…" + "এপ্‌সমূহ সন্ধান কৰক" + "এপ্‌সমূহ ল’ড কৰি থকা হৈছে…" "\"%1$s\"ৰ সৈতে মিলা কোনো এপ্ বিচাৰি পোৱা নগ\'ল" "এপ্" "আটাইবোৰ এপ্" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 987f4bd0e2..b7e745a0cf 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -158,12 +158,12 @@ "ব্যক্তিগত" "অফিস" "অফিসের প্রোফাইল" - "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন" + "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন" "বুঝেছি" "অফিস অ্যাপ বন্ধ করা আছে" "অফিসের অ্যাপ আপনাকে নোটিফিকেশন পাঠাতে পারবে না। এছাড়া, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না" "অফিসের অ্যাপ বন্ধ আছে। আপনার অফিসের অ্যাপ আপনাকে বিজ্ঞপ্তি পাঠাতে, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না" - "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন" + "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন" "বুঝেছি" "অফিসের অ্যাপ পজ করুন" "অফিস অ্যাপ চালু করুন" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index 046ccf15af..ae271070d4 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -158,12 +158,12 @@ "Personal" "Treball" "Perfil de treball" - "Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI" + "Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure" "Entesos" "Les aplicacions de treball estan en pausa" "Les aplicacions de treball no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació" "Les aplicacions de treball estan desactivades: no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació" - "Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI" + "Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure" "Entesos" "Posa en pausa les aplicacions de treball" "Activa les aplicacions de treball" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 803c12bded..a95d6b8340 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -105,7 +105,7 @@ "Autoriser la rotation de l\'écran d\'accueil" "Lorsque vous faites pivoter le téléphone" "Pastilles de notification" - "Activées" + "Activé" "Désactivées" "Accès aux notifications requis" "Pour afficher les pastilles de notification, activez les notifications de l\'application %1$s" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 5738b8b52c..ff75d15a4e 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -100,7 +100,7 @@ "Folder: %1$s, %2$d item atau lebih" "Wallpaper" "Wallpaper & gaya" - "Setelan Layar utama" + "Setelan layar utama" "Dinonaktifkan oleh admin" "Izinkan layar utama diputar" "Saat ponsel diputar" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 2dcde21e92..a5e54785aa 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -165,7 +165,7 @@ "कामसम्बन्धी एपहरू अफ गरिएका छन्। तपाईंका कामसम्बन्धी एपहरूले तपाईंलाई सूचना पठाउन, तपाईंको डिभाइसको ब्याट्री प्रयोग गर्न वा तपाईंको लोकेसन हेर्न सक्दैनन्" "कामसम्बन्धी एपमा ब्याज अङ्कित हुन्छ र तपाईंका IT एड्मिन ती एप हेर्न सक्नुहुन्छ" "बुझेँ" - "कामसम्बन्धी एपहरू अस्थायी रूपमा रोक्का गर्नुहोस्" + "कामसम्बन्धी एपहरू पज गर्नुहोस्" "कामसम्बन्धी एपहरू अन गर्नुहोस्" "फिल्टर" "आफ्नो फोन खोज्नुहोस्" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index dc489bd853..d23d7fafb3 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -158,12 +158,12 @@ "ବ୍ୟକ୍ତିଗତ" "ୱାର୍କ" "ୱର୍କ ପ୍ରୋଫାଇଲ୍‌" - "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" + "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" "ବୁଝିଗଲି" "ୱାର୍କ ଆପ୍ସ ବିରତ କରାଯାଇଛି" "ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ କରିପାରିବ ନାହିଁ" "ୱାର୍କ ଆପଗୁଡ଼ିକ ବନ୍ଦ ଅଛି। ଆପଣଙ୍କ ୱାର୍କ ଆପଗୁଡ଼ିକ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ୍ କରିପାରିବ ନାହିଁ" - "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦେଖାଯାଉଛି" + "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" "ବୁଝିଗଲି" "ୱାର୍କ ଆପ୍ସ ବିରତ କରନ୍ତୁ" "ୱାର୍କ ଆପଗୁଡ଼ିକୁ ଚାଲୁ କରନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 1a364b718e..fa89b36120 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -158,12 +158,12 @@ "ਨਿੱਜੀ" "ਕੰਮ ਸੰਬੰਧੀ" "ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ" - "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" + "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" "ਸਮਝ ਲਿਆ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ" "ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਬੰਦ ਹਨ। ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ" - "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" + "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" "ਸਮਝ ਲਿਆ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਰੋਕੋ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਚਾਲੂ ਕਰੋ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 45ad46c6d4..3d469e2fc3 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -105,8 +105,8 @@ "Zezwalaj na obrót ekranu głównego" "Po obróceniu telefonu" "Kropki powiadomień" - "Włączono" - "Wyłączono" + "Włączone" + "Wyłączone" "Wymagany jest dostęp do powiadomień" "Aby pokazywać kropki powiadomień, włącz powiadomienia aplikacji %1$s" "Zmień ustawienia" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 58b039d944..e7b77b8712 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -158,12 +158,12 @@ "Личные" "Рабочие" "Рабочий профиль" - "У рабочих приложений есть специальная пометка. Они видны системному администратору." + "У рабочих приложений есть специальный значок. Они видны системному администратору." "ОК" "Рабочие приложения приостановлены" "Рабочие приложения не могут отправлять уведомления, расходовать заряд батареи и получать доступ к данным о вашем местоположении." "Рабочие приложения отключены. Они не могут отправлять уведомления, расходовать заряд батареи и получать доступ к вашему местоположению." - "У рабочих приложений есть специальная пометка. Они видны системному администратору." + "У рабочих приложений есть специальный значок. Они видны системному администратору." "ОК" "Приостановить рабочие приложения" "Включить рабочие приложения" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index a2c0dd62f5..ab2a16cc2f 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -158,7 +158,7 @@ "தனிப்பட்டவை" "பணி" "பணிக் கணக்கு" - "பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டுள்ளன. உங்கள் IT நிர்வாகியால் அவற்றைப் பார்க்க முடியும்" + "பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டிருக்கும், உங்கள் IT நிர்வாகியால் பணி ஆப்ஸைப் பார்க்க முடியும்" "முடிந்தது" "பணி ஆப்ஸ் இடைநிறுத்தப்பட்டுள்ளன" "பணி ஆப்ஸால் உங்களுக்கு அறிவிப்புகளை அனுப்பவோ பேட்டரியைப் பயன்படுத்தவோ உங்கள் இருப்பிடத்தை அணுகவோ முடியாது" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index bdff8d5b9b..ca937735c0 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -158,12 +158,12 @@ "个人" "工作" "工作资料" - "工作应用带有标志,您的 IT 管理员可以看到此类应用" + "工作应用都有相应的标志,且您的 IT 管理员可以看到它们" "知道了" "工作应用已暂停" "工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息" "工作应用已关闭。工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息" - "工作应用带有标志,您的 IT 管理员可以看到工作应用" + "工作应用都有相应的标志,且您的 IT 管理员可以看到它们" "知道了" "暂停工作应用" "开启工作应用" From 55913d53c6a95fb59a79fa297819a491944a76c6 Mon Sep 17 00:00:00 2001 From: Mady Mellor Date: Mon, 14 Nov 2022 10:41:21 -0800 Subject: [PATCH 32/81] Creates BubbleBarView & BubbleBarViewController & friends BubbleBarView shows BubbleViews in a bar similar to transient taskbar. BubbleBarView can be collapsed (bubbles in a stack) or expanded (bubbles all visible). When expanded, WMShell will be notified to show the appropriate expanded bubble view (not part of this CL). Also creates BubbleControllers which contains BubbleBarViewController and will eventually contain other controllers related to stashing for the bubble bar. Bug: 253318833 Test: manual, with other CLs, see go/bubble-bar-tests Flag: WM_BUBBLE_BAR Change-Id: I990ab3da6614db90ffff8c40281dc7f16b3957f6 --- quickstep/res/layout/bubble_view.xml | 55 ++++ quickstep/res/layout/bubblebar_item_view.xml | 21 ++ quickstep/res/values/dimens.xml | 13 + .../taskbar/bubbles/BubbleBarBackground.kt | 134 ++++++++ .../taskbar/bubbles/BubbleBarBubble.kt | 36 +++ .../taskbar/bubbles/BubbleBarView.java | 304 ++++++++++++++++++ .../bubbles/BubbleBarViewController.java | 276 ++++++++++++++++ .../taskbar/bubbles/BubbleControllers.java | 66 ++++ .../launcher3/taskbar/bubbles/BubbleView.java | 134 ++++++++ 9 files changed, 1039 insertions(+) create mode 100644 quickstep/res/layout/bubble_view.xml create mode 100644 quickstep/res/layout/bubblebar_item_view.xml create mode 100644 quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBackground.kt create mode 100644 quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBubble.kt create mode 100644 quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java create mode 100644 quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java create mode 100644 quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleControllers.java create mode 100644 quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java diff --git a/quickstep/res/layout/bubble_view.xml b/quickstep/res/layout/bubble_view.xml new file mode 100644 index 0000000000..0b1ed9f343 --- /dev/null +++ b/quickstep/res/layout/bubble_view.xml @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/quickstep/res/layout/bubblebar_item_view.xml b/quickstep/res/layout/bubblebar_item_view.xml new file mode 100644 index 0000000000..64fc4dfa3d --- /dev/null +++ b/quickstep/res/layout/bubblebar_item_view.xml @@ -0,0 +1,21 @@ + + + diff --git a/quickstep/res/values/dimens.xml b/quickstep/res/values/dimens.xml index 3df5d57b55..cdb3b1ccb8 100644 --- a/quickstep/res/values/dimens.xml +++ b/quickstep/res/values/dimens.xml @@ -344,6 +344,19 @@ 30dp + + 72dp + 55dp + @dimen/transient_taskbar_stashed_height + @dimen/taskbar_stashed_handle_height + 8dp + + 50dp + 24dp + 12dp + 3dp + 1dp + diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBackground.kt b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBackground.kt new file mode 100644 index 0000000000..667c6f5b6c --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBackground.kt @@ -0,0 +1,134 @@ +/* + * 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.bubbles + +import android.graphics.Canvas +import android.graphics.Color +import android.graphics.ColorFilter +import android.graphics.Paint +import android.graphics.drawable.Drawable +import android.graphics.drawable.ShapeDrawable +import com.android.launcher3.R +import com.android.launcher3.Utilities +import com.android.launcher3.Utilities.mapToRange +import com.android.launcher3.anim.Interpolators +import com.android.launcher3.icons.GraphicsUtils.setColorAlphaBound +import com.android.launcher3.taskbar.TaskbarActivityContext +import com.android.wm.shell.common.TriangleShape + +/** Drawable for the background of the bubble bar. */ +class BubbleBarBackground(context: TaskbarActivityContext, private val backgroundHeight: Float) : + Drawable() { + + private val DARK_THEME_SHADOW_ALPHA = 51f + private val LIGHT_THEME_SHADOW_ALPHA = 25f + + private val paint: Paint = Paint() + private val pointerSize: Float + + private val shadowAlpha: Float + private var shadowBlur = 0f + private var keyShadowDistance = 0f + + private var arrowPositionX: Float = 0f + private var showingArrow: Boolean = false + private var arrowDrawable: ShapeDrawable + + init { + paint.color = context.getColor(R.color.taskbar_background) + paint.flags = Paint.ANTI_ALIAS_FLAG + paint.style = Paint.Style.FILL + + val res = context.resources + shadowBlur = res.getDimension(R.dimen.transient_taskbar_shadow_blur) + keyShadowDistance = res.getDimension(R.dimen.transient_taskbar_key_shadow_distance) + pointerSize = res.getDimension(R.dimen.bubblebar_pointer_size) + + shadowAlpha = + if (Utilities.isDarkTheme(context)) DARK_THEME_SHADOW_ALPHA + else LIGHT_THEME_SHADOW_ALPHA + + arrowDrawable = + ShapeDrawable(TriangleShape.create(pointerSize, pointerSize, /* pointUp= */ true)) + arrowDrawable.setBounds(0, 0, pointerSize.toInt(), pointerSize.toInt()) + arrowDrawable.paint.flags = Paint.ANTI_ALIAS_FLAG + arrowDrawable.paint.style = Paint.Style.FILL + arrowDrawable.paint.color = context.getColor(R.color.taskbar_background) + } + + fun showArrow(show: Boolean) { + showingArrow = show + } + + fun setArrowPosition(x: Float) { + arrowPositionX = x + } + + /** Draws the background with the given paint and height, on the provided canvas. */ + override fun draw(canvas: Canvas) { + canvas.save() + + // TODO (b/277359345): Should animate the alpha similar to taskbar (see TaskbarDragLayer) + // Draw shadows. + val newShadowAlpha = + mapToRange(paint.alpha.toFloat(), 0f, 255f, 0f, shadowAlpha, Interpolators.LINEAR) + paint.setShadowLayer( + shadowBlur, + 0f, + keyShadowDistance, + setColorAlphaBound(Color.BLACK, Math.round(newShadowAlpha)) + ) + arrowDrawable.paint.setShadowLayer( + shadowBlur, + 0f, + keyShadowDistance, + setColorAlphaBound(Color.BLACK, Math.round(newShadowAlpha)) + ) + + // Draw background. + val radius = backgroundHeight / 2f + canvas.drawRoundRect( + 0f, + 0f, + canvas.width.toFloat(), + canvas.height.toFloat(), + radius, + radius, + paint + ) + + if (showingArrow) { + // Draw arrow. + val transX = arrowPositionX - pointerSize / 2f + canvas.translate(transX, -pointerSize) + arrowDrawable.draw(canvas) + } + + canvas.restore() + } + + override fun getOpacity(): Int { + return paint.alpha + } + + override fun setAlpha(alpha: Int) { + paint.alpha = alpha + } + + override fun setColorFilter(colorFilter: ColorFilter?) { + paint.colorFilter = colorFilter + } +} diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBubble.kt b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBubble.kt new file mode 100644 index 0000000000..b1633e7156 --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarBubble.kt @@ -0,0 +1,36 @@ +/* + * 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.bubbles + +import android.graphics.Bitmap +import android.graphics.Path +import com.android.wm.shell.common.bubbles.BubbleInfo + +/** Contains state info about a bubble in the bubble bar as well as presentation information. */ +data class BubbleBarBubble( + val info: BubbleInfo, + val view: BubbleView, + val badge: Bitmap, + val icon: Bitmap, + val dotColor: Int, + val dotPath: Path, + val appName: String +) { + + fun getKey(): String { + return info.key + } +} diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java new file mode 100644 index 0000000000..07daf065ab --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarView.java @@ -0,0 +1,304 @@ +/* + * 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.bubbles; + +import android.annotation.Nullable; +import android.content.Context; +import android.graphics.Rect; +import android.util.AttributeSet; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.view.ViewGroup; +import android.widget.FrameLayout; + +import com.android.launcher3.R; +import com.android.launcher3.taskbar.TaskbarActivityContext; +import com.android.launcher3.views.ActivityContext; + +import java.util.List; + +/** + * The view that holds all the bubble views. Modifying this view should happen through + * {@link BubbleBarViewController}. Updates to the bubbles themselves (adds, removes, updates, + * selection) should happen through BubbleBarController which is the source of truth + * for state information about the bubbles. + *

+ * The bubble bar has a couple of visual states: + * - stashed as a handle + * - unstashed but collapsed, in this state the bar is showing but the bubbles are stacked within it + * - unstashed and expanded, in this state the bar is showing and the bubbles are shown in a row + * with one of the bubbles being selected. Additionally, WMShell will display the expanded bubble + * view above the bar. + *

+ * The bubble bar has some behavior related to taskbar: + * - When taskbar is unstashed, bubble bar will also become unstashed (but in its "collapsed" + * state) + * - When taskbar is stashed, bubble bar will also become stashed (unless bubble bar is in its + * "expanded" state) + * - When bubble bar is in its "expanded" state, taskbar becomes stashed + *

+ * If there are no bubbles, the bubble bar and bubble stashed handle are not shown. Additionally + * the bubble bar and stashed handle are not shown on lockscreen. + *

+ * When taskbar is in persistent or 3 button nav mode, the bubble bar is not available, and instead + * the bubbles are shown fully by WMShell in their floating mode. + */ +public class BubbleBarView extends FrameLayout { + + private static final String TAG = BubbleBarView.class.getSimpleName(); + + // TODO: (b/273594744) calculate the amount of space we have and base the max on that + // if it's smaller than 5. + private static final int MAX_BUBBLES = 5; + + private final TaskbarActivityContext mActivityContext; + private final BubbleBarBackground mBubbleBarBackground; + + // The current bounds of all the bubble bar. + private final Rect mBubbleBarBounds = new Rect(); + // The amount the bubbles overlap when they are stacked in the bubble bar + private final float mIconOverlapAmount; + // The spacing between the bubbles when they are expanded in the bubble bar + private final float mIconSpacing; + // The size of a bubble in the bar + private final float mIconSize; + // The elevation of the bubbles within the bar + private final float mBubbleElevation; + + // Whether the bar is expanded (i.e. the bubble activity is being displayed). + private boolean mIsBarExpanded = false; + // The currently selected bubble view. + private BubbleView mSelectedBubbleView; + // The click listener when the bubble bar is collapsed. + private View.OnClickListener mOnClickListener; + + private final Rect mTempRect = new Rect(); + + // We don't reorder the bubbles when they are expanded as it could be jarring for the user + // this runnable will be populated with any reordering of the bubbles that should be applied + // once they are collapsed. + @Nullable + private Runnable mReorderRunnable; + + public BubbleBarView(Context context) { + this(context, null); + } + + public BubbleBarView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public BubbleBarView(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public BubbleBarView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + mActivityContext = ActivityContext.lookupContext(context); + + mIconOverlapAmount = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_overlap); + mIconSpacing = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_spacing); + mIconSize = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size); + mBubbleElevation = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_elevation); + setClipToPadding(false); + + mBubbleBarBackground = new BubbleBarBackground(mActivityContext, + getResources().getDimensionPixelSize(R.dimen.bubblebar_size)); + setBackgroundDrawable(mBubbleBarBackground); + } + + @Override + protected void onLayout(boolean changed, int left, int top, int right, int bottom) { + super.onLayout(changed, left, top, right, bottom); + mBubbleBarBounds.left = left; + mBubbleBarBounds.top = top; + mBubbleBarBounds.right = right; + mBubbleBarBounds.bottom = bottom; + + // The bubble bar handle is aligned to the bottom edge of the screen so scale towards that. + setPivotX(getWidth()); + setPivotY(getHeight()); + + // Position the views + updateChildrenRenderNodeProperties(); + } + + /** + * Returns the bounds of the bubble bar. + */ + public Rect getBubbleBarBounds() { + return mBubbleBarBounds; + } + + // TODO: (b/273592694) animate it + @Override + public void addView(View child, int index, ViewGroup.LayoutParams params) { + if (getChildCount() + 1 > MAX_BUBBLES) { + removeViewInLayout(getChildAt(getChildCount() - 1)); + } + super.addView(child, index, params); + } + + /** + * Updates the z order, positions, and badge visibility of the bubble views in the bar based + * on the expanded state. + */ + // TODO: (b/273592694) animate it + private void updateChildrenRenderNodeProperties() { + int bubbleCount = getChildCount(); + final float ty = (mBubbleBarBounds.height() - mIconSize) / 2f; + for (int i = 0; i < bubbleCount; i++) { + BubbleView bv = (BubbleView) getChildAt(i); + bv.setTranslationY(ty); + if (mIsBarExpanded) { + final float tx = i * (mIconSize + mIconSpacing); + bv.setTranslationX(tx); + bv.setZ(0); + bv.showBadge(); + } else { + bv.setZ((MAX_BUBBLES * mBubbleElevation) - i); + bv.setTranslationX(i * mIconOverlapAmount); + if (i > 0) { + bv.hideBadge(); + } else { + bv.showBadge(); + } + } + } + } + + /** + * Reorders the views to match the provided list. + */ + public void reorder(List viewOrder) { + if (isExpanded()) { + mReorderRunnable = () -> doReorder(viewOrder); + } else { + doReorder(viewOrder); + } + } + + // TODO: (b/273592694) animate it + private void doReorder(List viewOrder) { + if (!isExpanded()) { + for (int i = 0; i < viewOrder.size(); i++) { + View child = viewOrder.get(i); + if (child != null) { + removeViewInLayout(child); + addViewInLayout(child, i, child.getLayoutParams()); + } + } + updateChildrenRenderNodeProperties(); + } + } + + /** + * Sets which bubble view should be shown as selected. + */ + // TODO: (b/273592694) animate it + public void setSelectedBubble(BubbleView view) { + mSelectedBubbleView = view; + updateArrowForSelected(); + invalidate(); + } + + private void updateArrowForSelected() { + if (mSelectedBubbleView == null) { + Log.w(TAG, "trying to update selection arrow without a selected view!"); + return; + } + final int index = indexOfChild(mSelectedBubbleView); + // Find the center of the bubble when it's expanded, set the arrow position to it. + final float tx = getPaddingStart() + index * (mIconSize + mIconSpacing) + mIconSize / 2f; + mBubbleBarBackground.setArrowPosition(tx); + } + + @Override + public void setOnClickListener(View.OnClickListener listener) { + mOnClickListener = listener; + setOrUnsetClickListener(); + } + + /** + * The click listener used for the bubble view gets added / removed depending on whether + * the bar is expanded or collapsed, this updates whether the listener is set based on state. + */ + private void setOrUnsetClickListener() { + super.setOnClickListener(mIsBarExpanded ? null : mOnClickListener); + } + + /** + * Sets whether the bubble bar is expanded or collapsed. + */ + // TODO: (b/273592694) animate it + public void setExpanded(boolean isBarExpanded) { + if (mIsBarExpanded != isBarExpanded) { + mIsBarExpanded = isBarExpanded; + updateArrowForSelected(); + setOrUnsetClickListener(); + if (!isBarExpanded && mReorderRunnable != null) { + mReorderRunnable.run(); + mReorderRunnable = null; + } + mBubbleBarBackground.showArrow(mIsBarExpanded); + requestLayout(); // trigger layout to reposition views & update size for expansion + } + } + + /** + * Returns whether the bubble bar is expanded. + */ + public boolean isExpanded() { + return mIsBarExpanded; + } + + @Override + protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { + final int childCount = getChildCount(); + final float iconWidth = mIsBarExpanded + ? (childCount * (mIconSize + mIconSpacing)) + : mIconSize + ((childCount - 1) * mIconOverlapAmount); + final int totalWidth = (int) iconWidth + getPaddingStart() + getPaddingEnd(); + setMeasuredDimension(totalWidth, MeasureSpec.getSize(heightMeasureSpec)); + + for (int i = 0; i < childCount; i++) { + View child = getChildAt(i); + measureChild(child, (int) mIconSize, (int) mIconSize); + } + } + + /** + * Returns whether the given MotionEvent, *in screen coordinates*, is within bubble bar + * touch bounds. + */ + public boolean isEventOverAnyItem(MotionEvent ev) { + if (getVisibility() == View.VISIBLE) { + getBoundsOnScreen(mTempRect); + return mTempRect.contains((int) ev.getX(), (int) ev.getY()); + } + return false; + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + if (!mIsBarExpanded) { + // When the bar is collapsed, all taps on it should expand it. + return true; + } + return super.onInterceptTouchEvent(ev); + } +} diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java new file mode 100644 index 0000000000..deac42fa26 --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleBarViewController.java @@ -0,0 +1,276 @@ +/* + * 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.bubbles; + +import static android.view.View.INVISIBLE; +import static android.view.View.VISIBLE; + +import android.graphics.Rect; +import android.util.Log; +import android.view.MotionEvent; +import android.view.View; +import android.widget.FrameLayout; + +import com.android.launcher3.R; +import com.android.launcher3.anim.AnimatedFloat; +import com.android.launcher3.taskbar.TaskbarActivityContext; +import com.android.launcher3.taskbar.TaskbarControllers; +import com.android.launcher3.util.MultiPropertyFactory; +import com.android.launcher3.util.MultiValueAlpha; + +import java.util.List; +import java.util.Objects; + +/** + * Controller for {@link BubbleBarView}. Manages the visibility of the bubble bar as well as + * responding to changes in bubble state provided by BubbleBarController. + */ +public class BubbleBarViewController { + + private static final String TAG = BubbleBarViewController.class.getSimpleName(); + + private final TaskbarActivityContext mActivity; + private final BubbleBarView mBarView; + private final int mIconSize; + + // Initialized in init. + private View.OnClickListener mBubbleClickListener; + private View.OnClickListener mBubbleBarClickListener; + + // These are exposed to BubbleStashController to animate for stashing/un-stashing + private final MultiValueAlpha mBubbleBarAlpha; + private final AnimatedFloat mBubbleBarScale = new AnimatedFloat(this::updateScale); + private final AnimatedFloat mBubbleBarTranslationY = new AnimatedFloat( + this::updateTranslationY); + + // Modified when swipe up is happening on the bubble bar or task bar. + private float mBubbleBarSwipeUpTranslationY; + + // Whether the bar is hidden for a sysui state. + private boolean mHiddenForSysui; + // Whether the bar is hidden because there are no bubbles. + private boolean mHiddenForNoBubbles; + + public BubbleBarViewController(TaskbarActivityContext activity, BubbleBarView barView) { + mActivity = activity; + mBarView = barView; + mBubbleBarAlpha = new MultiValueAlpha(mBarView, 1 /* num alpha channels */); + mBubbleBarAlpha.setUpdateVisibility(true); + mIconSize = activity.getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size); + } + + public void init(TaskbarControllers controllers, BubbleControllers bubbleControllers) { + mActivity.addOnDeviceProfileChangeListener(dp -> + mBarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarHeight + ); + mBarView.getLayoutParams().height = mActivity.getDeviceProfile().taskbarHeight; + mBubbleBarScale.updateValue(1f); + mBubbleClickListener = v -> onBubbleClicked(v); + mBubbleBarClickListener = v -> setExpanded(true); + mBarView.setOnClickListener(mBubbleBarClickListener); + // TODO: when barView layout changes tell taskbarInsetsController the insets have changed. + } + + private void onBubbleClicked(View v) { + BubbleBarBubble bubble = ((BubbleView) v).getBubble(); + if (bubble == null) { + Log.e(TAG, "bubble click listener, bubble was null"); + } + // TODO: handle the click + } + + // + // The below animators are exposed to BubbleStashController so it can manage the stashing + // animation. + // + + public MultiPropertyFactory getBubbleBarAlpha() { + return mBubbleBarAlpha; + } + + public AnimatedFloat getBubbleBarScale() { + return mBubbleBarScale; + } + + public AnimatedFloat getBubbleBarTranslationY() { + return mBubbleBarTranslationY; + } + + /** + * Whether the bubble bar is visible or not. + */ + public boolean isBubbleBarVisible() { + return mBarView.getVisibility() == VISIBLE; + } + + /** + * The bounds of the bubble bar. + */ + public Rect getBubbleBarBounds() { + return mBarView.getBubbleBarBounds(); + } + + /** + * When the bubble bar is not stashed, it can be collapsed (the icons are in a stack) or + * expanded (the icons are in a row). This indicates whether the bubble bar is expanded. + */ + public boolean isExpanded() { + return mBarView.isExpanded(); + } + + /** + * Whether the motion event is within the bounds of the bubble bar. + */ + public boolean isEventOverAnyItem(MotionEvent ev) { + return mBarView.isEventOverAnyItem(ev); + } + + // + // Visibility of the bubble bar + // + + /** + * Returns whether the bubble bar is hidden because there are no bubbles. + */ + public boolean isHiddenForNoBubbles() { + return mHiddenForNoBubbles; + } + + /** + * Sets whether the bubble bar should be hidden because there are no bubbles. + */ + public void setHiddenForBubbles(boolean hidden) { + if (mHiddenForNoBubbles != hidden) { + mHiddenForNoBubbles = hidden; + updateVisibilityForStateChange(); + } + } + + /** + * Sets whether the bubble bar should be hidden due to SysUI state (e.g. on lockscreen). + */ + public void setHiddenForSysui(boolean hidden) { + if (mHiddenForSysui != hidden) { + mHiddenForSysui = hidden; + updateVisibilityForStateChange(); + } + } + + // TODO: (b/273592694) animate it + private void updateVisibilityForStateChange() { + // TODO: check if it's stashed + if (!mHiddenForSysui && !mHiddenForNoBubbles) { + mBarView.setVisibility(VISIBLE); + } else { + mBarView.setVisibility(INVISIBLE); + } + } + + // + // Modifying view related properties. + // + + /** + * Sets the translation of the bubble bar during the swipe up gesture. + */ + public void setTranslationYForSwipe(float transY) { + mBubbleBarSwipeUpTranslationY = transY; + updateTranslationY(); + } + + private void updateTranslationY() { + mBarView.setTranslationY(mBubbleBarTranslationY.value + + mBubbleBarSwipeUpTranslationY); + } + + /** + * Applies scale properties for the entire bubble bar. + */ + private void updateScale() { + float scale = mBubbleBarScale.value; + mBarView.setScaleX(scale); + mBarView.setScaleY(scale); + } + + // + // Manipulating the specific bubble views in the bar + // + + /** + * Removes the provided bubble from the bubble bar. + */ + public void removeBubble(BubbleBarBubble b) { + if (b != null) { + mBarView.removeView(b.getView()); + } else { + Log.w(TAG, "removeBubble, bubble was null!"); + } + } + + /** + * Adds the provided bubble to the bubble bar. + */ + public void addBubble(BubbleBarBubble b) { + if (b != null) { + mBarView.addView(b.getView(), 0, new FrameLayout.LayoutParams(mIconSize, mIconSize)); + b.getView().setOnClickListener(mBubbleClickListener); + } else { + Log.w(TAG, "addBubble, bubble was null!"); + } + } + + /** + * Reorders the bubbles based on the provided list. + */ + public void reorderBubbles(List newOrder) { + List viewList = newOrder.stream().filter(Objects::nonNull) + .map(BubbleBarBubble::getView).toList(); + mBarView.reorder(viewList); + } + + /** + * Updates the selected bubble. + */ + public void updateSelectedBubble(BubbleBarBubble newlySelected) { + mBarView.setSelectedBubble(newlySelected.getView()); + } + + /** + * Sets whether the bubble bar should be expanded (not unstashed, but have the contents + * within it expanded). This method notifies SystemUI that the bubble bar is expanded and + * showing a selected bubble. This method should ONLY be called from UI events originating + * from Launcher. + */ + public void setExpanded(boolean isExpanded) { + if (isExpanded != mBarView.isExpanded()) { + mBarView.setExpanded(isExpanded); + if (!isExpanded) { + // TODO: Tell SysUi to collapse the bubble + } else { + // TODO: Tell SysUi to show the bubble + // TODO: Tell taskbar stash controller to stash without bubbles following + } + } + } + + /** + * Sets whether the bubble bar should be expanded. This method is used in response to UI events + * from SystemUI. + */ + public void setExpandedFromSysui(boolean isExpanded) { + // TODO: Tell bubble bar stash controller to stash or unstash the bubble bar + } +} diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleControllers.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleControllers.java new file mode 100644 index 0000000000..e92d4fbe07 --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleControllers.java @@ -0,0 +1,66 @@ +/* + * 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.bubbles; + +import com.android.launcher3.taskbar.TaskbarControllers; +import com.android.launcher3.util.RunnableList; + +/** + * Hosts various bubble controllers to facilitate passing between one another. + */ +public class BubbleControllers { + + public final BubbleBarViewController bubbleBarViewController; + + private final RunnableList mPostInitRunnables = new RunnableList(); + + /** + * Want to add a new controller? Don't forget to: + * * Call init + * * Call onDestroy + */ + public BubbleControllers(BubbleBarViewController bubbleBarViewController) { + this.bubbleBarViewController = bubbleBarViewController; + } + + /** + * Initializes all controllers. Note that controllers can now reference each other through this + * BubbleControllers instance, but should be careful to only access things that were created + * in constructors for now, as some controllers may still be waiting for init(). + */ + public void init(TaskbarControllers taskbarControllers) { + bubbleBarViewController.init(taskbarControllers, this); + + mPostInitRunnables.executeAllAndDestroy(); + } + + /** + * If all controllers are already initialized, runs the given callback immediately. Otherwise, + * queues it to run after calling init() on all controllers. This should likely be used in any + * case where one controller is telling another controller to do something inside init(). + */ + public void runAfterInit(Runnable runnable) { + // If this has been executed in init, it automatically runs adds to it. + mPostInitRunnables.add(runnable); + } + + /** + * Cleans up all controllers. + */ + public void onDestroy() { + // TODO + } +} diff --git a/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java new file mode 100644 index 0000000000..e22e63aa36 --- /dev/null +++ b/quickstep/src/com/android/launcher3/taskbar/bubbles/BubbleView.java @@ -0,0 +1,134 @@ +/* + * 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.bubbles; + +import android.annotation.Nullable; +import android.content.Context; +import android.graphics.Bitmap; +import android.graphics.Outline; +import android.util.AttributeSet; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewOutlineProvider; +import android.widget.ImageView; + +import androidx.constraintlayout.widget.ConstraintLayout; + +import com.android.launcher3.R; +import com.android.launcher3.icons.IconNormalizer; + +// TODO: (b/276978250) This is will be similar to WMShell's BadgedImageView, it'd be nice to share. +// TODO: (b/269670235) currently this doesn't show the 'update dot' +/** + * View that displays a bubble icon, along with an app badge on either the left or + * right side of the view. + */ +public class BubbleView extends ConstraintLayout { + + // TODO: (b/269670235) currently we don't render the 'update dot', this will be used for that. + public static final int DEFAULT_PATH_SIZE = 100; + + private final ImageView mBubbleIcon; + private final ImageView mAppIcon; + private final int mBubbleSize; + + // TODO: (b/273310265) handle RTL + private boolean mOnLeft = false; + + private BubbleBarBubble mBubble; + + public BubbleView(Context context) { + this(context, null); + } + + public BubbleView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public BubbleView(Context context, AttributeSet attrs, int defStyleAttr) { + this(context, attrs, defStyleAttr, 0); + } + + public BubbleView(Context context, AttributeSet attrs, int defStyleAttr, + int defStyleRes) { + super(context, attrs, defStyleAttr, defStyleRes); + // We manage positioning the badge ourselves + setLayoutDirection(LAYOUT_DIRECTION_LTR); + + LayoutInflater.from(context).inflate(R.layout.bubble_view, this); + + mBubbleSize = getResources().getDimensionPixelSize(R.dimen.bubblebar_icon_size); + mBubbleIcon = findViewById(R.id.icon_view); + mAppIcon = findViewById(R.id.app_icon_view); + + setFocusable(true); + setClickable(true); + setOutlineProvider(new ViewOutlineProvider() { + @Override + public void getOutline(View view, Outline outline) { + BubbleView.this.getOutline(outline); + } + }); + } + + private void getOutline(Outline outline) { + final int normalizedSize = IconNormalizer.getNormalizedCircleSize(mBubbleSize); + final int inset = (mBubbleSize - normalizedSize) / 2; + outline.setOval(inset, inset, inset + normalizedSize, inset + normalizedSize); + } + + /** Sets the bubble being rendered in this view. */ + void setBubble(BubbleBarBubble bubble) { + mBubble = bubble; + mBubbleIcon.setImageBitmap(bubble.getIcon()); + mAppIcon.setImageBitmap(bubble.getBadge()); + } + + /** Returns the bubble being rendered in this view. */ + @Nullable + BubbleBarBubble getBubble() { + return mBubble; + } + + /** Shows the app badge on this bubble. */ + void showBadge() { + Bitmap appBadgeBitmap = mBubble.getBadge(); + if (appBadgeBitmap == null) { + mAppIcon.setVisibility(GONE); + return; + } + + int translationX; + if (mOnLeft) { + translationX = -(mBubble.getIcon().getWidth() - appBadgeBitmap.getWidth()); + } else { + translationX = 0; + } + + mAppIcon.setTranslationX(translationX); + mAppIcon.setVisibility(VISIBLE); + } + + /** Hides the app badge on this bubble. */ + void hideBadge() { + mAppIcon.setVisibility(GONE); + } + + @Override + public String toString() { + return "BubbleView{" + mBubble + "}"; + } +} From 1cc762b585d38364aa0c2e90efb5dc87a82ef4be Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 18 Apr 2023 01:10:22 -0700 Subject: [PATCH 33/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I3198f4b2ec3c164cef28e13cfe1131ffa0cb95f8 --- quickstep/res/values-as/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml index c424ca1c52..825a396f33 100644 --- a/quickstep/res/values-as/strings.xml +++ b/quickstep/res/values-as/strings.xml @@ -24,7 +24,7 @@ "কোনো শেহতীয়া বস্তু নাই" "এপে ব্যৱহাৰ কৰা ডেটাৰ ছেটিং" "আটাইবোৰ মচক" - "শেহতীয়া এপসমূহ" + "শেহতীয়া এপ্‌সমূহ" "কাৰ্য বন্ধ কৰা হ’ল" "%1$s, %2$s" "< ১ মিনিট" From c3063f3f01fbd5ce3ac217cf877b73647e683265 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Tue, 18 Apr 2023 01:11:55 -0700 Subject: [PATCH 34/81] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I3b057768752b18abdbc5f78e7b0ef5be33003f46 --- res/values-af/strings.xml | 2 +- res/values-am/strings.xml | 3 ++- res/values-ar/strings.xml | 7 ++++--- res/values-as/strings.xml | 6 +++--- res/values-az/strings.xml | 3 ++- res/values-b+sr+Latn/strings.xml | 2 +- res/values-be/strings.xml | 3 ++- res/values-bg/strings.xml | 2 +- res/values-bn/strings.xml | 7 ++++--- res/values-bs/strings.xml | 2 +- res/values-ca/strings.xml | 7 ++++--- res/values-cs/strings.xml | 3 ++- res/values-da/strings.xml | 3 ++- res/values-de/strings.xml | 3 ++- res/values-el/strings.xml | 3 ++- res/values-en-rAU/strings.xml | 2 +- res/values-en-rCA/strings.xml | 2 +- res/values-en-rGB/strings.xml | 2 +- res/values-en-rIN/strings.xml | 2 +- res/values-en-rXC/strings.xml | 2 +- res/values-es-rUS/strings.xml | 3 ++- res/values-es/strings.xml | 2 +- res/values-et/strings.xml | 3 ++- res/values-eu/strings.xml | 3 ++- res/values-fa/strings.xml | 2 +- res/values-fi/strings.xml | 3 ++- res/values-fr-rCA/strings.xml | 3 ++- res/values-fr/strings.xml | 5 +++-- res/values-gl/strings.xml | 3 ++- res/values-gu/strings.xml | 3 ++- res/values-hi/strings.xml | 3 ++- res/values-hr/strings.xml | 2 +- res/values-hu/strings.xml | 3 ++- res/values-hy/strings.xml | 2 +- res/values-in/strings.xml | 4 ++-- res/values-is/strings.xml | 2 +- res/values-it/strings.xml | 3 ++- res/values-iw/strings.xml | 3 ++- res/values-ja/strings.xml | 2 +- res/values-ka/strings.xml | 2 +- res/values-kk/strings.xml | 3 ++- res/values-km/strings.xml | 2 +- res/values-kn/strings.xml | 2 +- res/values-ko/strings.xml | 3 ++- res/values-ky/strings.xml | 3 ++- res/values-lo/strings.xml | 2 +- res/values-lt/strings.xml | 2 +- res/values-lv/strings.xml | 3 ++- res/values-mk/strings.xml | 3 ++- res/values-ml/strings.xml | 4 ++-- res/values-mn/strings.xml | 3 ++- res/values-mr/strings.xml | 2 +- res/values-ms/strings.xml | 2 +- res/values-my/strings.xml | 2 +- res/values-nb/strings.xml | 3 ++- res/values-ne/strings.xml | 2 +- res/values-nl/strings.xml | 2 +- res/values-or/strings.xml | 7 ++++--- res/values-pa/strings.xml | 7 ++++--- res/values-pl/strings.xml | 7 ++++--- res/values-pt-rPT/strings.xml | 2 +- res/values-pt/strings.xml | 2 +- res/values-ro/strings.xml | 3 ++- res/values-ru/strings.xml | 7 ++++--- res/values-si/strings.xml | 3 ++- res/values-sk/strings.xml | 2 +- res/values-sl/strings.xml | 2 +- res/values-sq/strings.xml | 2 +- res/values-sr/strings.xml | 2 +- res/values-sv/strings.xml | 3 ++- res/values-sw/strings.xml | 2 +- res/values-ta/strings.xml | 5 +++-- res/values-te/strings.xml | 2 +- res/values-th/strings.xml | 2 +- res/values-tl/strings.xml | 2 +- res/values-tr/strings.xml | 3 ++- res/values-uk/strings.xml | 3 ++- res/values-ur/strings.xml | 2 +- res/values-uz/strings.xml | 2 +- res/values-vi/strings.xml | 3 ++- res/values-zh-rCN/strings.xml | 6 +++--- res/values-zh-rHK/strings.xml | 2 +- res/values-zh-rTW/strings.xml | 2 +- res/values-zu/strings.xml | 2 +- 84 files changed, 146 insertions(+), 106 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index faee52632e..377025a49c 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -81,7 +81,6 @@ "Laat die program toe om die instellings en kortpaaie op tuisskerm te lees." "skryf tuis-instellings en -kortpaaie" "Laat die program toe om die instellings en kortpaaie op tuisskerm te verander." - "%1$s word nie toegelaat om foonoproepe te maak nie" "Kan nie legstuk laai nie" "Legstukinstellings" "Tik om opstelling te voltooi" @@ -101,6 +100,7 @@ "Vouer: %1$s, %2$d of meer items" "Muurpapiere" "Muurpapier en styl" + "Wysig tuisskerm" "Tuis-instellings" "Gedeaktiveer deur jou administrateur" "Laat toe dat tuisskerm gedraai word" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index b67a98ea75..4638bc3245 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -81,7 +81,6 @@ "ቅንብሮችን እና አቋራጮችን በመነሻ ለማንበብ ለትግበራ ይፈቅዳል።" "መነሻ ቅንብሮች እና አቋራጮች ጻፍ" "ቅንብሮችን እና አቋራጮችን በመነሻ ለመለወጥ ለመተግበሪያ ይፈቅዳል።" - "%1$s የስልክ ጥሪዎችን ለማድረግ አልተፈቀደለትም" "ምግብርን መጫን አልተቻለም" "የምግብር ቅንብሮች" "ማዋቀርን ለመጨረስ መታ ያድርጉ" @@ -101,6 +100,8 @@ "አቃፊ፦ %1$s%2$d ወይም ተጨማሪ ንጥሎች" "የግድግዳ ወረቀቶች" "ልጣፍ እና ቅጥ" + + "የመነሻ ቅንብሮች" "በእርስዎ አስተዳዳሪ የተሰናከለ" "የመነሻ ማያ ገጽ ማሽከርከርን ይፍቀዱ" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index a236cd7ca8..094fcac7e1 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -81,7 +81,6 @@ "يسمح هذا الإذن للتطبيق بالاطلاع على الإعدادات والاختصارات على الشاشة الرئيسية." "تعديل الإعدادات والاختصارات على الشاشة الرئيسية" "يسمح هذا الإذن للتطبيق بتغيير الإعدادات والاختصارات على الشاشة الرئيسية." - "%1$s غير مسموح به لإجراء مكالمات هاتفية" "يتعذّر تحميل الأداة." "إعدادات الأداة" "انقر لإكمال الإعداد." @@ -101,6 +100,8 @@ "المجلد: %1$s، %2$d عنصر أو أكثر" "الخلفيات" "الخلفية والأسلوب" + + "إعدادات الشاشة الرئيسية" "أوقف المشرف هذه الميزة" "السماح بتدوير الشاشة الرئيسية" @@ -159,13 +160,13 @@ "شخصية" "للعمل" "الملف الشخصي للعمل" - "تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات." + "تحمل تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات." "حسنًا" "تطبيقات العمل متوقفة مؤقتًا" "لن تتلقّى إشعارات من تطبيقات العمل." "لا يمكن لتطبيقات العمل إرسال إشعارات إليك أو استخدام بطاريتك أو الوصول إلى موقعك الجغرافي." "لن تتلقّى مكالمات هاتفية أو رسائل نصية أو إشعارات من تطبيقات العمل." - "تحمل تطبيقات العمل شارة وتكون مرئية لمشرف تكنولوجيا المعلومات." + "تكون تطبيقات العمل مميّزة بشارة ومرئية لمشرف تكنولوجيا المعلومات." "حسنًا" "إيقاف تطبيقات العمل مؤقتًا" "إلغاء الإيقاف المؤقت" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index e7861264b8..583a5c4bbd 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -55,8 +55,8 @@ "ৱিজেটৰ ছেটিং সলনি কৰিবলৈ টিপক" "বুজি পালোঁ" "ৱিজেটৰ ছেটিং সলনি কৰক" - "এপসমূহ সন্ধান কৰক" - "এপসমূহ ল’ড কৰি থকা হৈছে…" + "এপ্‌সমূহ সন্ধান কৰক" + "এপ্‌সমূহ ল’ড কৰি থকা হৈছে…" "\"%1$s\"ৰ সৈতে মিলা কোনো এপ্ বিচাৰি পোৱা নগ\'ল" "এপ্" "আটাইবোৰ এপ্" @@ -81,7 +81,6 @@ "এপ্‌টোক গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ পঢ়াৰ অনুমতি দিয়ে।" "গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ লিখা" "এপ্‌টোক গৃহ স্ক্ৰীনত ছেটিং আৰু শ্বৰ্টকাটসমূহ সলনি কৰাৰ অনুমতি দিয়ে।" - "%1$sক ফ\'ন কলবোৰ কৰাৰ অনুমতি দিয়া হোৱা নাই" "ৱিজেট ল’ড কৰিব নোৱাৰি" "ৱিজেটৰ ছেটিং" "ছেটআপ সমাপ্ত কৰিবলৈ টিপক" @@ -101,6 +100,7 @@ "ফ’ল্ডাৰ: %1$s, %2$d টা অথবা তাতকৈ অধিক বস্তু" "ৱালপেপাৰসমূহ" "ৱালপেপাৰ আৰু শৈলী" + "গৃহ স্ক্ৰীন সম্পাদনা কৰক" "গৃহ ছেটিং" "আপোনাৰ প্ৰশাসকে অক্ষম কৰি ৰাখিছে" "গৃহ স্ক্ৰীন ঘূৰোৱাৰ অনুমতি দিয়ক" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index 74c6048342..2879158f14 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -81,7 +81,6 @@ "Tətbiqə Əsas səhifədə ayarları və qısayolları oxumağa icazə verir." "Əsas səhifə ayarlarını və qısayollarını yazmaq" "Tətbiqə Əsas səhifədə ayarları və qısayolları dəyişməyə icazə verir." - "%1$s tətbiqinə telefon zəngləri etmək üçün icazə verilmir" "Vidceti yükləmək olmur" "Vidcet ayarları" "Ayarlamanı tamamlamaq üçün toxunun" @@ -101,6 +100,8 @@ "Qovluq: %1$s, %2$d və ya daha çox element" "Divar kağızları" "Divar kağızı və üslub" + + "Home ayarları" "Admininiz tərəfindən deaktiv edilib" "Əsas ekran çevrilsin" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index a8353c431d..be538fe474 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -81,7 +81,6 @@ "Dozvoljava aplikaciji da čita podešavanja i prečice na početnom ekranu." "upisivanje podešavanja i prečica na početnom ekranu" "Dozvoljava aplikaciji da menja podešavanja i prečice na početnom ekranu." - "%1$s nema dozvolu za upućivanje telefonskih poziva" "Učitavanje vidžeta nije uspelo" "Podešavanja vidžeta" "Dodirnite da biste dovršili podešavanje" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d ili više stavki" "Pozadine" "Pozadina i stil" + "Izmeni početni ekran" "Podešavanja početnog ekrana" "Administrator je onemogućio" "Dozvoli rotaciju početnog ekrana" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index d74dbd82c2..7bdd1ec50c 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -81,7 +81,6 @@ "Дазваляе праграме счытваць налады і ярлыкі на галоўным экране." "запісваць налады і ярлыкі на галоўны экран" "Дазваляе праграме змяняць налады і ярлыкі на галоўным экране." - "%1$s не мае дазволу на здзяйсненне тэлефонных званкоў" "Не ўдаецца загрузіць віджэт" "Налады віджэта" "Націсніце, каб завяршыць наладжванне" @@ -101,6 +100,8 @@ "Папка: %1$s, элементы: %2$d ці больш" "Шпалеры" "Шпалеры і стыль" + + "Налады галоўнага экрана" "Адключаная адміністратарам" "Дазволіць паварот галоўнага экрана" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 7d8096b763..992abeb214 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -81,7 +81,6 @@ "Разрешава на приложението да чете настройките и преките пътища на началния екран." "запис на настройките и преките пътища на началния екран" "Разрешава на приложението да променя настройките и преките пътища на началния екран." - "%1$s няма разрешение да извършва телефонни обаждания" "Приспособлението не може да се зареди" "Настройки за приспособленията" "Докоснете, за да завършите настройването" @@ -101,6 +100,7 @@ "Папка: „%1$s“ – %2$d или повече елементи" "Тапети" "Тапет и стил" + "Редактиране на началния екран" "Настройки за началния екран" "Деактивирано от администратора ви" "Разрешаване на завъртането на началния екран" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index bd76e6c730..995166fb36 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -81,7 +81,6 @@ "অ্যাপকে হোম স্ক্রিনে সেটিংস ও শর্টকাট পড়ার অনুমতি দেয়।" "হোম স্ক্রিনে সেটিংস ও শর্টকাট লিখুন" "অ্যাপকে হোম স্ক্রিনে সেটিংস ও শর্টকাট পরিবর্তন করার অনুমতি দেয়।" - "ফোন কলগুলি করার জন্য %1$s এর অনুমতি নেই" "উইজেট লোড করা যাচ্ছে না" "উইজেট সেটিংস" "সেটআপ সম্পূর্ণ করতে ট্যাপ করুন" @@ -101,6 +100,8 @@ "ফোল্ডার: %1$s, %2$dটি বা তার বেশি আইটেম" "ওয়ালপেপারগুলি" "ওয়ালপেপার এবং স্টাইল" + + "হোম সেটিংস" "আপনার প্রশাসক দ্বারা অক্ষম করা হয়েছে" "হোম স্ক্রিন রোটেট করার অনুমতি দিন" @@ -159,13 +160,13 @@ "ব্যক্তিগত" "অফিস" "অফিসের প্রোফাইল" - "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন" + "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন" "বুঝেছি" "অফিস অ্যাপ বন্ধ করা আছে" "আপনার অফিসের অ্যাপ থেকে আপনি কোনও বিজ্ঞপ্তি পাবেন না" "অফিসের অ্যাপ আপনাকে নোটিফিকেশন পাঠাতে পারবে না। এছাড়া, ব্যাটারি ব্যবহার করতে বা লোকেশন অ্যাক্সেস করতে পারবে না" "আপনি কোনও ফোন কল, টেক্সট মেসেজ বা অফিসের অ্যাপ থেকে বিজ্ঞপ্তি পাবেন না" - "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেটি দেখতে পাবেন" + "অফিসের অ্যাপে ব্যাজ যোগ করা হয়েছে এবং আপনার আইটি অ্যাডমিন সেগুলি দেখতে পাবেন" "বুঝেছি" "অফিসের অ্যাপ পজ করুন" "আনপজ করুন" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 1dc1863493..20fc18a6cc 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -81,7 +81,6 @@ "Dopušta aplikaciji čitanje postavki i prečica na početnom ekranu." "zapisuje postavke na početnom ekranu i prečice" "Dopušta aplikaciji promjenu postavki i prečica na početnom ekranu." - "%1$s nema odobrenje da uspostavlja telefonske pozive" "Nije moguće učitati vidžet" "Postavke vidžeta" "Dodirnite da završite postavljanje" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d ili više stavki" "Pozadinske slike" "Pozadinska slika i stil" + "Uredi Početni ekran" "Postavke početnog ekrana" "Onemogućio vaš administrator" "Dozvoli rotiranje početnog ekrana" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index fc462fdafa..7d45271cea 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -81,7 +81,6 @@ "Permet que l\'aplicació llegeixi la configuració i les dreceres de la pantalla d\'inici." "escriure la configuració i les dreceres de la pantalla d\'inici" "Permet que l\'aplicació canviï la configuració i les dreceres de la pantalla d\'inici." - "%1$s no té permís per fer trucades telefòniques" "No es pot carregar el widget" "Configuració del widget" "Toca per finalitzar la configuració" @@ -101,6 +100,8 @@ "Carpeta: %1$s, %2$d o més elements" "Fons de pantalla" "Estil i fons de pantalla" + + "Config. pantalla d\'inici" "Desactivada per l\'administrador" "Permet la rotació de la pantalla d\'inici" @@ -159,13 +160,13 @@ "Personal" "Treball" "Perfil de treball" - "Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI" + "Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure" "Entesos" "Les aplicacions de treball estan en pausa" "No rebràs cap notificació de les aplicacions de treball" "Les aplicacions de treball no poden enviar-te notificacions, consumir bateria ni accedir a la teva ubicació" "No rebràs trucades, missatges de text ni notificacions de les aplicacions de treball" - "Les aplicacions de treball tenen una insígnia i són visibles per al teu administrador de TI" + "Les aplicacions de treball tenen una insígnia i el teu administrador de TI les pot veure" "Entesos" "Posa en pausa les aplicacions de treball" "Reactiva" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index 1d05d8826b..ac093e45f1 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -81,7 +81,6 @@ "Umožňuje aplikaci číst nastavení a zkratky na ploše." "zápis nastavení a zkratek plochy" "Umožňuje aplikaci změnit nastavení a zkratky na ploše." - "Aplikace %1$s nemá oprávnění telefonovat" "Widget se nepodařilo načíst" "Nastavení widgetů" "Klepnutím dokončíte konfiguraci" @@ -101,6 +100,8 @@ "Složka: %1$s, počet položek: %2$d nebo více" "Tapety" "Tapeta a styl" + + "Nastavení plochy" "Zakázáno administrátorem" "Povolit otáčení plochy" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 36e3e7d043..66a191a34d 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -81,7 +81,6 @@ "Tillader, at appen læser indstillingerne og genvejene på startskærmen." "skriv indstillinger og genveje for startskærm" "Tillader, at appen ændrer indstillingerne og genvejene på startskærmen." - "%1$s har ikke tilladelse til at foretage telefonopkald" "Widgetten kan ikke indlæses" "Widget-indstillinger" "Tryk for at fuldføre konfigurationen" @@ -101,6 +100,8 @@ "Mappe: %1$s, %2$d eller flere elementer" "Baggrunde" "Baggrund og stil" + + "Indst. for startskærm" "Deaktiveret af din administrator" "Tillad rotation af startskærmen" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index 46367e657d..959840ddec 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -81,7 +81,6 @@ "Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu lesen." "Einstellungen und Verknüpfungen für den Startbildschirm schreiben" "Ermöglicht der App, die Einstellungen und Verknüpfungen auf dem Startbildschirm zu ändern." - "%1$s darf keine Telefonanrufe tätigen." "Widget kann nicht geladen werden" "Widget-Einstellungen" "Tippen, um Einrichtung abzuschließen" @@ -101,6 +100,8 @@ "Ordner: %1$s, %2$d oder mehr Elemente" "Hintergründe" "Hintergrund & Stil" + + "Einstellungen" "Von deinem Administrator deaktiviert" "Drehen des Startbildschirms zulassen" diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index d52a8b18dc..b517975162 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -81,7 +81,6 @@ "Επιτρέπει στην εφαρμογή την ανάγνωση των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη." "εγγραφή ρυθμίσεων και συντομεύσεων αρχικής οθόνης" "Επιτρέπει στην εφαρμογή την αλλαγή των ρυθμίσεων και των συντομεύσεων στην αρχική οθόνη." - "Η εφαρμογή %1$s δεν επιτρέπεται να πραγματοποιεί τηλεφωνικές κλήσεις" "Δεν είναι δυνατή η φόρτωση του γραφικού στοιχείου" "Ρυθμίσεις γραφικών στοιχείων" "Πατήστε για να ολοκληρώσετε τη ρύθμιση" @@ -101,6 +100,8 @@ "Φάκελος: %1$s, %2$d ή περισσότερα στοιχεία" "Ταπετσαρίες" "Ταπετσαρία και στιλ" + + "Ρυθμίσεις Αρχ. Οθ." "Απενεργοποιήθηκε από τον διαχειριστή σας" "Να επιτρέπεται η περιστροφή της αρχικής οθόνης" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index a3b25c844e..eea6581f36 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" "Allows the app to change the settings and shortcuts in Home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper and style" + "Edit home screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 72aa73ec17..b00fee6e35 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in home." "write home settings and shortcuts" "Allows the app to change the settings and shortcuts in home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper & style" + "Edit Home Screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index a3b25c844e..eea6581f36 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" "Allows the app to change the settings and shortcuts in Home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper and style" + "Edit home screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index a3b25c844e..eea6581f36 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -81,7 +81,6 @@ "Allows the app to read the settings and shortcuts in Home." "write Home settings and shortcuts" "Allows the app to change the settings and shortcuts in Home." - "%1$s is not allowed to make phone calls" "Can\'t load widget" "Widget settings" "Tap to finish setup" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d or more items" "Wallpapers" "Wallpaper and style" + "Edit home screen" "Home settings" "Disabled by your admin" "Allow home screen rotation" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 23fd7b4c14..31fea4b7be 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -81,7 +81,6 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‎‏‏‎‎‏‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‎‏‎‏‎‏‎‎‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎‎‎Allows the app to read the settings and shortcuts in home.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‎write home settings and shortcuts‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‏‏‎‎‏‎‏‎‎‏‎‏‎‏‏‏‎‎‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‏‎‏‏‎‎‏‏‎‎‎‏‏‎‎‏‎‎Allows the app to change the settings and shortcuts in home.‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‏‎‏‏‏‎‏‎‏‏‎‏‎‎‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‏‏‎‏‏‎‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎ is not allowed to make phone calls‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‏‎‏‎‏‏‏‏‏‎Can\'t load widget‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‎‏‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎Widget settings‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‎‎‏‎‎‎‏‏‎‏‎‎‎‎‏‎‎‎‎‎‏‏‎‏‏‎‏‏‏‎‏‎‏‎Tap to finish setup‎‏‎‎‏‎" @@ -101,6 +100,7 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎Folder: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎%2$d‎‏‎‎‏‏‏‎ or more items‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎Wallpapers‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‎‎‎‏‎‎‎‎‎‏‎‏‏‎‏‎‎‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‏‎‎Wallpaper & style‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‎‏‎‏‏‎‏‎‎‏‎‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‎‏‏‏‎‎‏‎‏‏‏‏‏‏‎‏‏‎Edit Home Screen‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‎‏‏‏‎‏‏‏‏‏‎‏‏‎‎‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‎‏‎‎‏‏‏‎‎‎‎Home settings‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‏‏‎‏‏‎‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‏‏‏‎‏‎Disabled by your admin‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‎‏‏‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‏‏‏‏‏‎‏‎‎Allow home screen rotation‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 7d0cd22f70..35b6124b23 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -81,7 +81,6 @@ "Permite que la app lea los parámetros de configuración y los accesos directos de la página principal." "escribir parámetros de configuración y accesos directos de la página principal" "Permite que la app cambie los parámetros de configuración y los accesos directos de la página principal." - "%1$s no puede realizar llamadas telefónicas" "No se puede cargar el widget" "Configuración del widget" "Presiona para finalizar la configuración" @@ -101,6 +100,8 @@ "Carpeta: %1$s, %2$d o más elementos" "Fondos de pantalla" "Fondo de pantalla y estilo" + + "Configuración de pantalla principal" "El administrador inhabilitó esta función" "Permitir la rotación de la pantalla principal" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 5c0c8f34d1..323feb0c70 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -81,7 +81,6 @@ "Permite que la aplicación lea los ajustes y los accesos directos de la pantalla de inicio." "escribir ajustes y accesos directos de la pantalla de inicio" "Permite que la aplicación cambie los ajustes y los accesos directos de la pantalla de inicio." - "%1$s no puede hacer llamadas" "No se puede cargar el widget" "Ajustes de widget" "Toca para finalizar la configuración" @@ -101,6 +100,7 @@ "Carpeta: %1$s (%2$d o más elementos)" "Fondos de pantalla" "Fondo de pantalla y estilo" + "Editar pantalla de inicio" "Ajustes de la pantalla de inicio" "Inhabilitado por el administrador" "Permitir rotación de la pantalla de inicio" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index c7a273d3ae..cf6e1c4c45 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -81,7 +81,6 @@ "Võimaldab rakendusel lugeda avakuva seadeid ja otseteid." "avakuva seadete ja otseteede kirjutamine" "Võimaldab rakendusel muuta avakuval seadeid ja otseteid." - "Rakendusel %1$s pole lubatud helistada" "Vidinat ei saa laadida" "Vidina seaded" "Puudutage seadistuse lõpuleviimiseks" @@ -101,6 +100,8 @@ "Kaust: %1$s, %2$d või rohkem üksust" "Taustapildid" "Taustapilt ja stiil" + + "Avakuva seaded" "Keelas administraator" "Luba avakuva pööramine" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 28a323e148..88f3a95ca6 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -81,7 +81,6 @@ "Hasierako pantailako ezarpenak eta lasterbideak irakurtzeko baimena ematen die aplikazioei." "idatzi hasierako pantailako ezarpenak eta lasterbideak" "Hasierako pantailako ezarpenak eta lasterbideak aldatzeko baimena ematen die aplikazioei." - "%1$s aplikazioak ez du telefono-deiak egiteko baimenik" "Ezin da kargatu widgeta" "Widgetaren ezarpenak" "Sakatu konfiguratzen amaitzeko" @@ -101,6 +100,8 @@ "%1$s karpeta (%2$d elementu edo gehiago)" "Horma-paperak" "Horma-papera eta estiloa" + + "Hasierako pantailaren ezarpenak" "Administratzaileak desgaitu du" "Eman hasierako pantaila biratzeko baimena" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index bc9f9a669d..6708519c14 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -81,7 +81,6 @@ "به برنامه اجازه می‌دهد تنظیمات و میان‌برهای صفحه اصلی را بخواند." "نوشتن تنظیمات و میان‌برهای صفحه اصلی" "به برنامه اجازه می‌دهد تنظیمات و میان‌برهای صفحه اصلی را تغییر دهد." - "%1$s مجاز نیست تماس تلفنی برقرار کند" "ابزارک را نمی‌توان بار کرد" "تنظیمات ابزارک" "برای تکمیل راه‌اندازی ضربه بزنید" @@ -101,6 +100,7 @@ "پوشه: %1$s، %2$d مورد یا بیشتر" "کاغذدیواری‌ها" "کاغذدیواری و سبک" + "ویرایش «صفحه اصلی»" "تنظیمات صفحه اصلی" "توسط سرپرست سیستم غیرفعال شده است" "مجاز کردن چرخش صفحه اصلی" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 1097417304..df7b6ac222 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -81,7 +81,6 @@ "Antaa sovelluksen lukea aloitusnäytön asetuksia ja pikakuvakkeita" "muokata aloitusnäytön asetuksia ja pikakuvakkeita" "Antaa sovelluksen muuttaa aloitusnäytön asetuksia ja pikakuvakkeita" - "%1$s ei saa soittaa puheluita." "Widgetiä ei voi ladata" "Widgetin asetukset" "Viimeistele asennus napauttamalla" @@ -101,6 +100,8 @@ "Kansio: %1$s, ainakin %2$d kohdetta" "Taustakuvat" "Taustakuva ja tyyli" + + "Aloitusnäyttö" "Järjestelmänvalvoja on poistanut toiminnon käytöstä." "Salli aloitusnäytön kiertäminen" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index a49f0e32da..6adcb61185 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -81,7 +81,6 @@ "Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil." "modifier les paramètres et les raccourcis de la page d\'accueil" "Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil." - "L\'application %1$s n\'est pas autorisée à faire des appels téléphoniques" "Impossible de charger le widget" "Paramètres du widget" "Touchez pour terminer la configuration" @@ -101,6 +100,8 @@ "Dossier : %1$s, %2$d éléments ou plus" "Fonds d\'écran" "Fond d\'écran et style" + + "Paramètres d\'accueil" "Cette fonction est désactivée par votre administrateur" "Autoriser la rotation de l\'écran d\'accueil" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index 7b48cde2d0..8b546281ec 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -81,7 +81,6 @@ "Permet à l\'application de lire les paramètres et les raccourcis de l\'écran d\'accueil." "Modifier les paramètres de la page d\'accueil et les raccourcis" "Permet à l\'application de modifier les paramètres et les raccourcis de l\'écran d\'accueil." - "L\'application %1$s n\'est pas autorisée à passer des appels téléphoniques." "Impossible de charger le widget" "Paramètres du widget" "Appuyez pour terminer la configuration" @@ -101,12 +100,14 @@ "Dossier : %1$s, %2$d éléments ou plus" "Fonds d\'écran" "Fond d\'écran et style" + + "Paramètres de l\'accueil" "Désactivé par votre administrateur" "Autoriser la rotation de l\'écran d\'accueil" "Lorsque vous faites pivoter le téléphone" "Pastilles de notification" - "Activées" + "Activé" "Désactivées" "Accès aux notifications requis" "Pour afficher les pastilles de notification, activez les notifications de l\'application %1$s" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 7d675748ae..c1f4f3c636 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -81,7 +81,6 @@ "Permite que a aplicación lea a configuración e os atallos da pantalla de inicio." "editar a configuración e os atallos da pantalla de inicio" "Permite que a aplicación cambie a configuración e os atallos da pantalla de inicio." - "%1$s non ten permiso para facer chamadas telefónicas" "Non se puido cargar o widget" "Configuración do widget" "Toca para rematar a configuración" @@ -101,6 +100,8 @@ "Cartafol: %1$s, %2$d elementos ou máis" "Fondos de pantalla" "Estilo e fondo de pantalla" + + "Axustes de Inicio" "Función desactivada polo administrador" "Permitir xirar a pantalla de inicio" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 263525fbc6..a804870ddb 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -81,7 +81,6 @@ "ઍપને હોમમાંના સેટિંગ અને શૉર્ટકટ વાંચવાની મંજૂરી આપે છે." "હોમ સેટિંગ અને શૉર્ટકટ લખો" "ઍપને હોમમાંના સેટિંગ અને શૉર્ટકટમાં ફેરફાર કરવાની મંજૂરી આપે છે." - "%1$s ને ફોન કૉલ્સ કરવાની મંજૂરી નથી" "વિજેટ લોડ કરી શકાતું નથી" "વિજેટ સેટિંગ" "સેટઅપ પૂર્ણ કરવા માટે ટૅપ કરો" @@ -101,6 +100,8 @@ "ફોલ્ડર: %1$s, %2$d કે વધુ આઇટમ" "વૉલપેપર" "વૉલપેપર અને સ્ટાઇલ" + + "હોમ સેટિંગ" "તમારા વ્યવસ્થાપક દ્વારા અક્ષમ કરેલ" "હોમ સ્ક્રીનને ફેરવવાની મંજૂરી આપો" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 4d292e8796..ce83230be1 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -81,7 +81,6 @@ "इससे ऐप्लिकेशन, होम स्क्रीन की सेटिंग और शॉर्टकट पढ़ पाएगा." "होम स्क्रीन की सेटिंग और शॉर्टकट में बदलाव करने की अनुमति" "इससे ऐप्लिकेशन, होम स्क्रीन की सेटिंग और शॉर्टकट बदल पाएगा." - "%1$s को फ़ोन कॉल करने की अनुमति नहीं है" "विजेट को लोड नहीं किया जा सका" "विजेट की सेटिंग" "सेट अप पूरा करने के लिए टैप करें" @@ -101,6 +100,8 @@ "फ़ोल्डर: %1$s, %2$d या इससे ज़्यादा आइटम" "वॉलपेपर" "वॉलपेपर और स्टाइल" + + "होम पेज की सेटिंग" "आपके एडमिन ने बंद किया हुआ है" "होम स्क्रीन घुमाने की अनुमति दें" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index 6aae2108f4..73e366f04c 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -81,7 +81,6 @@ "Aplikaciji omogućuje čitanje postavki i prečaca na početnom zaslonu." "pisati postavke i prečace početnog zaslona" "Aplikaciji omogućuje promjenu postavki i prečaca na početnom zaslonu." - "%1$s nema dopuštenje za telefonske pozive" "Widget se ne može učitati" "Postavke widgeta" "Dodirnite da biste dovršili postavljanje" @@ -101,6 +100,7 @@ "Mapa: %1$s, %2$d ili više stavki" "Pozadine" "Pozadina i stil" + "Uredi početni zaslon" "Postavke početnog zaslona" "Onemogućio administrator" "Dopusti zakretanje početnog zaslona" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index 55c56ff134..338047620d 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -81,7 +81,6 @@ "Lehetővé teszi az alkalmazás számára a kezdőképernyő beállításainak és parancsikonjainak olvasását." "kezdőképernyő beállításainak és parancsikonjainak írása" "Lehetővé teszi az alkalmazás számára a kezdőképernyő beállításainak és parancsikonjainak módosítását." - "A(z) %1$s nem kezdeményezhet telefonhívásokat" "Nem tölthető le a modul" "Modulbeállítások" "Koppintson a beállítás befejezéséhez" @@ -101,6 +100,8 @@ "Mappa: %1$s, %2$d vagy több elem" "Háttérképek" "Háttérkép és stílus" + + "Kezdőképernyő beállításai" "A rendszergazda letiltotta" "A kezdőképernyő elforgatásának engedélyezése" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index 13d82d629c..5fee7a8fec 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -81,7 +81,6 @@ "Հավելվածին թույլ է տալիս կարդալ հիմնական էկրանի կարգավորումներն ու դյուրանցումները։" "փոփոխել հիմնական էկրանի կարգավորումներն ու դյուրանցումները" "Հավելվածին թույլ է տալիս փոփոխել հիմնական էկրանի կարգավորումներն ու դյուրանցումները։" - "%1$s հավելվածին չի թույլատրվում հեռախոսազանգեր կատարել" "Չհաջողվեց բեռնել վիջեթը" "Վիջեթի կարգավորումներ" "Հպեք՝ կարգավորումն ավարտելու համար" @@ -101,6 +100,7 @@ "Պանակ՝ %1$s, %2$d կամ ավելի տարրեր" "Պաստառներ" "Պաստառ և ոճ" + "Փոփոխել հիմնական էկրանը" "Գլխավոր էկրանի կարգավորումներ" "Անջատվել է ձեր ադմինիստրատորի կողմից" "Թույլ տալ հիմնական էկրանի պտտումը" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index d9cba90827..7b33e9d042 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -81,7 +81,6 @@ "Mengizinkan aplikasi membaca setelan dan pintasan di layar utama." "menulis setelan dan pintasan layar utama" "Mengizinkan aplikasi mengubah setelan dan pintasan di layar utama." - "%1$s tidak diizinkan untuk melakukan panggilan telepon" "Tidak dapat memuat widget" "Setelan widget" "Ketuk untuk menyelesaikan penyiapan" @@ -101,7 +100,8 @@ "Folder: %1$s, %2$d item atau lebih" "Wallpaper" "Wallpaper & gaya" - "Setelan Layar utama" + "Edit Layar Utama" + "Setelan layar utama" "Dinonaktifkan oleh admin" "Izinkan layar utama diputar" "Saat ponsel diputar" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 84e0f7f965..5e7af5f988 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -81,7 +81,6 @@ "Leyfir forriti að lesa stillingar og flýtileiðir heimaskjás." "skrifa stillingar og flýtileiðir heimaskjás" "Leyfir forriti að breyta stillingum og flýtileiðum heimaskjás." - "%1$s hefur ekki leyfi til að hringja símtöl" "Ekki hægt að hlaða græju" "Græjustillingar" "Ýttu til að ljúka við uppsetningu" @@ -101,6 +100,7 @@ "Mappa: %1$s, %2$d eða fleiri atriði" "Veggfóður" "Veggfóður og stíll" + "Breyta heimaskjá" "Heimastillingar" "Gert óvirkt af kerfisstjóra" "Leyfa snúning á heimaskjá" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index fce1f672ee..3251006a6a 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -81,7 +81,6 @@ "Consente all\'app di leggere le impostazioni e le scorciatoie nella schermata Home." "creare impostazioni e scorciatoie nella schermata Home" "Consente all\'app di modificare le impostazioni e le scorciatoie nella schermata Home." - "L\'app %1$s non è autorizzata a effettuare telefonate" "Impossibile caricare il widget" "Impostazioni widget" "Tocca per completare la configurazione" @@ -101,6 +100,8 @@ "Cartella: %1$s, %2$d o più elementi" "Sfondi" "Sfondo e stile" + + "Impostazioni schermata Home" "Disattivata dall\'amministratore" "Consenti rotazione della schermata Home" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 4542589705..103e4e067a 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -81,7 +81,6 @@ "מאפשרת לאפליקציה לקרוא את ההגדרות וקיצורי הדרך בדף הבית." "כתיבת ההגדרות וקיצורי הדרך בדף הבית" "מאפשרת לאפליקציה לשנות את ההגדרות וקיצורי הדרך בדף הבית." - "%1$s אינו רשאי להתקשר" "לא ניתן לטעון את הווידג\'ט" "הגדרות הווידג\'ט" "צריך להקיש כדי לסיים את תהליך ההגדרה" @@ -101,6 +100,8 @@ "תיקייה: %1$s, %2$d פריטים או יותר" "טפטים" "טפט וסגנון" + + "הגדרות של מסך הבית" "הושבת על ידי מנהל המערכת שלך" "אישור לסיבוב מסך הבית" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 9f9df56179..7552eaf01d 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -81,7 +81,6 @@ "ホームの設定とショートカットの読み取りをアプリに許可します。" "ホームの設定とショートカットの書き込み" "ホームの設定とショートカットの変更をアプリに許可します。" - "「%1$s」から電話をかけることはできません" "ウィジェットを読み込めません" "ウィジェットの設定" "タップして設定を完了してください" @@ -101,6 +100,7 @@ "フォルダ: %1$s%2$d 件以上のアイテム" "壁紙" "壁紙とスタイル" + "ホーム画面を編集" "ホームの設定" "管理者により無効にされています" "ホーム画面の回転を許可" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index dd975fe906..e56b58012a 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -81,7 +81,6 @@ "აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების წაკითხვის უფლების მიცემა." "მთავარი ეკრანის პარამეტრებისა და მალსახმობების ჩაწერა" "აპისთვის მთავარი ეკრანის პარამეტრებისა და მალსახმობების შეცვლის უფლების მიცემა." - "%1$s-ს არ აქვს სატელეფონო ზარების განხორციელების უფლება" "ვიჯეტის ჩატვირთვა ვერ ხერხდება" "ვიჯეტის პარამეტრები" "შეეხეთ დაყენების დასასრულებლად" @@ -101,6 +100,7 @@ "საქაღალდე: %1$s, %2$d ან მეტი ერთეული" "ფონები" "ფონი და სტილი" + "მთავარი ეკრანის რედაქტირება" "მთავარი გვერდის პარამეტრები" "გათიშულია თქვენი ადმინისტრატორის მიერ" "მთავარი ეკრანის შეტრიალების დაშვება" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index cd45fff2bb..4da44a8ea3 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -81,7 +81,6 @@ "Қолданбаға негізгі экрандағы параметрлер мен таңбашаларды оқуға мүмкіндік береді." "негізгі экран параметрлері мен таңбашаларын жазу" "Қолданбаға негізгі экрандағы параметрлер мен таңбашаларды өзгертуге мүмкіндік береді." - "%1$s арқылы телефон қоңырауларын соғуға рұқсат етілмеген" "Виджетті жүктеу мүмкін емес." "Виджет параметрлері" "Реттеуді аяқтау үшін түртіңіз." @@ -101,6 +100,8 @@ "Қалта: %1$s, %2$d не одан көп элемент бар" "Тұсқағаздар" "Тұсқағаз және стиль" + + "Негізгі экран параметрлері" "Әкімші өшірді" "Негізгі экранды бұруға рұқсат ету" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 64bc3bb1e5..6aa399b95c 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -81,7 +81,6 @@ "អនុញ្ញាតឱ្យកម្មវិធីអានការកំណត់ និងផ្លូវកាត់នៅក្នុងអេក្រង់ដើម។" "សរសេរការកំណត់ និងផ្លូវកាត់សម្រាប់អេក្រង់ដើម" "អនុញ្ញាតឱ្យកម្មវិធីប្ដូរការកំណត់ និងផ្លូវកាត់នៅក្នុងអេក្រង់ដើម។" - "%1$s មិនត្រូវបានអនុញ្ញាតឲ្យធ្វើការហៅទូរស័ព្ទទេ" "មិនអាចផ្ទុក​ធាតុក្រាហ្វិក​បានទេ" "ការកំណត់​ធាតុក្រាហ្វិក" "ចុច​ដើម្បី​បញ្ចប់​ការរៀបចំ" @@ -101,6 +100,7 @@ "ថត៖ %1$s, ធាតុ %2$d ឬច្រើនជាងនេះ" "ផ្ទាំង​រូបភាព" "ផ្ទាំងរូបភាព និងរចនាប័ទ្ម" + "កែអេក្រង់ដើម" "ការកំណត់​ទំព័រដើម" "បានបិទដំណើរការដោយអ្នកគ្រប់គ្រងរបស់អ្នក" "អនុញ្ញាតការបងិ្វលអេក្រង់ដើម" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index f955277e4e..e27483e503 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -81,7 +81,6 @@ "ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಓದಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ." "ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬರೆಯಿರಿ" "ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿ ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಶಾರ್ಟ್‌ಕಟ್‌ಗಳನ್ನು ಬದಲಾಯಿಸಲು ಆ್ಯಪ್‌ಗೆ ಅನುಮತಿಸುತ್ತದೆ." - "ಫೋನ್ ಕರೆಗಳನ್ನು ಮಾಡಲು %1$s ಅಪ್ಲಿಕೇಶನ್‌‌ಗೆ ಅನುಮತಿಸಲಾಗುವುದಿಲ್ಲ" "ವಿಜೆಟ್ ಅನ್ನು ಲೋಡ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ" "ವಿಜೆಟ್ ಸೆಟ್ಟಿಂಗ್‌ಗಳು" "ಸೆಟಪ್ ಪೂರ್ಣಗೊಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ" @@ -101,6 +100,7 @@ "ಫೋಲ್ಡರ್: %1$s, %2$d ಅಥವಾ ಹೆಚ್ಚಿನ ಐಟಂಗಳು" "ವಾಲ್‌ಪೇಪರ್‌ಗಳು" "ವಾಲ್‌ಪೇಪರ್ ಮತ್ತು ಶೈಲಿ" + "ಹೋಮ್ ಸ್ಕ್ರೀನ್ ಅನ್ನು ಎಡಿಟ್ ಮಾಡಿ" "ಮುಖಪುಟ ಸೆಟ್ಟಿಂಗ್‌ಗಳು" "ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ" "ಹೋಮ್ ಸ್ಕ್ರೀನ್ ತಿರುಗುವಿಕೆಯನ್ನು ಅನುಮತಿಸಿ" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 4d621ec5dc..b0bcff7cfd 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -81,7 +81,6 @@ "앱이 홈에 있는 설정 및 바로가기를 읽을 수 있도록 허용합니다." "홈 설정 및 바로가기 쓰기" "앱이 홈에 있는 설정 및 바로가기를 변경할 수 있도록 허용합니다." - "%1$s에서 전화를 걸 수 없습니다." "위젯을 로드할 수 없습니다." "위젯 설정" "탭하여 설정을 완료하세요." @@ -101,6 +100,8 @@ "폴더: %1$s, 항목 %2$d개 이상" "배경화면" "배경화면 및 스타일" + + "홈 설정" "관리자가 사용 중지함" "홈 화면 회전 허용" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index 0fe280205d..24fca36e2c 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -81,7 +81,6 @@ "Колдонмого үйдүн параметрлерин жана ыкчам баскычтарын окууга уруксат берет." "үйдүн параметрлерин жана ыкчам баскычтарын жазуу" "Колдонмого үйдүн параметрлерин жана ыкчам баскычтарын өзгөртүүгө уруксат берет." - "%1$s телефон чалууларды аткарууга уруксаты жок" "Виджет жүктөлбөй жатат" "Виджеттин параметрлери" "Аягына чейин тууралоо үчүн басып коюңуз" @@ -101,6 +100,8 @@ "%1$s папкасындагы объекттер: %2$d же андан көбүрөөк" "Тушкагаздар" "Тушкагаз жана стиль" + + "Башкы бет параметрлери" "Администраторуңуз өчүрүп койгон" "Башкы экранды бурууга уруксат берүү" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 72eb3faea9..21481787a5 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -81,7 +81,6 @@ "ອະນຸຍາດໃຫ້ແອັບອ່ານການຕັ້ງຄ່າ ແລະ ທາງລັດໃນໜ້າຫຼັກ." "ຂຽນການຕັ້ງຄ່າໜ້າຫຼັກ ແລະ ທາງລັດ" "ອະນຸຍາດໃຫ້ແອັບປ່ຽນການຕັ້ງຄ່າ ແລະ ທາງລັດໃນໜ້າຫຼັກ." - "%1$s ບໍ່​ໄດ້​ຮັບ​ອະ​ນຸ​ຍາດ​ໃຫ້​ໂທ" "ບໍ່ສາມາດໂຫຼດວິດເຈັດໄດ້" "ການຕັ້ງຄ່າວິດເຈັດ" "ແຕະເພື່ອຕັ້ງຄ່າໃຫ້ແລ້ວ" @@ -101,6 +100,7 @@ "ໂຟນເດີ: %1$s, %2$d ຫຼື ລາຍການເພີ່ມເຕີມ" "ພາບພື້ນຫຼັງ" "ຮູບພື້ນຫຼັງ ແລະ ຮູບແບບ" + "ແກ້ໄຂໂຮມສະກຣີນ" "ການຕັ້ງຄ່າໜ້າຫຼັກ" "ຖືກປິດການນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ" "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍຢູ່ໂຮມສະກຣີນໄດ້" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 0f0237620f..2ea7174933 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -81,7 +81,6 @@ "Programai leidžiama skaityti pagrindinio ekrano nustatymus ir sparčiuosius klavišus." "rašyti pagrindinio ekrano nustatymus ir sparčiuosius klavišus" "Programai leidžiama keisti pagrindinio ekrano nustatymus ir sparčiuosius klavišus." - "„%1$s“ neleidžiama skambinti" "Nepavyko įkelti valdiklio" "Valdiklio nustatymai" "Palieskite, kad užbaigtumėte sąranką" @@ -101,6 +100,7 @@ "Aplankas: „%1$s“, elementų: %2$d ar daugiau" "Ekrano fonai" "Ekrano fonas ir stilius" + "Redaguoti pagrindinį ekraną" "„Home“ nustatymai" "Išjungė administratorius" "Leisti pasukti pagrindinį ekraną" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 150af9b66b..3a848dd229 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -81,7 +81,6 @@ "Ļauj lietotnei lasīt iestatījumus un saīsnes sākuma ekrānā." "sākuma ekrāna iestatījumu un saīšņu rakstīšana" "Ļauj lietotnei mainīt iestatījumus un saīsnes sākuma ekrānā." - "Lietotnei %1$s nav atļauts veikt tālruņa zvanus." "Nevar ielādēt logrīku." "Logrīka iestatījumi" "Pieskarieties, lai pabeigtu iestatīšanu" @@ -101,6 +100,8 @@ "Mape %1$s, vienumu skaits mapē: vismaz %2$d" "Fona tapetes" "Fona tapete un stils" + + "Sākumlapas iestatījumi" "Atspējojis administrators" "Atļaut sākuma ekrāna pagriešanu" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 13ff08ad4a..6de6141875 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -81,7 +81,6 @@ "Овозможува апликацијата да ги чита поставките и кратенките на почетната страница." "да пишува поставки и кратенки на почетна страница" "Овозможува апликацијата да ги менува поставките и кратенките на почетната страница." - "%1$s нема дозвола за телефонски повици" "Не може да се вчита виџетот" "Поставки за виџет" "Допрете за да го завршите поставувањето" @@ -101,6 +100,8 @@ "Папка: %1$s, %2$d или повеќе ставки" "Тапети" "Тапет и стил" + + "Поставки за почетен екран" "Оневозможено од администраторот" "Дозволи ротирање на почетниот екран" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index e023df8c74..59827f28eb 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -81,7 +81,6 @@ "ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും വായിക്കാൻ ആപ്പിനെ അനുവദിക്കുന്നു." "ഹോം ക്രമീകരണവും കുറുക്കുവഴികളും എഴുതുക" "ഹോമിലെ ക്രമീകരണങ്ങളും കുറുക്കുവഴികളും മാറ്റാൻ ആപ്പിനെ അനുവദിക്കുന്നു." - "ഫോൺ കോൾ ചെയ്യാൻ %1$s എന്നതിനെ അനുവദിച്ചിട്ടില്ല" "വിജറ്റ് ലോഡ് ചെയ്യാനാകുന്നില്ല" "വിജറ്റ് ക്രമീകരണം" "സജ്ജീകരണം പൂർത്തിയാക്കാൻ ടാപ്പ് ചെയ്യുക" @@ -101,6 +100,7 @@ "ഫോൾഡർ: %1$s, %2$d അല്ലെങ്കിൽ അതിലധികം ഇനങ്ങൾ" "വാൾപേപ്പർ" "വാൾപേപ്പറും സ്‌റ്റൈലും" + "ഹോം സ്‌ക്രീൻ എഡിറ്റ് ചെയ്യുക" "ഹോം ക്രമീകരണം" "അഡ്മിൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു" "ഹോം സ്ക്രീൻ റൊട്ടേഷൻ അനുവദിക്കുക" @@ -164,7 +164,7 @@ "ഔദ്യോഗിക ആപ്പുകൾ തൽക്കാലം നിർത്തിയിരിക്കുന്നു" "ഔദ്യോഗിക ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് അറിയിപ്പുകളൊന്നും ലഭിക്കില്ല" "നിങ്ങൾക്ക് അറിയിപ്പുകൾ അയയ്ക്കാനോ ബാറ്ററി ഉപയോഗിക്കാനോ ലൊക്കേഷൻ ആക്‌സസ് ചെയ്യാനോ നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾക്ക് കഴിയില്ല" - "Work ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" + "വർക്ക് ആപ്പുകളിൽ നിന്ന് നിങ്ങൾക്ക് ഫോൺ കോളുകളും ടെക്സ്റ്റ് മെസേജുകളും അറിയിപ്പുകളും ലഭിക്കില്ല" "ഔദ്യോഗിക ആപ്പുകൾക്ക് ബാഡ്‌ജ് നൽകിയിരിക്കുന്നു, അവ നിങ്ങളുടെ ഐടി അഡ്‌മിന് കാണാനും കഴിയും" "മനസ്സിലായി" "ഔദ്യോഗിക ആപ്പുകൾ താൽക്കാലികമായി നിർത്തുക" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 79adc913f1..eea9195d18 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -81,7 +81,6 @@ "Аппад нүүрэн дэх тохиргоо болон товчлолыг уншихыг зөвшөөрнө." "нүүрний тохиргоо болон товчлолыг бичих" "Аппад нүүрэн дэх тохиргоо болон товчлолыг өөрчлөхийг зөвшөөрнө." - "%1$s утасны дуудлага хийх боломжгүй" "Жижиг хэрэгслийг ачаалах боломжгүй" "Виджетийн тохиргоо" "Тохируулгыг дуусгахын тулд товшино уу" @@ -101,6 +100,8 @@ "Фолдер: %1$s, %2$d эсвэл үүнээс олон зүйл" "Дэлгэцийн зураг" "Дэлгэцийн зураг, загвар" + + "Нүүр хуудасны тохиргоо" "Таны админ идэвхгүй болгосон" "Үндсэн нүүрийг эргүүлэхийг зөвшөөрөх" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index ff9cb3813e..b74a8f50ed 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -81,7 +81,6 @@ "अ‍ॅपला होममधील सेटिंग्ज आणि शॉर्टकट वाचण्याची अनुमती देते." "होम सेटिंग्ज आणि शॉर्टकट लिहा" "अ‍ॅपला होममधील सेटिंग्ज आणि शॉर्टकट बदलण्याची अनुमती देते." - "%1$s ला फोन कॉल करण्याची अनुमती नाही" "विजेट लोड करू शकत नाही" "विजेटची सेटिंग्ज" "सेटअप पूर्ण करण्‍यासाठी टॅप करा" @@ -101,6 +100,7 @@ "फोल्डर: %1$s, %2$d किंवा त्याहून अधिक आयटम" "वॉलपेपर" "वॉलपेपर आणि शैली" + "होम स्क्रीन संपादित करा" "होम सेटिंग्‍ज" "आपल्या प्रशासकाने अक्षम केले" "होम स्क्रीन फिरवण्‍याची अनुमती द्या" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index 29845cdf87..7d1a4d172a 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -81,7 +81,6 @@ "Membenarkan apl membaca tetapan dan pintasan di skrin utama." "menulis tetapan dan pintasan skrin utama" "Membenarkan apl menukar tetapan dan pintasan di skrin utama." - "%1$s tidak dibenarkan membuat panggilan telefon" "Tidak dapat memuatkan widget" "Tetapan widget" "Ketik untuk menyelesaikan persediaan" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d atau lebih banyak item" "Hiasan latar" "Kertas dinding & gaya" + "Edit Skrin Utama" "Tetapan skrin utama" "Dilumpuhkan oleh pentadbir anda" "Benarkan putaran skrin utama" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index 6c11a61bc0..1a6b0de1e6 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -81,7 +81,6 @@ "ပင်မတွင်ရှိသော ဆက်တင်များနှင့် ဖြတ်လမ်းလင့်ခ်များကို အက်ပ်အား ဖတ်ခွင့်ပြုနိုင်သည်။" "ပင်မဆက်တင်နှင့် ဖြတ်လမ်းလင့်ခ်များ ရေးသားခြင်း" "ပင်မတွင်ရှိသော ဆက်တင်များနှင့် ဖြတ်လမ်းလင့်ခ်များကို အက်ပ်အား ပြောင်းခွင့်ပြုနိုင်သည်။" - "%1$sသည် ဖုန်းခေါ်ဆိုခွင့် မရှိပါ" "ဝိဂျက်ကို ဖွင့်၍မရပါ" "ဝိဂျက်ဆက်တင်များ" "စနစ်ထည့်သွင်းခြင်း အပြီးသတ်ရန် တို့ပါ" @@ -101,6 +100,7 @@ "ဖိုင်တွဲ - %1$s%2$d သို့မဟုတ် နောက်ထပ်ဖိုင်များ" "နောက်ခံများ" "နောက်ခံနှင့် ပုံစံ" + "ပင်မစာမျက်နှာ တည်းဖြတ်ရန်" "ပင်မဆက်တင်များ" "သင့်စီမံခန့်ခွဲသူက ပိတ်လိုက်ပါသည်" "ပင်မစာမျက်နှာလှည့်ခြင်းကို ခွင့်ပြုခြင်း" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index 1b1941cfc6..41fb8c084d 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -81,7 +81,6 @@ "Lar appen lese innstillingene og snarveiene på startsiden." "angi startsideinnstillinger og -snarveier" "Lar appen endre innstillingene og snarveiene på startsiden." - "%1$s har ikke tillatelse til å ringe" "Kan ikke laste inn modulen" "Modulinnstillinger" "Trykk for å fullføre konfigureringen" @@ -101,6 +100,8 @@ "Mappe: %1$s, %2$d eller flere elementer" "Bakgrunner" "Bakgrunn og stil" + + "Startsideinnstillinger" "Administratoren har slått av funksjonen" "Tillat at startskjermen roterer" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index d8e372af93..8ce5603451 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -81,7 +81,6 @@ "एपलाई होम स्क्रिनबाट सेटिङ र सर्टकटहरू रिड गर्ने अनुमति दिन्छ।" "होम स्क्रिनका सेटिङ र सर्टकटहरू राइट गरियोस्" "एपलाई होम स्क्रिनबाट सेटिङ र सर्टकट बदल्ने अनुमति दिन्छ" - "%1$s ले फोन कलहरू गर्न अनुमति छैन" "विजेट लोड गर्न सकिएन" "विजेटका सेटिङ" "सेटअप पूरा गर्न ट्याप गर्नुहोस्" @@ -101,6 +100,7 @@ "फोल्डर: %1$s, %2$d वा सोभन्दा बढी वस्तुहरू" "वालपेपरहरु" "वालपेपर तथा शैली" + "होम स्क्रिन बदल्नुहोस्" "होम पेजका सेटिङहरू" "तपाईँको प्रशासकद्वारा असक्षम गरिएको" "होम स्क्रिन रोटेट हुन दिइयोस्" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 97b650b853..2241a58b87 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -81,7 +81,6 @@ "De app toestaan de instellingen en snelkoppelingen op het startscherm te lezen." "instellingen en snelkoppelingen op startscherm wijzigen" "De app toestaan de instellingen en snelkoppelingen op het startscherm te wijzigen." - "%1$s mag niet bellen" "Kan widget niet laden" "Widgetinstellingen" "Tik om instellen af te ronden" @@ -101,6 +100,7 @@ "Map: %1$s, %2$d of meer items" "Achtergrond" "Achtergrond en stijl" + "Startscherm bewerken" "Instellingen start" "Uitgezet door je beheerder" "Draaien van startscherm toestaan" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 304e13f42e..5a93d91a83 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -81,7 +81,6 @@ "ହୋମରେ ଥିବା ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ପଢ଼ିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଏ।" "ହୋମ ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ଲେଖନ୍ତୁ" "ହୋମରେ ଥିବା ସେଟିଂସ ଏବଂ ସର୍ଟକଟଗୁଡ଼ିକୁ ପରିବର୍ତ୍ତନ କରିବା ପାଇଁ ଆପକୁ ଅନୁମତି ଦିଏ।" - "ଫୋନ୍‌ କଲ୍‌ କରିବାକୁ %1$sକୁ ଅନୁମତି ଦିଆଯାଇ ନାହିଁ" "ୱିଜେଟ୍ ଲୋଡ୍ କରାଯାଇପାରିବ ନାହିଁ" "ୱିଜେଟ ସେଟିଂସ" "ସେଟଅପ ସମ୍ପୂର୍ଣ୍ଣ କରିବାକୁ ଟାପ କରନ୍ତୁ" @@ -101,6 +100,8 @@ "ଫୋଲ୍ଡର୍: %1$s, %2$d କିମ୍ବା ଅଧିକ ଆଇଟମ୍" "ୱାଲପେପର୍‌" "ୱାଲପେପର ଏବଂ ଷ୍ଟାଇଲ" + + "ହୋମ ସେଟିଂସ" "ଆପଣଙ୍କ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଅକ୍ଷମ କରାଯାଇଛି" "ହୋମ ସ୍କ୍ରିନ ରୋଟେସନକୁ ଅନୁମତି ଦିଅନ୍ତୁ" @@ -159,13 +160,13 @@ "ବ୍ୟକ୍ତିଗତ" "ୱାର୍କ" "ୱର୍କ ପ୍ରୋଫାଇଲ୍‌" - "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" + "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" "ବୁଝିଗଲି" "ୱାର୍କ ଆପ୍ସ ବିରତ କରାଯାଇଛି" "ଆପଣ ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସରୁ ବିଜ୍ଞପ୍ତି ପାଇବେ ନାହିଁ" "ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସ ଆପଣଙ୍କୁ ବିଜ୍ଞପ୍ତି ପଠାଇପାରିବ ନାହିଁ, ଆପଣଙ୍କ ବ୍ୟାଟେରୀକୁ ବ୍ୟବହାର କରିପାରିବ ନାହିଁ କିମ୍ବା ଆପଣଙ୍କର ଲୋକେସନକୁ ଆକ୍ସେସ କରିପାରିବ ନାହିଁ" "ଆପଣ ଆପଣଙ୍କ ୱାର୍କ ଆପ୍ସରୁ ଫୋନ କଲ, ଟେକ୍ସଟ ମେସେଜ କିମ୍ବା ବିଜ୍ଞପ୍ତି ପାଇବେ ନାହିଁ" - "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ୍ କରାଯାଇଛି ଏବଂ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦେଖାଯାଉଛି" + "ୱାର୍କ ଆପ୍ସ ବ୍ୟାଜ କରାଯାଇଛି ଏବଂ ସେଗୁଡ଼ିକ ଆପଣଙ୍କ IT ଆଡମିନଙ୍କୁ ଦୃଶ୍ୟମାନ ହେଉଛି" "ବୁଝିଗଲି" "ୱାର୍କ ଆପ୍ସ ବିରତ କରନ୍ତୁ" "ପୁଣି ଚାଲୁ କରନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 24a5f7f6bc..ae10c8f068 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -81,7 +81,6 @@ "ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਪੜ੍ਹਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।" "ਹੋਮ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਲਿਖੋ" "ਐਪ ਨੂੰ ਹੋਮ ਵਿੱਚ ਸੈਟਿੰਗਾਂ ਅਤੇ ਸ਼ਾਰਟਕੱਟ ਬਦਲਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।" - "%1$s ਨੂੰ ਫ਼ੋਨ ਕਾਲਾਂ ਕਰਨ ਦੀ ਆਗਿਆ ਨਹੀਂ ਹੈ" "ਵਿਜੇਟ ਨੂੰ ਲੋਡ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ" "ਵਿਜੇਟ ਸੈਟਿੰਗਾਂ" "ਸੈੱਟਅੱਪ ਪੂਰਾ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ" @@ -101,6 +100,8 @@ "ਫੋਲਡਰ: %1$s, %2$d ਜਾਂ ਹੋਰ ਆਈਟਮਾਂ" "ਵਾਲਪੇਪਰ" "ਵਾਲਪੇਪਰ ਅਤੇ ਸਟਾਈਲ" + + "ਹੋਮ ਸੈਟਿੰਗਾਂ" "ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਈ ਗਈ" "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" @@ -159,13 +160,13 @@ "ਨਿੱਜੀ" "ਕੰਮ ਸੰਬੰਧੀ" "ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ" - "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" + "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" "ਸਮਝ ਲਿਆ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਰੋਕਿਆ ਗਿਆ ਹੈ" "ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੋਂ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੀਆਂ" "ਤੁਹਾਡੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੁਹਾਨੂੰ ਸੂਚਨਾਵਾਂ ਨਹੀਂ ਭੇਜ ਸਕਦੀਆਂ, ਤੁਹਾਡੀ ਬੈਟਰੀ ਨਹੀਂ ਵਰਤ ਸਕਦੀਆਂ ਜਾਂ ਤੁਹਾਡੇ ਟਿਕਾਣੇ ਤੱਕ ਪਹੁੰਚ ਨਹੀਂ ਕਰ ਸਕਦੀਆਂ" "ਤੁਹਾਨੂੰ ਆਪਣੀਆਂ ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਤੋਂ ਫ਼ੋਨ ਕਾਲਾਂ, ਲਿਖਤ ਸੁਨੇਹੇ ਜਾਂ ਸੂਚਨਾਵਾਂ ਪ੍ਰਾਪਤ ਨਹੀਂ ਹੋਣਗੀਆਂ" - "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਜਾਂਦਾ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" + "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਨੂੰ ਬੈਜ ਕੀਤਾ ਗਿਆ ਹੈ ਅਤੇ ਇਹ ਤੁਹਾਡੇ ਆਈ.ਟੀ. ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਦਿਸਣਗੀਆਂ" "ਸਮਝ ਲਿਆ" "ਕੰਮ ਸੰਬੰਧੀ ਐਪਾਂ ਰੋਕੋ" "ਰੋਕ ਹਟਾਓ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 7239f9fdd6..6f73d5fdfe 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -81,7 +81,6 @@ "Umożliwia aplikacji odczytywanie ustawień i skrótów na ekranie głównym." "Zapisuje ustawienia i skróty na ekranie głównym" "Umożliwia aplikacji zmianę ustawień i skrótów na ekranie głównym." - "%1$s nie może wykonywać połączeń telefonicznych" "Nie udało się załadować widżetu" "Ustawienia widżetu" "Kliknij, aby dokończyć konfigurację" @@ -101,13 +100,15 @@ "Folder: %1$s, liczba elementów: %2$d lub więcej" "Tapety" "Tapeta i styl" + + "Ustawienia ekranu głównego" "Funkcja wyłączona przez administratora" "Zezwalaj na obrót ekranu głównego" "Po obróceniu telefonu" "Kropki powiadomień" - "Włączono" - "Wyłączono" + "Włączone" + "Wyłączone" "Wymagany jest dostęp do powiadomień" "Aby pokazywać kropki powiadomień, włącz powiadomienia aplikacji %1$s" "Zmień ustawienia" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index e9445cf700..dcbbe1dd3c 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -81,7 +81,6 @@ "Permite que a app leia as definições e os atalhos no ecrã principal." "escrever definições e atalhos do ecrã principal" "Permite que a app altere as definições e os atalhos no ecrã principal." - "O %1$s não tem autorização para efetuar chamadas telefónicas" "Não é possível carregar o widget" "Definições de widget" "Toque para concluir a configuração" @@ -101,6 +100,7 @@ "Pasta: %1$s, %2$d ou mais itens" "Imagens de fundo" "Imagem fundo/estilo" + "Editar ecrã principal" "Definições de início" "Desativada pelo gestor" "Permitir rotação do ecrã principal" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index 72dd608fad..421f2dd24e 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -81,7 +81,6 @@ "Permite que o app leia as configurações e os atalhos na tela inicial." "gravar configurações e atalhos da tela inicial" "Permite que o app mude as configurações e os atalhos na tela inicial." - "%1$s não tem permissão para fazer chamadas" "Não é possível carregar o widget" "Configurações de widget" "Toque para concluir a configuração" @@ -101,6 +100,7 @@ "Pasta: %1$s, %2$d ou mais itens" "Planos de fundo" "Plano de fundo e estilo" + "Editar tela inicial" "Configurações da tela inicial" "Desativado pelo administrador" "Permitir a rotação da tela inicial" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index dbfbf766b0..0f2c079952 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -81,7 +81,6 @@ "Permite aplicației să citească setările și comenzile rapide de pe ecranul de pornire." "scrie setările și comenzile rapide de pe ecranul de pornire" "Permite aplicației să modifice setările și comenzile rapide de pe ecranul de pornire." - "%1$s nu are permisiunea de a apela" "Widgetul nu poate fi încărcat" "Setări pentru widget" "Atinge pentru a finaliza configurarea" @@ -101,6 +100,8 @@ "Dosar: %1$s, %2$d sau mai multe elemente" "Imagini de fundal" "Imagine de fundal și stil" + + "Setări ecran de pornire" "Dezactivată de administrator" "Permite rotirea ecranului de pornire" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 134004da14..5d67c6aeb1 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -81,7 +81,6 @@ "Приложение получит доступ к данным о настройках и ярлыках на главном экране." "Изменение настроек и ярлыков на главном экране" "Приложение сможет изменять настройки и ярлыки на главном экране." - "Приложение %1$s не может делать телефонные звонки" "Не удается загрузить виджет." "Настройки виджета" "Нажмите, чтобы завершить настройку." @@ -101,6 +100,8 @@ "Папка \"%1$s\" (объектов: %2$d или больше)" "Обои" "Обои и стиль" + + "Главный экран" "Функция отключена администратором" "Разрешить поворачивать главный экран" @@ -159,13 +160,13 @@ "Личные" "Рабочие" "Рабочий профиль" - "У рабочих приложений есть специальная пометка. Они видны системному администратору." + "У рабочих приложений есть специальный значок. Они видны системному администратору." "ОК" "Рабочие приложения приостановлены" "Вы не будете получать уведомления от рабочих приложений." "Рабочие приложения не могут отправлять уведомления, расходовать заряд батареи и получать доступ к данным о вашем местоположении." "Вы не будете получать вызовы, текстовые сообщения и уведомления от рабочих приложений." - "У рабочих приложений есть специальная пометка. Они видны системному администратору." + "У рабочих приложений есть специальный значок. Они видны системному администратору." "ОК" "Приостановить рабочие приложения" "Возобновить" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index 01d6ba0026..c11b8d4d93 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -81,7 +81,6 @@ "මුල් පිටුවේ ඇති සැකසීම් සහ කෙටි මං කියවීමට යෙදුමට ඉඩ දෙයි." "මුල් පිටු සැකසීම් සහ කෙටි මං ලියන්න" "මුල් පිටුවේ සැකසීම් සහ කෙටි මං ඉවත් කිරීමට යෙදුමට ඉඩ දෙයි." - "%1$s හට දුරකථන ඇමතුම් සිදු කිරීමට ඉඩ නොදේ" "විජට් පූරණය කළ නොහැකිය" "විජට් සැකසීම්" "පිහිටුවීම අවසන් කිරීමට තට්ටු කරන්න" @@ -101,6 +100,8 @@ "ෆෝල්ඩර: %1$s, අයිතම %2$dක් හෝ වැඩි ගණනක්" "වෝල්පේපර" "වෝල්පේපරය සහ මෝස්තරය" + + "නිවසේ සැකසීම්" "ඔබගේ පරිපාලක විසින් අබල කරන ලදී" "මුල් තිරය කරකැවීමට ඉඩ දෙන්න" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 2c257b7709..434e416327 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -81,7 +81,6 @@ "Povoľuje aplikácii čítať nastavenia a odkazy na ploche." "zápis nastavení a odkazov plochy" "Povoľuje aplikácii meniť nastavenia a odkazy na ploche." - "Aplikácia %1$s nemá povolenie uskutočňovať telefonické hovory" "Miniaplikáciu sa nepodarilo načítať" "Nastavenia miniaplikácie" "Nastavenie dokončíte klepnutím" @@ -101,6 +100,7 @@ "Priečinok: %1$s, %2$d alebo viac položiek" "Tapety" "Tapeta a štýl" + "Upraviť plochu" "Nastavenia plochy" "Zakázané vaším správcom" "Povoliť otáčanie plochy" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 2fd10ecd47..cad7f40064 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -81,7 +81,6 @@ "Aplikaciji dovoli branje nastavitev in bližnjic na začetnem zaslonu." "zapisovanje nastavitev in bližnjic začetnega zaslona" "Aplikaciji dovoli spreminjanje nastavitev in bližnjic na začetnem zaslonu." - "Aplikaciji %1$s ni dovoljeno opravljanje klicev" "Pripomočka ni mogoče naložiti." "Nastavitve pripomočka" "Dotaknite se, da dokončate postopek nastavitve." @@ -101,6 +100,7 @@ "Mapa: %1$s, %2$d ali več elementov" "Ozadja" "Zaslonsko ozadje in slog" + "Urejanje začetnega zaslona" "Domače nastavitve" "Onemogočil skrbnik." "Dovoli sukanje začetnega zaslona" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 994fa9891a..ff97f00143 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -81,7 +81,6 @@ "Lejon aplikacionin që të lexojë cilësimet dhe shkurtoret në ekranin bazë." "shkruaj cilësimet dhe shkurtoret e ekranit bazë" "Lejon aplikacionin që të ndryshojë cilësimet dhe shkurtoret në ekranin bazë." - "%1$s nuk lejohet të kryejë telefonata" "S\'mund të ngarkohet miniaplikacioni" "Cilësimet e miniaplikacionit" "Trokit për të përfunduar konfigurimin" @@ -101,6 +100,7 @@ "Dosja: %1$s, %2$d ose më shumë artikuj" "Imazhet e sfondit" "Imazhi i sfondit dhe stili" + "Modifiko ekranin bazë" "Cilësimet e ekranit bazë" "Çaktivizuar nga administratori" "Lejo rrotullimin e ekranit bazë" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 544ef0c04f..1cfda6b051 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -81,7 +81,6 @@ "Дозвољава апликацији да чита подешавања и пречице на почетном екрану." "уписивање подешавања и пречица на почетном екрану" "Дозвољава апликацији да мења подешавања и пречице на почетном екрану." - "%1$s нема дозволу за упућивање телефонских позива" "Учитавање виџета није успело" "Подешавања виџета" "Додирните да бисте довршили подешавање" @@ -101,6 +100,7 @@ "Фолдер: %1$s, %2$d или више ставки" "Позадине" "Позадина и стил" + "Измени почетни екран" "Подешавања почетног екрана" "Администратор је онемогућио" "Дозволи ротацију почетног екрана" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 9d7f650e3e..8c918a0a2c 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -81,7 +81,6 @@ "Tillåter att appen läser inställningar och genvägar på startskärmen." "skriva inställningar och genvägar på startskärmen" "Tillåter att appen ändrar inställningar och genvägar på startskärmen." - "%1$s har inte behörighet att ringa samtal" "Det gick inte att läsa in widgeten" "Widgetinställningar" "Tryck för att slutföra konfigureringen" @@ -101,6 +100,8 @@ "Mapp: %1$s, %2$d eller fler objekt" "Bakgrunder" "Bakgrund och utseende" + + "Startinställningar" "Inaktiverat av administratören" "Tillåt rotering av startskärmen" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 2fbf7aa5f0..b992037748 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -81,7 +81,6 @@ "Huruhusu programu kusoma mipangilio na njia za mikato katika skrini ya kwanza." "kuandika mipangilio ya skrini ya kwanza na njia za mkato" "Huruhusu programu kubadilisha mipangilio na njia za mkato katika skrini ya kwanza." - "%1$s hairuhusiwi kupiga simu" "Imeshindwa kupakia wijeti" "Mipangilio ya wijeti" "Gusa ili umalize kuweka mipangilio" @@ -101,6 +100,7 @@ "Folda: %1$s, vipengee %2$d au zaidi" "Mandhari" "Mandhari na mtindo" + "Badilisha Skrini ya Kwanza" "Mipangilio ya mwanzo" "Imezimwa na msimamizi wako" "Ruhusu kipengele cha kuzungusha skrini ya kwanza" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index bbf22a4ddc..2742361cd7 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -81,7 +81,6 @@ "முகப்புத் திரையிலுள்ள அமைப்புகளையும் ஷார்ட்கட்களையும் படிக்க ஆப்ஸை அனுமதிக்கும்." "முகப்புத் திரையின் அமைப்புகளையும் ஷார்ட்கட்களையும் எழுதுதல்" "முகப்புத் திரையிலுள்ள அமைப்புகளையும் ஷார்ட்கட்களையும் மாற்ற ஆப்ஸை அனுமதிக்கும்." - "ஃபோன் அழைப்புகள் செய்ய, %1$s அனுமதிக்கப்படவில்லை" "விட்ஜெட்டை ஏற்ற முடியவில்லை" "விட்ஜெட் அமைப்புகள்" "அமைவை நிறைவுசெய்யத் தட்டவும்" @@ -101,6 +100,8 @@ "ஃபோல்டர்: %1$s, %2$d அல்லது அதற்கு அதிகமான ஃபைல்கள்" "வால்பேப்பர்கள்" "வால்பேப்பர் & ஸ்டைல்" + + "முகப்பு அமைப்புகள்" "உங்கள் நிர்வாகி முடக்கியுள்ளார்" "முகப்புத் திரை சுழற்சியை அனுமதித்தல்" @@ -159,7 +160,7 @@ "தனிப்பட்டவை" "பணி" "பணிக் கணக்கு" - "பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டுள்ளன. உங்கள் IT நிர்வாகியால் அவற்றைப் பார்க்க முடியும்" + "பணி ஆப்ஸில் பேட்ஜ் இடப்பட்டிருக்கும், உங்கள் IT நிர்வாகியால் பணி ஆப்ஸைப் பார்க்க முடியும்" "முடிந்தது" "பணி ஆப்ஸ் இடைநிறுத்தப்பட்டுள்ளன" "உங்கள் பணி ஆப்ஸிலிருந்து அறிவிப்புகளைப் பெறமாட்டீர்கள்" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 88fca12453..bafa95519d 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -81,7 +81,6 @@ "హోమ్‌లో సెట్టింగ్‌లు, షార్ట్‌కట్‌లను చదవడానికి యాప్‌ను అనుమతిస్తుంది." "హోమ్ సెట్టింగ్‌లు, షార్ట్‌కట్‌లను రాయండి" "హోమ్‌లో సెట్టింగ్‌లు, షార్ట్‌కట్‌లను మార్చడానికి యాప్‌ను అనుమతిస్తుంది." - "ఫోన్ కాల్స్‌ను చేసేందుకు %1$sకి అనుమతి లేదు" "విడ్జెట్‌ను లోడ్ చేయడం సాధ్యం కాలేదు" "విడ్జెట్ సెట్టింగ్‌లు" "సెటప్‌ను ముగించడానికి ట్యాప్ చేయండి" @@ -101,6 +100,7 @@ "ఫోల్డర్: %1$s, %2$d లేదా అంతకంటే ఎక్కువ ఐటెమ్‌లు" "వాల్‌పేపర్‌లు" "వాల్‌పేపర్ & స్టయిల్" + "మొదటి స్క్రీన్‌ను ఎడిట్ చేయండి" "మొదటి స్క్రీన్ సెట్టింగ్‌లు" "మీ నిర్వాహకులు నిలిపివేసారు" "మొదటి స్క్రీన్ రొటేషన్‌ను అనుమతించండి" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index 6bcc09e9f3..c75c5326ae 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -81,7 +81,6 @@ "อนุญาตให้แอปอ่านการตั้งค่าและทางลัดในหน้าแรก" "เขียนการตั้งค่าและทางลัดในหน้าแรก" "อนุญาตให้แอปเปลี่ยนการตั้งค่าและทางลัดในหน้าแรก" - "%1$s ไม่ได้รับอนุญาตให้โทรออก" "โหลดวิดเจ็ตไม่ได้" "การตั้งค่าวิดเจ็ต" "แตะเพื่อสิ้นสุดการตั้งค่า" @@ -101,6 +100,7 @@ "โฟลเดอร์: %1$s, อย่างน้อย %2$d รายการ" "วอลเปเปอร์" "วอลเปเปอร์และรูปแบบ" + "แก้ไขหน้าจอหลัก" "การตั้งค่าหน้าจอหลัก" "ปิดใช้โดยผู้ดูแลระบบ" "อนุญาตให้หมุนหน้าจอหลัก" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 490ce0684a..b91d67e8be 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -81,7 +81,6 @@ "Binibigyang-daan ang app na basahin ang mga setting at shortcut sa home." "magsulat ng mga setting at shortcut ng home" "Binibigyang-daan ang app na baguhin ang mga setting at shortcut sa home." - "Hindi pinahihintulutang tumawag ang %1$s" "Hindi ma-load ang widget" "Mga setting ng widget" "I-tap para tapusin ang pag-set up" @@ -101,6 +100,7 @@ "Folder: %1$s, %2$d o higit pang item" "Mga Wallpaper" "Wallpaper & istilo" + "I-edit ang Home Screen" "Mga setting ng Home" "Na-disable ng iyong admin" "Payagan ang pag-rotate ng home screen" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 4b2f6dac1b..ed0e6cfa50 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -81,7 +81,6 @@ "Uygulamaya ana ekrandaki ayarları ve kısayolları okuma izni verir." "ana ekran ayarlarını ve kısayollarını yaz" "Uygulamaya ana ekrandaki ayarları ve kısayolları değiştirme izni verir." - "%1$s uygulamasının telefon etmesine izin verilmiyor" "Widget yüklenemiyor" "Widget ayarları" "Kurulumu tamamlamak için dokunun" @@ -101,6 +100,8 @@ "Klasör: %1$s, %2$d veya daha fazla öğe" "Duvar Kağıtları" "Duvar kağıdı ve stil" + + "Ana ekran ayarları" "Yöneticiniz tarafından devre dışı bırakıldı" "Ana ekranı döndürmeye izin ver" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index c8d29f4666..8c9524aae9 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -81,7 +81,6 @@ "Дозволяє додатку читати налаштування та ярлики на головному екрані." "записувати налаштування та ярлики головного екрана" "Дозволяє додатку змінювати налаштування та ярлики на головному екрані." - "Додаток %1$s не має дозволу телефонувати" "Не вдається завантажити віджет" "Налаштування віджета" "Торкніться, щоб завершити налаштування" @@ -101,6 +100,8 @@ "Папка \"%1$s\", елементів: %2$d або більше" "Фонові малюнки" "Оформлення і стиль" + + "Налаштування головного екрана" "Вимкнув адміністратор" "Дозволити обертання головного екрана" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 7016491db1..5b10dd21ee 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -81,7 +81,6 @@ "اس سے ایپ کو ہوم اسکرین میں ترتیبات اور شارٹ کٹس کو پڑھنے کی اجازت ملتی ہے۔" "ہوم ترتیبات اور شارٹ کٹس کو لکھیں" "اس سے ایپ کو ہوم اسکرین میں ترتیبات اور شارٹ کٹس کو تبدیل کرنے کی اجازت ملتی ہے۔" - "%1$s کو فون کالیں کرنے کی اجازت نہیں ہے" "ویجیٹ لوڈ نہیں کیا جا سکتا" "ویجیٹ کی ترتیبات" "سیٹ اپ مکمل کرنے کیلئے تھپتھپائیں" @@ -101,6 +100,7 @@ "فولڈر: %1$s، %2$d یا مزید آئٹمز" "وال پیپرز" "وال پیپر اور طرز" + "ہوم اسکرین میں ترمیم کریں" "ہوم ترتیبات" "آپ کے منتظم کی طرف سے غیر فعال کر دیا گیا" "ہوم اسکرین گھمانے کی اجازت دیں" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index efee72365f..81ad4dce90 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -81,7 +81,6 @@ "Ilovaga bosh ekrandagi yorliqlar va sozlamalarni oʻqish uchun ruxsat beradi." "Bosh ekrandagi sozlamalar va yorliqlarni oʻzgartirish" "Ilova bosh ekrandagi yorliqlar va sozlamalarni oʻzgartirishi mumkin." - "%1$s ilovasiga qo‘ng‘iroqlarni amalga oshirishga ruxsat berilmagan" "Vidjet yuklanmadi" "Vidjet sozlamalari" "Sozlashni yakunlash uchun bosing" @@ -101,6 +100,7 @@ "Jild: %1$s, %2$d va undan ortiq fayllar" "Fon rasmlari" "Fon rasmi va uslubi" + "Bosh ekranni tahrirlash" "Bosh ekran sozlamalari" "Administrator tomonidan o‘chirilgan" "Bosh ekranni burishga ruxsat" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 14b88226f7..ba7b0ce2cf 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -81,7 +81,6 @@ "Cho phép ứng dụng đọc các chế độ cài đặt và lối tắt trên màn hình chính." "ghi lối tắt và các chế độ cài đặt trên màn hình chính" "Cho phép ứng dụng thay đổi các chế độ cài đặt và lối tắt trên màn hình chính." - "%1$s không được phép thực hiện cuộc gọi điện thoại" "Không thể tải tiện ích" "Cài đặt tiện ích" "Nhấn để hoàn tất thiết lập" @@ -101,6 +100,8 @@ "Thư mục: %1$s, %2$d mục trở lên" "Hình nền" "Hình nền và phong cách" + + "Cài đặt màn hình chính" "Bị tắt bởi quản trị viên của bạn" "Cho phép xoay màn hình chính" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index b30b6ee68c..415f5fa93d 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -81,7 +81,6 @@ "允许此应用读取主屏幕中的设置和快捷方式。" "写入主屏幕设置和快捷方式" "允许此应用更改主屏幕中的设置和快捷方式。" - "不允许使用“%1$s”拨打电话" "无法加载微件" "微件设置" "点按即可完成设置" @@ -101,6 +100,7 @@ "文件夹:%1$s%2$d 个或更多项目" "壁纸" "壁纸和样式" + "修改主屏幕" "主屏幕设置" "已被您的管理员停用" "允许旋转主屏幕" @@ -159,13 +159,13 @@ "个人" "工作" "工作资料" - "工作应用带有标志,您的 IT 管理员可以看到此类应用" + "工作应用都有相应的标志,且您的 IT 管理员可以看到它们" "知道了" "工作应用已暂停" "您将不会收到来自工作应用的通知" "工作应用无法向您发送通知、不能耗用电池电量,也无法获取您的位置信息" "您将不会收到来自工作应用的来电、短信或通知" - "工作应用带有标志,您的 IT 管理员可以看到工作应用" + "工作应用都有相应的标志,且您的 IT 管理员可以看到它们" "知道了" "暂停工作应用" "取消暂停" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 4313e96cb3..14291697d2 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -81,7 +81,6 @@ "允許應用程式讀取主畫面中的設定和捷徑。" "寫入主畫面設定和捷徑" "允許應用程式變更主畫面中的設定和捷徑。" - "不允許 %1$s 撥打電話" "無法載入小工具" "小工具設定" "輕按即可完成設定" @@ -101,6 +100,7 @@ "資料夾:%1$s%2$d 個或以上的項目" "桌布" "桌布和樣式" + "編輯主畫面" "主畫面設定" "已由您的管理員停用" "允許旋轉主畫面" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index 330d65f159..7f949e8e41 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -81,7 +81,6 @@ "允許應用程式讀取主畫面中的設定和捷徑。" "寫入主畫面設定和捷徑" "允許應用程式變更主畫面中的設定和捷徑。" - "%1$s 無法撥打電話" "無法載入小工具" "小工具設定" "輕觸即可完成設定" @@ -101,6 +100,7 @@ "資料夾:%1$s%2$d 個以上的項目" "桌布" "桌布和樣式" + "編輯主畫面" "主畫面設定" "已由你的管理員停用" "允許旋轉主畫面" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index 39204f4ce1..6b457d116e 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -81,7 +81,6 @@ "Ivumela i-app ukuthi ifunde amasethingi nezinqamuleli ekhaya." "bhala amasethingi wasekhaya nezinqamuleli" "Ivumela ama-app ukushintsha amasethingi nezinqamuleli ekhaya." - "%1$s ayivunyelwe ukwenza amakholi wefoni" "Ayikwazi ukulayisha iwijethi" "Amasethingi ewijethi" "Thepha ukuze uqede ukusetha" @@ -101,6 +100,7 @@ "Ifolda: %1$s, %2$d noma izinto eziningi" "Izithombe zangemuva" "Isithombe sangemuva nesitayela" + "Hlela Isikrini Sasekhaya" "Amasethingi asekhaya" "Kukhutshazwe umlawuli wakho" "Vumela ukuzungezisa kwesikrini sasekhaya" From a6cebae2476139354648da0868a2f73efd397842 Mon Sep 17 00:00:00 2001 From: omarmt Date: Tue, 14 Feb 2023 17:33:53 +0000 Subject: [PATCH 35/81] resetPositionAnimated should be called when onBackCancelled ends Test: mp droid Bug: 265060720 Change-Id: I308a4f388b6619181c05c84ac6db47c900c586af --- .../android/quickstep/LauncherBackAnimationController.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java index 3979444499..9f416b6844 100644 --- a/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java +++ b/quickstep/src/com/android/quickstep/LauncherBackAnimationController.java @@ -141,8 +141,8 @@ public class LauncherBackAnimationController { @Override public void onBackCancelled() { handler.post(() -> { - resetPositionAnimated(); - mProgressAnimator.reset(); + mProgressAnimator.onBackCancelled( + LauncherBackAnimationController.this::resetPositionAnimated); }); } From 59d1214798549259d2a123ce174cd434b6d18435 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Mon, 17 Apr 2023 12:53:05 -0700 Subject: [PATCH 36/81] Remove ActivityInfo.CONFIG_SCREEN_SIZE if orientation is still the same. Avoid NPE to unblock development while we investigate root cause. Bug: 274394837 Test: see repo steps in bug comment #11 Change-Id: Ib18aa9da1d2827ae03037215ff9e34d27493995b Flag: ENABLE_TRANSIENT_TASKBAR true --- .../src/com/android/launcher3/taskbar/TaskbarManager.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java index 3d8bf9ea63..ca29afb1ad 100644 --- a/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java +++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarManager.java @@ -168,9 +168,14 @@ public class TaskbarManager { DeviceProfile oldDp = mTaskbarActivityContext.getDeviceProfile(); boolean isOrientationChange = (configDiff & ActivityInfo.CONFIG_ORIENTATION) != 0; + + int newOrientation = newConfig.windowConfiguration.getRotation(); + int oldOrientation = mOldConfig.windowConfiguration.getRotation(); int oldWidth = isOrientationChange ? oldDp.heightPx : oldDp.widthPx; int oldHeight = isOrientationChange ? oldDp.widthPx : oldDp.heightPx; - if (dp.widthPx == oldWidth && dp.heightPx == oldHeight) { + + if ((dp.widthPx == oldWidth && dp.heightPx == oldHeight) + || (newOrientation == oldOrientation)) { configDiffForRecreate &= ~ActivityInfo.CONFIG_SCREEN_SIZE; } } From 5e68914621809861ea93e321d184a6abed762014 Mon Sep 17 00:00:00 2001 From: Schneider Victor-tulias Date: Thu, 6 Apr 2023 14:04:48 -0700 Subject: [PATCH 37/81] Update the BorderAnimator Updated the BorderAnimator to allow it to animate the border outside the view's bounds. This makes it match the specs and makes it more compatible with other animations. Flag: ENABLE_KEYBOARD_QUICK_SWITCH Test: tried keyboard quick switching on a handheld, foldable and tablet Fixes: 276336349 Change-Id: I025f8b0f431e78bcb5c7b4b3859a7d6dde5da600 --- .../keyboard_quick_switch_taskview.xml | 44 ++++--- .../layout/keyboard_quick_switch_overview.xml | 56 ++++---- .../layout/keyboard_quick_switch_taskview.xml | 12 ++ .../res/layout/keyboard_quick_switch_view.xml | 5 +- .../taskbar/KeyboardQuickSwitchTaskView.java | 18 ++- .../quickstep/util/BorderAnimator.java | 122 +++++++++++++++++- 6 files changed, 209 insertions(+), 48 deletions(-) diff --git a/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml b/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml index ebcbdcd2f2..04e87be412 100644 --- a/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml +++ b/quickstep/res/layout-land/keyboard_quick_switch_taskview.xml @@ -25,28 +25,40 @@ android:clipToOutline="true" launcher:borderColor="?androidprv:attr/materialColorOutline"> - + app:layout_constraintEnd_toEndOf="parent"> - + app:layout_constraintTop_toTopOf="parent" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintEnd_toStartOf="@id/thumbnail2"/> + + + + diff --git a/quickstep/res/layout/keyboard_quick_switch_overview.xml b/quickstep/res/layout/keyboard_quick_switch_overview.xml index 8c97c685fe..062a9c9fa1 100644 --- a/quickstep/res/layout/keyboard_quick_switch_overview.xml +++ b/quickstep/res/layout/keyboard_quick_switch_overview.xml @@ -20,35 +20,47 @@ xmlns:launcher="http://schemas.android.com/apk/res-auto" android:layout_width="@dimen/keyboard_quick_switch_taskview_width" android:layout_height="@dimen/keyboard_quick_switch_taskview_height" - android:background="@drawable/keyboard_quick_switch_overview_button_background" android:clipToOutline="true" android:importantForAccessibility="yes" launcher:borderColor="?androidprv:attr/materialColorOutline"> - - - + app:layout_constraintEnd_toEndOf="parent"> + + + + + + diff --git a/quickstep/res/layout/keyboard_quick_switch_taskview.xml b/quickstep/res/layout/keyboard_quick_switch_taskview.xml index 5e2d52a753..691df6e8f6 100644 --- a/quickstep/res/layout/keyboard_quick_switch_taskview.xml +++ b/quickstep/res/layout/keyboard_quick_switch_taskview.xml @@ -25,6 +25,16 @@ android:clipToOutline="true" launcher:borderColor="?androidprv:attr/materialColorOutline"> + + + + diff --git a/quickstep/res/layout/keyboard_quick_switch_view.xml b/quickstep/res/layout/keyboard_quick_switch_view.xml index 64d3f67eda..58c0c40980 100644 --- a/quickstep/res/layout/keyboard_quick_switch_view.xml +++ b/quickstep/res/layout/keyboard_quick_switch_view.xml @@ -18,7 +18,6 @@ xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" - android:paddingVertical="@dimen/keyboard_quick_switch_view_spacing" android:layout_marginTop="@dimen/keyboard_quick_switch_margin_top" android:layout_marginHorizontal="@dimen/keyboard_quick_switch_margin_ends" android:background="@drawable/keyboard_quick_switch_view_background" @@ -44,7 +43,9 @@ + android:layout_height="wrap_content" + android:paddingVertical="@dimen/keyboard_quick_switch_view_spacing" + android:clipToPadding="false"/> diff --git a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchTaskView.java b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchTaskView.java index 84129fdde4..926ede1edd 100644 --- a/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchTaskView.java +++ b/quickstep/src/com/android/launcher3/taskbar/KeyboardQuickSwitchTaskView.java @@ -23,6 +23,7 @@ import android.content.res.Resources; import android.graphics.Bitmap; import android.graphics.Canvas; import android.util.AttributeSet; +import android.view.View; import android.widget.ImageView; import androidx.annotation.NonNull; @@ -45,6 +46,7 @@ public class KeyboardQuickSwitchTaskView extends ConstraintLayout { @Nullable private ImageView mThumbnailView1; @Nullable private ImageView mThumbnailView2; + @Nullable private View mContent; public KeyboardQuickSwitchTaskView(@NonNull Context context) { this(context, null); @@ -84,7 +86,20 @@ public class KeyboardQuickSwitchTaskView extends ConstraintLayout { .getColor( R.styleable.TaskView_borderColor, DEFAULT_BORDER_COLOR), - /* invalidateViewCallback= */ KeyboardQuickSwitchTaskView.this::invalidate); + /* invalidateViewCallback= */ KeyboardQuickSwitchTaskView.this::invalidate, + /* viewScaleTargetProvider= */ new BorderAnimator.ViewScaleTargetProvider() { + @NonNull + @Override + public View getContainerView() { + return KeyboardQuickSwitchTaskView.this; + } + + @NonNull + @Override + public View getContentView() { + return mContent; + } + }); } @Override @@ -93,6 +108,7 @@ public class KeyboardQuickSwitchTaskView extends ConstraintLayout { mThumbnailView1 = findViewById(R.id.thumbnail1); mThumbnailView2 = findViewById(R.id.thumbnail2); + mContent = findViewById(R.id.content); } @NonNull diff --git a/quickstep/src/com/android/quickstep/util/BorderAnimator.java b/quickstep/src/com/android/quickstep/util/BorderAnimator.java index c30661c42c..c43fb27f05 100644 --- a/quickstep/src/com/android/quickstep/util/BorderAnimator.java +++ b/quickstep/src/com/android/quickstep/util/BorderAnimator.java @@ -16,11 +16,13 @@ package com.android.quickstep.util; import android.animation.Animator; +import android.animation.AnimatorListenerAdapter; import android.annotation.ColorInt; import android.annotation.Nullable; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; +import android.view.View; import android.view.animation.Interpolator; import androidx.annotation.NonNull; @@ -34,7 +36,9 @@ import com.android.launcher3.anim.Interpolators; * Utility class for drawing a rounded-rect border around a view. *

* To use this class: - * 1. Create an instance in the target view. + * 1. Create an instance in the target view. NOTE: The border will animate outwards from the + * provided border bounds. If the border will not be visible outside of those bounds, then a + * {@link ViewScaleTargetProvider} must be provided in the constructor. * 2. Override the target view's {@link android.view.View#draw(Canvas)} method and call * {@link BorderAnimator#drawBorder(Canvas)} after {@code super.draw(canvas)}. * 3. Call {@link BorderAnimator#buildAnimator(boolean)} and start the animation or call @@ -55,6 +59,7 @@ public final class BorderAnimator { @Px private final int mBorderWidthPx; @Px private final int mBorderRadiusPx; @NonNull private final Runnable mInvalidateViewCallback; + @Nullable private final ViewScaleTargetProvider mViewScaleTargetProvider; private final long mAppearanceDurationMs; private final long mDisappearanceDurationMs; @NonNull private final Interpolator mInterpolator; @@ -75,6 +80,22 @@ public final class BorderAnimator { borderRadiusPx, borderColor, invalidateViewCallback, + /* viewScaleTargetProvider= */ null); + } + + public BorderAnimator( + @NonNull BorderBoundsBuilder borderBoundsBuilder, + int borderWidthPx, + int borderRadiusPx, + @ColorInt int borderColor, + @NonNull Runnable invalidateViewCallback, + @Nullable ViewScaleTargetProvider viewScaleTargetProvider) { + this(borderBoundsBuilder, + borderWidthPx, + borderRadiusPx, + borderColor, + invalidateViewCallback, + viewScaleTargetProvider, DEFAULT_APPEARANCE_ANIMATION_DURATION_MS, DEFAULT_DISAPPEARANCE_ANIMATION_DURATION_MS, DEFAULT_INTERPOLATOR); @@ -86,6 +107,7 @@ public final class BorderAnimator { int borderRadiusPx, @ColorInt int borderColor, @NonNull Runnable invalidateViewCallback, + @Nullable ViewScaleTargetProvider viewScaleTargetProvider, long appearanceDurationMs, long disappearanceDurationMs, @NonNull Interpolator interpolator) { @@ -93,6 +115,7 @@ public final class BorderAnimator { mBorderWidthPx = borderWidthPx; mBorderRadiusPx = borderRadiusPx; mInvalidateViewCallback = invalidateViewCallback; + mViewScaleTargetProvider = viewScaleTargetProvider; mAppearanceDurationMs = appearanceDurationMs; mDisappearanceDurationMs = disappearanceDurationMs; mInterpolator = interpolator; @@ -106,8 +129,10 @@ public final class BorderAnimator { float interpolatedProgress = mInterpolator.getInterpolation( mBorderAnimationProgress.value); float borderWidth = mBorderWidthPx * interpolatedProgress; - // Inset the border by half the width to create an inwards-growth animation - mAlignmentAdjustment = borderWidth / 2f; + // Outset the border by half the width to create an outwards-growth animation + mAlignmentAdjustment = (-borderWidth / 2f) + // Inset the border if we are scaling the container up + + (mViewScaleTargetProvider == null ? 0 : mBorderWidthPx); mBorderPaint.setAlpha(Math.round(255 * interpolatedProgress)); mBorderPaint.setStrokeWidth(borderWidth); @@ -121,13 +146,16 @@ public final class BorderAnimator { * calling super. */ public void drawBorder(Canvas canvas) { + // Increase the radius if we are scaling the container up + float radiusAdjustment = mViewScaleTargetProvider == null + ? -mAlignmentAdjustment : mAlignmentAdjustment; canvas.drawRoundRect( /* left= */ mBorderBounds.left + mAlignmentAdjustment, /* top= */ mBorderBounds.top + mAlignmentAdjustment, /* right= */ mBorderBounds.right - mAlignmentAdjustment, /* bottom= */ mBorderBounds.bottom - mAlignmentAdjustment, - /* rx= */ mBorderRadiusPx - mAlignmentAdjustment, - /* ry= */ mBorderRadiusPx - mAlignmentAdjustment, + /* rx= */ mBorderRadiusPx + radiusAdjustment, + /* ry= */ mBorderRadiusPx + radiusAdjustment, /* paint= */ mBorderPaint); } @@ -141,22 +169,81 @@ public final class BorderAnimator { mRunningBorderAnimation.setDuration( isAppearing ? mAppearanceDurationMs : mDisappearanceDurationMs); + mRunningBorderAnimation.addListener(new AnimatorListenerAdapter() { + @Override + public void onAnimationStart(Animator animation) { + setViewScales(); + } + }); mRunningBorderAnimation.addListener( - AnimatorListeners.forEndCallback(() -> mRunningBorderAnimation = null)); + AnimatorListeners.forEndCallback(() -> { + mRunningBorderAnimation = null; + if (isAppearing) { + return; + } + resetViewScales(); + })); return mRunningBorderAnimation; } /** * Immediately shows/hides the border without an animation. - * + *

* To animate the appearance/disappearance, see {@link BorderAnimator#buildAnimator(boolean)} */ public void setBorderVisible(boolean visible) { if (mRunningBorderAnimation != null) { mRunningBorderAnimation.end(); } + mBorderBoundsBuilder.updateBorderBounds(mBorderBounds); + if (visible) { + setViewScales(); + } mBorderAnimationProgress.updateValue(visible ? 1f : 0f); + if (!visible) { + resetViewScales(); + } + } + + private void setViewScales() { + if (mViewScaleTargetProvider == null) { + return; + } + View container = mViewScaleTargetProvider.getContainerView(); + float width = container.getWidth(); + float height = container.getHeight(); + // scale up just enough to make room for the border + float scaleX = 1f + ((2 * mBorderWidthPx) / width); + float scaleY = 1f + ((2 * mBorderWidthPx) / height); + + container.setPivotX(width / 2); + container.setPivotY(height / 2); + container.setScaleX(scaleX); + container.setScaleY(scaleY); + + View contentView = mViewScaleTargetProvider.getContentView(); + contentView.setPivotX(contentView.getWidth() / 2f); + contentView.setPivotY(contentView.getHeight() / 2f); + contentView.setScaleX(1f / scaleX); + contentView.setScaleY(1f / scaleY); + } + + private void resetViewScales() { + if (mViewScaleTargetProvider == null) { + return; + } + View container = mViewScaleTargetProvider.getContainerView(); + container.setPivotX(container.getWidth()); + container.setPivotY(container.getHeight()); + container.setScaleX(1f); + container.setScaleY(1f); + + View contentView = mViewScaleTargetProvider.getContentView(); + contentView.setPivotX(contentView.getWidth() / 2f); + contentView.setPivotY(contentView.getHeight() / 2f); + contentView.setScaleX(1f); + contentView.setScaleY(1f); } /** @@ -169,4 +256,25 @@ public final class BorderAnimator { */ void updateBorderBounds(Rect rect); } + + /** + * Provider for scaling target views for the beginning and end of this animation. + */ + public interface ViewScaleTargetProvider { + + /** + * Returns the content view's container. This view will be scaled up to make room for the + * border. + */ + @NonNull + View getContainerView(); + + /** + * Returns the content view. This view will be scaled down reciprocally to the container's + * up-scaling to maintain its original size. This should be the view containing all of the + * content being surrounded by the border. + */ + @NonNull + View getContentView(); + } } From c42520965f3a9f4fa68812eb77cd28c253bcfd8a Mon Sep 17 00:00:00 2001 From: Sebastian Franco Date: Tue, 18 Apr 2023 13:41:16 -0700 Subject: [PATCH 38/81] Make functions private to keep TAPL design consistent Bug: 266116487 Test: compiles Change-Id: I22b612e4bc1a7424af3702474b709426fcfcb6ef --- tests/tapl/com/android/launcher3/tapl/Workspace.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/tapl/com/android/launcher3/tapl/Workspace.java b/tests/tapl/com/android/launcher3/tapl/Workspace.java index 1939dc6a52..7bb02cb518 100644 --- a/tests/tapl/com/android/launcher3/tapl/Workspace.java +++ b/tests/tapl/com/android/launcher3/tapl/Workspace.java @@ -433,7 +433,7 @@ public final class Workspace extends Home { } /** Returns the index of the current page */ - static int geCurrentPage(LauncherInstrumentation launcher) { + private static int geCurrentPage(LauncherInstrumentation launcher) { return launcher.getTestInfo(TestProtocol.REQUEST_WORKSPACE_CURRENT_PAGE_INDEX).getInt( TestProtocol.TEST_INFO_RESPONSE_FIELD); } @@ -602,8 +602,8 @@ public final class Workspace extends Home { * @param y * @return the finishing position of the drag. */ - static Point dragToGivenWorkspace(LauncherInstrumentation launcher, Point currentPosition, - int destinationWorkspaceIndex, int y) { + private static Point dragToGivenWorkspace(LauncherInstrumentation launcher, + Point currentPosition, int destinationWorkspaceIndex, int y) { final long downTime = SystemClock.uptimeMillis(); int displayX = launcher.getRealDisplaySize().x; int currentPage = Workspace.geCurrentPage(launcher); From f89438718f1d4dd1cac6e0f3cf1bbedb05f7abc5 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Mon, 17 Apr 2023 15:19:41 -0700 Subject: [PATCH 39/81] Add logs for work tab missing * Start tracing where launcher goes after it gets the broadcast for new work profile user unlocked Bug: 243688989 Flag: None Change-Id: I53ccab743ac5dd2aee6b7ff6e440bcf731387119 --- .../android/launcher3/model/BaseModelUpdateTask.java | 7 +++++++ .../launcher3/model/UserLockStateChangedTask.java | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/com/android/launcher3/model/BaseModelUpdateTask.java b/src/com/android/launcher3/model/BaseModelUpdateTask.java index 01e58f2cb0..bf839bf1ac 100644 --- a/src/com/android/launcher3/model/BaseModelUpdateTask.java +++ b/src/com/android/launcher3/model/BaseModelUpdateTask.java @@ -15,6 +15,8 @@ */ package com.android.launcher3.model; +import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING; + import android.util.Log; import androidx.annotation.NonNull; @@ -30,6 +32,7 @@ import com.android.launcher3.model.BgDataModel.FixedContainerItems; import com.android.launcher3.model.data.AppInfo; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; +import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.widget.model.WidgetsListBaseEntry; @@ -106,6 +109,10 @@ public abstract class BaseModelUpdateTask implements ModelUpdateTask { List workspaceUpdates = allUpdates.stream() .filter(info -> info.id != ItemInfo.NO_ID) .collect(Collectors.toList()); + if (TestProtocol.sDebugTracing) { + Log.d(WORK_TAB_MISSING, "allUpdates: " + allUpdates.size() + ", workspaceUpdates " + + workspaceUpdates.size()); + } if (!workspaceUpdates.isEmpty()) { scheduleCallbackTask(c -> c.bindWorkspaceItemsChanged(workspaceUpdates)); } diff --git a/src/com/android/launcher3/model/UserLockStateChangedTask.java b/src/com/android/launcher3/model/UserLockStateChangedTask.java index 63ca35b79c..cb78138459 100644 --- a/src/com/android/launcher3/model/UserLockStateChangedTask.java +++ b/src/com/android/launcher3/model/UserLockStateChangedTask.java @@ -16,10 +16,12 @@ package com.android.launcher3.model; import static com.android.launcher3.model.data.ItemInfoWithIcon.FLAG_DISABLED_LOCKED_USER; +import static com.android.launcher3.testing.shared.TestProtocol.WORK_TAB_MISSING; import android.content.Context; import android.content.pm.ShortcutInfo; import android.os.UserHandle; +import android.util.Log; import androidx.annotation.NonNull; @@ -29,6 +31,7 @@ import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.shortcuts.ShortcutKey; import com.android.launcher3.shortcuts.ShortcutRequest; import com.android.launcher3.shortcuts.ShortcutRequest.QueryResult; +import com.android.launcher3.testing.shared.TestProtocol; import com.android.launcher3.util.ComponentKey; import com.android.launcher3.util.ItemInfoMatcher; @@ -60,6 +63,10 @@ public class UserLockStateChangedTask extends BaseModelUpdateTask { if (mIsUserUnlocked) { QueryResult shortcuts = new ShortcutRequest(context, mUser) .query(ShortcutRequest.PINNED); + if (TestProtocol.sDebugTracing) { + Log.d(WORK_TAB_MISSING, "shortcutQuery success? " + + shortcuts.wasSuccess()); + } if (shortcuts.wasSuccess()) { for (ShortcutInfo shortcut : shortcuts) { pinnedShortcuts.put(ShortcutKey.fromInfo(shortcut), shortcut); @@ -82,6 +89,9 @@ public class UserLockStateChangedTask extends BaseModelUpdateTask { if (mIsUserUnlocked) { ShortcutKey key = ShortcutKey.fromItemInfo(si); ShortcutInfo shortcut = pinnedShortcuts.get(key); + if (TestProtocol.sDebugTracing) { + Log.d(WORK_TAB_MISSING, "shortcutInfo: " + shortcut); + } // We couldn't verify the shortcut during loader. If its no longer available // (probably due to clear data), delete the workspace item as well if (shortcut == null) { From 328ca3811cc4ac93baa7f4670c1221658415b4a8 Mon Sep 17 00:00:00 2001 From: fbaron Date: Thu, 13 Apr 2023 20:17:15 -0700 Subject: [PATCH 40/81] Update colors for widget picker Bug: 278157622 Test: Look at widget picker on tablet and verify that the colors match the new spec, and verify the portrait mode looks good also. Change-Id: I634d876dfafc086806b233c500f7d8daddfe7b0b --- ...get_picker_primary_surface_color_dark.xml} | 7 ++- ...t_picker_secondary_surface_color_dark.xml} | 7 ++- ..._picker_tab_background_unselected_dark.xml | 20 +++++++ ...et_picker_primary_surface_color_light.xml} | 6 +- ..._picker_secondary_surface_color_light.xml} | 6 +- res/color/widget_picker_tab_text.xml | 19 +++++++ res/color/widgets_picker_scrim.xml | 2 +- res/drawable/bg_widgets_content.xml | 8 +-- res/drawable/bg_widgets_full_sheet.xml | 2 +- res/drawable/bg_widgets_header_states.xml | 12 ++-- ... => bg_widgets_header_states_two_pane.xml} | 2 +- res/drawable/bg_widgets_header_two_pane.xml | 4 +- res/drawable/bg_widgets_searchbox.xml | 2 +- res/drawable/ic_allapps_search.xml | 2 +- .../widget_picker_collapse_handle.xml | 21 +++++++ .../widget_picker_tabs_background.xml | 48 ++++++++++++++++ res/drawable/widget_suggestions.xml | 2 +- res/drawable/widget_suggestions_icon.xml | 2 +- res/drawable/widgets_surface_background.xml | 2 +- res/layout/widgets_full_sheet.xml | 2 +- res/layout/widgets_full_sheet_paged_view.xml | 14 ++--- .../widgets_full_sheet_recyclerview.xml | 4 +- res/layout/widgets_search_bar.xml | 2 +- res/layout/widgets_two_pane_sheet.xml | 4 +- .../widgets_two_pane_sheet_paged_view.xml | 14 ++--- .../widgets_two_pane_sheet_recyclerview.xml | 4 +- res/values-night-v31/colors.xml | 23 ++++++++ res/values-v31/colors.xml | 25 +++++++- res/values/attrs.xml | 12 ++++ res/values/colors.xml | 30 ++++++++++ res/values/styles.xml | 57 +++++++++++++++++-- 31 files changed, 308 insertions(+), 57 deletions(-) rename res/{color/app_subtitle_text_dark.xml => color-night-v31/widget_picker_primary_surface_color_dark.xml} (84%) rename res/{color/app_title_text_dark.xml => color-night-v31/widget_picker_secondary_surface_color_dark.xml} (84%) create mode 100644 res/color-night-v31/widget_picker_tab_background_unselected_dark.xml rename res/{color/app_subtitle_text_light.xml => color-v31/widget_picker_primary_surface_color_light.xml} (87%) rename res/{color/app_title_text_light.xml => color-v31/widget_picker_secondary_surface_color_light.xml} (87%) create mode 100644 res/color/widget_picker_tab_text.xml rename res/drawable/{bg_widgets_header_states_large_screen.xml => bg_widgets_header_states_two_pane.xml} (93%) create mode 100644 res/drawable/widget_picker_collapse_handle.xml create mode 100644 res/drawable/widget_picker_tabs_background.xml diff --git a/res/color/app_subtitle_text_dark.xml b/res/color-night-v31/widget_picker_primary_surface_color_dark.xml similarity index 84% rename from res/color/app_subtitle_text_dark.xml rename to res/color-night-v31/widget_picker_primary_surface_color_dark.xml index 220d10fc8f..13ceaa09e7 100644 --- a/res/color/app_subtitle_text_dark.xml +++ b/res/color-night-v31/widget_picker_primary_surface_color_dark.xml @@ -13,7 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - + + diff --git a/res/color/app_title_text_dark.xml b/res/color-night-v31/widget_picker_secondary_surface_color_dark.xml similarity index 84% rename from res/color/app_title_text_dark.xml rename to res/color-night-v31/widget_picker_secondary_surface_color_dark.xml index 220d10fc8f..89e9f81b99 100644 --- a/res/color/app_title_text_dark.xml +++ b/res/color-night-v31/widget_picker_secondary_surface_color_dark.xml @@ -13,7 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - - - + + diff --git a/res/color-night-v31/widget_picker_tab_background_unselected_dark.xml b/res/color-night-v31/widget_picker_tab_background_unselected_dark.xml new file mode 100644 index 0000000000..ddd7b0a683 --- /dev/null +++ b/res/color-night-v31/widget_picker_tab_background_unselected_dark.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/res/color/app_subtitle_text_light.xml b/res/color-v31/widget_picker_primary_surface_color_light.xml similarity index 87% rename from res/color/app_subtitle_text_light.xml rename to res/color-v31/widget_picker_primary_surface_color_light.xml index fb00baac6c..02dffdddf7 100644 --- a/res/color/app_subtitle_text_light.xml +++ b/res/color-v31/widget_picker_primary_surface_color_light.xml @@ -13,6 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - - + + diff --git a/res/color/app_title_text_light.xml b/res/color-v31/widget_picker_secondary_surface_color_light.xml similarity index 87% rename from res/color/app_title_text_light.xml rename to res/color-v31/widget_picker_secondary_surface_color_light.xml index bb5297319d..cd052681e9 100644 --- a/res/color/app_title_text_light.xml +++ b/res/color-v31/widget_picker_secondary_surface_color_light.xml @@ -13,6 +13,8 @@ See the License for the specific language governing permissions and limitations under the License. --> - - + + diff --git a/res/color/widget_picker_tab_text.xml b/res/color/widget_picker_tab_text.xml new file mode 100644 index 0000000000..0e0fc38316 --- /dev/null +++ b/res/color/widget_picker_tab_text.xml @@ -0,0 +1,19 @@ + + + + + + \ No newline at end of file diff --git a/res/color/widgets_picker_scrim.xml b/res/color/widgets_picker_scrim.xml index 5d5130086a..1cf97f61f7 100644 --- a/res/color/widgets_picker_scrim.xml +++ b/res/color/widgets_picker_scrim.xml @@ -18,5 +18,5 @@ */ --> - + diff --git a/res/drawable/bg_widgets_content.xml b/res/drawable/bg_widgets_content.xml index b0b699ba22..1528a9787a 100644 --- a/res/drawable/bg_widgets_content.xml +++ b/res/drawable/bg_widgets_content.xml @@ -24,7 +24,7 @@ - + @@ -32,7 +32,7 @@ - + @@ -42,7 +42,7 @@ - + @@ -52,7 +52,7 @@ - + diff --git a/res/drawable/bg_widgets_full_sheet.xml b/res/drawable/bg_widgets_full_sheet.xml index dfcd354ce7..66a1d40507 100644 --- a/res/drawable/bg_widgets_full_sheet.xml +++ b/res/drawable/bg_widgets_full_sheet.xml @@ -16,7 +16,7 @@ - + diff --git a/res/drawable/bg_widgets_header_states.xml b/res/drawable/bg_widgets_header_states.xml index f45a7ababf..d03778d0c6 100644 --- a/res/drawable/bg_widgets_header_states.xml +++ b/res/drawable/bg_widgets_header_states.xml @@ -24,7 +24,7 @@ - + - + - + - + - + - + - + diff --git a/res/drawable/bg_widgets_header_two_pane.xml b/res/drawable/bg_widgets_header_two_pane.xml index e1408cc235..ca3feef1f0 100644 --- a/res/drawable/bg_widgets_header_two_pane.xml +++ b/res/drawable/bg_widgets_header_two_pane.xml @@ -20,7 +20,7 @@ android:paddingTop="@dimen/widget_list_header_view_vertical_padding" android:paddingBottom="@dimen/widget_list_header_view_vertical_padding" > - + android:drawable="@drawable/bg_widgets_header_states_two_pane" /> + diff --git a/res/drawable/bg_widgets_searchbox.xml b/res/drawable/bg_widgets_searchbox.xml index dc6d868bd7..b09f0cd1b6 100644 --- a/res/drawable/bg_widgets_searchbox.xml +++ b/res/drawable/bg_widgets_searchbox.xml @@ -14,6 +14,6 @@ limitations under the License. --> - + \ No newline at end of file diff --git a/res/drawable/ic_allapps_search.xml b/res/drawable/ic_allapps_search.xml index dbed824358..0c3ab78575 100644 --- a/res/drawable/ic_allapps_search.xml +++ b/res/drawable/ic_allapps_search.xml @@ -20,6 +20,6 @@ android:viewportWidth="24.0" android:autoMirrored="true"> diff --git a/res/drawable/widget_picker_collapse_handle.xml b/res/drawable/widget_picker_collapse_handle.xml new file mode 100644 index 0000000000..f79663d00e --- /dev/null +++ b/res/drawable/widget_picker_collapse_handle.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/res/drawable/widget_picker_tabs_background.xml b/res/drawable/widget_picker_tabs_background.xml new file mode 100644 index 0000000000..a874dd8b90 --- /dev/null +++ b/res/drawable/widget_picker_tabs_background.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/res/drawable/widget_suggestions.xml b/res/drawable/widget_suggestions.xml index b090a68a43..61e42434ba 100644 --- a/res/drawable/widget_suggestions.xml +++ b/res/drawable/widget_suggestions.xml @@ -18,7 +18,7 @@ Copyright (C) 2023 The Android Open Source Project android:height="24dp" android:viewportWidth="24" android:viewportHeight="24" - android:tint="@color/widget_picker_background_selected" + android:tint="?attr/widgetPickerSuggestionsIconColor" android:gravity="center" > - + - + \ No newline at end of file diff --git a/res/layout/widgets_full_sheet.xml b/res/layout/widgets_full_sheet.xml index e31bf7affe..9ec346a261 100644 --- a/res/layout/widgets_full_sheet.xml +++ b/res/layout/widgets_full_sheet.xml @@ -34,7 +34,7 @@ android:layout_height="@dimen/bottom_sheet_handle_height" android:layout_marginTop="@dimen/bottom_sheet_handle_margin" android:layout_centerHorizontal="true" - android:background="@drawable/bg_rounded_corner_bottom_sheet_handle"/> + android:background="@drawable/widget_picker_collapse_handle"/> @@ -89,7 +89,7 @@ android:gravity="center_horizontal" android:orientation="horizontal" android:paddingVertical="8dp" - android:background="?android:attr/colorBackground" + android:background="?attr/widgetPickerPrimarySurfaceColor" style="@style/TextHeadline" launcher:layout_sticky="true"> @@ -100,9 +100,9 @@ android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding" android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding" android:layout_weight="1" - android:background="@drawable/all_apps_tabs_background" + android:background="@drawable/widget_picker_tabs_background" android:text="@string/widgets_full_sheet_personal_tab" - android:textColor="@color/all_apps_tab_text" + android:textColor="@color/widget_picker_tab_text" android:textSize="14sp" style="?android:attr/borderlessButtonStyle" /> @@ -113,9 +113,9 @@ android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding" android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding" android:layout_weight="1" - android:background="@drawable/all_apps_tabs_background" + android:background="@drawable/widget_picker_tabs_background" android:text="@string/widgets_full_sheet_work_tab" - android:textColor="@color/all_apps_tab_text" + android:textColor="@color/widget_picker_tab_text" android:textSize="14sp" style="?android:attr/borderlessButtonStyle" /> diff --git a/res/layout/widgets_full_sheet_recyclerview.xml b/res/layout/widgets_full_sheet_recyclerview.xml index 887f00cbd0..25bbad41fa 100644 --- a/res/layout/widgets_full_sheet_recyclerview.xml +++ b/res/layout/widgets_full_sheet_recyclerview.xml @@ -41,7 +41,7 @@ android:gravity="center_horizontal" android:textSize="24sp" android:layout_marginTop="24dp" - android:textColor="?android:attr/textColorSecondary" + android:textColor="?attr/widgetPickerTitleColor" android:text="@string/widget_button_text"/> diff --git a/res/layout/widgets_search_bar.xml b/res/layout/widgets_search_bar.xml index 6d44865ef0..a615c5e025 100644 --- a/res/layout/widgets_search_bar.xml +++ b/res/layout/widgets_search_bar.xml @@ -25,7 +25,7 @@ android:imeOptions="actionSearch" android:importantForAutofill="no" android:textColor="?android:attr/textColorPrimary" - android:textColorHint="?android:attr/textColorSecondary"/> + android:textColorHint="?attr/widgetPickerSearchTextColor"/> + android:background="@drawable/widget_picker_collapse_handle"/> @@ -87,7 +87,7 @@ android:orientation="horizontal" android:paddingVertical="8dp" android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin_two_pane" - android:background="?android:attr/colorBackground" + android:background="?attr/widgetPickerPrimarySurfaceColor" style="@style/TextHeadline" launcher:layout_sticky="true"> @@ -98,9 +98,9 @@ android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding" android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding" android:layout_weight="1" - android:background="@drawable/all_apps_tabs_background" + android:background="@drawable/widget_picker_tabs_background" android:text="@string/widgets_full_sheet_personal_tab" - android:textColor="@color/all_apps_tab_text" + android:textColor="@color/widget_picker_tab_text" android:textSize="14sp" style="?android:attr/borderlessButtonStyle" /> @@ -111,9 +111,9 @@ android:layout_marginEnd="@dimen/widget_tabs_button_horizontal_padding" android:layout_marginVertical="@dimen/widget_apps_tabs_vertical_padding" android:layout_weight="1" - android:background="@drawable/all_apps_tabs_background" + android:background="@drawable/widget_picker_tabs_background" android:text="@string/widgets_full_sheet_work_tab" - android:textColor="@color/all_apps_tab_text" + android:textColor="@color/widget_picker_tab_text" android:textSize="14sp" style="?android:attr/borderlessButtonStyle" /> diff --git a/res/layout/widgets_two_pane_sheet_recyclerview.xml b/res/layout/widgets_two_pane_sheet_recyclerview.xml index 8f2a25e409..f8d72e89d4 100644 --- a/res/layout/widgets_two_pane_sheet_recyclerview.xml +++ b/res/layout/widgets_two_pane_sheet_recyclerview.xml @@ -43,7 +43,7 @@ android:id="@+id/search_bar_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="?android:attr/colorBackground" + android:background="?attr/widgetPickerPrimarySurfaceColor" android:clipToPadding="false" android:elevation="0.1dp" android:paddingBottom="8dp" @@ -61,7 +61,7 @@ android:layout_marginHorizontal="@dimen/widget_list_horizontal_margin_two_pane" android:paddingBottom="16dp" android:orientation="horizontal" - android:background="?android:attr/colorBackground" + android:background="?attr/widgetPickerPrimarySurfaceColor" launcher:layout_sticky="true"> diff --git a/res/values-night-v31/colors.xml b/res/values-night-v31/colors.xml index f331361f71..4dd3849cf8 100644 --- a/res/values-night-v31/colors.xml +++ b/res/values-night-v31/colors.xml @@ -26,4 +26,27 @@ @android:color/system_neutral1_700 @android:color/system_neutral2_200 + + @android:color/system_neutral1_100 + + @android:color/system_neutral1_100 + + @android:color/system_neutral2_200 + + @android:color/system_accent2_700 + + @android:color/system_accent1_800 + + @android:color/system_accent1_200 + + @android:color/system_neutral2_200 + + @android:color/system_accent1_200 + + @android:color/system_accent1_800 + + @android:color/system_neutral2_200 + + @android:color/system_neutral2_700 + \ No newline at end of file diff --git a/res/values-v31/colors.xml b/res/values-v31/colors.xml index 054fe47125..985fe77f62 100644 --- a/res/values-v31/colors.xml +++ b/res/values-v31/colors.xml @@ -64,5 +64,28 @@ @android:color/system_neutral2_700 - @android:color/system_accent2_100 + + @android:color/system_neutral1_900 + + @android:color/system_neutral1_900 + + @android:color/system_neutral2_700 + + @android:color/system_accent2_100 + + @android:color/system_accent1_0 + + @android:color/system_accent1_600 + + @android:color/system_neutral2_700 + + @android:color/system_accent1_600 + + @android:color/system_neutral1_100 + + @android:color/system_accent1_0 + + @android:color/system_neutral2_700 + + @android:color/system_neutral2_200 diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 417ae6171e..ce8d90166b 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -54,8 +54,20 @@ + + + + + + + + + + + + diff --git a/res/values/colors.xml b/res/values/colors.xml index 87885576e3..58a447d3cb 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -88,4 +88,34 @@ #40484D ?android:attr/colorAccent + + #EFEDED + #FAF9F8 + #1F1F1F + #1F1F1F + #444746 + #C2E7FF + #FFFFFF + #0B57D0 + #444746 + #0B57D0 + #E3E3E3 + #FFFFFF + #444746 + #C4C7C5 + + #1F2020 + #393939 + #E3E3E3 + #E3E3E3 + #C4C7C5 + #004A77 + #FFFFFFFF + #062E6F + #C4C7C5 + #A8C7FA + #343535 + #2D312F + #C4C7C5 + #444746 diff --git a/res/values/styles.xml b/res/values/styles.xml index 5dc4f0afa1..98d09e737c 100644 --- a/res/values/styles.xml +++ b/res/values/styles.xml @@ -174,14 +174,63 @@ #E8EAED ?android:attr/textColorPrimary ?android:attr/textColorSecondary - @color/app_title_text_light - @color/app_subtitle_text_light + + @color/widget_picker_primary_surface_color_light + + @color/widget_picker_secondary_surface_color_light + @color/widget_picker_title_color_light + + @color/widget_picker_header_app_title_color_light + + @color/widget_picker_header_app_subtitle_color_light + + @color/widget_picker_header_background_color_light + + @color/widget_picker_suggestions_icon_background_color_light + + @color/widget_picker_suggestions_icon_color_light + @color/widget_picker_search_text_color_light + + @color/widget_picker_tab_background_selected_light + + @color/widget_picker_tab_background_unselected_light + + @color/widget_picker_selected_tab_text_color_light + + @color/widget_picker_unselected_tab_text_color_light + + @color/widget_picker_collapse_handle_color_light - - + +