From 3c2a17b6f649c5e98178e9206d7c5a7843b855e3 Mon Sep 17 00:00:00 2001 From: Samuel Fufa Date: Tue, 23 Jun 2020 12:53:37 -0700 Subject: [PATCH 01/56] Remove hotseat edu flag Launcher should not restrict user migration to a one time event if we want users to migrate their hotseat by enabling hotseat prediction from suggestion settings. Test: Manual Bug: 159731272 Change-Id: I0e42dd6b6cf6374928e5b399d121d17fe8024ae1 --- .../launcher3/hybridhotseat/HotseatEduController.java | 2 -- .../hybridhotseat/HotseatPredictionController.java | 10 +--------- 2 files changed, 1 insertion(+), 11 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java index a1218aeb86..4f95254a72 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatEduController.java @@ -47,7 +47,6 @@ import java.util.stream.IntStream; */ public class HotseatEduController { - public static final String KEY_HOTSEAT_EDU_SEEN = "hotseat_edu_seen"; public static final String HOTSEAT_EDU_ACTION = "com.android.launcher3.action.SHOW_HYBRID_HOTSEAT_EDU"; public static final String SETTINGS_ACTION = @@ -229,7 +228,6 @@ public class HotseatEduController { void finishOnboarding() { mOnOnboardingComplete.run(); - mLauncher.getSharedPrefs().edit().putBoolean(KEY_HOTSEAT_EDU_SEEN, true).apply(); } void showDimissTip() { diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java index 7334d80dd6..1dbb9e2d6b 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java @@ -154,14 +154,6 @@ public class HotseatPredictionController implements DragController.DragListener, } } - /** - * Returns whether or not user has seen hybrid hotseat education - */ - public boolean isEduSeen() { - return mLauncher.getSharedPrefs().getBoolean(HotseatEduController.KEY_HOTSEAT_EDU_SEEN, - false); - } - /** * Shows appropriate hotseat education based on prediction enabled and migration states. */ @@ -172,7 +164,7 @@ public class HotseatPredictionController implements DragController.DragListener, Snackbar.show(mLauncher, R.string.hotsaet_tip_prediction_disabled, R.string.hotseat_prediction_settings, null, () -> mLauncher.startActivity(getSettingsIntent())); - } else if (isEduSeen() || getPredictedIcons().size() >= (mHotSeatItemsCount + 1) / 2) { + } else if (getPredictedIcons().size() >= (mHotSeatItemsCount + 1) / 2) { showDiscoveryTip(); } else { HotseatEduController eduController = new HotseatEduController(mLauncher, From aa902e859b49517bd5d6412b42e5de0dd9d0a916 Mon Sep 17 00:00:00 2001 From: Ashwini Oruganti Date: Thu, 4 Jun 2020 17:47:09 -0700 Subject: [PATCH 02/56] Add an exported flag in manifest With b/150232615, we will need an explicit value set for the exported flag when intent filters are present, as the default behavior is changing for future versions. This change adds the value reflecting the previous default to the manifest. These changes were made using an automated tool, the xml file may be reformatted slightly creating a larger diff. The only "real" change is the addition of "android:exported" to activities, services, and receivers that have one or more intent-filters. Bug: 150232615 Bug: 158198882 Test: TH Exempt-From-Owner-Approval: mechanical refactoring Change-Id: I083a7bcab968c881f7cdff7152a249691ffac316 --- AndroidManifest-common.xml | 11 ++- AndroidManifest.xml | 1 + quickstep/AndroidManifest-launcher.xml | 1 + quickstep/AndroidManifest.xml | 126 ++++++++++++------------- tests/AndroidManifest-common.xml | 22 ++++- tests/dummy_app/AndroidManifest.xml | 1 + 6 files changed, 92 insertions(+), 70 deletions(-) diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml index ff5bf0d1e5..84dd06aa39 100644 --- a/AndroidManifest-common.xml +++ b/AndroidManifest-common.xml @@ -86,6 +86,7 @@ @@ -94,14 +95,16 @@ + android:name="com.android.launcher3.SessionCommitReceiver" + android:exported="true"> - + @@ -117,6 +120,7 @@ android:name="com.android.launcher3.notification.NotificationListener" android:label="@string/notification_dots_service_title" android:enabled="@bool/notification_dots_enabled" + android:exported="true" android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"> @@ -130,6 +134,7 @@ android:theme="@style/AppItemActivityTheme" android:excludeFromRecents="true" android:autoRemoveFromRecents="true" + android:exported="true" android:label="@string/action_add_to_workspace" > @@ -165,6 +170,7 @@ android:name="com.android.launcher3.settings.SettingsActivity" android:label="@string/settings_button_text" android:theme="@style/HomeSettingsTheme" + android:exported="true" android:autoRemoveFromRecents="true"> @@ -187,6 +193,7 @@ android:name="com.android.launcher3.secondarydisplay.SecondaryDisplayLauncher" android:theme="@style/AppTheme" android:launchMode="singleTop" + android:exported="true" android:enabled="true"> diff --git a/AndroidManifest.xml b/AndroidManifest.xml index b031ffbee4..8e01f82018 100644 --- a/AndroidManifest.xml +++ b/AndroidManifest.xml @@ -53,6 +53,7 @@ android:resizeableActivity="true" android:resumeWhilePausing="true" android:taskAffinity="" + android:exported="true" android:enabled="true"> diff --git a/quickstep/AndroidManifest-launcher.xml b/quickstep/AndroidManifest-launcher.xml index 60afddb0a8..53910e344b 100644 --- a/quickstep/AndroidManifest-launcher.xml +++ b/quickstep/AndroidManifest-launcher.xml @@ -53,6 +53,7 @@ android:resizeableActivity="true" android:resumeWhilePausing="true" android:taskAffinity="" + android:exported="true" android:enabled="true"> diff --git a/quickstep/AndroidManifest.xml b/quickstep/AndroidManifest.xml index e49f2ecdc0..a4b196643c 100644 --- a/quickstep/AndroidManifest.xml +++ b/quickstep/AndroidManifest.xml @@ -17,97 +17,91 @@ ** limitations under the License. */ --> - - + + - - - + + + - + - + - + + android:excludeFromRecents="true" + android:launchMode="singleTask" + android:clearTaskOnLaunch="true" + android:stateNotNeeded="true" + android:theme="@style/LauncherTheme" + android:screenOrientation="unspecified" + android:configChanges="keyboard|keyboardHidden|mcc|mnc|navigation|orientation|screenSize|screenLayout|smallestScreenSize" + android:resizeableActivity="true" + android:resumeWhilePausing="true" + android:taskAffinity=""/> - + - + - - + + - + - + - + - - + + @@ -39,6 +40,7 @@ @@ -49,6 +51,7 @@ @@ -58,12 +61,14 @@ + android:name="com.android.launcher3.testcomponent.WidgetConfigActivity" + android:exported="true"> - + @@ -72,6 +77,7 @@ @@ -102,6 +108,7 @@ android:stateNotNeeded="true" android:taskAffinity="" android:theme="@android:style/Theme.DeviceDefault.Light" + android:exported="true" android:windowSoftInputMode="adjustPan"> @@ -114,6 +121,7 @@ @@ -128,6 +136,7 @@ @@ -136,6 +145,7 @@ @@ -144,6 +154,7 @@ @@ -152,6 +163,7 @@ @@ -160,6 +172,7 @@ @@ -168,6 +181,7 @@ @@ -176,6 +190,7 @@ @@ -184,6 +199,7 @@ @@ -192,6 +208,7 @@ @@ -200,6 +217,7 @@ diff --git a/tests/dummy_app/AndroidManifest.xml b/tests/dummy_app/AndroidManifest.xml index f00138c78e..d5e2320b70 100644 --- a/tests/dummy_app/AndroidManifest.xml +++ b/tests/dummy_app/AndroidManifest.xml @@ -26,6 +26,7 @@ From 6fc3648e895782db0ca9b14f83f937635931c0e4 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Tue, 23 Jun 2020 13:33:03 -0700 Subject: [PATCH 03/56] Fix map initial capcity. Change-Id: I69f9dc2310435ba23d9a12cc8a5ef1037b43bb2b --- src/com/android/launcher3/util/OnboardingPrefs.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/com/android/launcher3/util/OnboardingPrefs.java b/src/com/android/launcher3/util/OnboardingPrefs.java index d4e074c897..26313e5a21 100644 --- a/src/com/android/launcher3/util/OnboardingPrefs.java +++ b/src/com/android/launcher3/util/OnboardingPrefs.java @@ -64,7 +64,7 @@ public class OnboardingPrefs { private static final Map MAX_COUNTS; static { - Map maxCounts = new ArrayMap<>(3); + Map maxCounts = new ArrayMap<>(4); maxCounts.put(HOME_BOUNCE_COUNT, 3); maxCounts.put(SHELF_BOUNCE_COUNT, 3); maxCounts.put(ALL_APPS_COUNT, 5); From b6354114bade2c25b0bd8b943ac7ef60e7f9e8a4 Mon Sep 17 00:00:00 2001 From: Rajeev Kumar Date: Tue, 23 Jun 2020 10:17:51 -0700 Subject: [PATCH 04/56] Add explicit android:exported="true" declarations We add this for GestureSandboxActivity and com.android.launcher3.uioverrides.QuickstepLauncher to reinstate the behavior of go/ag/11746107 which was incorrectly reverted in go/ag/11963698. We also add this for HotseatEduActivity which was newly added in go/ag/11963698. (Cherry pick from master cadb94983be5ab558202041a053eb4b67ccf3c01) Bug: 159709775 Fixes: 159709775 Test: wembley-userdebug boots and has functioning Launcher Change-Id: I17904f9ad88abc66364675426545eae423cb3175 Merged-In: I17904f9ad88abc66364675426545eae423cb3175 --- quickstep/AndroidManifest.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quickstep/AndroidManifest.xml b/quickstep/AndroidManifest.xml index a4b196643c..4e7c3fa75b 100644 --- a/quickstep/AndroidManifest.xml +++ b/quickstep/AndroidManifest.xml @@ -110,7 +110,8 @@ android:noHistory="true" android:launchMode="singleTask" android:clearTaskOnLaunch="true" - android:permission="${packageName}.permission.HOTSEAT_EDU"> + android:permission="${packageName}.permission.HOTSEAT_EDU" + android:exported="true"> From 7776d306090b0cc88c4a604ee7d6f7359f250112 Mon Sep 17 00:00:00 2001 From: Sreyas Date: Tue, 23 Jun 2020 15:34:50 -0700 Subject: [PATCH 05/56] Fixing TaskMenu positioning. Bug: 159728554 Change-Id: I4a666363f092b5416edecd0731a0f448916c8def --- .../src/com/android/quickstep/views/TaskMenuView.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java index 512bbac6bb..ef66b7a396 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/TaskMenuView.java @@ -235,7 +235,8 @@ public class TaskMenuView extends AbstractFloatingView { Rect insets = mActivity.getDragLayer().getInsets(); BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams(); params.width = orientationHandler.getTaskMenuWidth(taskView.getThumbnail()); - params.gravity = Gravity.START; + // Gravity set to Left instead of Start as sTempRect.left measures Left distance not Start + params.gravity = Gravity.LEFT; setLayoutParams(params); setScaleX(taskView.getScaleX()); setScaleY(taskView.getScaleY()); From 88f1f2046cecb83cafb94e94cc356cf02c3b7890 Mon Sep 17 00:00:00 2001 From: Sreyas Date: Tue, 23 Jun 2020 16:31:34 -0700 Subject: [PATCH 06/56] Fixing NPE befre ActionsView first initialized. Bug: 159728260 Change-Id: I00e6f8fccf8057495f77873f2f0a1ab01e63ed23 --- .../src/com/android/quickstep/TaskOverlayFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java index 01936e4ac7..e9614d1351 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java @@ -148,7 +148,7 @@ public class TaskOverlayFactory implements ResourceBasedOverride { boolean rotated) { final boolean isAllowedByPolicy = thumbnail.isRealSnapshot; - mActionsView.updateDisabledFlags(DISABLED_ROTATED, rotated); + getActionsView().updateDisabledFlags(DISABLED_ROTATED, rotated); getActionsView().setCallbacks(new OverlayUICallbacks() { @Override From 8995590e444d02746bb580ff4aef7ddf0b3ee3da Mon Sep 17 00:00:00 2001 From: Riddle Hsu Date: Tue, 23 Jun 2020 16:52:04 +0800 Subject: [PATCH 07/56] Use isolated display context to get display info While display is in landscape, and the launcher is transformed to portrait, the display rotation from activity or application context will get the rotation in portrait. In order to transform the input event when the orientations are different, the actual device rotation is still needed. By creating the display context from application context, the resources of the new context won't be affected by the activity/application level display info adjustments. That provides the actual device states. Additionally, DefaultDisplay#INSTANCE should only be used for the operations related to physical orientation/size because it won't contain the override information from activity. Bug: 157456493 Test: Use a device which may switch refresh rate. Open Maps and put device in landscape. Use gesture navigation to swipe up. The direction of movement should be consistent with UI. Change-Id: I03108b1ab057e28727b6a6db3629d2c1c069e828 --- .../launcher3/util/DefaultDisplay.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/launcher3/util/DefaultDisplay.java b/src/com/android/launcher3/util/DefaultDisplay.java index 150fb5b043..35788a54c8 100644 --- a/src/com/android/launcher3/util/DefaultDisplay.java +++ b/src/com/android/launcher3/util/DefaultDisplay.java @@ -49,20 +49,25 @@ public class DefaultDisplay implements DisplayListener { public static final int CHANGE_ALL = CHANGE_SIZE | CHANGE_ROTATION | CHANGE_FRAME_DELAY; - private final Context mContext; + private final Context mDisplayContext; private final int mId; private final ArrayList mListeners = new ArrayList<>(); private final Handler mChangeHandler; private Info mInfo; private DefaultDisplay(Context context) { - mContext = context; - mInfo = new Info(context); + DisplayManager dm = context.getSystemService(DisplayManager.class); + // Use application context to create display context so that it can have its own Resources. + mDisplayContext = context.getApplicationContext().createDisplayContext( + dm.getDisplay(DEFAULT_DISPLAY)); + // Note that the Display object must be obtained from DisplayManager which is associated to + // the display context, so the Display is isolated from Activity and Application to provide + // the actual state of device that excludes the additional adjustment and override. + mInfo = new Info(mDisplayContext); mId = mInfo.id; mChangeHandler = new Handler(this::onChange); - context.getSystemService(DisplayManager.class) - .registerDisplayListener(this, UI_HELPER_EXECUTOR.getHandler()); + dm.registerDisplayListener(this, UI_HELPER_EXECUTOR.getHandler()); } @Override @@ -78,7 +83,7 @@ public class DefaultDisplay implements DisplayListener { } Info oldInfo = mInfo; - Info info = new Info(mContext); + Info info = new Info(mDisplayContext); int change = 0; if (info.hasDifferentSize(oldInfo)) { @@ -162,8 +167,7 @@ public class DefaultDisplay implements DisplayListener { display.getRealSize(realSize); display.getCurrentSizeRange(smallestSize, largestSize); - Context defaultDisplayContext = context.createDisplayContext(display); - metrics = defaultDisplayContext.getResources().getDisplayMetrics(); + metrics = context.getResources().getDisplayMetrics(); } private boolean hasDifferentSize(Info info) { From 2bbce930cb2630f04e096d4c1261f427443f23fb Mon Sep 17 00:00:00 2001 From: Sreyas Date: Tue, 23 Jun 2020 16:31:34 -0700 Subject: [PATCH 08/56] Fixing NPE befre ActionsView first initialized. Bug: 159728260 Change-Id: I00e6f8fccf8057495f77873f2f0a1ab01e63ed23 (cherry picked from commit 88f1f2046cecb83cafb94e94cc356cf02c3b7890) --- .../src/com/android/quickstep/TaskOverlayFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java index 01936e4ac7..e9614d1351 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/TaskOverlayFactory.java @@ -148,7 +148,7 @@ public class TaskOverlayFactory implements ResourceBasedOverride { boolean rotated) { final boolean isAllowedByPolicy = thumbnail.isRealSnapshot; - mActionsView.updateDisabledFlags(DISABLED_ROTATED, rotated); + getActionsView().updateDisabledFlags(DISABLED_ROTATED, rotated); getActionsView().setCallbacks(new OverlayUICallbacks() { @Override From c6a56ef7a295b5421ad9531cfc6addc1581e67e6 Mon Sep 17 00:00:00 2001 From: Tony Wickham Date: Wed, 24 Jun 2020 11:59:10 -0700 Subject: [PATCH 09/56] Pass isLikelyToStartNewTask to onGestureStarted() This ensures we immediately setRecentsAttachedToAppWindow(). As mentioned in the bug, there was an edge case where we would animate the attached state if the first move event passed the touch slop, causing the adjacent task view to lag behind during the gesture. Fixes: 159742520 Change-Id: Ie47bb84fdd3dbd69e3b74ca504d487fb9aedb551 --- .../android/quickstep/BaseSwipeUpHandler.java | 2 +- .../quickstep/BaseSwipeUpHandlerV2.java | 9 ++++++-- .../OtherActivityInputConsumer.java | 23 +++++++++---------- 3 files changed, 19 insertions(+), 15 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java index 02bae64274..a63f3a802f 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandler.java @@ -327,7 +327,7 @@ public abstract class BaseSwipeUpHandler, Q extend public abstract void onMotionPauseChanged(boolean isPaused); @UiThread - public void onGestureStarted() { } + public void onGestureStarted(boolean isLikelyToStartNewTask) { } @UiThread public abstract void onGestureCancelled(); diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java index 413a81379a..37aa0dadd2 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java @@ -492,9 +492,13 @@ public abstract class BaseSwipeUpHandlerV2, Q exte @Override public void setIsLikelyToStartNewTask(boolean isLikelyToStartNewTask) { + setIsLikelyToStartNewTask(isLikelyToStartNewTask, true /* animate */); + } + + private void setIsLikelyToStartNewTask(boolean isLikelyToStartNewTask, boolean animate) { if (mIsLikelyToStartNewTask != isLikelyToStartNewTask) { mIsLikelyToStartNewTask = isLikelyToStartNewTask; - maybeUpdateRecentsAttachedState(); + maybeUpdateRecentsAttachedState(animate); } } @@ -628,8 +632,9 @@ public abstract class BaseSwipeUpHandlerV2, Q exte } @Override - public void onGestureStarted() { + public void onGestureStarted(boolean isLikelyToStartNewTask) { notifyGestureStartedAsync(); + setIsLikelyToStartNewTask(isLikelyToStartNewTask, false /* animate */); mStateCallback.setStateOnUiThread(STATE_GESTURE_STARTED); mGestureStarted = true; } diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java index 4e967cfd10..26df9c7b93 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OtherActivityInputConsumer.java @@ -277,6 +277,13 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC if (!mPassedSlopOnThisGesture && passedSlop) { mPassedSlopOnThisGesture = true; } + // Until passing slop, we don't know what direction we're going, so assume + // we're quick switching to avoid translating recents away when continuing + // the gesture (in which case mPassedPilferInputSlop starts as true). + boolean haveNotPassedSlopOnContinuedGesture = + !mPassedSlopOnThisGesture && mPassedPilferInputSlop; + boolean isLikelyToStartNewTask = haveNotPassedSlopOnContinuedGesture + || horizontalDist > upDist; if (!mPassedPilferInputSlop) { if (passedSlop) { @@ -299,7 +306,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC mStartDisplacement = Math.min(displacement, -mTouchSlop); } - notifyGestureStarted(); + notifyGestureStarted(isLikelyToStartNewTask); } } @@ -310,13 +317,6 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } if (mDeviceState.isFullyGesturalNavMode()) { - // Until passing slop, we don't know what direction we're going, so assume - // we're quick switching to avoid translating recents away when continuing - // the gesture. - boolean haveNotPassedSlopOnContinuedGesture = - !mPassedSlopOnThisGesture && mPassedPilferInputSlop; - boolean isLikelyToStartNewTask = haveNotPassedSlopOnContinuedGesture - || horizontalDist > upDist; mMotionPauseDetector.setDisallowPause(upDist < mMotionPauseMinDisplacement || isLikelyToStartNewTask); mMotionPauseDetector.addPosition(ev); @@ -340,7 +340,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC } } - private void notifyGestureStarted() { + private void notifyGestureStarted(boolean isLikelyToStartNewTask) { ActiveGestureLog.INSTANCE.addLog("startQuickstep"); if (mInteractionHandler == null) { return; @@ -353,7 +353,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC CLOSE_SYSTEM_WINDOWS_REASON_RECENTS); // Notify the handler that the gesture has actually started - mInteractionHandler.onGestureStarted(); + mInteractionHandler.onGestureStarted(isLikelyToStartNewTask); } private void startTouchTrackingForWindowAnimation(long touchTimeMs) { @@ -370,8 +370,7 @@ public class OtherActivityInputConsumer extends ContextWrapper implements InputC mActiveCallbacks = mTaskAnimationManager.continueRecentsAnimation(mGestureState); mActiveCallbacks.addListener(mInteractionHandler); mTaskAnimationManager.notifyRecentsAnimationState(mInteractionHandler); - mInteractionHandler.setIsLikelyToStartNewTask(true); - notifyGestureStarted(); + notifyGestureStarted(true /*isLikelyToStartNewTask*/); } else { intent.putExtra(INTENT_EXTRA_LOG_TRACE_ID, mGestureState.getGestureId()); mActiveCallbacks = mTaskAnimationManager.startRecentsAnimation(mGestureState, intent, From 4b531b972df78f6273e4de343c06117eea550b71 Mon Sep 17 00:00:00 2001 From: Andy Wickham Date: Wed, 24 Jun 2020 20:47:51 +0000 Subject: [PATCH 10/56] Updates Assistant gesture regions when no longer tracking multiple. This should prevent states where Assistant triggers from the vertical-center of the screen in portrait (see bug). Also fleshes out OrientationTouchTransformerTests and adds some new ones that fail without this change: - enableMultipleRegions_assistantTriggersInMostRecent - enableMultipleRegions_assistantTriggersInCurrentOrientationAfterDisable Fixes: 158686674 Change-Id: I6d045a485f62e4010e9e3d00805a50fdd953a2fc --- .../OrientationTouchTransformerTest.java | 153 +++++++++++++----- .../OrientationTouchTransformer.java | 42 +++-- 2 files changed, 142 insertions(+), 53 deletions(-) diff --git a/quickstep/robolectric_tests/src/com/android/quickstep/OrientationTouchTransformerTest.java b/quickstep/robolectric_tests/src/com/android/quickstep/OrientationTouchTransformerTest.java index 53f37c15bb..22d205a7cd 100644 --- a/quickstep/robolectric_tests/src/com/android/quickstep/OrientationTouchTransformerTest.java +++ b/quickstep/robolectric_tests/src/com/android/quickstep/OrientationTouchTransformerTest.java @@ -59,6 +59,7 @@ public class OrientationTouchTransformerTest { mResources = mock(Resources.class); when(mResources.getBoolean(anyInt())).thenReturn(true); when(mResources.getDimension(anyInt())).thenReturn(10.0f); + when(mResources.getDimensionPixelSize(anyInt())).thenReturn(10); DisplayMetrics mockDisplayMetrics = new DisplayMetrics(); mockDisplayMetrics.density = DENSITY_DISPLAY_METRICS; when(mResources.getDisplayMetrics()).thenReturn(mockDisplayMetrics); @@ -67,53 +68,114 @@ public class OrientationTouchTransformerTest { } @Test - public void disabledMultipeRegions_shouldOverrideFirstRegion() { - mTouchTransformer.createOrAddTouchRegion(mInfo); - DefaultDisplay.Info info2 = createDisplayInfo(Surface.ROTATION_90); - mTouchTransformer.createOrAddTouchRegion(info2); + public void disabledMultipleRegions_shouldOverrideFirstRegion() { + float portraitRegionY = generateTouchRegionHeight(Surface.ROTATION_0) + 1; + float landscapeRegionY = generateTouchRegionHeight(Surface.ROTATION_90) + 1; - float y = generateTouchRegionHeight(Surface.ROTATION_0) + 1; - MotionEvent inOldRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, y); - mTouchTransformer.transform(inOldRegion); - assertFalse(mTouchTransformer.touchInValidSwipeRegions(inOldRegion.getX(), inOldRegion.getY())); + mTouchTransformer.createOrAddTouchRegion(mInfo); + tapAndAssertTrue(100, portraitRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertFalse(100, landscapeRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertTrue(0, portraitRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + tapAndAssertFalse(0, landscapeRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); // Override region + mTouchTransformer.createOrAddTouchRegion(createDisplayInfo(Surface.ROTATION_90)); + tapAndAssertFalse(100, portraitRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertTrue(100, landscapeRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertFalse(0, portraitRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + tapAndAssertTrue(0, landscapeRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + + // Override region again mTouchTransformer.createOrAddTouchRegion(mInfo); - inOldRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, y); - mTouchTransformer.transform(inOldRegion); - assertTrue(mTouchTransformer.touchInValidSwipeRegions(inOldRegion.getX(), inOldRegion.getY())); + tapAndAssertTrue(100, portraitRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertFalse(100, landscapeRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertTrue(0, portraitRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + tapAndAssertFalse(0, landscapeRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); } @Test - public void allowMultipeRegions_shouldOverrideFirstRegion() { - DefaultDisplay.Info info2 = createDisplayInfo(Surface.ROTATION_90); - mTouchTransformer.createOrAddTouchRegion(info2); + public void enableMultipleRegions_shouldOverrideFirstRegion() { + float portraitRegionY = generateTouchRegionHeight(Surface.ROTATION_0) + 1; + float landscapeRegionY = generateTouchRegionHeight(Surface.ROTATION_90) + 1; + + mTouchTransformer.createOrAddTouchRegion(createDisplayInfo(Surface.ROTATION_90)); + tapAndAssertFalse(100, portraitRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertTrue(100, landscapeRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertFalse(0, portraitRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + tapAndAssertTrue(0, landscapeRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); // We have to add 0 rotation second so that gets set as the current rotation, otherwise // matrix transform will fail (tests only work in Portrait at the moment) mTouchTransformer.enableMultipleRegions(true, mInfo); mTouchTransformer.createOrAddTouchRegion(mInfo); - float y = generateTouchRegionHeight(Surface.ROTATION_0) + 1; - MotionEvent inNewRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, y); - mTouchTransformer.transform(inNewRegion); - assertTrue(mTouchTransformer.touchInValidSwipeRegions(inNewRegion.getX(), inNewRegion.getY())); + tapAndAssertTrue(100, portraitRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertFalse(100, landscapeRegionY, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); + tapAndAssertTrue(0, portraitRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + tapAndAssertFalse(0, landscapeRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + } + + @Test + public void enableMultipleRegions_assistantTriggersInMostRecent() { + float portraitRegionY = generateTouchRegionHeight(Surface.ROTATION_0) + 1; + float landscapeRegionY = generateTouchRegionHeight(Surface.ROTATION_90) + 1; + + mTouchTransformer.enableMultipleRegions(true, mInfo); + mTouchTransformer.createOrAddTouchRegion(createDisplayInfo(Surface.ROTATION_90)); + mTouchTransformer.createOrAddTouchRegion(mInfo); + tapAndAssertTrue(0, portraitRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + tapAndAssertFalse(0, landscapeRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + } + + @Test + public void enableMultipleRegions_assistantTriggersInCurrentOrientationAfterDisable() { + float portraitRegionY = generateTouchRegionHeight(Surface.ROTATION_0) + 1; + float landscapeRegionY = generateTouchRegionHeight(Surface.ROTATION_90) + 1; + + mTouchTransformer.enableMultipleRegions(true, mInfo); + mTouchTransformer.createOrAddTouchRegion(mInfo); + mTouchTransformer.createOrAddTouchRegion(createDisplayInfo(Surface.ROTATION_90)); + mTouchTransformer.enableMultipleRegions(false, mInfo); + tapAndAssertTrue(0, portraitRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); + tapAndAssertFalse(0, landscapeRegionY, + event -> mTouchTransformer.touchInAssistantRegion(event)); } @Test public void applyTransform_taskNotFrozen_notInRegion() { mTouchTransformer.createOrAddTouchRegion(mInfo); - MotionEvent outOfRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, 100); - mTouchTransformer.transform(outOfRegion); - assertFalse(mTouchTransformer.touchInValidSwipeRegions(outOfRegion.getX(), outOfRegion.getY())); + tapAndAssertFalse(100, 100, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); } @Test public void applyTransform_taskFrozen_noRotate_outOfRegion() { mTouchTransformer.createOrAddTouchRegion(mInfo); mTouchTransformer.enableMultipleRegions(true, mInfo); - MotionEvent outOfRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, 100); - mTouchTransformer.transform(outOfRegion); - assertFalse(mTouchTransformer.touchInValidSwipeRegions(outOfRegion.getX(), outOfRegion.getY())); + tapAndAssertFalse(100, 100, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); } @Test @@ -121,27 +183,24 @@ public class OrientationTouchTransformerTest { mTouchTransformer.createOrAddTouchRegion(mInfo); mTouchTransformer.enableMultipleRegions(true, mInfo); float y = generateTouchRegionHeight(Surface.ROTATION_0) + 1; - MotionEvent inRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, y); - mTouchTransformer.transform(inRegion); - assertTrue(mTouchTransformer.touchInValidSwipeRegions(inRegion.getX(), inRegion.getY())); + tapAndAssertTrue(100, y, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); } @Test public void applyTransform_taskNotFrozen_noRotate_inDefaultRegion() { mTouchTransformer.createOrAddTouchRegion(mInfo); float y = generateTouchRegionHeight(Surface.ROTATION_0) + 1; - MotionEvent inRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, y); - mTouchTransformer.transform(inRegion); - assertTrue(mTouchTransformer.touchInValidSwipeRegions(inRegion.getX(), inRegion.getY())); + tapAndAssertTrue(100, y, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); } @Test public void applyTransform_taskNotFrozen_90Rotate_inRegion() { mTouchTransformer.createOrAddTouchRegion(createDisplayInfo(Surface.ROTATION_90)); float y = generateTouchRegionHeight(Surface.ROTATION_90) + 1; - MotionEvent inRegion = generateMotionEvent(MotionEvent.ACTION_DOWN, 100, y); - mTouchTransformer.transform(inRegion); - assertTrue(mTouchTransformer.touchInValidSwipeRegions(inRegion.getX(), inRegion.getY())); + tapAndAssertTrue(100, y, + event -> mTouchTransformer.touchInValidSwipeRegions(event.getX(), event.getY())); } @Test @@ -160,15 +219,15 @@ public class OrientationTouchTransformerTest { MotionEvent inRegion2 = generateMotionEvent(MotionEvent.ACTION_DOWN, 10, 10); mTouchTransformer.transform(inRegion1_down); mTouchTransformer.transform(inRegion2); - assertTrue(mTouchTransformer.touchInValidSwipeRegions(inRegion1_down.getX(), inRegion1_down.getY())); + assertTrue(mTouchTransformer.touchInValidSwipeRegions( + inRegion1_down.getX(), inRegion1_down.getY())); // We only process one gesture region until we see a MotionEvent.ACTION_UP assertFalse(mTouchTransformer.touchInValidSwipeRegions(inRegion2.getX(), inRegion2.getY())); mTouchTransformer.transform(inRegion1_up); // Set the new region with this MotionEvent.ACTION_DOWN - inRegion2 = generateMotionEvent(MotionEvent.ACTION_DOWN, 10, 370); - mTouchTransformer.transform(inRegion2); + inRegion2 = generateAndTransformMotionEvent(MotionEvent.ACTION_DOWN, 10, 370); assertTrue(mTouchTransformer.touchInValidSwipeRegions(inRegion2.getX(), inRegion2.getY())); } @@ -191,4 +250,26 @@ public class OrientationTouchTransformerTest { private MotionEvent generateMotionEvent(int motionAction, float x, float y) { return MotionEvent.obtain(0, 0, motionAction, x, y, 0); } + + private MotionEvent generateAndTransformMotionEvent(int motionAction, float x, float y) { + MotionEvent motionEvent = generateMotionEvent(motionAction, x, y); + mTouchTransformer.transform(motionEvent); + return motionEvent; + } + + private void tapAndAssertTrue(float x, float y, MotionEventAssertion assertion) { + MotionEvent motionEvent = generateAndTransformMotionEvent(MotionEvent.ACTION_DOWN, x, y); + assertTrue(assertion.getCondition(motionEvent)); + generateAndTransformMotionEvent(MotionEvent.ACTION_UP, x, y); + } + + private void tapAndAssertFalse(float x, float y, MotionEventAssertion assertion) { + MotionEvent motionEvent = generateAndTransformMotionEvent(MotionEvent.ACTION_DOWN, x, y); + assertFalse(assertion.getCondition(motionEvent)); + generateAndTransformMotionEvent(MotionEvent.ACTION_UP, x, y); + } + + private interface MotionEventAssertion { + boolean getCondition(MotionEvent motionEvent); + } } diff --git a/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java b/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java index 3375c53124..b091807c78 100644 --- a/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java +++ b/quickstep/src/com/android/quickstep/OrientationTouchTransformer.java @@ -178,15 +178,21 @@ class OrientationTouchTransformer { mCurrentDisplayRotation = region.rotation; OrientationRectF regionToKeep = mSwipeTouchRegions.get(mCurrentDisplayRotation); + if (regionToKeep == null) { + regionToKeep = createRegionForDisplay(region); + } mSwipeTouchRegions.clear(); - mSwipeTouchRegions.put(mCurrentDisplayRotation, - regionToKeep != null ? regionToKeep : createRegionForDisplay(region)); + mSwipeTouchRegions.put(mCurrentDisplayRotation, regionToKeep); + updateAssistantRegions(regionToKeep); } private void resetSwipeRegions() { OrientationRectF regionToKeep = mSwipeTouchRegions.get(mCurrentDisplayRotation); mSwipeTouchRegions.clear(); - mSwipeTouchRegions.put(mCurrentDisplayRotation, regionToKeep); + if (regionToKeep != null) { + mSwipeTouchRegions.put(mCurrentDisplayRotation, regionToKeep); + updateAssistantRegions(regionToKeep); + } } private OrientationRectF createRegionForDisplay(DefaultDisplay.Info display) { @@ -201,20 +207,7 @@ class OrientationTouchTransformer { if (mMode == SysUINavigationMode.Mode.NO_BUTTON) { int touchHeight = getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE); orientationRectF.top = orientationRectF.bottom - touchHeight; - - final int assistantWidth = mResources - .getDimensionPixelSize(R.dimen.gestures_assistant_width); - final float assistantHeight = Math.max(touchHeight, - mContractInfo.getWindowCornerRadius()); - mAssistantLeftRegion.bottom = mAssistantRightRegion.bottom = orientationRectF.bottom; - mAssistantLeftRegion.top = mAssistantRightRegion.top = - orientationRectF.bottom - assistantHeight; - - mAssistantLeftRegion.left = 0; - mAssistantLeftRegion.right = assistantWidth; - - mAssistantRightRegion.right = orientationRectF.right; - mAssistantRightRegion.left = orientationRectF.right - assistantWidth; + updateAssistantRegions(orientationRectF); } else { mAssistantLeftRegion.setEmpty(); mAssistantRightRegion.setEmpty(); @@ -236,6 +229,21 @@ class OrientationTouchTransformer { return orientationRectF; } + private void updateAssistantRegions(OrientationRectF orientationRectF) { + int navbarHeight = getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE); + int assistantWidth = mResources.getDimensionPixelSize(R.dimen.gestures_assistant_width); + float assistantHeight = Math.max(navbarHeight, mContractInfo.getWindowCornerRadius()); + mAssistantLeftRegion.bottom = mAssistantRightRegion.bottom = orientationRectF.bottom; + mAssistantLeftRegion.top = mAssistantRightRegion.top = + orientationRectF.bottom - assistantHeight; + + mAssistantLeftRegion.left = 0; + mAssistantLeftRegion.right = assistantWidth; + + mAssistantRightRegion.right = orientationRectF.right; + mAssistantRightRegion.left = orientationRectF.right - assistantWidth; + } + boolean touchInAssistantRegion(MotionEvent ev) { return mAssistantLeftRegion.contains(ev.getX(), ev.getY()) || mAssistantRightRegion.contains(ev.getX(), ev.getY()); From fb099c7fe167752f9a921e99cf7eae2afc609538 Mon Sep 17 00:00:00 2001 From: vadimt Date: Tue, 23 Jun 2020 18:49:41 -0700 Subject: [PATCH 11/56] Improving diagnostics when can't find a widget Instead of "exceeded number of attempts" now printing that can't scroll to widget. Change-Id: Ia6f582e038d68fc35f152d94e592f60ef0bc2cf4 --- .../launcher3/testing/TestInformationHandler.java | 6 ++++++ src/com/android/launcher3/testing/TestProtocol.java | 1 + tests/tapl/com/android/launcher3/tapl/Widgets.java | 13 +++++++++++++ 3 files changed, 20 insertions(+) diff --git a/src/com/android/launcher3/testing/TestInformationHandler.java b/src/com/android/launcher3/testing/TestInformationHandler.java index 38b3712f6e..d4a132e5ba 100644 --- a/src/com/android/launcher3/testing/TestInformationHandler.java +++ b/src/com/android/launcher3/testing/TestInformationHandler.java @@ -33,6 +33,7 @@ import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherState; import com.android.launcher3.R; import com.android.launcher3.util.ResourceBasedOverride; +import com.android.launcher3.widget.WidgetsFullSheet; import java.util.concurrent.ExecutionException; import java.util.function.Function; @@ -92,6 +93,11 @@ public class TestInformationHandler implements ResourceBasedOverride { l -> l.getAppsView().getActiveRecyclerView().getCurrentScrollY()); } + case TestProtocol.REQUEST_WIDGETS_SCROLL_Y: { + return getLauncherUIProperty(Bundle::putInt, + l -> WidgetsFullSheet.getWidgetsView(l).getCurrentScrollY()); + } + case TestProtocol.REQUEST_WINDOW_INSETS: { return getUIProperty(Bundle::putParcelable, a -> { WindowInsets insets = a.getWindow() diff --git a/src/com/android/launcher3/testing/TestProtocol.java b/src/com/android/launcher3/testing/TestProtocol.java index 3ca08fd8ec..8165627448 100644 --- a/src/com/android/launcher3/testing/TestProtocol.java +++ b/src/com/android/launcher3/testing/TestProtocol.java @@ -81,6 +81,7 @@ public final class TestProtocol { public static final String REQUEST_UNFREEZE_APP_LIST = "unfreeze-app-list"; 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_WIDGETS_SCROLL_Y = "widgets-scroll-y"; public static final String REQUEST_WINDOW_INSETS = "window-insets"; public static final String REQUEST_PID = "pid"; public static final String REQUEST_TOTAL_PSS_KB = "total_pss"; diff --git a/tests/tapl/com/android/launcher3/tapl/Widgets.java b/tests/tapl/com/android/launcher3/tapl/Widgets.java index 39ac6454b0..49af616b85 100644 --- a/tests/tapl/com/android/launcher3/tapl/Widgets.java +++ b/tests/tapl/com/android/launcher3/tapl/Widgets.java @@ -28,6 +28,7 @@ import androidx.test.uiautomator.UiObject2; import androidx.test.uiautomator.Until; import com.android.launcher3.tapl.LauncherInstrumentation.GestureScope; +import com.android.launcher3.testing.TestProtocol; import java.util.Collection; @@ -90,6 +91,12 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer { return LauncherInstrumentation.ContainerType.WIDGETS; } + private int getWidgetsScroll() { + return mLauncher.getTestInfo( + TestProtocol.REQUEST_WIDGETS_SCROLL_Y) + .getInt(TestProtocol.TEST_INFO_RESPONSE_FIELD); + } + public Widget getWidget(String labelText) { try (LauncherInstrumentation.Closable e = mLauncher.eventsCheck(); LauncherInstrumentation.Closable c = mLauncher.addContextLayer( @@ -136,7 +143,13 @@ public final class Widgets extends LauncherInstrumentation.VisibleContainer { } mLauncher.assertTrue("Too many attempts", ++i <= 40); + final int scroll = getWidgetsScroll(); mLauncher.scrollToLastVisibleRow(widgetsContainer, cells, 0); + final int newScroll = getWidgetsScroll(); + mLauncher.assertTrue( + "Scrolled in a wrong direction in Widgets: from " + scroll + " to " + + newScroll, newScroll >= scroll); + mLauncher.assertTrue("Unable to scroll to the widget", newScroll != scroll); } } } From dfa3de7d3f477381371ad1abbea9a40098dbd1de Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Wed, 24 Jun 2020 17:37:16 -0700 Subject: [PATCH 12/56] Get rid of a weird shadow background when rendering smartspace in preview I think it has something to do ripple background, clipChildren, focusable, clickable, etc. My previous projects ran into related issues before, which is why I tried to set focusable here to false. Let me know if you have a better idea of what exactly is going on FYI, I also did go back to my previous CL and confirmed that it's necessary. Fixes: 152278370 Test: Factory reset the phone (with latest build and launcher built from this CL). Make sure no background is shown Change-Id: I401ffcccd1e07a3c0beb5ed460a707d25bddf41e --- res/layout/launcher_preview_layout.xml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/res/layout/launcher_preview_layout.xml b/res/layout/launcher_preview_layout.xml index 3fd02e3fda..4a20c705b6 100644 --- a/res/layout/launcher_preview_layout.xml +++ b/res/layout/launcher_preview_layout.xml @@ -17,7 +17,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:launcher="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:focusable="false"> Date: Wed, 24 Jun 2020 20:52:26 -0700 Subject: [PATCH 13/56] Fix tracking window being slightly off when swiping from an app Test: swipe up from an app in landscape, seascape, and portrait, and verify the window tracks with the finger 1:1 until pullback Bug: 149934536 Change-Id: Ia469877e7152c8135e0b9153f69c191ba86cbd14 --- quickstep/src/com/android/quickstep/util/LayoutUtils.java | 2 +- .../launcher3/touch/LandscapePagedViewHandler.java | 8 ++++++++ .../android/launcher3/touch/PagedOrientationHandler.java | 1 + .../android/launcher3/touch/PortraitPagedViewHandler.java | 6 ++++++ .../android/launcher3/touch/SeascapePagedViewHandler.java | 7 +++++++ 5 files changed, 23 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/util/LayoutUtils.java b/quickstep/src/com/android/quickstep/util/LayoutUtils.java index ae19d73719..f7bd1e29d8 100644 --- a/quickstep/src/com/android/quickstep/util/LayoutUtils.java +++ b/quickstep/src/com/android/quickstep/util/LayoutUtils.java @@ -49,7 +49,7 @@ public class LayoutUtils { Rect taskSize = new Rect(); LauncherActivityInterface.INSTANCE.calculateTaskSize(context, dp, taskSize, orientationHandler); - return (dp.heightPx - taskSize.height()) / 2; + return orientationHandler.getDistanceToBottomOfRect(dp, taskSize); } int shelfHeight = dp.hotseatBarSizePx + dp.getInsets().bottom; int spaceBetweenShelfAndRecents = (int) context.getResources().getDimension( diff --git a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java index 48c773413f..c2bfb167a2 100644 --- a/src/com/android/launcher3/touch/LandscapePagedViewHandler.java +++ b/src/com/android/launcher3/touch/LandscapePagedViewHandler.java @@ -17,6 +17,7 @@ package com.android.launcher3.touch; import static android.widget.ListPopupWindow.WRAP_CONTENT; + import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_X; import static com.android.launcher3.LauncherAnimUtils.VIEW_TRANSLATE_Y; import static com.android.launcher3.touch.SingleAxisSwipeDetector.HORIZONTAL; @@ -33,6 +34,7 @@ import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.widget.LinearLayout; +import com.android.launcher3.DeviceProfile; import com.android.launcher3.PagedView; import com.android.launcher3.Utilities; import com.android.launcher3.util.OverScroller; @@ -260,4 +262,10 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler { } return new ChildBounds(childHeight, childWidth, childBottom, childLeft); } + + @SuppressWarnings("SuspiciousNameCombination") + @Override + public int getDistanceToBottomOfRect(DeviceProfile dp, Rect rect) { + return rect.left; + } } diff --git a/src/com/android/launcher3/touch/PagedOrientationHandler.java b/src/com/android/launcher3/touch/PagedOrientationHandler.java index 65b1a7a77e..b650526fe1 100644 --- a/src/com/android/launcher3/touch/PagedOrientationHandler.java +++ b/src/com/android/launcher3/touch/PagedOrientationHandler.java @@ -96,6 +96,7 @@ public interface PagedOrientationHandler { int getTaskMenuWidth(View view); int getTaskMenuLayoutOrientation(LinearLayout taskMenuLayout); void setLayoutParamsForTaskMenuOptionItem(LinearLayout.LayoutParams lp); + int getDistanceToBottomOfRect(DeviceProfile dp, Rect rect); /** * Maps the velocity from the coordinate plane of the foreground app to that diff --git a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java index 79e5c87785..e87c887d33 100644 --- a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java +++ b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java @@ -32,6 +32,7 @@ import android.view.View; import android.view.accessibility.AccessibilityEvent; import android.widget.LinearLayout; +import com.android.launcher3.DeviceProfile; import com.android.launcher3.PagedView; import com.android.launcher3.Utilities; import com.android.launcher3.util.OverScroller; @@ -257,4 +258,9 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { } return new ChildBounds(childWidth, childHeight, childRight, childTop); } + + @Override + public int getDistanceToBottomOfRect(DeviceProfile dp, Rect rect) { + return dp.heightPx - rect.bottom; + } } diff --git a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java index d5ae2dcb16..e91f16d71a 100644 --- a/src/com/android/launcher3/touch/SeascapePagedViewHandler.java +++ b/src/com/android/launcher3/touch/SeascapePagedViewHandler.java @@ -18,9 +18,11 @@ package com.android.launcher3.touch; import android.content.res.Resources; import android.graphics.PointF; +import android.graphics.Rect; import android.view.Surface; import android.view.View; +import com.android.launcher3.DeviceProfile; import com.android.launcher3.Utilities; public class SeascapePagedViewHandler extends LandscapePagedViewHandler { @@ -77,4 +79,9 @@ public class SeascapePagedViewHandler extends LandscapePagedViewHandler { view.setTranslationX(0); view.setTranslationY(translation); } + + @Override + public int getDistanceToBottomOfRect(DeviceProfile dp, Rect rect) { + return dp.widthPx - rect.right; + } } From 514df92bcfc592c305fd0079287f6d09653b0340 Mon Sep 17 00:00:00 2001 From: Samuel Fufa Date: Thu, 25 Jun 2020 11:17:16 -0700 Subject: [PATCH 14/56] Add NPE check for prediction controller Bug: 159835714 Test: Manual Change-Id: I9cc03f6491f4e14462be6c01edf3ed4ca1d82136 --- .../com/android/quickstep/util/QuickstepOnboardingPrefs.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java b/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java index 0fdc6841b5..9ed2bbef38 100644 --- a/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java +++ b/quickstep/src/com/android/quickstep/util/QuickstepOnboardingPrefs.java @@ -101,7 +101,8 @@ public class QuickstepOnboardingPrefs extends OnboardingPrefs() { boolean mFromAllApps = false; From 633a4bdf5724517509f6d40635cd16f14452e4e8 Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Wed, 24 Jun 2020 12:48:11 -0700 Subject: [PATCH 15/56] Do preview grid migration in a worker thread Also remove USE_SURFACE_VIEW_FOR_PREVIEW flag Fixes: 159755324 Test: manual Change-Id: I6517c34911e217a69063226b01e4583194902f9c --- .../launcher3/config/FeatureFlags.java | 3 - .../graphics/GridOptionsProvider.java | 61 ---------------- .../graphics/LauncherPreviewRenderer.java | 55 ++------------- .../graphics/PreviewSurfaceRenderer.java | 70 ++++++++++++------- 4 files changed, 50 insertions(+), 139 deletions(-) diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 4f53d45c73..5c4a4922fd 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -138,9 +138,6 @@ public final class FeatureFlags { public static final BooleanFlag ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER = getDebugFlag( "ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER", true, "Show launcher preview in grid picker"); - public static final BooleanFlag USE_SURFACE_VIEW_FOR_GRID_PREVIEW = getDebugFlag( - "USE_SURFACE_VIEW_FOR_GRID_PREVIEW", true, "Use surface view for grid preview"); - public static final BooleanFlag ENABLE_OVERVIEW_ACTIONS = getDebugFlag( "ENABLE_OVERVIEW_ACTIONS", true, "Show app actions instead of the shelf in Overview." + " As part of this decoupling, also distinguish swipe up from nav bar vs above it."); diff --git a/src/com/android/launcher3/graphics/GridOptionsProvider.java b/src/com/android/launcher3/graphics/GridOptionsProvider.java index 9bfd5bab87..08d7e4c65e 100644 --- a/src/com/android/launcher3/graphics/GridOptionsProvider.java +++ b/src/com/android/launcher3/graphics/GridOptionsProvider.java @@ -1,21 +1,14 @@ package com.android.launcher3.graphics; -import static com.android.launcher3.config.FeatureFlags.USE_SURFACE_VIEW_FOR_GRID_PREVIEW; -import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; - import android.content.ContentProvider; import android.content.ContentValues; import android.content.pm.PackageManager; import android.content.res.XmlResourceParser; import android.database.Cursor; import android.database.MatrixCursor; -import android.graphics.Bitmap; import android.net.Uri; import android.os.Binder; import android.os.Bundle; -import android.os.ParcelFileDescriptor; -import android.os.ParcelFileDescriptor.AutoCloseOutputStream; -import android.text.TextUtils; import android.util.Log; import android.util.Xml; @@ -26,12 +19,10 @@ import com.android.launcher3.R; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.concurrent.Future; /** * Exposes various launcher grid options and allows the caller to change them. @@ -62,24 +53,7 @@ public class GridOptionsProvider extends ContentProvider { private static final String KEY_LIST_OPTIONS = "/list_options"; private static final String KEY_DEFAULT_GRID = "/default_grid"; - private static final String KEY_PREVIEW = "preview"; - private static final String MIME_TYPE_PNG = "image/png"; - private static final String METHOD_GET_PREVIEW = "get_preview"; - private static final String METADATA_KEY_PREVIEW_VERSION = "preview_version"; - - public static final PipeDataWriter> BITMAP_WRITER = - new PipeDataWriter>() { - @Override - public void writeDataToPipe(ParcelFileDescriptor output, Uri uri, String s, - Bundle bundle, Future bitmap) { - try (AutoCloseOutputStream os = new AutoCloseOutputStream(output)) { - bitmap.get().compress(Bitmap.CompressFormat.PNG, 100, os); - } catch (Exception e) { - Log.w(TAG, "fail to write to pipe", e); - } - } - }; @Override public boolean onCreate() { @@ -104,10 +78,6 @@ public class GridOptionsProvider extends ContentProvider { .add(KEY_IS_DEFAULT, idp.numColumns == gridOption.numColumns && idp.numRows == gridOption.numRows); } - Bundle metadata = new Bundle(); - metadata.putString(METADATA_KEY_PREVIEW_VERSION, - USE_SURFACE_VIEW_FOR_GRID_PREVIEW.get() ? "V2" : "V1"); - cursor.setExtras(metadata); return cursor; } @@ -132,10 +102,6 @@ public class GridOptionsProvider extends ContentProvider { @Override public String getType(Uri uri) { - List segments = uri.getPathSegments(); - if (segments.size() > 0 && KEY_PREVIEW.equals(segments.get(0))) { - return MIME_TYPE_PNG; - } return "vnd.android.cursor.dir/launcher_grid"; } @@ -172,33 +138,6 @@ public class GridOptionsProvider extends ContentProvider { return 1; } - @Override - public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { - List segments = uri.getPathSegments(); - if (segments.size() < 2 || !KEY_PREVIEW.equals(segments.get(0))) { - throw new FileNotFoundException("Invalid preview url"); - } - String profileName = segments.get(1); - if (TextUtils.isEmpty(profileName)) { - throw new FileNotFoundException("Invalid preview url"); - } - - InvariantDeviceProfile idp; - try { - idp = new InvariantDeviceProfile(getContext(), profileName); - } catch (Exception e) { - throw new FileNotFoundException(e.getMessage()); - } - - try { - return openPipeHelper(uri, MIME_TYPE_PNG, null, - UI_HELPER_EXECUTOR.submit(new LauncherPreviewRenderer(getContext(), idp)), - BITMAP_WRITER); - } catch (Exception e) { - throw new FileNotFoundException(e.getMessage()); - } - } - @Override public Bundle call(String method, String arg, Bundle extras) { if (getContext().checkPermission("android.permission.BIND_WALLPAPER", diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java index 15f4e3fcec..885fb6698b 100644 --- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java @@ -20,7 +20,6 @@ import static android.view.View.MeasureSpec.makeMeasureSpec; import static android.view.View.VISIBLE; import static com.android.launcher3.config.FeatureFlags.ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER; -import static com.android.launcher3.config.FeatureFlags.MULTI_DB_GRID_MIRATION_ALGO; import static com.android.launcher3.model.ModelUtils.filterCurrentWorkspaceItems; import static com.android.launcher3.model.ModelUtils.getMissingHotseatRanks; import static com.android.launcher3.model.ModelUtils.sortWorkspaceItemsSpatially; @@ -34,8 +33,6 @@ import android.content.ContextWrapper; import android.content.Intent; import android.content.pm.ShortcutInfo; import android.content.res.TypedArray; -import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.AdaptiveIconDrawable; @@ -63,20 +60,16 @@ import com.android.launcher3.LauncherModel; 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.WorkspaceLayoutManager; import com.android.launcher3.allapps.SearchUiManager; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.folder.FolderIcon; import com.android.launcher3.icons.BaseIconFactory; import com.android.launcher3.icons.BitmapInfo; -import com.android.launcher3.icons.BitmapRenderer; import com.android.launcher3.icons.LauncherIcons; import com.android.launcher3.model.AllAppsList; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.BgDataModel.Callbacks; -import com.android.launcher3.model.GridSizeMigrationTask; -import com.android.launcher3.model.GridSizeMigrationTaskV2; import com.android.launcher3.model.LoaderResults; import com.android.launcher3.model.LoaderTask; import com.android.launcher3.model.WidgetItem; @@ -105,7 +98,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.FutureTask; @@ -121,7 +113,7 @@ import java.util.concurrent.TimeoutException; * 4) Measure and draw the view on a canvas */ @TargetApi(Build.VERSION_CODES.O) -public class LauncherPreviewRenderer implements Callable { +public class LauncherPreviewRenderer { private static final String TAG = "LauncherPreviewRenderer"; @@ -213,15 +205,17 @@ public class LauncherPreviewRenderer implements Callable { private final Context mContext; private final InvariantDeviceProfile mIdp; private final DeviceProfile mDp; + private final boolean mMigrated; private final Rect mInsets; private final WorkspaceItemInfo mWorkspaceItemInfo; - public LauncherPreviewRenderer(Context context, InvariantDeviceProfile idp) { + public LauncherPreviewRenderer(Context context, InvariantDeviceProfile idp, boolean migrated) { mUiHandler = new Handler(Looper.getMainLooper()); mContext = context; mIdp = idp; mDp = idp.portraitProfile.copy(context); + mMigrated = migrated; // TODO: get correct insets once display cutout API is available. mInsets = new Rect(); @@ -243,28 +237,6 @@ public class LauncherPreviewRenderer implements Callable { context.getString(R.string.label_application); } - @Override - public Bitmap call() { - return BitmapRenderer.createHardwareBitmap(mDp.widthPx, mDp.heightPx, c -> { - - if (Looper.myLooper() == Looper.getMainLooper()) { - new MainThreadRenderer(mContext).renderScreenShot(c); - } else { - CountDownLatch latch = new CountDownLatch(1); - Utilities.postAsyncCallback(mUiHandler, () -> { - new MainThreadRenderer(mContext).renderScreenShot(c); - latch.countDown(); - }); - - try { - latch.await(); - } catch (Exception e) { - Log.e(TAG, "Error drawing on main thread", e); - } - } - }); - } - /** Populate preview and render it. */ public View getRenderedView() { MainThreadRenderer renderer = new MainThreadRenderer(mContext); @@ -407,20 +379,9 @@ public class LauncherPreviewRenderer implements Callable { private void populate() { if (ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER.get()) { - boolean needsToMigrate = - MULTI_DB_GRID_MIRATION_ALGO.get() - ? GridSizeMigrationTaskV2.needsToMigrate(mContext, mIdp) - : GridSizeMigrationTask.needsToMigrate(mContext, mIdp); - boolean success = false; - if (needsToMigrate) { - success = MULTI_DB_GRID_MIRATION_ALGO.get() - ? GridSizeMigrationTaskV2.migrateGridIfNeeded(mContext, mIdp) - : GridSizeMigrationTask.migrateGridIfNeeded(mContext, mIdp); - } - WorkspaceFetcher fetcher; PreviewContext previewContext = null; - if (needsToMigrate && success) { + if (mMigrated) { previewContext = new PreviewContext(mContext, mIdp); LauncherAppState appForPreview = new LauncherAppState( previewContext, null /* iconCacheFileName */); @@ -535,12 +496,6 @@ public class LauncherPreviewRenderer implements Callable { // Additional measure for views which use auto text size API measureView(mRootView, mDp.widthPx, mDp.heightPx); } - - private void renderScreenShot(Canvas canvas) { - populate(); - mRootView.draw(canvas); - dispatchVisibilityAggregated(mRootView, false); - } } private static void measureView(View view, int width, int height) { diff --git a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java index 350f221c97..fdc3a947a3 100644 --- a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java +++ b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java @@ -16,7 +16,9 @@ package com.android.launcher3.graphics; +import static com.android.launcher3.config.FeatureFlags.MULTI_DB_GRID_MIRATION_ALGO; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; +import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; import android.content.Context; import android.hardware.display.DisplayManager; @@ -32,6 +34,8 @@ import android.view.View; import android.view.animation.AccelerateDecelerateInterpolator; import com.android.launcher3.InvariantDeviceProfile; +import com.android.launcher3.model.GridSizeMigrationTask; +import com.android.launcher3.model.GridSizeMigrationTaskV2; import java.util.concurrent.TimeUnit; @@ -93,32 +97,35 @@ public class PreviewSurfaceRenderer implements IBinder.DeathRecipient { return null; } - MAIN_EXECUTOR.execute(() -> { - // If mSurfaceControlViewHost is null due to any reason (e.g. binder died, - // happening when user leaves the preview screen before preview rendering finishes), - // we should return here. - SurfaceControlViewHost host = mSurfaceControlViewHost; - if (host == null) { - return; - } + MODEL_EXECUTOR.post(() -> { + final boolean success = doGridMigrationIfNecessary(); - View view = new LauncherPreviewRenderer(mContext, mIdp).getRenderedView(); - // This aspect scales the view to fit in the surface and centers it - final float scale = Math.min(mWidth / (float) view.getMeasuredWidth(), - mHeight / (float) view.getMeasuredHeight()); - view.setScaleX(scale); - view.setScaleY(scale); - view.setPivotX(0); - view.setPivotY(0); - view.setTranslationX((mWidth - scale * view.getWidth()) / 2); - view.setTranslationY((mHeight - scale * view.getHeight()) / 2); - view.setAlpha(0); - view.animate().alpha(1) - .setInterpolator(new AccelerateDecelerateInterpolator()) - .setDuration(FADE_IN_ANIMATION_DURATION) - .start(); - host.setView(view, view.getMeasuredWidth(), - view.getMeasuredHeight()); + MAIN_EXECUTOR.post(() -> { + // If mSurfaceControlViewHost is null due to any reason (e.g. binder died, + // happening when user leaves the preview screen before preview rendering finishes), + // we should return here. + SurfaceControlViewHost host = mSurfaceControlViewHost; + if (host == null) { + return; + } + + View view = new LauncherPreviewRenderer(mContext, mIdp, success).getRenderedView(); + // This aspect scales the view to fit in the surface and centers it + final float scale = Math.min(mWidth / (float) view.getMeasuredWidth(), + mHeight / (float) view.getMeasuredHeight()); + view.setScaleX(scale); + view.setScaleY(scale); + view.setPivotX(0); + view.setPivotY(0); + view.setTranslationX((mWidth - scale * view.getWidth()) / 2); + view.setTranslationY((mHeight - scale * view.getHeight()) / 2); + view.setAlpha(0); + view.animate().alpha(1) + .setInterpolator(new AccelerateDecelerateInterpolator()) + .setDuration(FADE_IN_ANIMATION_DURATION) + .start(); + host.setView(view, view.getMeasuredWidth(), view.getMeasuredHeight()); + }); }); Bundle result = new Bundle(); @@ -145,4 +152,17 @@ public class PreviewSurfaceRenderer implements IBinder.DeathRecipient { } mHostToken.unlinkToDeath(this, 0); } + + private boolean doGridMigrationIfNecessary() { + boolean needsToMigrate = + MULTI_DB_GRID_MIRATION_ALGO.get() + ? GridSizeMigrationTaskV2.needsToMigrate(mContext, mIdp) + : GridSizeMigrationTask.needsToMigrate(mContext, mIdp); + if (!needsToMigrate) { + return false; + } + return MULTI_DB_GRID_MIRATION_ALGO.get() + ? GridSizeMigrationTaskV2.migrateGridIfNeeded(mContext, mIdp) + : GridSizeMigrationTask.migrateGridIfNeeded(mContext, mIdp); + } } From 56fe9150fa1ff0a4164e1bad02d5384ac912477f Mon Sep 17 00:00:00 2001 From: vadimt Date: Thu, 25 Jun 2020 13:32:20 -0700 Subject: [PATCH 16/56] Improving diagnostics when Launcher dies during a gesture Instead of crashing upon getting uninitialized event sequence, we show a meaningful message. Bug: 159921830 Change-Id: Ie42039b39a453c60bd5df3e54058d582137bba06 --- .../launcher3/testing/DebugTestInformationHandler.java | 6 ++++++ tests/tapl/com/android/launcher3/tapl/LogEventChecker.java | 3 +++ 2 files changed, 9 insertions(+) diff --git a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java index e649ce1de4..aa3710b6d9 100644 --- a/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java +++ b/ext_tests/src/com/android/launcher3/testing/DebugTestInformationHandler.java @@ -164,6 +164,12 @@ public class DebugTestInformationHandler extends TestInformationHandler { } case TestProtocol.REQUEST_GET_TEST_EVENTS: { + if (sEvents == null) { + // sEvents can be null if Launcher died and restarted after + // REQUEST_START_EVENT_LOGGING. + return response; + } + synchronized (sEvents) { response.putStringArrayList( TestProtocol.TEST_INFO_RESPONSE_FIELD, new ArrayList<>(sEvents)); diff --git a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java index 4440b82976..2edfc53f75 100644 --- a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java +++ b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java @@ -57,6 +57,8 @@ public class LogEventChecker { while (true) { rawEvents = mLauncher.getTestInfo(TestProtocol.REQUEST_GET_TEST_EVENTS) .getStringArrayList(TestProtocol.TEST_INFO_RESPONSE_FIELD); + if (rawEvents == null) return null; + final int expectedCount = mExpectedEvents.entrySet() .stream().mapToInt(e -> e.getValue().size()).sum(); if (rawEvents.size() >= expectedCount @@ -83,6 +85,7 @@ public class LogEventChecker { String verify(long waitForExpectedCountMs, boolean successfulGesture) { final ListMap actualEvents = finishSync(waitForExpectedCountMs); + if (actualEvents == null) return "null event sequences because launcher likely died"; final StringBuilder sb = new StringBuilder(); boolean hasMismatches = false; From f957ff9123964bb421b231f40fc6d90cb514006d Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Wed, 24 Jun 2020 12:48:11 -0700 Subject: [PATCH 17/56] Do preview grid migration in a worker thread Also remove USE_SURFACE_VIEW_FOR_PREVIEW flag Fixes: 159755324 Test: manual Change-Id: I6517c34911e217a69063226b01e4583194902f9c (cherry picked from commit 633a4bdf5724517509f6d40635cd16f14452e4e8) --- .../launcher3/config/FeatureFlags.java | 3 - .../graphics/GridOptionsProvider.java | 61 ---------------- .../graphics/LauncherPreviewRenderer.java | 55 ++------------- .../graphics/PreviewSurfaceRenderer.java | 70 ++++++++++++------- 4 files changed, 50 insertions(+), 139 deletions(-) diff --git a/src/com/android/launcher3/config/FeatureFlags.java b/src/com/android/launcher3/config/FeatureFlags.java index 4f53d45c73..5c4a4922fd 100644 --- a/src/com/android/launcher3/config/FeatureFlags.java +++ b/src/com/android/launcher3/config/FeatureFlags.java @@ -138,9 +138,6 @@ public final class FeatureFlags { public static final BooleanFlag ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER = getDebugFlag( "ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER", true, "Show launcher preview in grid picker"); - public static final BooleanFlag USE_SURFACE_VIEW_FOR_GRID_PREVIEW = getDebugFlag( - "USE_SURFACE_VIEW_FOR_GRID_PREVIEW", true, "Use surface view for grid preview"); - public static final BooleanFlag ENABLE_OVERVIEW_ACTIONS = getDebugFlag( "ENABLE_OVERVIEW_ACTIONS", true, "Show app actions instead of the shelf in Overview." + " As part of this decoupling, also distinguish swipe up from nav bar vs above it."); diff --git a/src/com/android/launcher3/graphics/GridOptionsProvider.java b/src/com/android/launcher3/graphics/GridOptionsProvider.java index 9bfd5bab87..08d7e4c65e 100644 --- a/src/com/android/launcher3/graphics/GridOptionsProvider.java +++ b/src/com/android/launcher3/graphics/GridOptionsProvider.java @@ -1,21 +1,14 @@ package com.android.launcher3.graphics; -import static com.android.launcher3.config.FeatureFlags.USE_SURFACE_VIEW_FOR_GRID_PREVIEW; -import static com.android.launcher3.util.Executors.UI_HELPER_EXECUTOR; - import android.content.ContentProvider; import android.content.ContentValues; import android.content.pm.PackageManager; import android.content.res.XmlResourceParser; import android.database.Cursor; import android.database.MatrixCursor; -import android.graphics.Bitmap; import android.net.Uri; import android.os.Binder; import android.os.Bundle; -import android.os.ParcelFileDescriptor; -import android.os.ParcelFileDescriptor.AutoCloseOutputStream; -import android.text.TextUtils; import android.util.Log; import android.util.Xml; @@ -26,12 +19,10 @@ import com.android.launcher3.R; import org.xmlpull.v1.XmlPullParser; import org.xmlpull.v1.XmlPullParserException; -import java.io.FileNotFoundException; import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.concurrent.Future; /** * Exposes various launcher grid options and allows the caller to change them. @@ -62,24 +53,7 @@ public class GridOptionsProvider extends ContentProvider { private static final String KEY_LIST_OPTIONS = "/list_options"; private static final String KEY_DEFAULT_GRID = "/default_grid"; - private static final String KEY_PREVIEW = "preview"; - private static final String MIME_TYPE_PNG = "image/png"; - private static final String METHOD_GET_PREVIEW = "get_preview"; - private static final String METADATA_KEY_PREVIEW_VERSION = "preview_version"; - - public static final PipeDataWriter> BITMAP_WRITER = - new PipeDataWriter>() { - @Override - public void writeDataToPipe(ParcelFileDescriptor output, Uri uri, String s, - Bundle bundle, Future bitmap) { - try (AutoCloseOutputStream os = new AutoCloseOutputStream(output)) { - bitmap.get().compress(Bitmap.CompressFormat.PNG, 100, os); - } catch (Exception e) { - Log.w(TAG, "fail to write to pipe", e); - } - } - }; @Override public boolean onCreate() { @@ -104,10 +78,6 @@ public class GridOptionsProvider extends ContentProvider { .add(KEY_IS_DEFAULT, idp.numColumns == gridOption.numColumns && idp.numRows == gridOption.numRows); } - Bundle metadata = new Bundle(); - metadata.putString(METADATA_KEY_PREVIEW_VERSION, - USE_SURFACE_VIEW_FOR_GRID_PREVIEW.get() ? "V2" : "V1"); - cursor.setExtras(metadata); return cursor; } @@ -132,10 +102,6 @@ public class GridOptionsProvider extends ContentProvider { @Override public String getType(Uri uri) { - List segments = uri.getPathSegments(); - if (segments.size() > 0 && KEY_PREVIEW.equals(segments.get(0))) { - return MIME_TYPE_PNG; - } return "vnd.android.cursor.dir/launcher_grid"; } @@ -172,33 +138,6 @@ public class GridOptionsProvider extends ContentProvider { return 1; } - @Override - public ParcelFileDescriptor openFile(Uri uri, String mode) throws FileNotFoundException { - List segments = uri.getPathSegments(); - if (segments.size() < 2 || !KEY_PREVIEW.equals(segments.get(0))) { - throw new FileNotFoundException("Invalid preview url"); - } - String profileName = segments.get(1); - if (TextUtils.isEmpty(profileName)) { - throw new FileNotFoundException("Invalid preview url"); - } - - InvariantDeviceProfile idp; - try { - idp = new InvariantDeviceProfile(getContext(), profileName); - } catch (Exception e) { - throw new FileNotFoundException(e.getMessage()); - } - - try { - return openPipeHelper(uri, MIME_TYPE_PNG, null, - UI_HELPER_EXECUTOR.submit(new LauncherPreviewRenderer(getContext(), idp)), - BITMAP_WRITER); - } catch (Exception e) { - throw new FileNotFoundException(e.getMessage()); - } - } - @Override public Bundle call(String method, String arg, Bundle extras) { if (getContext().checkPermission("android.permission.BIND_WALLPAPER", diff --git a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java index 15f4e3fcec..885fb6698b 100644 --- a/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java +++ b/src/com/android/launcher3/graphics/LauncherPreviewRenderer.java @@ -20,7 +20,6 @@ import static android.view.View.MeasureSpec.makeMeasureSpec; import static android.view.View.VISIBLE; import static com.android.launcher3.config.FeatureFlags.ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER; -import static com.android.launcher3.config.FeatureFlags.MULTI_DB_GRID_MIRATION_ALGO; import static com.android.launcher3.model.ModelUtils.filterCurrentWorkspaceItems; import static com.android.launcher3.model.ModelUtils.getMissingHotseatRanks; import static com.android.launcher3.model.ModelUtils.sortWorkspaceItemsSpatially; @@ -34,8 +33,6 @@ import android.content.ContextWrapper; import android.content.Intent; import android.content.pm.ShortcutInfo; import android.content.res.TypedArray; -import android.graphics.Bitmap; -import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Rect; import android.graphics.drawable.AdaptiveIconDrawable; @@ -63,20 +60,16 @@ import com.android.launcher3.LauncherModel; 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.WorkspaceLayoutManager; import com.android.launcher3.allapps.SearchUiManager; import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.folder.FolderIcon; import com.android.launcher3.icons.BaseIconFactory; import com.android.launcher3.icons.BitmapInfo; -import com.android.launcher3.icons.BitmapRenderer; import com.android.launcher3.icons.LauncherIcons; import com.android.launcher3.model.AllAppsList; import com.android.launcher3.model.BgDataModel; import com.android.launcher3.model.BgDataModel.Callbacks; -import com.android.launcher3.model.GridSizeMigrationTask; -import com.android.launcher3.model.GridSizeMigrationTaskV2; import com.android.launcher3.model.LoaderResults; import com.android.launcher3.model.LoaderTask; import com.android.launcher3.model.WidgetItem; @@ -105,7 +98,6 @@ import java.util.Map; import java.util.Set; import java.util.concurrent.Callable; import java.util.concurrent.ConcurrentLinkedQueue; -import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executor; import java.util.concurrent.FutureTask; @@ -121,7 +113,7 @@ import java.util.concurrent.TimeoutException; * 4) Measure and draw the view on a canvas */ @TargetApi(Build.VERSION_CODES.O) -public class LauncherPreviewRenderer implements Callable { +public class LauncherPreviewRenderer { private static final String TAG = "LauncherPreviewRenderer"; @@ -213,15 +205,17 @@ public class LauncherPreviewRenderer implements Callable { private final Context mContext; private final InvariantDeviceProfile mIdp; private final DeviceProfile mDp; + private final boolean mMigrated; private final Rect mInsets; private final WorkspaceItemInfo mWorkspaceItemInfo; - public LauncherPreviewRenderer(Context context, InvariantDeviceProfile idp) { + public LauncherPreviewRenderer(Context context, InvariantDeviceProfile idp, boolean migrated) { mUiHandler = new Handler(Looper.getMainLooper()); mContext = context; mIdp = idp; mDp = idp.portraitProfile.copy(context); + mMigrated = migrated; // TODO: get correct insets once display cutout API is available. mInsets = new Rect(); @@ -243,28 +237,6 @@ public class LauncherPreviewRenderer implements Callable { context.getString(R.string.label_application); } - @Override - public Bitmap call() { - return BitmapRenderer.createHardwareBitmap(mDp.widthPx, mDp.heightPx, c -> { - - if (Looper.myLooper() == Looper.getMainLooper()) { - new MainThreadRenderer(mContext).renderScreenShot(c); - } else { - CountDownLatch latch = new CountDownLatch(1); - Utilities.postAsyncCallback(mUiHandler, () -> { - new MainThreadRenderer(mContext).renderScreenShot(c); - latch.countDown(); - }); - - try { - latch.await(); - } catch (Exception e) { - Log.e(TAG, "Error drawing on main thread", e); - } - } - }); - } - /** Populate preview and render it. */ public View getRenderedView() { MainThreadRenderer renderer = new MainThreadRenderer(mContext); @@ -407,20 +379,9 @@ public class LauncherPreviewRenderer implements Callable { private void populate() { if (ENABLE_LAUNCHER_PREVIEW_IN_GRID_PICKER.get()) { - boolean needsToMigrate = - MULTI_DB_GRID_MIRATION_ALGO.get() - ? GridSizeMigrationTaskV2.needsToMigrate(mContext, mIdp) - : GridSizeMigrationTask.needsToMigrate(mContext, mIdp); - boolean success = false; - if (needsToMigrate) { - success = MULTI_DB_GRID_MIRATION_ALGO.get() - ? GridSizeMigrationTaskV2.migrateGridIfNeeded(mContext, mIdp) - : GridSizeMigrationTask.migrateGridIfNeeded(mContext, mIdp); - } - WorkspaceFetcher fetcher; PreviewContext previewContext = null; - if (needsToMigrate && success) { + if (mMigrated) { previewContext = new PreviewContext(mContext, mIdp); LauncherAppState appForPreview = new LauncherAppState( previewContext, null /* iconCacheFileName */); @@ -535,12 +496,6 @@ public class LauncherPreviewRenderer implements Callable { // Additional measure for views which use auto text size API measureView(mRootView, mDp.widthPx, mDp.heightPx); } - - private void renderScreenShot(Canvas canvas) { - populate(); - mRootView.draw(canvas); - dispatchVisibilityAggregated(mRootView, false); - } } private static void measureView(View view, int width, int height) { diff --git a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java index 350f221c97..fdc3a947a3 100644 --- a/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java +++ b/src/com/android/launcher3/graphics/PreviewSurfaceRenderer.java @@ -16,7 +16,9 @@ package com.android.launcher3.graphics; +import static com.android.launcher3.config.FeatureFlags.MULTI_DB_GRID_MIRATION_ALGO; import static com.android.launcher3.util.Executors.MAIN_EXECUTOR; +import static com.android.launcher3.util.Executors.MODEL_EXECUTOR; import android.content.Context; import android.hardware.display.DisplayManager; @@ -32,6 +34,8 @@ import android.view.View; import android.view.animation.AccelerateDecelerateInterpolator; import com.android.launcher3.InvariantDeviceProfile; +import com.android.launcher3.model.GridSizeMigrationTask; +import com.android.launcher3.model.GridSizeMigrationTaskV2; import java.util.concurrent.TimeUnit; @@ -93,32 +97,35 @@ public class PreviewSurfaceRenderer implements IBinder.DeathRecipient { return null; } - MAIN_EXECUTOR.execute(() -> { - // If mSurfaceControlViewHost is null due to any reason (e.g. binder died, - // happening when user leaves the preview screen before preview rendering finishes), - // we should return here. - SurfaceControlViewHost host = mSurfaceControlViewHost; - if (host == null) { - return; - } + MODEL_EXECUTOR.post(() -> { + final boolean success = doGridMigrationIfNecessary(); - View view = new LauncherPreviewRenderer(mContext, mIdp).getRenderedView(); - // This aspect scales the view to fit in the surface and centers it - final float scale = Math.min(mWidth / (float) view.getMeasuredWidth(), - mHeight / (float) view.getMeasuredHeight()); - view.setScaleX(scale); - view.setScaleY(scale); - view.setPivotX(0); - view.setPivotY(0); - view.setTranslationX((mWidth - scale * view.getWidth()) / 2); - view.setTranslationY((mHeight - scale * view.getHeight()) / 2); - view.setAlpha(0); - view.animate().alpha(1) - .setInterpolator(new AccelerateDecelerateInterpolator()) - .setDuration(FADE_IN_ANIMATION_DURATION) - .start(); - host.setView(view, view.getMeasuredWidth(), - view.getMeasuredHeight()); + MAIN_EXECUTOR.post(() -> { + // If mSurfaceControlViewHost is null due to any reason (e.g. binder died, + // happening when user leaves the preview screen before preview rendering finishes), + // we should return here. + SurfaceControlViewHost host = mSurfaceControlViewHost; + if (host == null) { + return; + } + + View view = new LauncherPreviewRenderer(mContext, mIdp, success).getRenderedView(); + // This aspect scales the view to fit in the surface and centers it + final float scale = Math.min(mWidth / (float) view.getMeasuredWidth(), + mHeight / (float) view.getMeasuredHeight()); + view.setScaleX(scale); + view.setScaleY(scale); + view.setPivotX(0); + view.setPivotY(0); + view.setTranslationX((mWidth - scale * view.getWidth()) / 2); + view.setTranslationY((mHeight - scale * view.getHeight()) / 2); + view.setAlpha(0); + view.animate().alpha(1) + .setInterpolator(new AccelerateDecelerateInterpolator()) + .setDuration(FADE_IN_ANIMATION_DURATION) + .start(); + host.setView(view, view.getMeasuredWidth(), view.getMeasuredHeight()); + }); }); Bundle result = new Bundle(); @@ -145,4 +152,17 @@ public class PreviewSurfaceRenderer implements IBinder.DeathRecipient { } mHostToken.unlinkToDeath(this, 0); } + + private boolean doGridMigrationIfNecessary() { + boolean needsToMigrate = + MULTI_DB_GRID_MIRATION_ALGO.get() + ? GridSizeMigrationTaskV2.needsToMigrate(mContext, mIdp) + : GridSizeMigrationTask.needsToMigrate(mContext, mIdp); + if (!needsToMigrate) { + return false; + } + return MULTI_DB_GRID_MIRATION_ALGO.get() + ? GridSizeMigrationTaskV2.migrateGridIfNeeded(mContext, mIdp) + : GridSizeMigrationTask.migrateGridIfNeeded(mContext, mIdp); + } } From 6ab4da8aa0ab6edfa536a3e9931d815cd97b646d Mon Sep 17 00:00:00 2001 From: thiruram Date: Thu, 25 Jun 2020 10:13:14 -0700 Subject: [PATCH 18/56] Fixes missing folder label after launcher restarts. Rootcause: FolderInfo was persisted into DB only when folder options are updated. Hence when folder was created (Folder option remains suggested) its title was not persisted into DB. Fix: Persists folderInfo into DB always whenever title is updated Bug: 159904890 Change-Id: If0d20b0d7fa6966dd7bb40a2c07bcb22bd0893e0 --- src/com/android/launcher3/model/data/FolderInfo.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/model/data/FolderInfo.java b/src/com/android/launcher3/model/data/FolderInfo.java index 05ce06a3f7..41ccbd7054 100644 --- a/src/com/android/launcher3/model/data/FolderInfo.java +++ b/src/com/android/launcher3/model/data/FolderInfo.java @@ -226,7 +226,7 @@ public class FolderInfo extends ItemInfo { } // Updating title to same value does not change any states. - if (title != null && title == this.title) { + if (title != null && title.equals(this.title)) { return; } @@ -236,7 +236,15 @@ public class FolderInfo extends ItemInfo { : title.length() == 0 ? LabelState.EMPTY : getAcceptedSuggestionIndex().isPresent() ? LabelState.SUGGESTED : LabelState.MANUAL; - setOption(FLAG_MANUAL_FOLDER_NAME, newLabelState.equals(LabelState.MANUAL), modelWriter); + + if (newLabelState.equals(LabelState.MANUAL)) { + options |= FLAG_MANUAL_FOLDER_NAME; + } else { + options &= ~FLAG_MANUAL_FOLDER_NAME; + } + if (modelWriter != null) { + modelWriter.updateItemInDatabase(this); + } } /** From 6e7c37a2053c4334499c65b8a17dc0e85df5a54a Mon Sep 17 00:00:00 2001 From: Adam Cohen Date: Thu, 25 Jun 2020 19:22:37 -0700 Subject: [PATCH 19/56] During accessible drag, hover events were not properly getting dispatched to the DragAndDropAccessibilityDelegate => regressed in ag/10634216 which attemped to use onHoverListener => the problem is that onHoverListener is only triggered when the event is passed to the CellLayout, however, as with all dispatching, these events are handled depth first, and so in cases where a child handled the event, it would never bubble back up to the parent. => instead we have to continue to override dispatchHover event to always give presecedence to the delegate when it exists b/155956518 Change-Id: Ic3ecf1b422c1821456328035a66a2fc1277e6746 --- src/com/android/launcher3/CellLayout.java | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/com/android/launcher3/CellLayout.java b/src/com/android/launcher3/CellLayout.java index ed71ddc3b7..89d768c302 100644 --- a/src/com/android/launcher3/CellLayout.java +++ b/src/com/android/launcher3/CellLayout.java @@ -182,7 +182,7 @@ public class CellLayout extends ViewGroup { private static final Paint sPaint = new Paint(); // Related to accessible drag and drop - private boolean mUseTouchHelper = false; + DragAndDropAccessibilityDelegate mTouchHelper; public CellLayout(Context context) { this(context, null); @@ -290,17 +290,15 @@ public class CellLayout extends ViewGroup { addView(mShortcutsAndWidgets); } - /** * Sets or clears a delegate used for accessible drag and drop */ public void setDragAndDropAccessibilityDelegate(DragAndDropAccessibilityDelegate delegate) { setOnClickListener(delegate); - setOnHoverListener(delegate); ViewCompat.setAccessibilityDelegate(this, delegate); - mUseTouchHelper = delegate != null; - int accessibilityFlag = mUseTouchHelper + mTouchHelper = delegate; + int accessibilityFlag = mTouchHelper != null ? IMPORTANT_FOR_ACCESSIBILITY_YES : IMPORTANT_FOR_ACCESSIBILITY_NO; setImportantForAccessibility(accessibilityFlag); getShortcutsAndWidgets().setImportantForAccessibility(accessibilityFlag); @@ -312,10 +310,19 @@ public class CellLayout extends ViewGroup { } } + @Override + public boolean dispatchHoverEvent(MotionEvent event) { + // Always attempt to dispatch hover events to accessibility first. + if (mTouchHelper != null && mTouchHelper.dispatchHoverEvent(event)) { + return true; + } + return super.dispatchHoverEvent(event); + } + @Override public boolean onInterceptTouchEvent(MotionEvent ev) { - if (mUseTouchHelper || - (mInterceptTouchListener != null && mInterceptTouchListener.onTouch(this, ev))) { + if (mTouchHelper != null + || (mInterceptTouchListener != null && mInterceptTouchListener.onTouch(this, ev))) { return true; } return false; From 54003963d83208c3f3579d27f5eebe2097cb9c3f Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Fri, 26 Jun 2020 10:11:24 -0700 Subject: [PATCH 20/56] Fix velocity in StaggeredWorkspaceAnimation. * Velocity should match the direction of the spring values. (Swipe direction is upwards, but icons move downwards on screen). * Remove additional conversion to pxPerS since getDimension already does that. Bug: 160003774 Change-Id: I12912edb2354c4a30c538da6ca3789c46d82b94d --- .../com/android/quickstep/util/StaggeredWorkspaceAnim.java | 6 ++++-- .../launcher3/QuickstepAppTransitionManagerImpl.java | 7 +------ res/values/config.xml | 2 +- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java index 3cafd423ca..41203319b1 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/StaggeredWorkspaceAnim.java @@ -205,13 +205,15 @@ public class StaggeredWorkspaceAnim { ResourceProvider rp = DynamicResource.provider(v.getContext()); float stiffness = rp.getFloat(R.dimen.staggered_stiffness); float damping = rp.getFloat(R.dimen.staggered_damping_ratio); + float endTransY = 0; + float springVelocity = Math.abs(mVelocity) * Math.signum(endTransY - mSpringTransY); ValueAnimator springTransY = new SpringAnimationBuilder(v.getContext()) .setStiffness(stiffness) .setDampingRatio(damping) .setMinimumVisibleChange(1f) .setStartValue(mSpringTransY) - .setEndValue(0) - .setStartVelocity(mVelocity) + .setEndValue(endTransY) + .setStartVelocity(springVelocity) .build(v, VIEW_TRANSLATE_Y); springTransY.setStartDelay(startDelay); springTransY.addListener(new AnimatorListenerAdapter() { diff --git a/quickstep/src/com/android/launcher3/QuickstepAppTransitionManagerImpl.java b/quickstep/src/com/android/launcher3/QuickstepAppTransitionManagerImpl.java index fe7b946ef4..bd97f650dd 100644 --- a/quickstep/src/com/android/launcher3/QuickstepAppTransitionManagerImpl.java +++ b/quickstep/src/com/android/launcher3/QuickstepAppTransitionManagerImpl.java @@ -16,8 +16,6 @@ package com.android.launcher3; -import static android.util.TypedValue.COMPLEX_UNIT_DIP; - import static com.android.launcher3.BaseActivity.INVISIBLE_ALL; import static com.android.launcher3.BaseActivity.INVISIBLE_BY_APP_TRANSITIONS; import static com.android.launcher3.BaseActivity.INVISIBLE_BY_PENDING_FLAGS; @@ -62,7 +60,6 @@ import android.os.CancellationSignal; import android.os.Handler; import android.os.Looper; import android.util.Pair; -import android.util.TypedValue; import android.view.View; import androidx.annotation.NonNull; @@ -875,10 +872,8 @@ public abstract class QuickstepAppTransitionManagerImpl extends LauncherAppTrans } }); } else { - float velocityDpPerS = DynamicResource.provider(mLauncher) + float velocityPxPerS = DynamicResource.provider(mLauncher) .getDimension(R.dimen.unlock_staggered_velocity_dp_per_s); - float velocityPxPerS = TypedValue.applyDimension(COMPLEX_UNIT_DIP, - velocityDpPerS, mLauncher.getResources().getDisplayMetrics()); anim.play(new StaggeredWorkspaceAnim(mLauncher, velocityPxPerS, false) .getAnimators()); } diff --git a/res/values/config.xml b/res/values/config.xml index ca253259e4..75fcc907db 100644 --- a/res/values/config.xml +++ b/res/values/config.xml @@ -142,7 +142,7 @@ 0.7 150 - 3dp + 4dp 0.7 200 From a190dc1f40e6305f35a422f017cbb41ab40a31be Mon Sep 17 00:00:00 2001 From: vadimt Date: Mon, 4 May 2020 11:32:21 -0700 Subject: [PATCH 21/56] Zero tolerance towards referred destroyed activities After a framework fix, we are not allowing rooted destroyed activities at all. Bug: 139137636 Change-Id: I0dda200db438e1a1b5587636ee08f65300dfa6d1 --- .../android/launcher3/ui/ActivityLeakTracker.java | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/tests/src/com/android/launcher3/ui/ActivityLeakTracker.java b/tests/src/com/android/launcher3/ui/ActivityLeakTracker.java index 202dcb181f..dd216c7816 100644 --- a/tests/src/com/android/launcher3/ui/ActivityLeakTracker.java +++ b/tests/src/com/android/launcher3/ui/ActivityLeakTracker.java @@ -73,20 +73,12 @@ public class ActivityLeakTracker implements Application.ActivityLifecycleCallbac } public boolean noLeakedActivities() { - int liveActivities = 0; - int destroyedActivities = 0; - for (Activity activity : mActivities.keySet()) { if (activity.isDestroyed()) { - ++destroyedActivities; - } else { - ++liveActivities; + return false; } } - if (liveActivities > 2) return false; - - // It's OK to have 1 leaked activity if no active activities exist. - return liveActivities == 0 ? destroyedActivities <= 1 : destroyedActivities == 0; + return mActivities.size() <= 2; } } From fabfb3ae90524fef748ed35e6edf578a20789689 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Fri, 26 Jun 2020 17:02:47 -0700 Subject: [PATCH 22/56] Using original taskInfo to create the taskKey instead of fake data Change-Id: Ie4e35b35484e0f6cb939febe6357b37381d81682 --- .../AppToOverviewAnimationProvider.java | 12 +++++---- .../quickstep/BaseSwipeUpHandlerV2.java | 2 +- .../quickstep/OverviewCommandHelper.java | 2 +- .../fallback/FallbackRecentsView.java | 9 ++++--- .../android/quickstep/views/RecentsView.java | 25 +++++++++---------- .../quickstep/RecentsActivityTest.java | 8 ++++-- .../com/android/quickstep/RecentsModel.java | 13 +++------- 7 files changed, 35 insertions(+), 36 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/AppToOverviewAnimationProvider.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/AppToOverviewAnimationProvider.java index de83caf162..9310685e30 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/AppToOverviewAnimationProvider.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/AppToOverviewAnimationProvider.java @@ -24,6 +24,7 @@ import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.MOD import android.animation.Animator; import android.animation.AnimatorSet; +import android.app.ActivityManager.RunningTaskInfo; import android.util.Log; import android.view.animation.Interpolator; @@ -52,17 +53,17 @@ final class AppToOverviewAnimationProvider> extend private final BaseActivityInterface mActivityInterface; // The id of the currently running task that is transitioning to overview. - private final int mTargetTaskId; + private final RunningTaskInfo mTargetTask; private final RecentsAnimationDeviceState mDeviceState; private T mActivity; private RecentsView mRecentsView; AppToOverviewAnimationProvider( - BaseActivityInterface activityInterface, int targetTaskId, + BaseActivityInterface activityInterface, RunningTaskInfo targetTask, RecentsAnimationDeviceState deviceState) { mActivityInterface = activityInterface; - mTargetTaskId = targetTaskId; + mTargetTask = targetTask; mDeviceState = deviceState; } @@ -73,7 +74,7 @@ final class AppToOverviewAnimationProvider> extend * @param wasVisible true if it was visible before */ boolean onActivityReady(T activity, Boolean wasVisible) { - activity.getOverviewPanel().showCurrentTask(mTargetTaskId); + activity.getOverviewPanel().showCurrentTask(mTargetTask); AbstractFloatingView.closeAllOpenViews(activity, wasVisible); BaseActivityInterface.AnimationFactory factory = mActivityInterface.prepareRecentsUI( mDeviceState, @@ -122,7 +123,8 @@ final class AppToOverviewAnimationProvider> extend wallpaperTargets, MODE_CLOSING); // Use the top closing app to determine the insets for the animation - RemoteAnimationTargetCompat runningTaskTarget = targets.findTask(mTargetTaskId); + RemoteAnimationTargetCompat runningTaskTarget = mTargetTask == null ? null + : targets.findTask(mTargetTask.taskId); if (runningTaskTarget == null) { Log.e(TAG, "No closing app"); return pa.buildAnim(); diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java index 37aa0dadd2..024599222f 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java @@ -421,7 +421,7 @@ public abstract class BaseSwipeUpHandlerV2, Q exte } protected void notifyGestureAnimationStartToRecents() { - mRecentsView.onGestureAnimationStart(mGestureState.getRunningTaskId()); + mRecentsView.onGestureAnimationStart(mGestureState.getRunningTask()); } private void launcherFrameDrawn() { diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/OverviewCommandHelper.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/OverviewCommandHelper.java index 434a929b5c..4879db7897 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/OverviewCommandHelper.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/OverviewCommandHelper.java @@ -165,7 +165,7 @@ public class OverviewCommandHelper { mActivityInterface = mOverviewComponentObserver.getActivityInterface(); mCreateTime = SystemClock.elapsedRealtime(); mAnimationProvider = new AppToOverviewAnimationProvider<>(mActivityInterface, - RecentsModel.getRunningTaskId(), mDeviceState); + ActivityManagerWrapper.getInstance().getRunningTask(), mDeviceState); // Preload the plan mRecentsModel.getTasks(null); diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/fallback/FallbackRecentsView.java index d20bbe9780..ffe9d6aed9 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/fallback/FallbackRecentsView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/fallback/FallbackRecentsView.java @@ -76,7 +76,7 @@ public class FallbackRecentsView extends RecentsView */ public void onGestureAnimationStartOnHome(RunningTaskInfo homeTaskInfo) { mHomeTaskInfo = homeTaskInfo; - onGestureAnimationStart(homeTaskInfo == null ? -1 : homeTaskInfo.taskId); + onGestureAnimationStart(homeTaskInfo); } /** @@ -107,14 +107,15 @@ public class FallbackRecentsView extends RecentsView } @Override - protected boolean shouldAddDummyTaskView(int runningTaskId) { - if (mHomeTaskInfo != null && mHomeTaskInfo.taskId == runningTaskId + protected boolean shouldAddDummyTaskView(RunningTaskInfo runningTaskInfo) { + if (mHomeTaskInfo != null && runningTaskInfo != null && + mHomeTaskInfo.taskId == runningTaskInfo.taskId && getTaskViewCount() == 0) { // Do not add a dummy task if we are running over home with empty recents, so that we // show the empty recents message instead of showing a dummy task and later removing it. return false; } - return super.shouldAddDummyTaskView(runningTaskId); + return super.shouldAddDummyTaskView(runningTaskInfo); } @Override diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java index 68b89758ef..1a9bb85e69 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java @@ -56,6 +56,7 @@ import android.animation.ObjectAnimator; import android.animation.ValueAnimator; import android.annotation.TargetApi; import android.app.ActivityManager; +import android.app.ActivityManager.RunningTaskInfo; import android.content.ComponentName; import android.content.Context; import android.content.Intent; @@ -135,6 +136,7 @@ import com.android.quickstep.util.TransformParams; import com.android.systemui.plugins.ResourceProvider; import com.android.systemui.shared.recents.IPinnedStackAnimationListener; import com.android.systemui.shared.recents.model.Task; +import com.android.systemui.shared.recents.model.Task.TaskKey; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.LauncherEventUtil; @@ -147,7 +149,7 @@ import java.util.function.Consumer; /** * A list of recent tasks. */ -@TargetApi(Build.VERSION_CODES.P) +@TargetApi(Build.VERSION_CODES.R) public abstract class RecentsView extends PagedView implements Insettable, TaskThumbnailCache.HighResLoadingState.HighResLoadingStateChangedCallback, InvariantDeviceProfile.OnIDPChangeListener, TaskVisualsChangeListener, @@ -1039,10 +1041,10 @@ public abstract class RecentsView extends PagedView /** * Called when a gesture from an app is starting. */ - public void onGestureAnimationStart(int runningTaskId) { + public void onGestureAnimationStart(RunningTaskInfo runningTaskInfo) { // This needs to be called before the other states are set since it can create the task view mOrientationState.setGestureActive(true); - showCurrentTask(runningTaskId); + showCurrentTask(runningTaskInfo); setEnableFreeScroll(false); setEnableDrawingLiveTile(false); setRunningTaskHidden(true); @@ -1120,8 +1122,8 @@ public abstract class RecentsView extends PagedView /** * Returns true if we should add a dummy taskView for the running task id */ - protected boolean shouldAddDummyTaskView(int runningTaskId) { - return getTaskView(runningTaskId) == null; + protected boolean shouldAddDummyTaskView(RunningTaskInfo runningTaskInfo) { + return runningTaskInfo != null && getTaskView(runningTaskInfo.taskId) == null; } /** @@ -1130,8 +1132,8 @@ public abstract class RecentsView extends PagedView * All subsequent calls to reload will keep the task as the first item until {@link #reset()} * is called. Also scrolls the view to this task. */ - public void showCurrentTask(int runningTaskId) { - if (shouldAddDummyTaskView(runningTaskId)) { + public void showCurrentTask(RunningTaskInfo runningTaskInfo) { + if (shouldAddDummyTaskView(runningTaskInfo)) { boolean wasEmpty = getChildCount() == 0; // Add an empty view for now until the task plan is loaded and applied final TaskView taskView = mTaskViewPool.getView(); @@ -1141,10 +1143,7 @@ public abstract class RecentsView extends PagedView } // The temporary running task is only used for the duration between the start of the // gesture and the task list is loaded and applied - mTmpRunningTask = new Task(new Task.TaskKey(runningTaskId, 0, new Intent(), - new ComponentName(getContext(), getClass()), 0, 0), null, null, "", "", 0, 0, - false, true, false, false, new ActivityManager.TaskDescription(), 0, - new ComponentName("", ""), false); + mTmpRunningTask = Task.from(new TaskKey(runningTaskInfo), runningTaskInfo, false); taskView.bind(mTmpRunningTask, mOrientationState); // Measure and layout immediately so that the scroll values is updated instantly @@ -1155,7 +1154,7 @@ public abstract class RecentsView extends PagedView } boolean runningTaskTileHidden = mRunningTaskTileHidden; - setCurrentTask(runningTaskId); + setCurrentTask(runningTaskInfo == null ? -1 : runningTaskInfo.taskId); setCurrentPage(getRunningTaskIndex()); setRunningTaskViewShowScreenshot(false); setRunningTaskHidden(runningTaskTileHidden); @@ -1673,7 +1672,7 @@ public abstract class RecentsView extends PagedView : View.LAYOUT_DIRECTION_RTL); mClearAllButton.setRotation(mOrientationHandler.getDegreesRotated()); mActivity.getDragLayer().recreateControllers(); - boolean isInLandscape = mOrientationState.getTouchRotation() != 0 + boolean isInLandscape = mOrientationState.getTouchRotation() != ROTATION_0 || mOrientationState.getRecentsActivityRotation() != ROTATION_0; mActionsView.updateHiddenFlags(HIDDEN_NON_ZERO_ROTATION, !mOrientationState.canRecentsActivityRotate() && isInLandscape); diff --git a/quickstep/robolectric_tests/src/com/android/quickstep/RecentsActivityTest.java b/quickstep/robolectric_tests/src/com/android/quickstep/RecentsActivityTest.java index 93b64e666c..c148a4b6fe 100644 --- a/quickstep/robolectric_tests/src/com/android/quickstep/RecentsActivityTest.java +++ b/quickstep/robolectric_tests/src/com/android/quickstep/RecentsActivityTest.java @@ -17,6 +17,7 @@ package com.android.quickstep; import static com.android.launcher3.util.LauncherUIHelper.doLayout; +import android.app.ActivityManager.RunningTaskInfo; import android.graphics.Bitmap; import android.graphics.Bitmap.Config; @@ -50,7 +51,7 @@ public class RecentsActivityTest { } @Test - public void testRecets_showCurrentTask() { + public void testRecents_showCurrentTask() { ActivityController controller = Robolectric.buildActivity(RecentsActivity.class); @@ -58,7 +59,10 @@ public class RecentsActivityTest { doLayout(activity); FallbackRecentsView frv = activity.getOverviewPanel(); - frv.showCurrentTask(22); + + RunningTaskInfo dummyTask = new RunningTaskInfo(); + dummyTask.taskId = 22; + frv.showCurrentTask(dummyTask); doLayout(activity); ThumbnailData thumbnailData = new ThumbnailData(); diff --git a/quickstep/src/com/android/quickstep/RecentsModel.java b/quickstep/src/com/android/quickstep/RecentsModel.java index 517501ad9c..6f54ba2935 100644 --- a/quickstep/src/com/android/quickstep/RecentsModel.java +++ b/quickstep/src/com/android/quickstep/RecentsModel.java @@ -92,15 +92,6 @@ public class RecentsModel extends TaskStackChangeListener { return mTaskList.getTasks(false /* loadKeysOnly */, callback); } - /** - * @return The task id of the running task, or -1 if there is no current running task. - */ - public static int getRunningTaskId() { - ActivityManager.RunningTaskInfo runningTask = - ActivityManagerWrapper.getInstance().getRunningTask(); - return runningTask != null ? runningTask.id : -1; - } - /** * @return Whether the provided {@param changeId} is the latest recent tasks list id. */ @@ -140,7 +131,9 @@ public class RecentsModel extends TaskStackChangeListener { } // Keep the cache up to date with the latest thumbnails - int runningTaskId = RecentsModel.getRunningTaskId(); + ActivityManager.RunningTaskInfo runningTask = + ActivityManagerWrapper.getInstance().getRunningTask(); + int runningTaskId = runningTask != null ? runningTask.id : -1; mTaskList.getTaskKeys(mThumbnailCache.getCacheSize(), tasks -> { for (Task task : tasks) { if (task.key.id == runningTaskId) { From a3629bd52c751b1129815baea031b7d6b8092453 Mon Sep 17 00:00:00 2001 From: Zak Cohen Date: Sun, 28 Jun 2020 20:34:48 -0700 Subject: [PATCH 23/56] Thumbnail Cache - check canceled status on the right thread. The cache was checking the canceled status on the background thread, but the cancel call was being made on the main thread. This was leading to canceled requests still delivering this thumbnail in some cases. Bug: 159840851 Test: local build and non-repo of bug Change-Id: I9a3556f6570eee1db39ebec202c115d58010d7f8 --- .../src/com/android/quickstep/TaskThumbnailCache.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/quickstep/src/com/android/quickstep/TaskThumbnailCache.java b/quickstep/src/com/android/quickstep/TaskThumbnailCache.java index ace674383e..2b7a8ec250 100644 --- a/quickstep/src/com/android/quickstep/TaskThumbnailCache.java +++ b/quickstep/src/com/android/quickstep/TaskThumbnailCache.java @@ -166,11 +166,13 @@ public class TaskThumbnailCache { public void run() { ThumbnailData thumbnail = ActivityManagerWrapper.getInstance().getTaskThumbnail( key.id, lowResolution); - if (isCanceled()) { - // We don't call back to the provided callback in this case - return; - } + MAIN_EXECUTOR.execute(() -> { + if (isCanceled()) { + // We don't call back to the provided callback in this case + return; + } + mCache.put(key, thumbnail); callback.accept(thumbnail); onEnd(); From 37bda2bcc9d0a5967e1c2409a3753c6a82489eca Mon Sep 17 00:00:00 2001 From: Hyunyoung Song Date: Mon, 29 Jun 2020 00:22:09 -0700 Subject: [PATCH 24/56] Disable auto correct/suggest on folder edit text Bug: 160075575 TL;DR;; displayCompletions still work Change-Id: I0a7cd06d25ae3976371be0707a2783702b92e8cc --- src/com/android/launcher3/folder/Folder.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/folder/Folder.java b/src/com/android/launcher3/folder/Folder.java index d01e189f7e..1c18402932 100644 --- a/src/com/android/launcher3/folder/Folder.java +++ b/src/com/android/launcher3/folder/Folder.java @@ -241,9 +241,9 @@ public class Folder extends AbstractFloatingView implements ClipPathView, DragSo mFolderName.setSelectAllOnFocus(true); mFolderName.setInputType(mFolderName.getInputType() & ~InputType.TYPE_TEXT_FLAG_AUTO_CORRECT - & ~InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS + | InputType.TYPE_TEXT_FLAG_NO_SUGGESTIONS | InputType.TYPE_TEXT_FLAG_CAP_WORDS); - mFolderName.forceDisableSuggestions(!FeatureFlags.FOLDER_NAME_SUGGEST.get()); + mFolderName.forceDisableSuggestions(true); mFooter = findViewById(R.id.folder_footer); From 53925ff9c6558e330aed20a2e406d68474a41247 Mon Sep 17 00:00:00 2001 From: thiruram Date: Mon, 29 Jun 2020 10:47:14 -0700 Subject: [PATCH 25/56] Fixes NPE with system shortcuts. Bug: 160109140 Change-Id: I35c00fc1792fcf11fc61e1876f9184bd5fb309ce --- .../PredictionUiStateManager.java | 25 +++++++++++-------- .../HotseatPredictionController.java | 8 ++++-- 2 files changed, 21 insertions(+), 12 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java index 5e54cd292f..a0f6b044ba 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/appprediction/PredictionUiStateManager.java @@ -52,7 +52,6 @@ import com.android.launcher3.util.MainThreadInitializedObject; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.OptionalInt; import java.util.stream.IntStream; @@ -315,16 +314,22 @@ public class PredictionUiStateManager implements StateListener, * {@link LauncherSettings.Favorites#ITEM_TYPE_DEEP_SHORTCUT} */ public OptionalInt getAllAppsRank(@Nullable ItemInfo itemInfo) { - Optional componentKey = Optional.ofNullable(itemInfo) - .filter(item -> item.itemType == ITEM_TYPE_APPLICATION - || item.itemType == ITEM_TYPE_SHORTCUT - || item.itemType == ITEM_TYPE_DEEP_SHORTCUT) - .map(ItemInfo::getTargetComponent) - .map(componentName -> new ComponentKey(componentName, itemInfo.user)); + if (itemInfo == null || itemInfo.getTargetComponent() == null || itemInfo.user == null) { + return OptionalInt.empty(); + } - return componentKey.map(key -> IntStream.range(0, getCurrentState().apps.size()) - .filter(index -> key.equals(getCurrentState().apps.get(index).getComponentKey())) - .findFirst()).orElseGet(OptionalInt::empty); + if (itemInfo.itemType == ITEM_TYPE_APPLICATION + || itemInfo.itemType == ITEM_TYPE_SHORTCUT + || itemInfo.itemType == ITEM_TYPE_DEEP_SHORTCUT) { + ComponentKey key = new ComponentKey(itemInfo.getTargetComponent(), + itemInfo.user); + final List apps = getCurrentState().apps; + return IntStream.range(0, apps.size()) + .filter(index -> key.equals(apps.get(index).getComponentKey())) + .findFirst(); + } + + return OptionalInt.empty(); } /** diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java index 1dbb9e2d6b..987cd0fcf6 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java @@ -655,11 +655,15 @@ public class HotseatPredictionController implements DragController.DragListener, + ",launchLocation:" + itemInfo.container); } - final ComponentKey k = new ComponentKey(itemInfo.getTargetComponent(), itemInfo.user); + if (itemInfo.getTargetComponent() == null || itemInfo.user == null) { + return; + } + + final ComponentKey key = new ComponentKey(itemInfo.getTargetComponent(), itemInfo.user); final List predictedApps = new ArrayList<>(mComponentKeyMappers); OptionalInt rank = IntStream.range(0, predictedApps.size()) - .filter((i) -> k.equals(predictedApps.get(i).getComponentKey())) + .filter(index -> key.equals(predictedApps.get(index).getComponentKey())) .findFirst(); if (!rank.isPresent()) { return; From 84b848ad5d993ff47ad3c0fdd0b70aa12f0de213 Mon Sep 17 00:00:00 2001 From: Jon Miranda Date: Mon, 29 Jun 2020 17:39:42 -0700 Subject: [PATCH 26/56] Fix all apps edu in landscape. * Fix bug where All Apps not visible during hint animation. * Fix bug where All Apps is empty after hint animation. Bug: 160122854 Change-Id: Id4106a6200df2845b3c041d5aae14fb83c94b4d4 --- .../com/android/quickstep/views/AllAppsEduView.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/AllAppsEduView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/AllAppsEduView.java index 0979c071bb..3d44eb613d 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/AllAppsEduView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/AllAppsEduView.java @@ -16,6 +16,7 @@ package com.android.quickstep.views; import static com.android.launcher3.LauncherState.ALL_APPS; +import static com.android.launcher3.LauncherState.NORMAL; import static com.android.launcher3.anim.Interpolators.ACCEL; import static com.android.launcher3.anim.Interpolators.FAST_OUT_SLOW_IN; import static com.android.launcher3.anim.Interpolators.LINEAR; @@ -42,8 +43,10 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.Launcher; import com.android.launcher3.R; import com.android.launcher3.Utilities; +import com.android.launcher3.allapps.AllAppsTransitionController; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.Interpolators; +import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.dragndrop.DragLayer; import com.android.launcher3.states.StateAnimationConfig; import com.android.launcher3.util.Themes; @@ -139,7 +142,12 @@ public class AllAppsEduView extends AbstractFloatingView { config.userControlled = false; AnimatorPlaybackController stateAnimationController = mLauncher.getStateManager().createAnimationToNewWorkspace(ALL_APPS, config); - float maxAllAppsProgress = 0.15f; + float maxAllAppsProgress = mLauncher.getDeviceProfile().isLandscape ? 0.35f : 0.15f; + + AllAppsTransitionController allAppsController = mLauncher.getAllAppsController(); + PendingAnimation allAppsAlpha = new PendingAnimation(config.duration); + allAppsController.setAlphas(ALL_APPS, config, allAppsAlpha); + mAnimation.play(allAppsAlpha.buildAnim()); ValueAnimator intro = ValueAnimator.ofFloat(0, 1f); intro.setInterpolator(LINEAR); @@ -191,7 +199,8 @@ public class AllAppsEduView extends AbstractFloatingView { @Override public void onAnimationEnd(Animator animation) { mAnimation = null; - stateAnimationController.dispatchOnCancel(); + // Handles cancelling the animation used to hint towards All Apps. + mLauncher.getStateManager().goToState(NORMAL, false); handleClose(false); } }); From 1af70f2729e1001d23783c183d98ce76cca7438c Mon Sep 17 00:00:00 2001 From: vadimt Date: Tue, 30 Jun 2020 11:50:49 -0700 Subject: [PATCH 27/56] Add logging for non-sending "end scrolled" event for Widgets Bug: 160238801 Change-Id: I60a1cb689110c5b22b0a145b3cca7d47d867005e --- .../android/launcher3/BaseRecyclerView.java | 16 +++++++- .../compat/AccessibilityManagerCompat.java | 3 ++ .../launcher3/testing/TestProtocol.java | 1 + .../launcher3/views/BaseDragLayer.java | 3 ++ .../launcher3/widget/WidgetsFullSheet.java | 11 ++++++ .../launcher3/widget/WidgetsRecyclerView.java | 38 ++++++++++++++++++- 6 files changed, 69 insertions(+), 3 deletions(-) diff --git a/src/com/android/launcher3/BaseRecyclerView.java b/src/com/android/launcher3/BaseRecyclerView.java index 8eceec04ec..41eeb78bc7 100644 --- a/src/com/android/launcher3/BaseRecyclerView.java +++ b/src/com/android/launcher3/BaseRecyclerView.java @@ -183,6 +183,10 @@ public abstract class BaseRecyclerView extends RecyclerView { public void onScrollStateChanged(int state) { super.onScrollStateChanged(state); + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "onScrollStateChanged: " + state); + } + if (state == SCROLL_STATE_IDLE) { AccessibilityManagerCompat.sendScrollFinishedEventToTest(getContext()); } @@ -192,6 +196,10 @@ public abstract class BaseRecyclerView extends RecyclerView { public void onInitializeAccessibilityNodeInfo(AccessibilityNodeInfo info) { super.onInitializeAccessibilityNodeInfo(info); if (isLayoutSuppressed()) info.setScrollable(false); + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, + "onInitializeAccessibilityNodeInfo, scrollable: " + info.isScrollable()); + } } @Override @@ -199,8 +207,12 @@ public abstract class BaseRecyclerView extends RecyclerView { final boolean changing = frozen != isLayoutSuppressed(); super.setLayoutFrozen(frozen); if (changing) { - ActivityContext.lookupContext(getContext()).getDragLayer() - .sendAccessibilityEvent(TYPE_WINDOW_CONTENT_CHANGED); + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "setLayoutFrozen " + frozen + + " @ " + Log.getStackTraceString(new Throwable())); + ActivityContext.lookupContext(getContext()).getDragLayer() + .sendAccessibilityEvent(TYPE_WINDOW_CONTENT_CHANGED); + } } } } \ No newline at end of file diff --git a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java index 1d32d1dfa2..737c97b1bc 100644 --- a/src/com/android/launcher3/compat/AccessibilityManagerCompat.java +++ b/src/com/android/launcher3/compat/AccessibilityManagerCompat.java @@ -75,6 +75,9 @@ public class AccessibilityManagerCompat { } public static void sendScrollFinishedEventToTest(Context context) { + if (TestProtocol.sDebugTracing) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "sendScrollFinishedEventToTest"); + } final AccessibilityManager accessibilityManager = getAccessibilityManagerForTest(context); if (accessibilityManager == null) return; diff --git a/src/com/android/launcher3/testing/TestProtocol.java b/src/com/android/launcher3/testing/TestProtocol.java index 8165627448..2644db8f3c 100644 --- a/src/com/android/launcher3/testing/TestProtocol.java +++ b/src/com/android/launcher3/testing/TestProtocol.java @@ -107,4 +107,5 @@ public final class TestProtocol { public static final String PAUSE_NOT_DETECTED = "b/139891609"; public static final String OVERIEW_NOT_ALLAPPS = "b/156095088"; public static final String NO_SWIPE_TO_HOME = "b/158017601"; + public static final String NO_SCROLL_END_WIDGETS = "b/160238801"; } diff --git a/src/com/android/launcher3/views/BaseDragLayer.java b/src/com/android/launcher3/views/BaseDragLayer.java index b010b4b94b..2c75c74827 100644 --- a/src/com/android/launcher3/views/BaseDragLayer.java +++ b/src/com/android/launcher3/views/BaseDragLayer.java @@ -292,6 +292,9 @@ public abstract class BaseDragLayer @Override public boolean dispatchTouchEvent(MotionEvent ev) { + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "BaseDragLayer: " + ev); + } switch (ev.getAction()) { case ACTION_DOWN: { if ((mTouchDispatchState & TOUCH_DISPATCHING_TO_VIEW_IN_PROGRESS) != 0) { diff --git a/src/com/android/launcher3/widget/WidgetsFullSheet.java b/src/com/android/launcher3/widget/WidgetsFullSheet.java index 68a3ec51ee..ba55f5adee 100644 --- a/src/com/android/launcher3/widget/WidgetsFullSheet.java +++ b/src/com/android/launcher3/widget/WidgetsFullSheet.java @@ -24,6 +24,7 @@ import android.animation.PropertyValuesHolder; import android.content.Context; import android.graphics.Rect; import android.util.AttributeSet; +import android.util.Log; import android.util.Pair; import android.view.LayoutInflater; import android.view.MotionEvent; @@ -38,8 +39,10 @@ import com.android.launcher3.Launcher; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherAppWidgetHost.ProviderChangedListener; import com.android.launcher3.R; +import com.android.launcher3.Utilities; import com.android.launcher3.anim.PendingAnimation; import com.android.launcher3.compat.AccessibilityManagerCompat; +import com.android.launcher3.testing.TestProtocol; import com.android.launcher3.views.RecyclerViewFastScroller; import com.android.launcher3.views.TopRoundedCornerView; @@ -68,6 +71,14 @@ public class WidgetsFullSheet extends BaseWidgetSheet } + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "WidgetsFullSheet: " + ev); + } + return super.dispatchTouchEvent(ev); + } + public WidgetsFullSheet(Context context, AttributeSet attrs) { this(context, attrs, 0); } diff --git a/src/com/android/launcher3/widget/WidgetsRecyclerView.java b/src/com/android/launcher3/widget/WidgetsRecyclerView.java index 82d4110e85..17baa271e2 100644 --- a/src/com/android/launcher3/widget/WidgetsRecyclerView.java +++ b/src/com/android/launcher3/widget/WidgetsRecyclerView.java @@ -158,13 +158,23 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch mScrollbar.isHitInParent(e.getX(), e.getY(), mFastScrollerOffset); } if (mTouchDownOnScroller) { - return mScrollbar.handleTouchEvent(e, mFastScrollerOffset); + final boolean result = mScrollbar.handleTouchEvent(e, mFastScrollerOffset); + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "onInterceptTouchEvent 1 " + result); + } + return result; + } + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "onInterceptTouchEvent 2 false"); } return false; } @Override public void onTouchEvent(RecyclerView rv, MotionEvent e) { + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "WidgetsRecyclerView.onTouchEvent"); + } if (mTouchDownOnScroller) { mScrollbar.handleTouchEvent(e, mFastScrollerOffset); } @@ -172,5 +182,31 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch @Override public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) { + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "onRequestDisallowInterceptTouchEvent " + + disallowIntercept); + } + } + + @Override + public boolean dispatchTouchEvent(MotionEvent ev) { + final boolean result = super.dispatchTouchEvent(ev); + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "WidgetsRecyclerView: state: " + + getScrollState() + + " can scroll: " + getLayoutManager().canScrollVertically() + + " result: " + result + + " layout suppressed: " + isLayoutSuppressed() + + " event: " + ev); + } + return result; + } + + @Override + public void stopNestedScroll() { + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "stopNestedScroll"); + } + super.stopNestedScroll(); } } \ No newline at end of file From 3bf889a02fbaf01c72f6e9a1df9962f66fe8cd98 Mon Sep 17 00:00:00 2001 From: Pinyao Ting Date: Tue, 30 Jun 2020 16:43:51 -0700 Subject: [PATCH 28/56] Fixes the issue Launcher state propagation is slower than onDeferredResume. There's currently a bug prevents Launcher release drag lock for two step widgets. Supposedly, onDeferredResume should release the drag lock; However, in 3-button navigation mode, the transition from Overview -> Normal is triggered in Launcher#onNewIntent, which happens after onDeferredResume. This issue is not reproducible with gesture navigation because its transition from Overview -> Normal is handled in NavBarToHomeTouchController Test: manual verified with following steps 1. Enable 3-button navigation 2. Long press in WorkSpace -> Widgets 3. Drag Settings Widget to WorkSpace 4. When the config activity is shown, press "recents" button to see Overview 5. press "home" button to go back to workspace 6. repeat 2 and 3, verify the widget can be dragged Bug: 149659788 Change-Id: I396ffa8a7db44bf3872a10de4208340a99a7efe8 --- .../src/com/android/launcher3/BaseQuickstepLauncher.java | 6 ++++++ src/com/android/launcher3/Launcher.java | 4 +++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java index 47ce320331..6b941be471 100644 --- a/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java +++ b/quickstep/src/com/android/launcher3/BaseQuickstepLauncher.java @@ -157,6 +157,12 @@ public abstract class BaseQuickstepLauncher extends Launcher @Override protected void onDeferredResumed() { super.onDeferredResumed(); + handlePendingActivityRequest(); + } + + @Override + protected void handlePendingActivityRequest() { + super.handlePendingActivityRequest(); if (mPendingActivityRequestCode != -1 && isInState(NORMAL)) { // Remove any active ProxyActivityStarter task and send RESULT_CANCELED to Launcher. onActivityResult(mPendingActivityRequestCode, RESULT_CANCELED, null); diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 0970dae479..d06ae7a9c5 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -923,6 +923,7 @@ public class Launcher extends StatefulActivity implements Launche DiscoveryBounce.showForHomeIfNeeded(this); } + protected void handlePendingActivityRequest() { } private void logStopAndResume(int command) { int pageIndex = mWorkspace.isOverlayShown() ? -1 : mWorkspace.getCurrentPage(); @@ -1423,7 +1424,8 @@ public class Launcher extends StatefulActivity implements Launche if (!isInState(NORMAL)) { // Only change state, if not already the same. This prevents cancelling any // animations running as part of resume - mStateManager.goToState(NORMAL); + mStateManager.goToState(NORMAL, mStateManager.shouldAnimateStateChange(), + this::handlePendingActivityRequest); } // Reset the apps view From 0d213ebb791fae8dec623229dd8a85e5aaadadc1 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Tue, 30 Jun 2020 12:03:48 -0700 Subject: [PATCH 29/56] Fixing recents orientation (when home rotation is allowed) during swipe-up Bug: 158781568 Bug: 160149607 Change-Id: I27be09febcdb6f19687469db34b002ce682aa0cb --- .../quickstep/util/TaskViewSimulator.java | 1 + .../android/quickstep/views/RecentsView.java | 13 ++++++++--- .../quickstep/util/RecentsOrientedState.java | 23 +++++++------------ 3 files changed, 19 insertions(+), 18 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java index 46013d3f2b..c9ed498af1 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java @@ -103,6 +103,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { mSizeStrategy = sizeStrategy; mOrientationState = new RecentsOrientedState(context, sizeStrategy, i -> { }); + mOrientationState.setGestureActive(true); mCurrentFullscreenParams = new FullscreenDrawParams(context); mPageSpacing = context.getResources().getDimensionPixelSize(R.dimen.recents_page_spacing); diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java index 1a9bb85e69..9c25b240ba 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/views/RecentsView.java @@ -1005,7 +1005,9 @@ public abstract class RecentsView extends PagedView mDwbToastShown = false; mActivity.getSystemUiController().updateUiState(UI_STATE_OVERVIEW, 0); LayoutUtils.setViewEnabled(mActionsView, true); - mOrientationState.setGestureActive(false); + if (mOrientationState.setGestureActive(false)) { + updateOrientationHandler(); + } } public @Nullable TaskView getRunningTaskView() { @@ -1043,7 +1045,10 @@ public abstract class RecentsView extends PagedView */ public void onGestureAnimationStart(RunningTaskInfo runningTaskInfo) { // This needs to be called before the other states are set since it can create the task view - mOrientationState.setGestureActive(true); + if (mOrientationState.setGestureActive(true)) { + updateOrientationHandler(); + } + showCurrentTask(runningTaskInfo); setEnableFreeScroll(false); setEnableDrawingLiveTile(false); @@ -1106,7 +1111,9 @@ public abstract class RecentsView extends PagedView * Called when a gesture from an app has finished. */ public void onGestureAnimationEnd() { - mOrientationState.setGestureActive(false); + if (mOrientationState.setGestureActive(false)) { + updateOrientationHandler(); + } setOnScrollChangeListener(null); setEnableFreeScroll(true); diff --git a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java index b359f0f4e1..d822b6c291 100644 --- a/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java +++ b/quickstep/src/com/android/quickstep/util/RecentsOrientedState.java @@ -188,8 +188,9 @@ public final class RecentsOrientedState implements SharedPreferences.OnSharedPre /** * Sets if the swipe up gesture is currently running or not */ - public void setGestureActive(boolean isGestureActive) { + public boolean setGestureActive(boolean isGestureActive) { setFlag(FLAG_SWIPE_UP_NOT_RUNNING, !isGestureActive); + return update(mTouchRotation, mDisplayRotation); } /** @@ -202,27 +203,19 @@ public final class RecentsOrientedState implements SharedPreferences.OnSharedPre */ public boolean update( @SurfaceRotation int touchRotation, @SurfaceRotation int displayRotation) { - int recentsActivityRotation = inferRecentsActivityRotation(displayRotation); - if (mDisplayRotation == displayRotation - && mTouchRotation == touchRotation - && mRecentsActivityRotation == recentsActivityRotation) { - return false; - } - - mRecentsActivityRotation = recentsActivityRotation; + mRecentsActivityRotation = inferRecentsActivityRotation(displayRotation); mDisplayRotation = displayRotation; mTouchRotation = touchRotation; mPreviousRotation = touchRotation; - if (mRecentsActivityRotation == mTouchRotation || canRecentsActivityRotate()) { + PagedOrientationHandler oldHandler = mOrientationHandler; + if (mRecentsActivityRotation == mTouchRotation + || (canRecentsActivityRotate() && (mFlags & FLAG_SWIPE_UP_NOT_RUNNING) != 0)) { mOrientationHandler = PagedOrientationHandler.PORTRAIT; if (DEBUG) { Log.d(TAG, "current RecentsOrientedState: " + this); } - return true; - } - - if (mTouchRotation == ROTATION_90) { + } else if (mTouchRotation == ROTATION_90) { mOrientationHandler = PagedOrientationHandler.LANDSCAPE; } else if (mTouchRotation == ROTATION_270) { mOrientationHandler = PagedOrientationHandler.SEASCAPE; @@ -232,7 +225,7 @@ public final class RecentsOrientedState implements SharedPreferences.OnSharedPre if (DEBUG) { Log.d(TAG, "current RecentsOrientedState: " + this); } - return true; + return oldHandler != mOrientationHandler; } @SurfaceRotation From 451b09ea755733f2aa06431336d6da5f58479168 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 6 Jul 2020 11:12:07 -0700 Subject: [PATCH 30/56] Persist prediction cache on every update Test: Manual Bug: 160058750 Change-Id: Icb0b7322b7f9754d3f1c3012e1c98a760f83c787 --- .../hybridhotseat/HotseatPredictionController.java | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java index 987cd0fcf6..b94e6337d0 100644 --- a/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java +++ b/quickstep/recents_ui_overrides/src/com/android/launcher3/hybridhotseat/HotseatPredictionController.java @@ -113,8 +113,6 @@ public class HotseatPredictionController implements DragController.DragListener, private AllAppsStore mAllAppsStore; private AnimatorSet mIconRemoveAnimators; private boolean mUIUpdatePaused = false; - private boolean mRequiresCacheUpdate = true; - private boolean mIsCacheEmpty; private boolean mIsDestroyed = false; @@ -350,7 +348,6 @@ public class HotseatPredictionController implements DragController.DragListener, fillGapsWithPrediction(); return; } - mIsCacheEmpty = apps.isEmpty(); int count = Math.min(ranks.size(), apps.size()); List items = new ArrayList<>(count); for (int i = 0; i < count; i++) { @@ -393,14 +390,7 @@ public class HotseatPredictionController implements DragController.DragListener, } updateDependencies(); fillGapsWithPrediction(); - cachePredictionComponentKeysIfNecessary(componentKeys); - } - - private void cachePredictionComponentKeysIfNecessary(ArrayList componentKeys) { - if (!mRequiresCacheUpdate && componentKeys.isEmpty() == mIsCacheEmpty) return; mPredictionModel.cachePredictionComponentKeys(componentKeys); - mIsCacheEmpty = componentKeys.isEmpty(); - mRequiresCacheUpdate = false; } private void updateDependencies() { @@ -429,7 +419,6 @@ public class HotseatPredictionController implements DragController.DragListener, notifyItemAction(mPredictionModel.wrapAppTargetWithLocation(appTarget, AppTargetEvent.ACTION_PIN, workspaceItemInfo)); } - mRequiresCacheUpdate = true; } private List mapToWorkspaceItemInfo( @@ -583,7 +572,6 @@ public class HotseatPredictionController implements DragController.DragListener, } mDragObject = null; fillGapsWithPrediction(true, this::removeOutlineDrawings); - mRequiresCacheUpdate = true; } From b0fd1360840b6b5f0dbaa4644c881b523371497c Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Wed, 1 Jul 2020 13:55:46 -0700 Subject: [PATCH 31/56] Remove WRITE_SECURE_SETTINGS permission used for rotation flag Fixes: 150802536 Change-Id: Iaa2fd079a43696e24bf6702dd974446fa39eceeb --- AndroidManifest-common.xml | 3 --- 1 file changed, 3 deletions(-) diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml index 84dd06aa39..19a16e341a 100644 --- a/AndroidManifest-common.xml +++ b/AndroidManifest-common.xml @@ -45,9 +45,6 @@ - - - - + "Οι προτεινόμενες εφαρμογές ενεργοποιήθηκαν" + "Οι προτεινόμενες εφαρμογές είναι απενεργοποιημένες" "Εφαρμογή από πρόβλεψη: %1$s" "Κοινοποίηση" "Στιγμιότυπο οθόνης" diff --git a/quickstep/res/values-es/strings.xml b/quickstep/res/values-es/strings.xml index b2258de6b4..1a8cbd2388 100644 --- a/quickstep/res/values-es/strings.xml +++ b/quickstep/res/values-es/strings.xml @@ -32,17 +32,19 @@ "Sugerencias de aplicaciones" "Todas las aplicaciones" "Predicción de aplicaciones" - "Accede fácilmente a las aplicaciones que más usas" - "Pixel predice qué aplicaciones necesitarás a continuación y las pone directamente en tu pantalla de inicio. Toca para configurar." "Haz que aparezcan sugerencias de aplicaciones en la fila inferior de la pantalla de inicio" + "Recibe sugerencias de aplicaciones en la fila de aplicaciones favoritas de la pantalla de inicio" "Accede fácilmente desde la pantalla de inicio a las aplicaciones que más usas. Las sugerencias cambiarán según tus rutinas. Las aplicaciones de la fila inferior pasarán a mostrarse en la pantalla de inicio." + "Accede fácilmente a las aplicaciones que más usas desde la pantalla de inicio. Las sugerencias cambiarán según tus rutinas. Las aplicaciones de la fila de aplicaciones favoritas se moverán a la pantalla de inicio." "Accede fácilmente desde la pantalla de inicio a las aplicaciones que más usas. Las sugerencias cambiarán según tus rutinas. Las aplicaciones de la fila inferior se pondrán en una carpeta nueva." "Ver sugerencias de aplicaciones" "No, gracias" - "Ajustes" + "Ajustes" "Las aplicaciones que más usas aparecen aquí, y van variando según tus rutinas" - "Mueve aplicaciones de la fila inferior para ver sugerencias de aplicaciones" - "Se han añadido sugerencias de aplicaciones a espacios vacíos" + "Arrastra aplicaciones de la fila inferior para ver sugerencias de aplicaciones" + "Sugerencias de aplicaciones añadidas a espacios vacíos" + "Sugerencias de aplicaciones habilitadas" + "Las sugerencias de aplicaciones están inhabilitadas" "Aplicación sugerida: %1$s" "Compartir" "Hacer captura" diff --git a/quickstep/res/values-fa/strings.xml b/quickstep/res/values-fa/strings.xml index 56a77fa924..4d401153a2 100644 --- a/quickstep/res/values-fa/strings.xml +++ b/quickstep/res/values-fa/strings.xml @@ -32,17 +32,19 @@ "پیشنهادهای برنامه" "همه برنامه‌ها" "برنامه‌های پیش‌بینی‌شده" - "دسترسی آسان به پرکاربردترین برنامه‌ها" - "‏Pixel برنامه‌هایی را که بعداً نیاز خواهید داشت در صفحه اصلی پیش‌بینی می‌کند. برای راه‌اندازی ضربه بزنید." "دریافت پیشنهادهای برنامه در ردیف پایین صفحه اصلی" + "دریافت «پیشنهاد برنامه» در ردیف موارد دلخواه صفحه اصلی" "به‌راحتی در صفحه اصلی به پرکاربردترین برنامه‌ها دسترسی داشته باشید. پیشنهادها براساس روال‌هایتان تغییر خواهد کرد. برنامه‌های ردیف پایین در صفحه اصلی به بالا منتقل خواهند شد." + "به‌راحتی در صفحه اصلی به پرکاربردترین برنامه‌ها دسترسی داشته باشید. پیشنهادها براساس روال‌هایتان تغییر خواهد کرد. برنامه‌های موجود در ردیف موارد دلخواه به صفحه اصلی منتقل می‌شوند." "به‌راحتی در صفحه اصلی به پرکاربردترین برنامه‌ها دسترسی داشته باشید. پیشنهادها براساس روال‌هایتان تغییر خواهد کرد. برنامه‌های ردیف پایین به پوشه جدیدی منتقل خواهند شد." "دریافت پیشنهادهای برنامه" "نه متشکرم" - "تنظیمات" + "تنظیمات" "پرکاربردترین برنامه‌ها اینجا ظاهر می‌شوند و براساس روال‌ها تغییر می‌کنند" "برای دریافت پیشنهادهای برنامه، برنامه‌ها را به بیرون از ردیف پایین بکشید" - "پیشنهادهای برنامه به فضای خالی اضافه شد" + "«پیشنهاد برنامه» به فضای خالی اضافه شد" + "«پیشنهاد برنامه» فعال است" + "«پیشنهاد برنامه» غیرفعال است" "برنامه پیش‌بینی‌شده: %1$s" "هم‌رسانی" "نماگرفت" diff --git a/quickstep/res/values-sq/strings.xml b/quickstep/res/values-sq/strings.xml index eaf2feba7a..a4233446ee 100644 --- a/quickstep/res/values-sq/strings.xml +++ b/quickstep/res/values-sq/strings.xml @@ -32,17 +32,19 @@ "Aplikacionet e sugjeruara" "Të gjitha aplikacionet" "Aplikacionet e tua të parashikuara" - "Qasu me lehtësi në aplikacionet më të përdorura" - "Pixel parashikon aplikacionet Pixel që do të të nevojiten më pas, direkt në ekranin tënd bazë. Trokit për ta konfiguruar." "Merr aplikacione të sugjeruara në rreshtin e poshtëm të ekranit tënd bazë" + "Merr aplikacione të sugjeruara në rreshtin e të preferuarave të ekranit tënd bazë" "Qasu me lehtësi në aplikacionet më të përdorura direkt në ekranin bazë. Sugjerimet do të ndryshojnë bazuar në rutinat e tua. Aplikacionet në rreshtin e poshtëm do të zhvendosen lart në ekranin tënd bazë." + "Qasu me lehtësi në aplikacionet më të përdorura direkt në ekranin bazë. Sugjerimet do të ndryshojnë bazuar në rutinat e tua. Aplikacionet në rreshtin e të preferuarave do të zhvendosen në ekranin tënd bazë." "Qasu me lehtësi në aplikacionet më të përdorura, direkt në ekranin bazë. Sugjerimet do të ndryshojnë bazuar në rutinat e tua. Aplikacionet në rreshtin e poshtëm do të zhvendosen në një dosje tjetër." - "Merr sugjerimet e aplikacioneve" + "Merr aplikacione të sugjeruara" "Jo, faleminderit" - "Cilësimet" + "Cilësimet" "Aplikacionet më të përdorura shfaqen këtu dhe ndryshojnë bazuar në rutinat" "Zvarrit aplikacionet jashtë rreshtit të poshtëm për të marrë aplikacione të sugjeruara" "Aplikacionet e sugjeruara u shtuan në hapësirën bosh" + "Sugjerimet e aplikacioneve janë aktivizuar" + "Sugjerimet e aplikacioneve janë çaktivizuar" "Aplikacioni i parashikuar: %1$s" "Ndaj" "Pamja e ekranit" diff --git a/quickstep/res/values-vi/strings.xml b/quickstep/res/values-vi/strings.xml index 7f337eaae3..1d5fc42f9c 100644 --- a/quickstep/res/values-vi/strings.xml +++ b/quickstep/res/values-vi/strings.xml @@ -32,17 +32,19 @@ "Các ứng dụng đề xuất" "Tất cả ứng dụng" "Các ứng dụng gợi ý của bạn" - "Dễ dàng truy cập các ứng dụng bạn hay dùng nhất" - "Pixel dự đoán các ứng dụng bạn cần dùng tiếp theo ngay trên Màn hình chính. Hãy nhấn để thiết lập." - "Xem các ứng dụng đề xuất ở hàng dưới cùng trên Màn hình chính" + "Nhận các ứng dụng đề xuất ở cuối Màn hình chính" + "Nhận các ứng dụng đề xuất trên hàng mục ưa thích của Màn hình chính" "Ngay từ Màn hình chính, bạn có thể dễ dàng truy cập vào những ứng dụng mà mình dùng thường xuyên nhất. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng dưới cùng sẽ chuyển lên phía trên của Màn hình chính." + "Ngay trên Màn hình chính, bạn có thể dễ dàng mở những ứng dụng mà mình dùng thường xuyên nhất. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng mục ưa thích sẽ chuyển sang Màn hình chính." "Ngay từ Màn hình chính, bạn có thể dễ dàng truy cập vào những ứng dụng mà mình dùng thường xuyên nhất. Các ứng dụng đề xuất sẽ thay đổi dựa trên thói quen của bạn. Các ứng dụng ở hàng dưới cùng sẽ chuyển đến một thư mục mới." - "Xem ứng dụng đề xuất" + "Nhận ứng dụng đề xuất" "Không, cảm ơn" - "Cài đặt" + "Cài đặt" "Các ứng dụng dùng thường xuyên nhất sẽ hiển thị ở đây và thay đổi dựa trên thói quen" "Kéo ứng dụng ra khỏi hàng dưới cùng để xem ứng dụng đề xuất" "Thêm ứng dụng đề xuất vào không gian trống" + "Đã bật tính năng Ứng dụng đề xuất" + "Tính năng Ứng dụng đề xuất bị tắt" "Ứng dụng dự đoán: %1$s" "Chia sẻ" "Chụp ảnh màn hình" From 812f466f48fcf69d79427b18d2b8fbc847e6d652 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Thu, 9 Jul 2020 09:31:58 -0700 Subject: [PATCH 38/56] Import translations. DO NOT MERGE Auto-generated-cl: translation import Change-Id: Ie29c0b5dac4755e4238808063e4daaf3f734cae7 --- res/values-el/strings.xml | 3 ++- res/values-es/strings.xml | 5 +++-- res/values-fa/strings.xml | 7 ++++--- res/values-sq/strings.xml | 5 +++-- res/values-vi/strings.xml | 5 +++-- 5 files changed, 15 insertions(+), 10 deletions(-) diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml index 511558d9fd..2bb266b771 100644 --- a/res/values-el/strings.xml +++ b/res/values-el/strings.xml @@ -78,7 +78,8 @@ "Πατήστε για να αποθηκεύσετε τη νέα ονομασία" "Ο φάκελος έκλεισε" "Ο φάκελος μετονομάστηκε σε %1$s" - "Φάκελος: %1$s" + "Φάκελος: %1$s, %2$d στοιχεία" + "Φάκελος: %1$s, %2$d ή περισσότερα στοιχεία" "Γραφικά στοιχεία" "Ταπετσαρίες" "Στιλ και ταπετσαρίες" diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml index 13df8b507d..d73247b7cd 100644 --- a/res/values-es/strings.xml +++ b/res/values-es/strings.xml @@ -78,7 +78,8 @@ "Toca para guardar el nuevo nombre" "Carpeta cerrada" "Se ha cambiado el nombre de la carpeta a %1$s" - "Carpeta: %1$s" + "Carpeta: %1$s (%2$d elementos)" + "Carpeta: %1$s (%2$d o más elementos)" "Widgets" "Fondos de pantalla" "Estilos y fondos de pantalla" @@ -93,7 +94,7 @@ "Para mostrar puntos de notificación, activa las notificaciones de %1$s" "Cambiar ajustes" "Mostrar puntos de notificación" - "Añadir aplicaciones a pantalla de inicio" + "Añadir aplicaciones a la pantalla de inicio" "Para aplicaciones nuevas" "Desconocido" "Quitar" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index e799262601..8b185f20dd 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -53,7 +53,7 @@ "اطلاعات برنامه" "نصب" "برنامه پیشنهاد داده نشود" - "پین کردن پیش‌بینی" + "پین کردن پیشنهاد" "نصب میان‌برها" "به برنامه اجازه می‌دهد میان‌برها را بدون دخالت کاربر اضافه کند." "خواندن تنظیمات و میان‌برهای صفحه اصلی" @@ -78,13 +78,14 @@ "برای ذخیره تغییر نام، ضربه بزنید" "پوشه بسته شد" "نام پوشه به %1$s تغییر کرد" - "پوشه: %1$s" + "پوشه: %1$s، %2$d مورد" + "پوشه: %1$s، %2$d مورد یا بیشتر" "ابزارک‌ها" "کاغذدیواری‌ها" "سبک و کاغذدیواری" "تنظیمات صفحه اصلی" "توسط سرپرست سیستم غیرفعال شده است" - "امکان دادن به چرخش صفحه اصلی" + "قابل‌چرخش بودن صفحه اصلی" "وقتی تلفن چرخانده می‌شود" "نقطه‌های اعلان" "روشن" diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 59cfdefb8d..e3082daf37 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -78,11 +78,12 @@ "Trokit për të ruajtur riemërtimin" "Dosja u mbyll" "Dosja u riemërtua në %1$s" - "Dosja: %1$s" + "Dosja: %1$s, %2$d artikuj" + "Dosja: %1$s, %2$d ose më shumë artikuj" "Miniaplikacionet" "Imazhet e sfondit" "Stilet dhe imazhet e sfondit" - "Cilësimet e Home" + "Cilësimet e ekranit bazë" "Çaktivizuar nga administratori" "Lejo rrotullimin e ekranit kryesor" "Kur telefoni rrotullohet" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 678eef7ec6..c4f8304efb 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -78,7 +78,8 @@ "Nhấn để lưu đổi tên" "Đã đóng thư mục" "Đã đổi tên thư mục thành %1$s" - "Thư mục: %1$s" + "Thư mục: %1$s, %2$d mục" + "Thư mục: %1$s, %2$d mục trở lên" "Tiện ích" "Hình nền" "Kiểu và hình nền" @@ -133,7 +134,7 @@ "Đóng" "Đã loại bỏ thông báo" "Cá nhân" - "Cơ quan" + "Công việc" "Hồ sơ công việc" "Dữ liệu cá nhân được lưu trữ riêng biệt và ẩn khỏi các ứng dụng công việc" "Quản trị viên CNTT của bạn có thể xem dữ liệu và các ứng dụng công việc" From c9c9a66f1bb78be6fbef486f728be39582aad072 Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Thu, 9 Jul 2020 15:35:49 -0700 Subject: [PATCH 39/56] Update the position of the live tile overlay upon swipe up Everything is behind the flag so it's completely safe Bug: 160911104 Test: manual Change-Id: I9dc0ff7ea178ba5562d13370412b0dfa2599d2c0 --- .../android/quickstep/BaseSwipeUpHandlerV2.java | 16 ++++++++-------- .../quickstep/util/TaskViewSimulator.java | 9 +++++++++ 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java index 37aa0dadd2..db8923d57f 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java @@ -553,14 +553,6 @@ public abstract class BaseSwipeUpHandlerV2, Q exte @Override public void updateFinalShift() { - if (ENABLE_QUICKSTEP_LIVE_TILE.get()) { - if (mRecentsAnimationTargets != null) { - LiveTileOverlay.INSTANCE.update( - mTaskViewSimulator.getCurrentCropRect(), - mTaskViewSimulator.getCurrentCornerRadius()); - } - } - final boolean passed = mCurrentShift.value >= MIN_PROGRESS_FOR_OVERVIEW; if (passed != mPassedOverviewThreshold) { mPassedOverviewThreshold = passed; @@ -571,6 +563,14 @@ public abstract class BaseSwipeUpHandlerV2, Q exte updateSysUiFlags(mCurrentShift.value); applyWindowTransform(); + if (ENABLE_QUICKSTEP_LIVE_TILE.get()) { + if (mRecentsAnimationTargets != null) { + LiveTileOverlay.INSTANCE.update( + mTaskViewSimulator.getCurrentRect(), + mTaskViewSimulator.getCurrentCornerRadius()); + } + } + updateLauncherTransitionProgress(); } diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java index 46013d3f2b..135ee63c29 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java @@ -196,6 +196,15 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { return mTempRectF; } + /** + * Returns the current task bounds in the Launcher coordinate space. + */ + public RectF getCurrentRect() { + RectF result = getCurrentCropRect(); + mMatrix.mapRect(result); + return result; + } + public RecentsOrientedState getOrientationState() { return mOrientationState; } From ea600c70fd603eec92900f6421f6c33c3f2d0702 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Thu, 9 Jul 2020 19:31:40 -0700 Subject: [PATCH 40/56] Creating a common method to iterate over all model items. This would allow adding different source for model items without modifying every model task Bug: 160748731 Change-Id: I5a14dd761e2b8696c58dc8fec7b14077da0aced3 --- src/com/android/launcher3/LauncherModel.java | 8 +- .../allapps/AllAppsContainerView.java | 2 +- .../android/launcher3/model/BgDataModel.java | 14 ++ .../launcher3/model/CacheDataUpdatedTask.java | 22 +- .../model/PackageInstallStateChangedTask.java | 32 +-- .../launcher3/model/PackageUpdatedTask.java | 195 +++++++++--------- .../launcher3/model/ShortcutsChangedTask.java | 11 +- .../model/UserLockStateChangedTask.java | 39 ++-- .../launcher3/util/ItemInfoMatcher.java | 14 +- 9 files changed, 170 insertions(+), 167 deletions(-) diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index f434c9180a..ff4b545a06 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -58,7 +58,7 @@ import com.android.launcher3.pm.InstallSessionTracker; import com.android.launcher3.pm.PackageInstallInfo; import com.android.launcher3.pm.UserCache; import com.android.launcher3.shortcuts.ShortcutRequest; -import com.android.launcher3.util.IntSparseArrayMap; +import com.android.launcher3.util.IntSet; import com.android.launcher3.util.ItemInfoMatcher; import com.android.launcher3.util.LooperExecutor; import com.android.launcher3.util.PackageUserKey; @@ -410,7 +410,7 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi enqueueModelUpdateTask(new BaseModelUpdateTask() { @Override public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) { - final IntSparseArrayMap removedIds = new IntSparseArrayMap<>(); + final IntSet removedIds = new IntSet(); synchronized (dataModel) { for (ItemInfo info : dataModel.itemsIdMap) { if (info instanceof WorkspaceItemInfo @@ -418,13 +418,13 @@ public class LauncherModel extends LauncherApps.Callback implements InstallSessi && user.equals(info.user) && info.getIntent() != null && TextUtils.equals(packageName, info.getIntent().getPackage())) { - removedIds.put(info.id, true /* remove */); + removedIds.add(info.id); } } } if (!removedIds.isEmpty()) { - deleteAndBindComponentsRemoved(ItemInfoMatcher.ofItemIds(removedIds, false)); + deleteAndBindComponentsRemoved(ItemInfoMatcher.ofItemIds(removedIds)); } } }); diff --git a/src/com/android/launcher3/allapps/AllAppsContainerView.java b/src/com/android/launcher3/allapps/AllAppsContainerView.java index c989e7bf64..77b8a32c7a 100644 --- a/src/com/android/launcher3/allapps/AllAppsContainerView.java +++ b/src/com/android/launcher3/allapps/AllAppsContainerView.java @@ -83,7 +83,7 @@ public class AllAppsContainerView extends SpringRelativeLayout implements DragSo protected final BaseDraggingActivity mLauncher; protected final AdapterHolder[] mAH; private final ItemInfoMatcher mPersonalMatcher = ItemInfoMatcher.ofUser(Process.myUserHandle()); - private final ItemInfoMatcher mWorkMatcher = ItemInfoMatcher.not(mPersonalMatcher); + private final ItemInfoMatcher mWorkMatcher = mPersonalMatcher.negate(); private final AllAppsStore mAllAppsStore = new AllAppsStore(); private final Paint mNavBarScrimPaint; diff --git a/src/com/android/launcher3/model/BgDataModel.java b/src/com/android/launcher3/model/BgDataModel.java index 9bef84718b..7524920ce8 100644 --- a/src/com/android/launcher3/model/BgDataModel.java +++ b/src/com/android/launcher3/model/BgDataModel.java @@ -56,6 +56,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.function.BiConsumer; +import java.util.function.Consumer; import java.util.stream.Collectors; /** @@ -348,6 +349,19 @@ public class BgDataModel { } } + /** + * Calls the provided {@code op} for all workspaceItems in the in-memory model (both persisted + * items and dynamic/predicted items for the provided {@code userHandle}. + * Note the call is not synchronized over the model, that should be handled by the called. + */ + public void forAllWorkspaceItemInfos(UserHandle userHandle, Consumer op) { + for (ItemInfo info : itemsIdMap) { + if (info instanceof WorkspaceItemInfo && userHandle.equals(info.user)) { + op.accept((WorkspaceItemInfo) info); + } + } + } + public interface Callbacks { // If the launcher has permission to access deep shortcuts. int FLAG_HAS_SHORTCUT_PERMISSION = 1 << 0; diff --git a/src/com/android/launcher3/model/CacheDataUpdatedTask.java b/src/com/android/launcher3/model/CacheDataUpdatedTask.java index 8e6b064498..f644d49276 100644 --- a/src/com/android/launcher3/model/CacheDataUpdatedTask.java +++ b/src/com/android/launcher3/model/CacheDataUpdatedTask.java @@ -21,7 +21,6 @@ import android.os.UserHandle; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; import com.android.launcher3.icons.IconCache; -import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; import java.util.ArrayList; @@ -48,23 +47,18 @@ public class CacheDataUpdatedTask extends BaseModelUpdateTask { @Override public void execute(LauncherAppState app, BgDataModel dataModel, AllAppsList apps) { IconCache iconCache = app.getIconCache(); - - ArrayList updatedShortcuts = new ArrayList<>(); synchronized (dataModel) { - for (ItemInfo info : dataModel.itemsIdMap) { - if (info instanceof WorkspaceItemInfo && mUser.equals(info.user)) { - WorkspaceItemInfo si = (WorkspaceItemInfo) info; - ComponentName cn = si.getTargetComponent(); - if (si.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION - && isValidShortcut(si) && cn != null - && mPackages.contains(cn.getPackageName())) { - iconCache.getTitleAndIcon(si, si.usingLowResIcon()); - updatedShortcuts.add(si); - } + dataModel.forAllWorkspaceItemInfos(mUser, si -> { + ComponentName cn = si.getTargetComponent(); + if (si.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION + && isValidShortcut(si) && cn != null + && mPackages.contains(cn.getPackageName())) { + iconCache.getTitleAndIcon(si, si.usingLowResIcon()); + updatedShortcuts.add(si); } - } + }); apps.updateIconsAndLabels(mPackages, mUser); } bindUpdatedWorkspaceItems(updatedShortcuts); diff --git a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java index 203f1ca8e3..8369c48e5c 100644 --- a/src/com/android/launcher3/model/PackageInstallStateChangedTask.java +++ b/src/com/android/launcher3/model/PackageInstallStateChangedTask.java @@ -20,8 +20,6 @@ import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import com.android.launcher3.LauncherAppState; -import com.android.launcher3.LauncherModel.CallbackTask; -import com.android.launcher3.model.BgDataModel.Callbacks; import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.LauncherAppWidgetInfo; import com.android.launcher3.model.data.PromiseAppInfo; @@ -70,21 +68,18 @@ public class PackageInstallStateChangedTask extends BaseModelUpdateTask { synchronized (dataModel) { final HashSet updates = new HashSet<>(); - for (ItemInfo info : dataModel.itemsIdMap) { - if (info instanceof WorkspaceItemInfo) { - WorkspaceItemInfo si = (WorkspaceItemInfo) info; - ComponentName cn = si.getTargetComponent(); - if (si.hasPromiseIconUi() && (cn != null) - && mInstallInfo.packageName.equals(cn.getPackageName())) { - si.setInstallProgress(mInstallInfo.progress); - if (mInstallInfo.state == PackageInstallInfo.STATUS_FAILED) { - // Mark this info as broken. - si.status &= ~WorkspaceItemInfo.FLAG_INSTALL_SESSION_ACTIVE; - } - updates.add(si); + dataModel.forAllWorkspaceItemInfos(mInstallInfo.user, si -> { + ComponentName cn = si.getTargetComponent(); + if (si.hasPromiseIconUi() && (cn != null) + && mInstallInfo.packageName.equals(cn.getPackageName())) { + si.setInstallProgress(mInstallInfo.progress); + if (mInstallInfo.state == PackageInstallInfo.STATUS_FAILED) { + // Mark this info as broken. + si.status &= ~WorkspaceItemInfo.FLAG_INSTALL_SESSION_ACTIVE; } + updates.add(si); } - } + }); for (LauncherAppWidgetInfo widget : dataModel.appWidgets) { if (widget.providerName.getPackageName().equals(mInstallInfo.packageName)) { @@ -94,12 +89,7 @@ public class PackageInstallStateChangedTask extends BaseModelUpdateTask { } if (!updates.isEmpty()) { - scheduleCallbackTask(new CallbackTask() { - @Override - public void execute(Callbacks callbacks) { - callbacks.bindRestoreItemsChange(updates); - } - }); + scheduleCallbackTask(callbacks -> callbacks.bindRestoreItemsChange(updates)); } } } diff --git a/src/com/android/launcher3/model/PackageUpdatedTask.java b/src/com/android/launcher3/model/PackageUpdatedTask.java index 7cd467efd6..dca4ec0dcc 100644 --- a/src/com/android/launcher3/model/PackageUpdatedTask.java +++ b/src/com/android/launcher3/model/PackageUpdatedTask.java @@ -45,7 +45,7 @@ import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.pm.UserCache; import com.android.launcher3.shortcuts.ShortcutRequest; import com.android.launcher3.util.FlagOp; -import com.android.launcher3.util.IntSparseArrayMap; +import com.android.launcher3.util.IntSet; import com.android.launcher3.util.ItemInfoMatcher; import com.android.launcher3.util.PackageManagerHelper; import com.android.launcher3.util.PackageUserKey; @@ -92,9 +92,11 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { final String[] packages = mPackages; final int N = packages.length; - FlagOp flagOp = FlagOp.NO_OP; + final FlagOp flagOp; final HashSet packageSet = new HashSet<>(Arrays.asList(packages)); - ItemInfoMatcher matcher = ItemInfoMatcher.ofPackages(packageSet, mUser); + final ItemInfoMatcher matcher = mOp == OP_USER_AVAILABILITY_CHANGE + ? ItemInfoMatcher.ofUser(mUser) // We want to update all packages for this user + : ItemInfoMatcher.ofPackages(packageSet, mUser); final HashSet removedComponents = new HashSet<>(); switch (mOp) { @@ -158,19 +160,22 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { flagOp = ums.isUserQuiet(mUser) ? FlagOp.addFlag(WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER) : FlagOp.removeFlag(WorkspaceItemInfo.FLAG_DISABLED_QUIET_USER); - // We want to update all packages for this user. - matcher = ItemInfoMatcher.ofUser(mUser); appsList.updateDisabledFlags(matcher, flagOp); // We are not synchronizing here, as int operations are atomic appsList.setFlags(FLAG_QUIET_MODE_ENABLED, ums.isAnyProfileQuietModeEnabled()); break; } + default: + flagOp = FlagOp.NO_OP; + break; } bindApplicationsIfNeeded(); - final IntSparseArrayMap removedShortcuts = new IntSparseArrayMap<>(); + final IntSet removedShortcuts = new IntSet(); + // Shortcuts to keep even if the corresponding app was removed + final IntSet forceKeepShortcuts = new IntSet(); // Update shortcut infos if (mOp == OP_ADD || flagOp != FlagOp.NO_OP) { @@ -180,118 +185,118 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { // For system apps, package manager send OP_UPDATE when an app is enabled. final boolean isNewApkAvailable = mOp == OP_ADD || mOp == OP_UPDATE; synchronized (dataModel) { - for (ItemInfo info : dataModel.itemsIdMap) { - if (info instanceof WorkspaceItemInfo && mUser.equals(info.user)) { - WorkspaceItemInfo si = (WorkspaceItemInfo) info; - boolean infoUpdated = false; - boolean shortcutUpdated = false; + dataModel.forAllWorkspaceItemInfos(mUser, si -> { - // Update shortcuts which use iconResource. - if ((si.iconResource != null) - && packageSet.contains(si.iconResource.packageName)) { - LauncherIcons li = LauncherIcons.obtain(context); - BitmapInfo iconInfo = li.createIconBitmap(si.iconResource); - li.recycle(); - if (iconInfo != null) { - si.bitmap = iconInfo; - infoUpdated = true; + boolean infoUpdated = false; + boolean shortcutUpdated = false; + + // Update shortcuts which use iconResource. + if ((si.iconResource != null) + && packageSet.contains(si.iconResource.packageName)) { + LauncherIcons li = LauncherIcons.obtain(context); + BitmapInfo iconInfo = li.createIconBitmap(si.iconResource); + li.recycle(); + if (iconInfo != null) { + si.bitmap = iconInfo; + infoUpdated = true; + } + } + + ComponentName cn = si.getTargetComponent(); + if (cn != null && matcher.matches(si, cn)) { + String packageName = cn.getPackageName(); + + if (si.hasStatusFlag(WorkspaceItemInfo.FLAG_SUPPORTS_WEB_UI)) { + forceKeepShortcuts.add(si.id); + if (mOp == OP_REMOVE) { + return; } } - ComponentName cn = si.getTargetComponent(); - if (cn != null && matcher.matches(si, cn)) { - String packageName = cn.getPackageName(); - - if (si.hasStatusFlag(WorkspaceItemInfo.FLAG_SUPPORTS_WEB_UI)) { - removedShortcuts.put(si.id, false); - if (mOp == OP_REMOVE) { - continue; - } - } - - if (si.isPromise() && isNewApkAvailable) { - boolean isTargetValid = true; - if (si.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) { - List shortcut = - new ShortcutRequest(context, mUser) - .forPackage(cn.getPackageName(), - si.getDeepShortcutId()) - .query(ShortcutRequest.PINNED); - if (shortcut.isEmpty()) { - isTargetValid = false; - } else { - si.updateFromDeepShortcutInfo(shortcut.get(0), context); - infoUpdated = true; - } - } else if (!cn.getClassName().equals(IconCache.EMPTY_CLASS_NAME)) { - isTargetValid = context.getSystemService(LauncherApps.class) - .isActivityEnabled(cn, mUser); - } - if (si.hasStatusFlag(FLAG_RESTORED_ICON | FLAG_AUTOINSTALL_ICON)) { - if (updateWorkspaceItemIntent(context, si, packageName)) { - infoUpdated = true; - } else if (si.hasPromiseIconUi()) { - removedShortcuts.put(si.id, true); - continue; - } - } else if (!isTargetValid) { - removedShortcuts.put(si.id, true); - FileLog.e(TAG, "Restored shortcut no longer valid " - + si.getIntent()); - continue; + if (si.isPromise() && isNewApkAvailable) { + boolean isTargetValid = true; + if (si.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT) { + List shortcut = + new ShortcutRequest(context, mUser) + .forPackage(cn.getPackageName(), + si.getDeepShortcutId()) + .query(ShortcutRequest.PINNED); + if (shortcut.isEmpty()) { + isTargetValid = false; } else { - si.status = WorkspaceItemInfo.DEFAULT; + si.updateFromDeepShortcutInfo(shortcut.get(0), context); infoUpdated = true; } - } else if (isNewApkAvailable && removedComponents.contains(cn)) { + } else if (!cn.getClassName().equals(IconCache.EMPTY_CLASS_NAME)) { + isTargetValid = context.getSystemService(LauncherApps.class) + .isActivityEnabled(cn, mUser); + } + if (si.hasStatusFlag(FLAG_RESTORED_ICON | FLAG_AUTOINSTALL_ICON)) { if (updateWorkspaceItemIntent(context, si, packageName)) { infoUpdated = true; + } else if (si.hasPromiseIconUi()) { + removedShortcuts.add(si.id); + return; } - } - - if (isNewApkAvailable && - si.itemType == Favorites.ITEM_TYPE_APPLICATION) { - iconCache.getTitleAndIcon(si, si.usingLowResIcon()); + } else if (!isTargetValid) { + removedShortcuts.add(si.id); + FileLog.e(TAG, "Restored shortcut no longer valid " + + si.getIntent()); + return; + } else { + si.status = WorkspaceItemInfo.DEFAULT; infoUpdated = true; } - - int oldRuntimeFlags = si.runtimeStatusFlags; - si.runtimeStatusFlags = flagOp.apply(si.runtimeStatusFlags); - if (si.runtimeStatusFlags != oldRuntimeFlags) { - shortcutUpdated = true; + } else if (isNewApkAvailable && removedComponents.contains(cn)) { + if (updateWorkspaceItemIntent(context, si, packageName)) { + infoUpdated = true; } } - if (infoUpdated || shortcutUpdated) { - updatedWorkspaceItems.add(si); + if (isNewApkAvailable + && si.itemType == Favorites.ITEM_TYPE_APPLICATION) { + iconCache.getTitleAndIcon(si, si.usingLowResIcon()); + infoUpdated = true; } - if (infoUpdated) { - getModelWriter().updateItemInDatabase(si); - } - } else if (info instanceof LauncherAppWidgetInfo && isNewApkAvailable) { - LauncherAppWidgetInfo widgetInfo = (LauncherAppWidgetInfo) info; - if (mUser.equals(widgetInfo.user) - && widgetInfo.hasRestoreFlag(LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY) - && packageSet.contains(widgetInfo.providerName.getPackageName())) { - widgetInfo.restoreStatus &= - ~LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY & - ~LauncherAppWidgetInfo.FLAG_RESTORE_STARTED; - // adding this flag ensures that launcher shows 'click to setup' - // if the widget has a config activity. In case there is no config - // activity, it will be marked as 'restored' during bind. - widgetInfo.restoreStatus |= LauncherAppWidgetInfo.FLAG_UI_NOT_READY; - - widgets.add(widgetInfo); - getModelWriter().updateItemInDatabase(widgetInfo); + int oldRuntimeFlags = si.runtimeStatusFlags; + si.runtimeStatusFlags = flagOp.apply(si.runtimeStatusFlags); + if (si.runtimeStatusFlags != oldRuntimeFlags) { + shortcutUpdated = true; } } + + if (infoUpdated || shortcutUpdated) { + updatedWorkspaceItems.add(si); + } + if (infoUpdated && si.id != ItemInfo.NO_ID) { + getModelWriter().updateItemInDatabase(si); + } + }); + + for (LauncherAppWidgetInfo widgetInfo : dataModel.appWidgets) { + if (mUser.equals(widgetInfo.user) + && widgetInfo.hasRestoreFlag( + LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY) + && packageSet.contains(widgetInfo.providerName.getPackageName())) { + widgetInfo.restoreStatus &= + ~LauncherAppWidgetInfo.FLAG_PROVIDER_NOT_READY + & ~LauncherAppWidgetInfo.FLAG_RESTORE_STARTED; + + // adding this flag ensures that launcher shows 'click to setup' + // if the widget has a config activity. In case there is no config + // activity, it will be marked as 'restored' during bind. + widgetInfo.restoreStatus |= LauncherAppWidgetInfo.FLAG_UI_NOT_READY; + + widgets.add(widgetInfo); + getModelWriter().updateItemInDatabase(widgetInfo); + } } } bindUpdatedWorkspaceItems(updatedWorkspaceItems); if (!removedShortcuts.isEmpty()) { - deleteAndBindComponentsRemoved(ItemInfoMatcher.ofItemIds(removedShortcuts, false)); + deleteAndBindComponentsRemoved(ItemInfoMatcher.ofItemIds(removedShortcuts)); } if (!widgets.isEmpty()) { @@ -319,7 +324,7 @@ public class PackageUpdatedTask extends BaseModelUpdateTask { if (!removedPackages.isEmpty() || !removedComponents.isEmpty()) { ItemInfoMatcher removeMatch = ItemInfoMatcher.ofPackages(removedPackages, mUser) .or(ItemInfoMatcher.ofComponents(removedComponents, mUser)) - .and(ItemInfoMatcher.ofItemIds(removedShortcuts, true)); + .and(ItemInfoMatcher.ofItemIds(forceKeepShortcuts).negate()); deleteAndBindComponentsRemoved(removeMatch); // Remove any queued items from the install queue diff --git a/src/com/android/launcher3/model/ShortcutsChangedTask.java b/src/com/android/launcher3/model/ShortcutsChangedTask.java index 1cbe5c2f1b..88006ba6fb 100644 --- a/src/com/android/launcher3/model/ShortcutsChangedTask.java +++ b/src/com/android/launcher3/model/ShortcutsChangedTask.java @@ -21,7 +21,6 @@ import android.os.UserHandle; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; -import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.shortcuts.ShortcutKey; import com.android.launcher3.shortcuts.ShortcutRequest; @@ -58,14 +57,14 @@ public class ShortcutsChangedTask extends BaseModelUpdateTask { MultiHashMap keyToShortcutInfo = new MultiHashMap<>(); HashSet allIds = new HashSet<>(); - for (ItemInfo itemInfo : dataModel.itemsIdMap) { - if (itemInfo.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) { - WorkspaceItemInfo si = (WorkspaceItemInfo) itemInfo; - if (mPackageName.equals(si.getIntent().getPackage()) && si.user.equals(mUser)) { + synchronized (dataModel) { + dataModel.forAllWorkspaceItemInfos(mUser, si -> { + if ((si.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) + && mPackageName.equals(si.getIntent().getPackage())) { keyToShortcutInfo.addToList(ShortcutKey.fromItemInfo(si), si); allIds.add(si.getDeepShortcutId()); } - } + }); } final ArrayList updatedWorkspaceItemInfos = new ArrayList<>(); diff --git a/src/com/android/launcher3/model/UserLockStateChangedTask.java b/src/com/android/launcher3/model/UserLockStateChangedTask.java index 7ec884f424..5048e13e3e 100644 --- a/src/com/android/launcher3/model/UserLockStateChangedTask.java +++ b/src/com/android/launcher3/model/UserLockStateChangedTask.java @@ -23,7 +23,6 @@ import android.os.UserHandle; import com.android.launcher3.LauncherAppState; import com.android.launcher3.LauncherSettings; -import com.android.launcher3.model.data.ItemInfo; import com.android.launcher3.model.data.WorkspaceItemInfo; import com.android.launcher3.shortcuts.ShortcutKey; import com.android.launcher3.shortcuts.ShortcutRequest; @@ -73,27 +72,27 @@ public class UserLockStateChangedTask extends BaseModelUpdateTask { ArrayList updatedWorkspaceItemInfos = new ArrayList<>(); HashSet removedKeys = new HashSet<>(); - for (ItemInfo itemInfo : dataModel.itemsIdMap) { - if (itemInfo.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT - && mUser.equals(itemInfo.user)) { - WorkspaceItemInfo si = (WorkspaceItemInfo) itemInfo; - if (mIsUserUnlocked) { - ShortcutKey key = ShortcutKey.fromItemInfo(si); - ShortcutInfo shortcut = pinnedShortcuts.get(key); - // 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) { - removedKeys.add(key); - continue; + synchronized (dataModel) { + dataModel.forAllWorkspaceItemInfos(mUser, si -> { + if (si.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) { + if (mIsUserUnlocked) { + ShortcutKey key = ShortcutKey.fromItemInfo(si); + ShortcutInfo shortcut = pinnedShortcuts.get(key); + // 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) { + removedKeys.add(key); + return; + } + si.runtimeStatusFlags &= ~FLAG_DISABLED_LOCKED_USER; + si.updateFromDeepShortcutInfo(shortcut, context); + app.getIconCache().getShortcutIcon(si, shortcut); + } else { + si.runtimeStatusFlags |= FLAG_DISABLED_LOCKED_USER; } - si.runtimeStatusFlags &= ~FLAG_DISABLED_LOCKED_USER; - si.updateFromDeepShortcutInfo(shortcut, context); - app.getIconCache().getShortcutIcon(si, shortcut); - } else { - si.runtimeStatusFlags |= FLAG_DISABLED_LOCKED_USER; + updatedWorkspaceItemInfos.add(si); } - updatedWorkspaceItemInfos.add(si); - } + }); } bindUpdatedWorkspaceItems(updatedWorkspaceItemInfos); if (!removedKeys.isEmpty()) { diff --git a/src/com/android/launcher3/util/ItemInfoMatcher.java b/src/com/android/launcher3/util/ItemInfoMatcher.java index 4d5405d102..e98af35563 100644 --- a/src/com/android/launcher3/util/ItemInfoMatcher.java +++ b/src/com/android/launcher3/util/ItemInfoMatcher.java @@ -81,11 +81,10 @@ public interface ItemInfoMatcher { } /** - * Returns a new matcher which returns the opposite boolean value of the provided - * {@param matcher}. + * Returns a new matcher with returns the opposite value of this. */ - static ItemInfoMatcher not(ItemInfoMatcher matcher) { - return (info, cn) -> !matcher.matches(info, cn); + default ItemInfoMatcher negate() { + return (info, cn) -> !matches(info, cn); } static ItemInfoMatcher ofUser(UserHandle user) { @@ -105,7 +104,10 @@ public interface ItemInfoMatcher { keys.contains(ShortcutKey.fromItemInfo(info)); } - static ItemInfoMatcher ofItemIds(IntSparseArrayMap ids, Boolean matchDefault) { - return (info, cn) -> ids.get(info.id, matchDefault); + /** + * Returns a matcher for items with provided ids + */ + static ItemInfoMatcher ofItemIds(IntSet ids) { + return (info, cn) -> ids.contains(info.id); } } From 8a3ac8db00e461058014c736450cfe3d81de40a0 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 10:29:05 -0700 Subject: [PATCH 41/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I886572ea5f5d8bbbc44843d7e2b2b08b146a4da1 --- quickstep/res/values-de/strings.xml | 2 +- quickstep/res/values-ne/strings.xml | 2 +- quickstep/res/values-ru/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml index 0a6118bb15..8df09ff9a4 100644 --- a/quickstep/res/values-de/strings.xml +++ b/quickstep/res/values-de/strings.xml @@ -20,7 +20,7 @@ "Splitscreen" - "Anpinnen" + "Fixieren" "Freeform-Modus" "Übersicht" "Keine kürzlich verwendeten Elemente" diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml index ae23a09fc1..c47f951809 100644 --- a/quickstep/res/values-ne/strings.xml +++ b/quickstep/res/values-ne/strings.xml @@ -25,7 +25,7 @@ "परिदृश्य" "हालसालैको कुनै पनि वस्तु छैन" "बन्द गर्नुहोस्" - "अनुप्रयोगको उपयोगका सेटिङहरू" + "एपको उपयोगका सेटिङहरू" "सबै खाली गर्नुहोस्" "हालसालैका एपहरू" "%1$s, %2$s" diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml index 5dd89a644b..34fbe0f3fa 100644 --- a/quickstep/res/values-ru/strings.xml +++ b/quickstep/res/values-ru/strings.xml @@ -20,7 +20,7 @@ "Разделить экран" - "Блокировать" + "Закрепить" "Произвольная форма" "Обзор" "Здесь пока ничего нет." From 153c4e5e76b78a5e24197679044bb5ffde5d35d2 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 10:30:02 -0700 Subject: [PATCH 42/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ib7ab2a81909ff9b7df8805d0b1c035f82d18c561 --- res/values-be/strings.xml | 2 +- res/values-da/strings.xml | 2 +- res/values-es-rUS/strings.xml | 4 ++-- res/values-eu/strings.xml | 2 +- res/values-fa/strings.xml | 4 ++-- res/values-fi/strings.xml | 4 ++-- res/values-gu/strings.xml | 4 ++-- res/values-it/strings.xml | 2 +- res/values-km/strings.xml | 2 +- res/values-lo/strings.xml | 2 +- res/values-mk/strings.xml | 2 +- res/values-mr/strings.xml | 2 +- res/values-ne/strings.xml | 10 +++++----- res/values-or/strings.xml | 6 +++--- res/values-pa/strings.xml | 4 ++-- res/values-pl/strings.xml | 4 ++-- res/values-ru/strings.xml | 2 +- res/values-sl/strings.xml | 2 +- res/values-sq/strings.xml | 2 +- res/values-sw/strings.xml | 4 +--- res/values-uz/strings.xml | 2 +- res/values-vi/strings.xml | 2 +- res/values-zh-rHK/strings.xml | 4 ++-- 23 files changed, 36 insertions(+), 38 deletions(-) diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index b4cf913de4..5a17878213 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -133,7 +133,7 @@ "Адхіліць" "Апавяшчэнне адхілена" "Асабістыя" - "Праца" + "Працоўныя" "Працоўны профіль" "Знайдзіце працоўныя праграмы тут" "Кожная працоўная праграма мае значок і знаходзіцца пад аховай вашай арганізацыі. Для больш простага доступу перамясціце праграмы на Галоўны экран." diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index ffdd06873f..9e61475201 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -81,7 +81,7 @@ "Widgets" "Baggrunde" "Layout og baggrunde" - "Startskærmindstillinger" + "Indstillinger for startskærm" "Deaktiveret af din administrator" "Tillad rotation af startskærmen" "Når telefonen roteres" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index d10c84b9ca..8041c8ebcf 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -81,7 +81,7 @@ "Widgets" "Fondos de pantalla" "Estilos y fondos de pantalla" - "Configuración de página principal" + "Configuración de pantalla principal" "El administrador inhabilitó esta función" "Permitir la rotación de la pantalla principal" "Al girar el teléfono" @@ -131,7 +131,7 @@ "Descartar" "Se descartó la notificación" "Personales" - "Laborales" + "De trabajo" "Perfil de trabajo" "Apps de trabajo" "Cada app de trabajo tiene una insignia y está protegida por tu organización. Transfiere las apps a la pantalla principal para acceder a ellas con mayor facilidad." diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 9ba46c171d..b77ab8fcd3 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -84,7 +84,7 @@ "Hasierako pantailaren ezarpenak" "Administratzaileak desgaitu du" "Eman hasierako pantaila biratzeko baimena" - "Telefonoa biratzen denean" + "Telefonoa biratzean" "Jakinarazpen-biribiltxoak" "Aktibatuta" "Desaktibatuta" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 926cdb9b1c..63489c78c2 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -83,7 +83,7 @@ "سبک و کاغذدیواری" "تنظیمات صفحه اصلی" "توسط سرپرست سیستم غیرفعال شده است" - "امکان دادن به چرخش صفحه اصلی" + "قابل‌چرخش بودن صفحه اصلی" "وقتی تلفن چرخانده می‌شود" "نقطه‌های اعلان" "روشن" @@ -131,7 +131,7 @@ "رد کردن" "اعلان رد شد" "شخصی" - "محل کار" + "کاری" "نمایه کاری" "اینجا برنامه‌های کاری را پیدا کنید" "همه برنامه‌های کاری نشانی دارند و توسط سازمانتان ایمن نگه داشته می‌شوند. برنامه‌های کاری را برای دسترسی آسان‌تر به صفحه اصلی انتقال دهید." diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index f87441ff3d..372ab6d288 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -81,13 +81,13 @@ "Widgetit" "Taustakuvat" "Tyylit ja taustakuvat" - "Kotiasetukset" + "Aloitusnäyttö" "Järjestelmänvalvoja on poistanut toiminnon käytöstä." "Salli aloitusnäytön kiertäminen" "Kun puhelinta kierretään" "Pistemerkit" "Käytössä" - "Ei käytössä" + "Ei päällä" "Ilmoituksien käyttöoikeus tarvitaan" "%1$s tarvitsee ilmoitusten käyttöoikeuden, jotta pistemerkkejä voidaan näyttää." "Muuta asetuksia" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index c313917dc8..f8fea78b9c 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -21,7 +21,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Launcher3" - "કાર્યાલય" + "ઑફિસ" "ઍપ્લિકેશન ઇન્સ્ટોલ થઈ નથી." "ઍપ્લિકેશન ઉપલબ્ધ નથી" "સુરક્ષિત મોડમાં ડાઉનલોડ કરેલ ઍપ્લિકેશન અક્ષમ કરી" @@ -131,7 +131,7 @@ "છોડી દો" "સૂચના છોડી દીધી" "મનગમતી ઍપ" - "કાર્યાલયની ઍપ" + "ઑફિસની ઍપ" "ઑફિસની પ્રોફાઇલ" "કાર્ય ઍપને અહીંથી મેળવો" "દરેક કાર્ય ઍપ પાસે એક બૅજ હોય છે અને તમારી સંસ્થા દ્વારા તેને સુરક્ષિત રાખવામાં આવે છે. વધુ સરળ ઍક્સેસ માટે ઍપને તમારી હોમ સ્ક્રીન પર ખસેડો." diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 17206cbb1b..8c4e3c5281 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -87,7 +87,7 @@ "Con il telefono ruotato" "Indicatori di notifica" "On" - "OFF" + "Off" "Accesso alle notifiche necessario" "Per mostrare gli indicatori di notifica, attiva le notifiche per l\'app %1$s" "Modifica impostazioni" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index f4a328df14..d8b80acd9c 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -128,7 +128,7 @@ "ធាតុក្រាហ្វិកដែលបានប្តូរទំហំទៅទទឹងប្រវែង %1$s កម្ពស់ប្រវែង %2$s" "ផ្លូវកាត់" "ផ្លូវកាត់ និង​ការជូនដំណឹង" - "បដិសេធ" + "ច្រានចោល" "បាន​បដិសេធ​ការជូនដំណឹង" "ផ្ទាល់ខ្លួន" "ការងារ" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index afe7664d51..6d5740becc 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -83,7 +83,7 @@ "ຮູບແບບ ແລະ ຮູບພື້ນຫຼັງ" "ການຕັ້ງຄ່າ Home" "ຖືກປິດການນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ" - "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍທຳອິດໄດ້" + "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍຢູ່ໜ້າຫຼັກໄດ້" "ເມື່ອໝຸນໂທລະສັບ" "ຈຸດການແຈ້ງເຕືອນ" "ເປີດ" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 49df044600..593d207a56 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -83,7 +83,7 @@ "Стилови и тапети" "Поставки за почетен екран" "Оневозможено од администраторот" - "Дозволете ротација на почетниот екран" + "Дозволи ротација на почетниот екран" "Кога телефонот се ротира" "Точки за известување" "Вклучено" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 40a3a1e4d3..7b76a0e3b9 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -89,7 +89,7 @@ "सुरू" "बंद" "सूचनांच्या अ‍ॅक्सेसची आवश्यकता आहे" - "सूचना बिंदू दाखवण्यासाठी, %1$s साठी अ‍ॅप सूचना चालू करा" + "सूचना बिंदू दाखवण्यासाठी, %1$s साठी अ‍ॅप सूचना सुरू करा" "सेटिंग्ज बदला" "सूचना बिंदू दाखवा" "होम स्क्रीनवर आयकन जोडा" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 119de53497..73d7d51dd3 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -45,20 +45,20 @@ "कुनै सर्टकट छनौट गर्न वा रोजेका कारबाहीहरू प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।" "यो गृह स्क्रिनमा कुनै थप ठाउँ छैन।" "मन पर्ने ट्रे अब कुनै ठाँउ छैन" - "अनुप्रयोगको सूची" + "एपको सूची" "व्यक्तिगत अनुप्रयोगहरूको सूची" "कार्यसम्बन्धी अनुप्रयोगहरूको सूची" "गृह" "हटाउनुहोस्" "विस्थापित गर्नुहोस्" - "अनुप्रयोगको जानकारी" + "एपको जानकारी" "स्थापना गर्नुहोस्" "सर्टकट स्थापना गर्नेहोस्" - "प्रयोगकर्ताको हस्तक्षेप बिना एउटा अनुप्रयोगलाई सर्टकटमा थप्नको लागि अनुमति दिनुहोस्।" + "प्रयोगकर्ताको हस्तक्षेप बिना एउटा एपलाई सर्टकटमा थप्नको लागि अनुमति दिनुहोस्।" "गृह सेटिङहरू र सर्टकटहरू पढ्नुहोस्" - "गृहमा एउटा अनुप्रयोगलाई सेटिङहरू र सर्टकटहरू पढ्न अनुमति दिनुहोस्।" + "गृहमा एउटा एपलाई सेटिङहरू र सर्टकटहरू पढ्न अनुमति दिनुहोस्।" "गृह सेटिङहरू र सर्टकटहरू लेख्नुहोस्" - "गृहमा एउटा अनुप्रयोगलाई सेटिङ र सर्टकट बदल्न अनुमति दिनुहोस्।" + "गृहमा एउटा एपलाई सेटिङ र सर्टकट बदल्न अनुमति दिनुहोस्।" "%1$s ले फोन कलहरू गर्न अनुमति छैन" "समस्या लोडिङ गर्ने विजेट" "सेटअप" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 4aff792c5c..25c9e009d4 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -21,7 +21,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "ଲଞ୍ଚର୍3" - "କାମ" + "ୱାର୍କ" "ଆପ୍‌ ଇନଷ୍ଟଲ୍‌ ହୋଇନାହିଁ" "ଆପ୍‌ ଉପଲବ୍ଧ ନାହିଁ" "ନିରାପଦ ମୋଡରେ ଡାଉନଲୋଡ୍‌ ହେଇଥିବା ଆପ୍‌ ଅକ୍ଷମ କରାଗଲା" @@ -83,7 +83,7 @@ "ଷ୍ଟାଇଲ୍ ଏବଂ ୱାଲ୍‍‍ପେପର୍" "ହୋମ୍‌ ସେଟିଂସ୍" "ଆପଣଙ୍କ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଅକ୍ଷମ କରାଯାଇଛି" - "ହୋମ୍‌ ସ୍କ୍ରୀନ୍ ବୁଲାଇବା ଅନୁମତି ଦିଅନ୍ତୁ" + "ହୋମ୍‌ ସ୍କ୍ରିନ୍ ବୁଲାଇବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ" "ଯେତେବେଳେ ଫୋନକୁ ବୁଲାଯାଇଥାଏ" "ବିଜ୍ଞପ୍ତି ଡଟ୍ସ" "ଚାଲୁ" @@ -131,7 +131,7 @@ "ଖାରଜ କରନ୍ତୁ" "ବିଜ୍ଞପ୍ତି ଖାରଜ କରାଗଲା" "ବ୍ୟକ୍ତିଗତ" - "କାମ" + "ୱାର୍କ" "ୱର୍କ ପ୍ରୋଫାଇଲ୍‌" "ଏଠାରେ କାମ ଆପ୍‌ ଖୋଜନ୍ତୁ" "ପ୍ରତ୍ୟେକ କାଯ୍ୟକାରୀ ଆପ୍‌ର ଗୋଟିଏ ବ୍ୟାଜ୍ (ଚିହ୍ନ) ଅଛି, ଯାହାକୁ ଆପଣଙ୍କ ସଂସ୍ଥା ସୁରକ୍ଷିତ ରଖିଥାଏ। ସହଜରେ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଆପ୍‌କୁ ହୋମ୍ ସ୍କ୍ରୀନ୍ ଉପରକୁ ଆଣନ୍ତୁ।" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 6d8851747d..f4a3922dc8 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -83,8 +83,8 @@ "ਸ਼ੈਲੀਆਂ ਅਤੇ ਵਾਲਪੇਪਰ" "ਹੋਮ ਸੈਟਿੰਗਾਂ" "ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਈ ਗਈ" - "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁੰਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" - "ਜਦੋਂ ਫ਼ੋਨ ਘੁੰਮਾਇਆ ਜਾਂਦਾ ਹੈ" + "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" + "ਜਦੋਂ ਫ਼ੋਨ ਘੁਮਾਇਆ ਜਾਂਦਾ ਹੈ" "ਸੂਚਨਾ ਬਿੰਦੂ" "ਚਾਲੂ" "ਬੰਦ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index 10e770d567..063e0dc0e0 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -83,7 +83,7 @@ "Widżety" "Tapety" "Style i tapety" - "Ustawienia strony głównej" + "Ustawienia ekranu głównego" "Funkcja wyłączona przez administratora" "Zezwalaj na obrót ekranu głównego" "Po obróceniu telefonu" @@ -133,7 +133,7 @@ "Zamknij" "Powiadomienie odrzucone" "Osobiste" - "Do pracy" + "Służbowe" "Profil do pracy" "Aplikacje do pracy" "Każda aplikacja do pracy ma plakietkę, a o jej bezpieczeństwo dba Twoja organizacja. Aplikacje można przenieść na ekran główny, by były łatwiej dostępne." diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 23b00d0936..3e9314eb58 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -86,7 +86,7 @@ "Главный экран" "Функция отключена администратором" "Разрешить поворачивать главный экран" - "Когда телефон повернут" + "При повороте телефона" "Значки уведомлений" "Включены" "Отключены" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index b75916f186..17ee6cbd25 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -133,7 +133,7 @@ "Opusti" "Obvestilo je bilo opuščeno" "Osebno" - "Služba" + "Delo" "Delovni profil" "Tukaj poiščite delovne aplikacije" "Vsaka delovna aplikacija ima značko. Za varnost teh aplikacij skrbi vaša organizacija. Za preprostejši dostop premaknite aplikacije na začetni zaslon." diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index e25c1c11f5..114059992b 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -81,7 +81,7 @@ "Miniaplikacionet" "Imazhet e sfondit" "Stilet dhe imazhet e sfondit" - "Cilësimet e Home" + "Cilësimet e ekranit bazë" "Çaktivizuar nga administratori" "Lejo rrotullimin e ekranit kryesor" "Kur telefoni rrotullohet" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 6f33c4f046..643ae51774 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -70,9 +70,7 @@ %1$s, ina arifa %2$d "Ukurasa%1$d wa %2$d" - - - + "Skrini ya mwanzo %1$d ya %2$d" "Ukurasa mpya wa skrini ya kwanza" "Folda imefunguliwa, %1$d kwa %2$d" "Gusa ili ufunge folda" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index a05eda3dae..0afc788f06 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -21,7 +21,7 @@ xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> "Launcher3" - "Ishga oid" + "Ish" "Ilova o‘rnatilmadi." "Ilova mavjud emas" "Yuklab olingan ilova xavfsiz rejimda o‘chirib qo‘yildi" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index 3718963540..866e269df5 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -131,7 +131,7 @@ "Loại bỏ" "Đã loại bỏ thông báo" "Cá nhân" - "Cơ quan" + "Công việc" "Hồ sơ công việc" "Tìm ứng dụng công việc tại đây" "Mỗi ứng dụng công việc đều có một huy hiệu và được tổ chức của bạn bảo mật. Bạn có thể di chuyển ứng dụng đến Màn hình chính để truy cập dễ dàng hơn." diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index e7377440c1..2c38915922 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -93,7 +93,7 @@ "變更設定" "顯示通知圓點" "將圖示加到主畫面" - "適用於新安裝的應用程式" + "新安裝的應用程式" "不明" "移除" "搜尋" @@ -131,7 +131,7 @@ "關閉" "關閉咗通知" "個人" - "商務" + "工作" "工作設定檔" "請在此處尋找工作應用程式" "每個工作應用程式都有一個徽章,並由您的機構負責保持安全。您可以將工作應用程式移至主畫面,以便輕鬆存取。" From d3332dd5f0071c35f80e450dfe05e25b04e02f8d Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 10:30:39 -0700 Subject: [PATCH 43/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I38b887423272ebb195ec5127d3e419f0cf20c2b2 --- SecondaryDisplayLauncher/res/values-ne/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SecondaryDisplayLauncher/res/values-ne/strings.xml b/SecondaryDisplayLauncher/res/values-ne/strings.xml index 9a5b0a0590..6bcff21762 100644 --- a/SecondaryDisplayLauncher/res/values-ne/strings.xml +++ b/SecondaryDisplayLauncher/res/values-ne/strings.xml @@ -20,6 +20,6 @@ "उक्त क्रियाकलाप सुरु गर्न सकिएन" - "अनुप्रयोगको सर्टकट थप्नुहोस्‌" + "एपको सर्टकट थप्नुहोस्‌" "वालपेपर सेट गर्नुहोस्" From b35bdbc8acb3f1f877eccfc5a1e2878e58e138ec Mon Sep 17 00:00:00 2001 From: vadimt Date: Fri, 10 Jul 2020 12:31:21 -0700 Subject: [PATCH 44/56] More logging for the widgets scroll bug Bug: 160238801 Change-Id: I198aea39ccbb3b4ab6d8696cccc868cf6465b9d2 --- src/com/android/launcher3/widget/WidgetsDiffReporter.java | 6 ++++-- src/com/android/launcher3/widget/WidgetsRecyclerView.java | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/widget/WidgetsDiffReporter.java b/src/com/android/launcher3/widget/WidgetsDiffReporter.java index df6e2c3023..c9e80dc848 100644 --- a/src/com/android/launcher3/widget/WidgetsDiffReporter.java +++ b/src/com/android/launcher3/widget/WidgetsDiffReporter.java @@ -20,8 +20,10 @@ import android.util.Log; import androidx.recyclerview.widget.RecyclerView; +import com.android.launcher3.Utilities; import com.android.launcher3.icons.IconCache; import com.android.launcher3.model.data.PackageItemInfo; +import com.android.launcher3.testing.TestProtocol; import com.android.launcher3.widget.WidgetsListAdapter.WidgetListRowEntryComparator; import java.util.ArrayList; @@ -32,8 +34,8 @@ import java.util.Iterator; * methods accordingly. */ public class WidgetsDiffReporter { - private static final boolean DEBUG = false; - private static final String TAG = "WidgetsDiffReporter"; + private static final boolean DEBUG = Utilities.IS_RUNNING_IN_TEST_HARNESS; // b/160238801 + private static final String TAG = TestProtocol.NO_SCROLL_END_WIDGETS; private final IconCache mIconCache; private final RecyclerView.Adapter mListener; diff --git a/src/com/android/launcher3/widget/WidgetsRecyclerView.java b/src/com/android/launcher3/widget/WidgetsRecyclerView.java index 17baa271e2..8f81977fc2 100644 --- a/src/com/android/launcher3/widget/WidgetsRecyclerView.java +++ b/src/com/android/launcher3/widget/WidgetsRecyclerView.java @@ -120,6 +120,9 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch public int getCurrentScrollY() { // Skip early if widgets are not bound. if (isModelNotReady() || getChildCount() == 0) { + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, "getCurrentScrollY: -1"); + } return -1; } @@ -128,6 +131,10 @@ public class WidgetsRecyclerView extends BaseRecyclerView implements OnItemTouch int y = (child.getMeasuredHeight() * rowIndex); int offset = getLayoutManager().getDecoratedTop(child); + if (Utilities.IS_RUNNING_IN_TEST_HARNESS) { + Log.d(TestProtocol.NO_SCROLL_END_WIDGETS, + "getCurrentScrollY: " + (getPaddingTop() + y - offset)); + } return getPaddingTop() + y - offset; } From 82d9d790b69f76d55768bfb730ccb65872f16886 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 14:53:42 -0700 Subject: [PATCH 45/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: Ie7f89fcd5655dcc994fefefeb57154e67a6f6527 --- quickstep/res/values-de/strings.xml | 2 +- quickstep/res/values-ne/strings.xml | 2 +- quickstep/res/values-ru/strings.xml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml index 0a6118bb15..8df09ff9a4 100644 --- a/quickstep/res/values-de/strings.xml +++ b/quickstep/res/values-de/strings.xml @@ -20,7 +20,7 @@ "Splitscreen" - "Anpinnen" + "Fixieren" "Freeform-Modus" "Übersicht" "Keine kürzlich verwendeten Elemente" diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml index ae23a09fc1..c47f951809 100644 --- a/quickstep/res/values-ne/strings.xml +++ b/quickstep/res/values-ne/strings.xml @@ -25,7 +25,7 @@ "परिदृश्य" "हालसालैको कुनै पनि वस्तु छैन" "बन्द गर्नुहोस्" - "अनुप्रयोगको उपयोगका सेटिङहरू" + "एपको उपयोगका सेटिङहरू" "सबै खाली गर्नुहोस्" "हालसालैका एपहरू" "%1$s, %2$s" diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml index 5dd89a644b..34fbe0f3fa 100644 --- a/quickstep/res/values-ru/strings.xml +++ b/quickstep/res/values-ru/strings.xml @@ -20,7 +20,7 @@ "Разделить экран" - "Блокировать" + "Закрепить" "Произвольная форма" "Обзор" "Здесь пока ничего нет." From 7a1ffa32227fdba8b4dcdb98069dd0770141ab70 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 14:54:19 -0700 Subject: [PATCH 46/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I89c54ef089cf1b7db377ec3d7759e1e727b7bd70 --- quickstep/res/values-af/strings.xml | 8 +++++--- quickstep/res/values-am/strings.xml | 8 +++++--- quickstep/res/values-ar/strings.xml | 14 ++++++++------ quickstep/res/values-as/strings.xml | 8 +++++--- quickstep/res/values-az/strings.xml | 10 ++++++---- quickstep/res/values-b+sr+Latn/strings.xml | 8 +++++--- quickstep/res/values-be/strings.xml | 8 +++++--- quickstep/res/values-bg/strings.xml | 14 ++++++++------ quickstep/res/values-bn/strings.xml | 10 ++++++---- quickstep/res/values-bs/strings.xml | 8 +++++--- quickstep/res/values-ca/strings.xml | 10 ++++++---- quickstep/res/values-cs/strings.xml | 8 +++++--- quickstep/res/values-da/strings.xml | 8 +++++--- quickstep/res/values-de/strings.xml | 12 +++++++----- quickstep/res/values-en-rAU/strings.xml | 8 +++++--- quickstep/res/values-en-rCA/strings.xml | 8 +++++--- quickstep/res/values-en-rGB/strings.xml | 8 +++++--- quickstep/res/values-en-rIN/strings.xml | 8 +++++--- quickstep/res/values-en-rXC/strings.xml | 8 +++++--- quickstep/res/values-es-rUS/strings.xml | 8 +++++--- quickstep/res/values-et/strings.xml | 10 ++++++---- quickstep/res/values-eu/strings.xml | 8 +++++--- quickstep/res/values-fi/strings.xml | 10 ++++++---- quickstep/res/values-fr-rCA/strings.xml | 12 +++++++----- quickstep/res/values-fr/strings.xml | 8 +++++--- quickstep/res/values-gl/strings.xml | 8 +++++--- quickstep/res/values-gu/strings.xml | 12 +++++++----- quickstep/res/values-hi/strings.xml | 10 ++++++---- quickstep/res/values-hr/strings.xml | 12 +++++++----- quickstep/res/values-hu/strings.xml | 10 ++++++---- quickstep/res/values-hy/strings.xml | 10 ++++++---- quickstep/res/values-in/strings.xml | 12 +++++++----- quickstep/res/values-is/strings.xml | 12 +++++++----- quickstep/res/values-it/strings.xml | 10 ++++++---- quickstep/res/values-iw/strings.xml | 10 ++++++---- quickstep/res/values-ja/strings.xml | 18 ++++++++++-------- quickstep/res/values-ka/strings.xml | 8 +++++--- quickstep/res/values-kk/strings.xml | 8 +++++--- quickstep/res/values-km/strings.xml | 8 +++++--- quickstep/res/values-kn/strings.xml | 8 +++++--- quickstep/res/values-ko/strings.xml | 16 +++++++++------- quickstep/res/values-ky/strings.xml | 16 +++++++++------- quickstep/res/values-lo/strings.xml | 8 +++++--- quickstep/res/values-lt/strings.xml | 8 +++++--- quickstep/res/values-lv/strings.xml | 8 +++++--- quickstep/res/values-mk/strings.xml | 8 +++++--- quickstep/res/values-ml/strings.xml | 8 +++++--- quickstep/res/values-mn/strings.xml | 8 +++++--- quickstep/res/values-mr/strings.xml | 12 +++++++----- quickstep/res/values-ms/strings.xml | 8 +++++--- quickstep/res/values-my/strings.xml | 8 +++++--- quickstep/res/values-nb/strings.xml | 8 +++++--- quickstep/res/values-ne/strings.xml | 10 ++++++---- quickstep/res/values-nl/strings.xml | 10 ++++++---- quickstep/res/values-or/strings.xml | 8 +++++--- quickstep/res/values-pa/strings.xml | 10 ++++++---- quickstep/res/values-pl/strings.xml | 12 +++++++----- quickstep/res/values-pt-rPT/strings.xml | 12 +++++++----- quickstep/res/values-pt/strings.xml | 8 +++++--- quickstep/res/values-ro/strings.xml | 8 +++++--- quickstep/res/values-ru/strings.xml | 18 ++++++++++-------- quickstep/res/values-si/strings.xml | 8 +++++--- quickstep/res/values-sk/strings.xml | 10 ++++++---- quickstep/res/values-sl/strings.xml | 8 +++++--- quickstep/res/values-sr/strings.xml | 8 +++++--- quickstep/res/values-sv/strings.xml | 8 +++++--- quickstep/res/values-sw/strings.xml | 16 +++++++++------- quickstep/res/values-ta/strings.xml | 8 +++++--- quickstep/res/values-te/strings.xml | 12 +++++++----- quickstep/res/values-th/strings.xml | 10 ++++++---- quickstep/res/values-tl/strings.xml | 8 +++++--- quickstep/res/values-tr/strings.xml | 16 +++++++++------- quickstep/res/values-uk/strings.xml | 14 ++++++++------ quickstep/res/values-ur/strings.xml | 8 +++++--- quickstep/res/values-uz/strings.xml | 8 +++++--- quickstep/res/values-zh-rCN/strings.xml | 8 +++++--- quickstep/res/values-zh-rHK/strings.xml | 14 ++++++++------ quickstep/res/values-zh-rTW/strings.xml | 12 +++++++----- quickstep/res/values-zu/strings.xml | 8 +++++--- 79 files changed, 470 insertions(+), 312 deletions(-) diff --git a/quickstep/res/values-af/strings.xml b/quickstep/res/values-af/strings.xml index d1bf9f65dd..03d774d693 100644 --- a/quickstep/res/values-af/strings.xml +++ b/quickstep/res/values-af/strings.xml @@ -32,17 +32,19 @@ "Programvoorstelle" "Alle programme" "Jou voorspelde programme" - "Kry maklik toegang tot jou mees gebruikte programme" - "Pixel voorspel watter programme jy volgende nodig sal hê, direk van jou tuisskerm af. Tik om op te stel." "Kry programvoorstelle in die onderste ry van jou tuisskerm" + "Kry programvoorstelle op jou tuisskerm se gunstelingery" "Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die onderste ry sal opskuif na jou tuisskerm." + "Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die gunstelingery sal na jou tuisskerm toe skuif." "Kry maklik toegang tot jou programme wat die meeste gebruik word, direk van die tuisskerm af. Voorstelle sal verander op grond van jou roetines. Programme in die onderste ry sal na \'n nuwe vouer toe skuif." "Kry programvoorstelle" "Nee, dankie" - "Instellings" + "Instellings" "Programme wat die meeste gebruik word, verskyn hier, en verander op grond van roetines" "Sleep programme van die onderste ry af om programvoorstelle te kry" "Programvoorstelle is in leë spasie bygevoeg" + "Programvoorstelle is geaktiveer" + "Programvoorstelle is gedeaktiveer" "Voorspelde program: %1$s" "Deel" "Skermkiekie" diff --git a/quickstep/res/values-am/strings.xml b/quickstep/res/values-am/strings.xml index 77d9904902..bd5428385f 100644 --- a/quickstep/res/values-am/strings.xml +++ b/quickstep/res/values-am/strings.xml @@ -33,16 +33,18 @@ "ሁሉም መተግበሪያዎች" "የእርስዎ የሚገመቱ መተግበሪያዎች" "በመነሻ ገጽዎ ታችኛው ረድፍ ላይ የመተግበሪያ አስተያየት ጥቆማዎችን ያግኙ" + "በመነሻ ማያ ገጽዎ የተወዳጆች ረድፍ ላይ የመተግበሪያ አስተያየት ጥቆማዎችን ያግኙ" "በጣም ስራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ። በታችኛው ረድፍ ላይ ያሉ መተግበሪያዎች ወደ መነሻ ገጽዎ ይወሰዳሉ።" + "በጣም ሥራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመሥረት ይቀየራሉ። በተወዳጆች ረድፍ ውስጥ ያሉ መተግበሪያዎች ወደ የእርስዎ መነሻ ማያ ገጽ ይንቀሳቀሳሉ።" "በጣም ስራ ላይ የዋሉ መተግበሪያዎችዎን በቀላሉ ከመነሻ ገጹ ሆነው ይድረሱባቸው። የአስተያየት ጥቆማዎች በእርስዎ ዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ። በታችኛው ረድፍ ላይ ያሉ መተግበሪያዎች ወደ አዲስ አቃፊ ይወሰዳሉ።" "የመተግበሪያ አስተያየት ጥቆማዎችን አግኝ" "አይ፣ አመሰግናለሁ" - "ቅንብሮች" + "ቅንብሮች" "በብዛት ስራ ላይ የዋሉ መተግበሪያዎች እዚህ ይመጣሉ፣ እና በዕለት ተዕለት ተግባራት ላይ በመመስረት ይቀየራሉ" "የመተግበሪያ ጥቆማዎችን ለማግኘት መተግበሪያዎችን ከታችኛው ረድፍ ይጎትቱ" "የመተግበሪያ አስተያየት ጥቆማዎች ወደ ባዶ ቦታ ታክለዋል" - - + "የመተግበሪያ አስተያየት ጥቆማዎች ነቅቷል" + "የመተግበሪያ አስተያየቶች ቦዝነዋል" "የተገመተው መተግበሪያ፦ %1$s" "አጋራ" "ቅጽበታዊ ገጽ እይታ" diff --git a/quickstep/res/values-ar/strings.xml b/quickstep/res/values-ar/strings.xml index f369f81318..780104b326 100644 --- a/quickstep/res/values-ar/strings.xml +++ b/quickstep/res/values-ar/strings.xml @@ -32,17 +32,19 @@ "التطبيقات المقترحة" "جميع التطبيقات" "تطبيقاتك المتوقّعة" - "الوصول بسهولة إلى التطبيقات الأكثر استخدامًا" - "‏يتوقع هاتف Pixel التطبيقات التي ستحتاج إليها بعد ذلك من الشاشة الرئيسية مباشرةً. انقر للإعداد." - "تلقّي التطبيقات المقترحة من الصف الأسفل في الشاشة الرئيسية" - "يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من الصف الأسفل للأعلى في الشاشة الرئيسية." + "رؤية التطبيقات المقترحة في الصف السفلي من الشاشة الرئيسية" + "رؤية التطبيقات المقترحة في صف التطبيقات المفضّلة في الشاشة الرئيسية" + "يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من الصف السفلي للعلوي في الشاشة الرئيسية." + "يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من صف التطبيقات المفضّلة إلى الشاشة الرئيسية." "يمكنك الوصول إلى التطبيقات الأكثر استخدامًا بسهولة من الشاشة الرئيسية مباشرةً. سيتم تغيير الاقتراحات استنادًا إلى سلاسل الإجراءات. سيتم نقل التطبيقات من الصف الأسفل إلى مجلد جديد." - "تلقّي اقتراحات عن تطبيقات" + "رؤية تطبيقات مقترحة" "لا، شكرًا" - "الإعدادات" + "الإعدادات" "تظهر هنا التطبيقات الأكثر استخدامًا، ويستند التغيير إلى سلاسل الإجراءات." "يمكنك سحب التطبيقات من الصف الأسفل لتلقّي اقتراحات." "تمت إضافة التطبيقات المقترحة إلى مساحة فارغة." + "تم تفعيل ميزة \"التطبيقات المقترحة\"." + "ميزة \"التطبيقات المقترحة\" غير مفعّلة." "التطبيق المتوقع: %1$s" "مشاركة" "لقطة شاشة" diff --git a/quickstep/res/values-as/strings.xml b/quickstep/res/values-as/strings.xml index e3df95b2b5..ff0dc20af2 100644 --- a/quickstep/res/values-as/strings.xml +++ b/quickstep/res/values-as/strings.xml @@ -32,17 +32,19 @@ "এপ চাজেশ্বন" "সকলো এপ্" "আপোনাৰ অনুমানিক এপ্" - "আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ সহজে এক্সেছ কৰক" - "আপোনাক আপোনাৰ গৃহ স্ক্ৰীনত পৰৱর্তী সময়ত কোনবোৰ এপ্ আৱশ্যক হ\'ব সেয়া Pixelএ অনুমান কৰে। ছেট আপ কৰিবলৈ টিপক।" "আপোনাৰ গৃহ স্ক্ৰীনৰ একেবাৰে তলৰ শাৰীটোত এপৰ পৰামর্শসমূহ পাওক" + "আপোনাৰ গৃহ স্ক্ৰীনৰ প্ৰিয় সমলৰ শাৰীটোত এপৰ পৰামর্শসমূহ পাওক" "আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ\'ব। একেবাৰে তলৰ শাৰীটোত থকা এপ্‌সমূহ ওপৰৰ আপোনাৰ গৃহ স্ক্ৰীনলৈ যাব।" + "আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ’ব। প্ৰিয় সমলৰ শাৰীত থকা এপ্‌সমূহ আপোনাৰ গৃহ স্ক্রীনলৈ যাব।" "আপোনাৰ সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ গৃহ স্ক্ৰীনতে সহজে এক্সেছ কৰক। আপোনাৰ ৰুটিনসমূহৰ ভিত্তিত পৰামর্শসমূহ সলনি হ\'ব। একেবাৰে তলৰ শাৰীটোত থকা এপ্‌সমূহ এটা নতুন ফ\'ল্ডাৰলৈ যাব।" "এপৰ পৰামর্শসমূহ পাওক" "নালাগে, ধন্যবাদ" - "ছেটিংসমূহ" + "ছেটিংসমূহ" "সকলোতকৈ বেছিকৈ ব্যৱহৃত এপ্‌সমূহ ইয়াত প্ৰদর্শিত হয় আৰু ৰুটিনসমূহ ওপৰত ভিত্তি কৰি সলনি হয়" "এপৰ পৰামর্শসমূহ পাবলৈ একেবাৰে তলৰ শাৰীত থকা এপ্‌সমূহ টানি আঁতৰাওক" "খালী ঠাইত এপৰ পৰামর্শসমূহ যোগ কৰা হ\'ল" + "এপৰ পৰামৰ্শসমূহ সক্ষম কৰা আছে" + "এপৰ পৰামৰ্শসমূহ অক্ষম কৰা আছে" "পূৰ্বানুমান কৰা এপ্: %1$s" "শ্বেয়াৰ কৰক" "স্ক্ৰীনশ্বট" diff --git a/quickstep/res/values-az/strings.xml b/quickstep/res/values-az/strings.xml index 60a9439c8a..6e169b446e 100644 --- a/quickstep/res/values-az/strings.xml +++ b/quickstep/res/values-az/strings.xml @@ -32,17 +32,19 @@ "Tətbiq təklifləri" "Bütün tətbiqlər" "Təklif edilən tətbiqlər" - "Ən çox istifadə etdiyiniz tətbiqlərə asanlıqla daxil olun" - "Pixel növbəti dəfə ehtiyacınız olacaq tətbiqləri birbaşa Ana ekranda proqnozlaşdırır. Ayarlamaq üçün toxunun." "Ana ekranın aşağı sırasında tətbiq təklifləri alın" + "Ana ekranın sevimlilər sırasında tətbiq təklifləri alın" "Birbaşa Ana ekrandan ən çox istifadə edilən tətbiqlərə asanlıqla daxil olun. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Aşağı sıradakı tətbiqlər Ana ekrana köçürüləcək." + "Birbaşa Ana ekrandan ən çox işlədilən tətbiqlərə asanlıqla girin. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Sevimlilər sırasındakı tətbiqlər Əsas ekrana köçürüləcək." "Birbaşa Əsas səhifədən ən çox istifadə edilən tətbiqlərə asanlıqla daxil olun. Təkliflər rejimlərinizə uyğun olaraq dəyişəcək. Aşağı sıradakı tətbiqlər yeni qovluğa köçürüləcək." "Tətbiq təklifləri əldə edin" - "Xeyr, təşəkkür" - "Ayarlar" + "Yox, çox sağolun" + "Ayarlar" "Ən çox istifadə edilən tətbiqlər burada görünür və rejimlərə uyğun olaraq dəyişir" "Tətbiq təklifləri əldə etmək üçün tətbiqləri aşağı sıradan kənara sürüşdürün" "Tətbiq təklifləri boş sahəyə əlavə edildi" + "Tətbiq təklifləri aktivdir" + "Tətbiq təklifləri deaktivdir" "Proqnozlaşdırılan tətbiq: %1$s" "Paylaşın" "Ekran şəkli" diff --git a/quickstep/res/values-b+sr+Latn/strings.xml b/quickstep/res/values-b+sr+Latn/strings.xml index 393e072359..4d12c9b16f 100644 --- a/quickstep/res/values-b+sr+Latn/strings.xml +++ b/quickstep/res/values-b+sr+Latn/strings.xml @@ -32,17 +32,19 @@ "Predlozi aplikacija" "Sve aplikacije" "Predviđene aplikacije" - "Lako pristupajte aplikacijama koje najčešće koristite" - "Pixel predviđa koje će vam aplikacije sledeće trebati i stavlja ih na početni ekran. Dodirnite da biste podesili." "Dobijajte predloge aplikacija u donjem redu početnog ekrana" + "Dobijajte predloge aplikacija u redu sa omiljenim stavkama na početnom ekranu" "Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu upotrebe. Aplikacije iz donjeg reda se premeštaju nagore na početni ekran." + "Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu vaših rutina. Aplikacije iz reda sa omiljenim stavkama se premeštaju na početni ekran." "Lako pristupajte aplikacijama koje najčešće koristite direktno sa početnog ekrana. Predlozi se menjaju na osnovu upotrebe. Aplikacije iz donjeg reda se premeštaju u nov direktorijum." "Prikazuj predloge aplikacija" "Ne, hvala" - "Podešavanja" + "Podešavanja" "Ovde se prikazuju najčešće korišćene aplikacije i menjaju se u zavisnosti od upotrebe" "Prevucite aplikacije iz donjeg reda da biste dobili predloge" "Predlozi aplikacija se dodaju na prazno mesto" + "Predlozi aplikacija su omogućeni" + "Predlozi aplikacija su onemogućeni" "Predviđamo aplikaciju: %1$s" "Deli" "Snimak ekrana" diff --git a/quickstep/res/values-be/strings.xml b/quickstep/res/values-be/strings.xml index c397a36164..b3f5e52479 100644 --- a/quickstep/res/values-be/strings.xml +++ b/quickstep/res/values-be/strings.xml @@ -32,17 +32,19 @@ "Прапановы праграм" "Усе праграмы" "Вашы праграмы з падказак" - "Атрымлiвайце прамы доступ да праграм, якімі вы карыстаецеся найбольш часта" - "Pixel падказвае, якія праграмы могуць спатрэбіцца вам далей, і размяшчае іх на Галоўным экране. Дакраніцеся, каб наладзіць." "Атрымлівайце прапановы праграм у ніжнім радку на Галоўным экране." + "Атрымлівайце прапановы праграм у пераліку абраных на Галоўным экране" "Атрымлiвайце доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Праграмы, якія знаходзяцца ў ніжнім радку, будуць перамешчаны на Галоўны экран." + "Атрымлівайце доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Пералік абраных праграм будзе перамешчаны на Галоўны экран." "Атрымлiвайце просты доступ да праграм, якімі вы карыстаецеся найбольш часта, непасрэдна з Галоўнага экрана. Прапановы будуць змяняцца ў залежнасці ад вашых дзеянняў. Праграмы, якія знаходзяцца ў ніжнім радку, будуць перамешчаны ў новую папку." "Атрымаць прапановы праграм" "Не, дзякуй" - "Налады" + "Налады" "Тут з\'яўляюцца праграмы, якімі вы карыстаецеся найбольш часта. Гэты спіс змяняецца на падставе вашых дзеянняў" "Перацягніце праграмы з ніжняга радка, каб атрымаць прапановы праграм" "Прапановы праграм дададзены на свабоднае месца" + "Прапановы праграм уключаны" + "Прапановы праграм выключаны" "Праграма з падказкі: %1$s" "Абагуліць" "Здымак экрана" diff --git a/quickstep/res/values-bg/strings.xml b/quickstep/res/values-bg/strings.xml index 31ff0ae15c..db7006f564 100644 --- a/quickstep/res/values-bg/strings.xml +++ b/quickstep/res/values-bg/strings.xml @@ -32,17 +32,19 @@ "Предложения за приложения" "Всички приложения" "Предвидени приложения" - "Лесен достъп до най-използваните прилож." - "Pixel предвижда кои приложения ще са ви нужни в следващия момент и ви ги показва директно на началния екран. Докоснете, за да настроите." "Получавайте предложения за приложения на най-долния ред на началния си екран" - "Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на поредиците ви. Приложенията на най-долния ред ще се преместят на началния ви екран." - "Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на поредиците ви. Приложенията на най-долния ред ще се преместят в нова папка." - "Получаване на предложения за приложения" + "Получаване на предложения за приложения в реда с любими на началния екран" + "Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на действията ви. Приложенията на най-долния ред ще се преместят на началния ви екран." + "Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на действията ви. Приложенията в реда с любими ще бъдат преместени на началния екран." + "Осъществявайте лесен достъп до най-използваните от вас приложения директно от началния екран. Предложенията ще се променят въз основа на действията ви. Приложенията на най-долния ред ще се преместят в нова папка." + "Предложения" "Не, благодаря" - "Настройки" + "Настройки" "Най-използваните приложения се показват тук и се променят въз основа на поредиците" "За да получавате предложения за приложения, с плъзгане премахнете приложенията от най-долния ред" "Предложенията за приложения са добавени на празното място" + "Функцията „Предложения за приложения“ е активирана" + "Функцията „Предложения за приложения“ е деактивирана" "Предвидено приложение: %1$s" "Споделяне" "Екранна снимка" diff --git a/quickstep/res/values-bn/strings.xml b/quickstep/res/values-bn/strings.xml index 531d553371..b230ec5611 100644 --- a/quickstep/res/values-bn/strings.xml +++ b/quickstep/res/values-bn/strings.xml @@ -32,17 +32,19 @@ "অ্যাপের সাজেশন" "সব অ্যাপ" "আপনার প্রয়োজন হতে পারে এমন অ্যাপ" - "আপনার সব থেকে ব্যবহার করা অ্যাপ সহজেই অ্যাক্সেস করুন" - "Pixel আপনার হোম স্ক্রিনে পরবর্তী প্রয়োজনীয় অ্যাপের পূর্বাভাস দেয়। সেট-আপ করতে ট্যাপ করুন।" "আপনার হোম স্ক্রিনের নিচে সারিতে অ্যাপ সাজেশন পান" - "হোম স্ক্রিনের পাশে সব থেকে ব্যবহার করা অ্যাপ সহজেই অ্যাক্সেস করুন। আপনার রুটিনের উপর ভিত্তি করে সাজেশন পরির্তন করা হবে। নিচের সারিতে থাকা অ্যাপ আপনার হোম স্ক্রিনে সরানো হবে।" + "হোম স্ক্রিনের \'ফেভারিট রো\' বিকল্পের জন্য অ্যাপ সাজেশন পান" + "হোম স্ক্রিন থেকে সরাসরি সব থেকে বেশি ব্যবহার করা অ্যাপগুলি অ্যাক্সেস করুন। আপনার রুটিনের উপর ভিত্তি করে সাজেশন পরির্তন করা হবে। নিচের সারিতে থাকা অ্যাপ আপনার হোম স্ক্রিনে সরানো হবে।" + "খুব বেশি ব্যবহার করেন এমন অ্যাপগুলি হোম স্ক্রিন থেকে সহজে সরাসরি অ্যাক্সেস করুন। আপনার রুটিন অনুযায়ী সাজেশন পরির্তন করা হবে। \'ফেভারিট রো\' বিকল্পে থাকা অ্যাপগুলি হোম স্ক্রিনে সরিয়ে দেওয়া হবে।" "হোম স্ক্রিনের পাশে সব থেকে ব্যবহার করা অ্যাপ সহজেই অ্যাক্সেস করুন। আপনার রুটিনের উপর ভিত্তি করে সাজেশন পরির্তন করা হবে। নিচের সারিতে থাকা অ্যাপ নতুন ফোল্ডারে সরানো হবে।" "অ্যাপ সাজেশন পান" "না থাক" - "সেটিংস" + "সেটিংস" "সব থেকে বেশি ব্যবহার করা অ্যাপ এখানে দেখানো হয় এবং রুটিনের উপর ভিত্তি করে পরিবর্তন হতে পারে" "অ্যাপ সাজেশন পেতে নিচের সারিতে অ্যাপগুলি টেনে আনুন" "খালি জায়গাতে অ্যাপ সাজেশন যোগ করা হয়েছে" + "অ্যাপ সাজেশন চালু করা আছে" + "অ্যাপ সাজেশন বন্ধ করা আছে" "আপনার প্রয়োজন হতে পারে এমন অ্যাপ: %1$s" "শেয়ার করুন" "স্ক্রিনশট" diff --git a/quickstep/res/values-bs/strings.xml b/quickstep/res/values-bs/strings.xml index 7e2d38a88d..6b513b76db 100644 --- a/quickstep/res/values-bs/strings.xml +++ b/quickstep/res/values-bs/strings.xml @@ -32,17 +32,19 @@ "Prijedlozi aplikacija" "Sve aplikacije" "Predviđene aplikacije" - "Jednostavno pristupite najčešće korištenim aplikacijama" - "Pixel predviđa koje će vam aplikacije trebati sljedeće, direktno na početnom ekranu. Dodirnite da postavite." "Primajte prijedloge aplikacija u donjem redu početnog ekrana" + "Primajte prijedloge aplikacija u redu omiljenih stavki početnog ekrana" "Jednostavno pristupite najčešće korištenim aplikacijama direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije koje se nalaze u donjem redu će se premjestiti na početni ekran." + "Jednostavno pristupite najčešće korištenim aplikacijama direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije u redu omiljenih stavki će se premjestiti na početni ekran." "Jednostavno pristupite najčešće korištenim aplikacijama, direktno na početnom ekranu. Prijedlozi će se mijenjati na osnovu vaših rutina. Aplikacije koje se nalaze u donjem redu će se premjestiti u novi folder." "Prikaži prijedloge aplikacija" "Ne, hvala" - "Postavke" + "Postavke" "Ovdje se prikazuju najčešće korištene aplikacije i njihov prikaz se mijenja na osnovu rutina" "Prevucite aplikacije iz donjeg reda da dobijete prijedloge aplikacija" "Prijedlozi aplikacija su dodani u prazan prostor" + "Prijedlozi aplikacija su omogućeni" + "Prijedlozi aplikacija su onemogućeni" "Predviđena aplikacija: %1$s" "Dijeli" "Snimak ekrana" diff --git a/quickstep/res/values-ca/strings.xml b/quickstep/res/values-ca/strings.xml index ca229d26c5..657239ce0d 100644 --- a/quickstep/res/values-ca/strings.xml +++ b/quickstep/res/values-ca/strings.xml @@ -32,17 +32,19 @@ "Suggeriments d\'aplicacions" "Totes les aplicacions" "Prediccions d\'aplicacions" - "Accedeix fàcilment a les aplicacions que més utilitzes" - "Pixel prediu les aplicacions que necessitaràs a continuació, directament a la pantalla d\'inici. Toca per configurar." "Obtén suggeriments d\'aplicacions a la fila inferior de la pantalla d\'inici" + "Obtén suggeriments d\'aplicacions a la fila Preferides de la teva pantalla d\'inici" "Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció de la teva rutina. Les aplicacions de la fila inferior pujaran a la pantalla d\'inici." + "Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció de la teva rutina. Les aplicacions de la fila Preferides es mouran a la teva pantalla d\'inici." "Accedeix fàcilment a les aplicacions que més utilitzes des de la pantalla d\'inici. Els suggeriments variaran en funció de la teva rutina. Les aplicacions de la fila inferior es mouran a una carpeta nova." - "Obtén suggeriments d\'aplicacions" + "Mostra suggeriments d\'aplicacions" "No, gràcies" - "Configuració" + "Configuració" "Les aplicacions que més utilitzes apareixen aquí i poden variar en funció de la teva rutina" "Arrossega les aplicacions fora de la fila inferior per obtenir suggeriments d\'aplicacions" "S\'han afegit suggeriments d\'aplicacions en un espai buit" + "Els suggeriments d\'aplicacions estan activats" + "Els suggeriments d\'aplicacions estan desactivats" "Predicció d\'aplicació: %1$s" "Comparteix" "Captura de pantalla" diff --git a/quickstep/res/values-cs/strings.xml b/quickstep/res/values-cs/strings.xml index 2486f27603..2cff6eb659 100644 --- a/quickstep/res/values-cs/strings.xml +++ b/quickstep/res/values-cs/strings.xml @@ -32,17 +32,19 @@ "Návrhy aplikací" "Všechny aplikace" "Vaše předpovídané aplikace" - "Snadný přístup k nejpoužívanějším aplikacím" - "Telefon Pixel předvídá, které aplikace budete potřebovat jako další, a zobrazuje je přímo na ploše. Klepnutím zahájíte nastavení." "Nechte si ve spodním řádku na ploše zobrazovat návrhy aplikací" + "Nechte si na řádku oblíbených na ploše zobrazovat návrhy aplikací" "Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit v závislosti na sledech činností. Aplikace ve spodním řádku se přesunou na vaši plochu." + "Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit v závislosti na sledech činností. Aplikace na řádku oblíbených se přesunou na plochu." "Mějte nejpoužívanější aplikace k dispozici přímo na ploše. Návrhy se budou měnit v závislosti na sledech činností. Aplikace ve spodním řádku se přesunou do nové složky." "Zobrazovat návrhy aplikací" "Ne, díky" - "Nastavení" + "Nastavení" "Zde se zobrazují nejpoužívanější aplikace (které se mění podle sledů činností)" "Chcete-li získat návrhy aplikací, přetáhněte aplikace z dolního řádku" "Volné místo bylo vyplněno návrhy aplikací" + "Návrhy aplikací jsou povoleny" + "Návrhy aplikací jsou zakázány" "Předpokládaná aplikace: %1$s" "Sdílet" "Snímek obrazovky" diff --git a/quickstep/res/values-da/strings.xml b/quickstep/res/values-da/strings.xml index 3499663e73..2cd265c6a3 100644 --- a/quickstep/res/values-da/strings.xml +++ b/quickstep/res/values-da/strings.xml @@ -32,17 +32,19 @@ "Appforslag" "Alle apps" "Dine foreslåede apps" - "Få nem adgang til dine mest brugte apps" - "Pixel forudser, hvilke apps du har brug for, direkte på din startskærm. Tryk for at konfigurere" "Få appforslag på den nederste række af din startskærm" + "Få appforslag i rækken med favoritter på din startskærm" "Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i nederste række bliver flyttet op til din startskærm." + "Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i rækken med favoritter bliver flyttet til din startskærm." "Få nem adgang til dine mest brugte apps direkte fra startskærmen. Forslagene ændres ud fra dine vaner. Apps i nederste række bliver flyttet til en ny mappe." "Få appforslag" "Nej tak" - "Indstillinger" + "Indstillinger" "De mest brugte apps vises her, og visningen ændres ud fra dine vaner" "Træk apps væk fra den nederste række for at få appforslag" "Appforslag blev føjet til tom plads" + "Appforslag er aktiveret" + "Appforslag er deaktiveret" "App, du forventes at skulle bruge: %1$s" "Del" "Screenshot" diff --git a/quickstep/res/values-de/strings.xml b/quickstep/res/values-de/strings.xml index a30933157c..17ba8ad457 100644 --- a/quickstep/res/values-de/strings.xml +++ b/quickstep/res/values-de/strings.xml @@ -33,16 +33,18 @@ "Alle Apps" "App-Vorschläge für dich" "Lass dir in der unteren Reihe auf deinem Startbildschirm Vorschläge für Apps anzeigen" - "Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge richten sich nach deiner gewöhnlichen Nutzung. Apps in der unteren Reihe werden nach oben auf den Startbildschirm verschoben." - "Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge richten sich nach deiner gewöhnlichen Nutzung. Apps in der unteren Reihe werden in einen neuen Ordner verschoben." + "Lass dir in der Favoritenleiste auf dem Startbildschirm App-Vorschläge anzeigen" + "Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge werden deiner Nutzung entsprechend laufend angepasst. Apps in der unteren Reihe werden nach oben auf den Startbildschirm verschoben." + "Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge richten sich nach deiner gewöhnlichen Nutzung. Apps der Favoritenleiste werden auf den Startbildschirm verschoben." + "Schneller Zugriff auf deine meistverwendeten Apps direkt über den Startbildschirm. Die Vorschläge werden deiner Nutzung entsprechend laufend angepasst. Apps in der unteren Reihe werden in einen neuen Ordner verschoben." "App-Vorschläge erhalten" "Nein danke" - "Einstellungen" + "Einstellungen" "Hier erscheinen die meistverwendeten Apps. Die Angaben können sich je nach deiner gewöhnlichen Nutzung ändern" "Ziehe Apps aus der unteren Reihe heraus, um Vorschläge für Apps zu bekommen" "App-Vorschläge in freiem Bereich hinzugefügt" - - + "Funktion \"App-Vorschläge\" aktiviert" + "Funktion \"App-Vorschläge\" deaktiviert" "App-Vorhersage: %1$s" "Teilen" "Screenshot" diff --git a/quickstep/res/values-en-rAU/strings.xml b/quickstep/res/values-en-rAU/strings.xml index 739037bf8f..fa60ca84b6 100644 --- a/quickstep/res/values-en-rAU/strings.xml +++ b/quickstep/res/values-en-rAU/strings.xml @@ -32,17 +32,19 @@ "App suggestions" "All apps" "Your predicted apps" - "Easily access your most-used apps" - "Pixel predicts apps you\'ll need next, right on your Home screen. Tap to set up." "Get app suggestions on the bottom row of your home screen" + "Get app suggestions on the favourites row of your home screen" "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen." + "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen." "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder." "Get app suggestions" "No, thanks" - "Settings" + "Settings" "Most-used apps appear here, and change based on routines" "Drag apps off the bottom row to get app suggestions" "App suggestions added to empty space" + "App suggestions enabled" + "App suggestions are disabled" "Predicted app: %1$s" "Share" "Screenshot" diff --git a/quickstep/res/values-en-rCA/strings.xml b/quickstep/res/values-en-rCA/strings.xml index 739037bf8f..fa60ca84b6 100644 --- a/quickstep/res/values-en-rCA/strings.xml +++ b/quickstep/res/values-en-rCA/strings.xml @@ -32,17 +32,19 @@ "App suggestions" "All apps" "Your predicted apps" - "Easily access your most-used apps" - "Pixel predicts apps you\'ll need next, right on your Home screen. Tap to set up." "Get app suggestions on the bottom row of your home screen" + "Get app suggestions on the favourites row of your home screen" "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen." + "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen." "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder." "Get app suggestions" "No, thanks" - "Settings" + "Settings" "Most-used apps appear here, and change based on routines" "Drag apps off the bottom row to get app suggestions" "App suggestions added to empty space" + "App suggestions enabled" + "App suggestions are disabled" "Predicted app: %1$s" "Share" "Screenshot" diff --git a/quickstep/res/values-en-rGB/strings.xml b/quickstep/res/values-en-rGB/strings.xml index 739037bf8f..fa60ca84b6 100644 --- a/quickstep/res/values-en-rGB/strings.xml +++ b/quickstep/res/values-en-rGB/strings.xml @@ -32,17 +32,19 @@ "App suggestions" "All apps" "Your predicted apps" - "Easily access your most-used apps" - "Pixel predicts apps you\'ll need next, right on your Home screen. Tap to set up." "Get app suggestions on the bottom row of your home screen" + "Get app suggestions on the favourites row of your home screen" "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen." + "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen." "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder." "Get app suggestions" "No, thanks" - "Settings" + "Settings" "Most-used apps appear here, and change based on routines" "Drag apps off the bottom row to get app suggestions" "App suggestions added to empty space" + "App suggestions enabled" + "App suggestions are disabled" "Predicted app: %1$s" "Share" "Screenshot" diff --git a/quickstep/res/values-en-rIN/strings.xml b/quickstep/res/values-en-rIN/strings.xml index 739037bf8f..fa60ca84b6 100644 --- a/quickstep/res/values-en-rIN/strings.xml +++ b/quickstep/res/values-en-rIN/strings.xml @@ -32,17 +32,19 @@ "App suggestions" "All apps" "Your predicted apps" - "Easily access your most-used apps" - "Pixel predicts apps you\'ll need next, right on your Home screen. Tap to set up." "Get app suggestions on the bottom row of your home screen" + "Get app suggestions on the favourites row of your home screen" "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your home screen." + "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps in the favourites row will move to your home screen." "Easily access your most-used apps directly from the home screen. Suggestions will change based on your routines. Apps on the bottom row will be moved to a new folder." "Get app suggestions" "No, thanks" - "Settings" + "Settings" "Most-used apps appear here, and change based on routines" "Drag apps off the bottom row to get app suggestions" "App suggestions added to empty space" + "App suggestions enabled" + "App suggestions are disabled" "Predicted app: %1$s" "Share" "Screenshot" diff --git a/quickstep/res/values-en-rXC/strings.xml b/quickstep/res/values-en-rXC/strings.xml index c166708ea3..d7008ca1d3 100644 --- a/quickstep/res/values-en-rXC/strings.xml +++ b/quickstep/res/values-en-rXC/strings.xml @@ -33,16 +33,18 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‏‏‎‎‎‎‏‎‎‎‎‏‏‏‎‏‏‏‎‏‏‏‏‏‎‎‎‏‏‎‎‏‏‎‏‏‏‎‏‏‎‎‏‏‏‎‎‎‏‏‏‎All apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‎‎Your predicted apps‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‎‎‎‏‎‎‎‎‎‏‎‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‏‎‏‏‎‎‏‎‎‏‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎Get app suggestions on the bottom row of your Home screen‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‏‏‏‏‎‏‏‎Get app suggestions on favorites row of your Home screen‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‎‏‏‏‎‏‏‎‏‏‎‎‎‏‏‏‏‎‏‎‎‏‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎‎‎‎Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move up to your Home screen.‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‎‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‏‎‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎‏‎‏‎‏‏‏‎‎‏‏‎‎‎‏‎Easily access your most-used apps right on the Home screen. Suggestions will change based on your routines. Apps in favorites row will move to your Home screen.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‏‏‎‎‎‏‎‏‎‎‎‏‎‎‏‏‎‏‎‎‎‏‎‏‏‏‏‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‎Easily access your most-used apps, right on the Home screen. Suggestions will change based on your routines. Apps on the bottom row will move to a new folder.‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎‎‏‏‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‎‏‎Get app suggestions‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‏‏‎‎‎‏‎‏‎‎‏‏‎‏‏‎‏‏‎‎‎‏‎‎‎‏‏‎‏‎‏‏‎‏‏‎‎‏‎No thanks‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‏‏‎‎‏‎‏‏‎‎‏‏‎‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‏‎‎‎‏‏‎‏‎‎‏‎‏‏‎‎Settings‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‎‏‎‎Settings‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‎‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‏‏‏‎‎‎‏‎‎‏‏‎‏‏‏‎Most-used apps appear here, and change based on routines‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‏‏‎‎‏‎‎‎‎‎‏‏‎‎‏‏‏‏‎‏‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‏‏‎‏‏‎‏‎‏‎‏‎‎‏‏‏‎‎‎‏‎Drag apps off the bottom row to get app suggestions‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‎‏‎‎‎‏‎‎‎‎‎‏‏‏‎‎‎‎‎‏‎‎‎‎‏‎‎‏‏‏‎‎‏‏‏‏‎‏‎‎‎‏‎‏‏‎‎‎‏‎‏‏‎‏‏‎‎‏‎‎App suggestions added to empty space‎‏‎‎‏‎" - - + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‏‏‎‏‏‏‏‏‎‏‎‏‏‎‎‏‎‏‏‏‏‏‎‎‏‎‎‎‏‏‏‏‎‏‎‎‎‎‏‎‎App suggestions enabled‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‏‏‏‏‎‎‏‏‎‎‏‎‎‏‎‏‎‏‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‏‏‎‏‏‎App suggestions are disabled‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‏‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎‏‎‎‏‏‏‎‏‎‏‏‎‎‏‏‏‎‏‏‏‎‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‎‎‏‏‎Predicted app: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‎‎‎‎‏‎‏‎‎‎‎‏‎‎‎‎‎‎‏‏‎‏‏‎‎‎‎‎‎‎‏‏‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‏‎‏‏‏‎Share‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‏‏‏‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‎‏‏‎‎‏‏‎‎‏‎‎‎‎‏‏‏‏‎‎‎‏‎‏‎Screenshot‎‏‎‎‏‎" diff --git a/quickstep/res/values-es-rUS/strings.xml b/quickstep/res/values-es-rUS/strings.xml index 7fa77100e1..d62c8b3c82 100644 --- a/quickstep/res/values-es-rUS/strings.xml +++ b/quickstep/res/values-es-rUS/strings.xml @@ -33,16 +33,18 @@ "Todas las apps" "Predicción de tus apps" "Obtén sugerencias de aplicaciones en la fila inferior de la pantalla principal" + "Obtén sugerencias de apps en la fila de favoritos de la Pantalla principal" "Accede fácilmente en la pantalla principal a las apps que más usas. Las sugerencias cambiarán según tus rutinas. Las apps de la fila inferior se desplazarán hacia arriba en la pantalla principal." + "Accede fácilmente en la pantalla principal a las apps que más usas. Las sugerencias cambiarán según tus rutinas. Se moverán a la Pantalla principal las apps que estén en la fila de favoritos." "Accede fácilmente a las apps que más usas en la pantalla principal. Las sugerencias cambiarán según tus rutinas. Las apps de la fila inferior se moverán a una nueva carpeta." "Obtén sugerencias de aplicaciones" "No, gracias" - "Configuración" + "Configuración" "Las apps que más se usan se muestran aquí y cambian según las rutinas" "Arrastra apps fuera de la fila inferior para obtener sugerencias" "Se agregaron sugerencias de aplicaciones a un espacio vacío" - - + "Las sugerencias de aplicaciones están habilitadas" + "Las sugerencias de aplicaciones están inhabilitadas" "Predicción de app: %1$s" "Compartir" "Captura de pantalla" diff --git a/quickstep/res/values-et/strings.xml b/quickstep/res/values-et/strings.xml index be5a7b3adb..3425b33bcf 100644 --- a/quickstep/res/values-et/strings.xml +++ b/quickstep/res/values-et/strings.xml @@ -32,17 +32,19 @@ "Rakenduste soovitused" "Kõik rakendused" "Teie ennustatud rakendused" - "Pääsete enim kasutatavatele rakendustele hõlpsasti juurde" - "Pixel ennustab otse avakuval, millist rakendust järgmisena kasutate. Puudutage funktsiooni seadistamiseks." "Hankige avakuva alumisel real rakenduste soovitusi" + "Hankige avakuva lemmikute reale rakenduste soovitusi" "Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Alumisel real olevad rakendused teisaldatakse teie avakuvale." + "Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Lemmikute real olevad rakendused teisaldatakse teie avakuvale." "Pääsete enim kasutatavatele rakendustele hõlpsasti juurde otse avakuvalt. Soovitused muutuvad olenevalt teie rutiinist. Alumisel real olevad rakendused teisaldatakse uude kausta." "Hangi rakenduste soovitusi" "Tänan, ei" - "Seaded" + "Seaded" "Siin kuvatakse enim kasutatavad rakendused, mis võivad olenevalt rutiinist muutuda." "Rakenduste soovituste hankimiseks lohistage rakendused alumiselt realt ära" - "Tühjale kohale lisati rakenduste soovitused" + "Rakenduste soovitused lisati tühjale kohale" + "Rakenduste soovitused on lubatud" + "Rakenduste soovitused on keelatud" "Ennustatud rakendus: %1$s" "Jaga" "Ekraanipilt" diff --git a/quickstep/res/values-eu/strings.xml b/quickstep/res/values-eu/strings.xml index 6caf8acc37..550d3fb726 100644 --- a/quickstep/res/values-eu/strings.xml +++ b/quickstep/res/values-eu/strings.xml @@ -32,17 +32,19 @@ "Aplikazioen iradokizunak" "Aplikazio guztiak" "Lagungarri izan dakizkizukeen aplikazioak" - "Atzitu erraz aplikazio erabilienak" - "Hurrena zer beharko duzun iragartzen du Pixel-ek, hasierako pantailan bertan. Sakatu konfiguratzeko." "Jaso aplikazioen iradokizunak hasierako pantailaren beheko errenkadan" + "Jaso aplikazioen iradokizunak hasierako pantailako gogokoen errenkadan" "Atzitu erraz aplikazio erabilienak hasierako pantailatik bertatik. Ohituren arabera aldatuko dira iradokizunak. Hasierako pantailara eramango dira beheko errenkadan dauden aplikazioak." + "Atzitu erraz aplikazio erabilienak hasierako pantailatik bertatik. Ohituren arabera aldatuko dira iradokizunak. Gogokoen errenkadako aplikazioak hasierako pantailara eramango ditugu." "Atzitu erraz aplikazio erabilienak hasierako pantailatik bertatik. Ohituren arabera aldatuko dira iradokizunak. Karpeta berri batera eramango dira beheko errenkadan dauden aplikazioak." "Jaso aplikazioen iradokizunak" "Ez" - "Ezarpenak" + "Ezarpenak" "Hemen agertzen dira aplikazio erabilienak, eta ohituren arabera aldatzen dira" "Arrastatu aplikazioak beheko errenkadatik aplikazioen iradokizunak jasotzeko" "Aplikazioen iradokizunak eremu huts batean gehitu dira" + "Gaituta daude aplikazioen iradokizunak" + "Desgaituta daude aplikazioen iradokizunak" "Iragarritako aplikazioa: %1$s" "Partekatu" "Atera pantaila-argazki bat" diff --git a/quickstep/res/values-fi/strings.xml b/quickstep/res/values-fi/strings.xml index 4f485a3df6..9bc3d49ea4 100644 --- a/quickstep/res/values-fi/strings.xml +++ b/quickstep/res/values-fi/strings.xml @@ -32,17 +32,19 @@ "Sovellusehdotukset" "Kaikki sovellukset" "Sovellusennusteet" - "Käytetyimpien sovellusten helppo avaaminen" - "Pixel ennakoi seuraavaksi tarvitsemasi sovellukset ja näyttää ne kätevästi aloitusnäytöllä. Ota käyttöön napauttamalla." "Näytä sovellusehdotuksia aloitusnäytön alimmaisella rivillä" + "Näytä sovellusehdotuksia aloitusnäytön Suosikit-rivillä" "Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Alimmaisella rivillä olevat sovellukset siirretään aloitusnäytön yläosaan." + "Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Suosikit-rivillä olevat sovellukset siirretään aloitusnäytölle." "Voit avata käytetyimmät sovellukset kätevästi aloitusnäytöltä. Ehdotukset muuttuvat rutiiniesi perusteella. Alimmaisella rivillä olevat sovellukset siirretään uuteen kansioon." - "Tilaa sovellusehdotukset" + "Näytä sovellusehdotuksia" "Ei kiitos" - "Asetukset" + "Asetukset" "Käytetyimmät sovellukset näkyvät täällä ja muuttuvat rutiiniesi perusteella" "Siirrä sovelluksia pois alimmaiselta riviltä, niin voit saada sovellusehdotuksia" "Sovellusehdotuksia lisätty tyhjään kohtaan" + "Sovellusehdotukset käytössä" + "Sovellusehdotukset on poistettu käytöstä" "Ennakoitu sovellus: %1$s" "Jaa" "Kuvakaappaus" diff --git a/quickstep/res/values-fr-rCA/strings.xml b/quickstep/res/values-fr-rCA/strings.xml index db3e2d5685..8ae00237d2 100644 --- a/quickstep/res/values-fr-rCA/strings.xml +++ b/quickstep/res/values-fr-rCA/strings.xml @@ -32,17 +32,19 @@ "Suggestions d\'applications" "Toutes les applications" "Vos prédictions d\'applications" - "Accéder facilement aux applications que vous utilisez le plus" - "Le Pixel prédit les applications dont vous aurez besoin ensuite, directement sur votre écran d\'accueil. Touchez pour configurer." "Obtenez des applications suggérées dans la rangée du bas de votre écran d\'accueil" + "Retrouvez des suggestions d\'applications dans la rangée des favoris de votre écran d\'accueil" "Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée du bas seront déplacées vers votre écran d\'accueil." + "Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée des favoris seront déplacées vers votre écran d\'accueil." "Accédez facilement aux applications que vous utilisez le plus, directement à l\'écran d\'accueil. Les suggestions changeront en fonction de vos habitudes. Les applications dans la rangée du bas seront déplacées vers un nouveau dossier." - "Obtenir des applications suggérées" + "Obtenir des suggestions d\'applications" "Non merci" - "Paramètres" + "Paramètres" "Les applications les plus utilisées s\'affichent ici et changent en fonction des habitudes" - "Faites glisser des applications hors de la rangée du bas pour obtenir des applications suggérées" + "Faites glisser des applications hors de la rangée du bas pour obtenir des suggestions d\'applications" "Applications suggérées ajoutées à l\'espace vide" + "Les suggestions d\'applications sont activées" + "Les suggestions d\'applications sont désactivées" "Application prédite : %1$s" "Partager" "Capture d\'écran" diff --git a/quickstep/res/values-fr/strings.xml b/quickstep/res/values-fr/strings.xml index 9a3972a2d6..306d5336a5 100644 --- a/quickstep/res/values-fr/strings.xml +++ b/quickstep/res/values-fr/strings.xml @@ -33,16 +33,18 @@ "Toutes les applications" "Applications prévues pour vous" "Retrouvez vos applications favorites au bas de votre écran d\'accueil" + "Retrouvez des suggestions d\'applications dans la zone des favoris de votre écran d\'accueil" "Les suggestions d\'applications permettent d\'afficher vos applications favorites au bas de votre écran d\'accueil. Elles s\'adaptent à vos habitudes d\'utilisation. Les icônes auparavant affichées au bas de l\'écran seront déplacées vers le haut." + "Accédez facilement aux applications dont vous vous servez le plus, directement depuis l\'écran d\'accueil. Ces suggestions peuvent varier en fonction de vos habitudes d\'utilisation. Les applications de la zone des favoris seront transférées sur votre écran d\'accueil." "Les suggestions d\'applications permettent d\'afficher vos applications favorites au bas de votre écran d\'accueil. Elles s\'adaptent à vos habitudes d\'utilisation. Les icônes auparavant affichées au bas de l\'écran seront placées dans un nouveau dossier." "Activer les suggestions" "Non, merci" - "Paramètres" + "Paramètres" "Les applications dont vous vous servez le plus s\'affichent ici (ces suggestions peuvent varier en fonction de vos habitudes d\'utilisation)" "Faites glisser des applications hors de la rangée du bas pour obtenir des suggestions d\'applications" "Des suggestions d\'applications ont été ajoutées à un emplacement vide" - - + "Suggestions d\'applications activées" + "Les suggestions d\'applications sont désactivées" "Application prédite : %1$s" "Partager" "Capture d\'écran" diff --git a/quickstep/res/values-gl/strings.xml b/quickstep/res/values-gl/strings.xml index 00f2d52d10..f3dc1ed2e0 100644 --- a/quickstep/res/values-gl/strings.xml +++ b/quickstep/res/values-gl/strings.xml @@ -32,17 +32,19 @@ "Suxestións de aplicacións" "Todas as aplicacións" "As túas aplicacións preditas" - "Accede facilmente ás aplicacións que máis utilizas" - "O Pixel predí as aplicacións que utilizarás a continuación e móstraas na pantalla de inicio. Toca para configurar." "Recibe suxestións de aplicacións na fila inferior da pantalla de inicio" + "Recibe suxestións de aplicacións na fila de Favoritos da pantalla de inicio" "Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila inferior pasarán á pantalla de inicio." + "Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila de Favoritos moveranse á túa pantalla de inicio." "Accede facilmente desde a pantalla de inicio ás aplicacións que máis usas. As suxestións irán cambiando en función das túas rutinas. As aplicacións da fila inferior pasarán a un cartafol novo." "Recibir suxestións de aplicacións" "Non, grazas" - "Configuración" + "Configuración" "As aplicacións máis usadas aparecen aquí e van cambiando en función das túas rutinas" "Arrastra aplicacións desde a fila inferior para recibir suxestións de aplicacións" "Engadíronse suxestións de aplicacións ao espazo baleiro" + "As suxestións de aplicacións están activadas" + "As suxestións de aplicacións están desactivadas" "Aplicación predita: %1$s" "Compartir" "Facer captura" diff --git a/quickstep/res/values-gu/strings.xml b/quickstep/res/values-gu/strings.xml index 3ea20a55fc..b1c40b9de7 100644 --- a/quickstep/res/values-gu/strings.xml +++ b/quickstep/res/values-gu/strings.xml @@ -32,17 +32,19 @@ "ઍપ સૂચનો" "બધી ઍપ" "તમારી પૂર્વાનુમાનિત ઍપ" - "તમારી સૌથી વધુ વપરાતી ઍપને સરળતાથી ઍક્સેસ કરો" - "તમને હવે ઓછી જરૂર પડવાની હોય તે ઍપનું અનુમાન લગાવે છે અને તેમને સીધી હોમ સ્ક્રીન પર લાવે છે. સેટઅપ કરવા માટે ટૅપ કરો." - "તમારી હોમ સ્ક્રીનની નીચલી પંક્તિમાં ઍપના સૂચનો મેળવો" + "તમારી હોમ સ્ક્રીનની નીચલી પંક્તિમાં ઍપના સુઝાવો મેળવો" + "તમારી હોમ સ્ક્રીનની મનપસંદ પંક્તિમાં ઍપના સુઝાવો મેળવો" "તમારી સૌથી વધુ વપરાતી ઍપને સીધી હોમ સ્ક્રીન પરથી જ સરળતાથી ઍક્સેસ કરો. સૂચનો તમારા રૂટિનના આધારે બદલાશે. નીચેની પંક્તિમાં રહેલી ઍપ તમારી હોમ સ્ક્રીન પર ખસેડાશે." + "તમારી સૌથી વધુ વપરાતી ઍપને સીધી હોમ સ્ક્રીન પરથી જ સરળતાથી ઍક્સેસ કરો. સૂચનો તમારા રૂટિનના આધારે બદલાશે. મનપસંદ પંક્તિમાં રહેલી ઍપ તમારી હોમ સ્ક્રીન પર ખસેડાશે." "તમારી સૌથી વધુ વપરાતી ઍપને સીધી હોમ સ્ક્રીન પરથી જ સરળતાથી ઍક્સેસ કરો. સૂચનો તમારા રૂટિનના આધારે બદલાશે. નીચેની પંક્તિમાં રહેલી ઍપ નવા ફોલ્ડરમાં ખસેડાશે." - "ઍપ અંગેના સૂચનો મેળવો" + "ઍપ અંગેના સુઝાવો મેળવો" "ના, આભાર" - "સેટિંગ" + "સેટિંગ" "સૌથી વધુ વપરાતી ઍપ અહીં દેખાય છે અને રૂટિનના આધારે બદલાય છે" "ઍપ અંગેના સૂચનો મેળવવા માટે ઍપને નીચલી પંક્તિમાંથી બહાર ખેંચો" "ઍપ અંગેના સૂચનો ખાલી જગ્યામાં ઉમેરાયા" + "ઍપના સુઝાવો ચાલુ છે" + "ઍપના સુઝાવો બંધ છે" "પૂર્વાનુમાનિત ઍપ: %1$s" "શેર કરો" "સ્ક્રીનશૉટ" diff --git a/quickstep/res/values-hi/strings.xml b/quickstep/res/values-hi/strings.xml index f695bf2dd3..8bf208f1aa 100644 --- a/quickstep/res/values-hi/strings.xml +++ b/quickstep/res/values-hi/strings.xml @@ -32,17 +32,19 @@ "सुझाए गए ऐप्लिकेशन" "सभी ऐप्लिकेशन" "आपके काम के ऐप्लिकेशन" - "सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन आसानी से ऐक्सेस करें" - "Pixel आपकी होम स्क्रीन पर बताता है कि अब आपको किन ऐप्लिकेशन की ज़रूरत है. सेट अप करने के लिए टैप करें." "अपने होम स्क्रीन की सबसे नीचे वाली पंक्ति में ऐप्लिकेशन के सुझाव पाएं" - "सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन सीधे होम स्क्रीन पर देखें. ऐप्लिकेशन इस्तेमाल करने के आपके रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन होम स्क्रीन पर आ जाएंगे." + "अपने होम स्क्रीन की सबसे नीचे वाली पंक्ति में पसंदीदा ऐप्लिकेशन के सुझाव पाएं" + "आप जिन ऐप्लिकेशन का ज़्यादा इस्तेमाल करते हैं उन्हें सीधा अपने होम स्क्रीन पर पाएं. ऐप्लिकेशन इस्तेमाल करने के आपके रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन होम स्क्रीन पर आ जाएंगे." + "सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन सीधे होम स्क्रीन पर देखें. आप ऐप्लिकेशन का कितना इस्तेमाल कर रहे हैं, उसके हिसाब से सुझाव बदलते रहते हैं. आपके पसंदीदा ऐप्लिकेशन, होम स्क्रीन पर नीचे की पंक्ति में दिखाई देंगे." "सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन, सीधे होम स्क्रीन पर देखें. ऐप्लिकेशन इस्तेमाल करने के आपके रूटीन के हिसाब से सुझाव बदलते रहते हैं. नीचे की पंक्ति के ऐप्लिकेशन एक नए फ़ोल्डर में चले जाएंगे." "ऐप्लिकेशन के बारे में सुझाव पाएं" "रहने दें" - "सेटिंग" + "सेटिंग" "सबसे ज़्यादा इस्तेमाल होने वाले ऐप्लिकेशन यहां दिखेंगे. यह ऐप्लिकेशन, आपके इस्तेमाल के रूटीन के हिसाब से बदलते रहते हैं" "नीचे वाली पंक्ति से ऐप्लिकेशन को खींचकर हटाएं, ताकि आप ऐप्लिकेशन के सुझाव पा सकें" "खाली जगह पर ऐप्लिकेशन के सुझाव जोड़े गए" + "सुझाए गए ऐप्लिकेशन की सुविधा चालू है" + "सुझाए गए ऐप्लिकेशन की सुविधा बंद है" "सुझाया गया ऐप्लिकेशन: %1$s" "शेयर करें" "स्क्रीनशॉट" diff --git a/quickstep/res/values-hr/strings.xml b/quickstep/res/values-hr/strings.xml index dacb429a94..21920a7113 100644 --- a/quickstep/res/values-hr/strings.xml +++ b/quickstep/res/values-hr/strings.xml @@ -32,17 +32,19 @@ "Predložene aplikacije" "Sve aplikacije" "Vaše predviđene aplikacije" - "Lako pristupite najčešće upotrebljavanim aplikacijama" - "Pixel predviđa koje će vam aplikacije trebati sljedeće na početnom zaslonu. Dodirnite da biste ih postavili." "Prikažite predložene aplikacije u donjem retku početnog zaslona" + "Primajte prijedloge aplikacija u retku omiljenih na početnom zaslonu" "Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije iz donjeg retka pomaknut će se na početni zaslon." + "Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije koje se nalaze u retku omiljenih pomaknut će se na početni zaslon." "Lako pristupite najčešće upotrebljavanim aplikacijama s početnog zaslona. Prijedlozi će se mijenjati na temelju vaših rutina. Aplikacije iz donjeg retka pomaknut će se u novu mapu." - "Nabavite predložene aplikacije" + "Prikaži predložene aplikacije" "Ne, hvala" - "Postavke" + "Postavke" "Ovdje se prikazuju najčešće upotrebljavane aplikacije i mijenjaju se na temelju rutina" - "Povucite aplikacije u donjem retku da biste dobili predložene aplikacije" + "Povucite aplikacije iz donjeg retka da biste dobili prijedloge aplikacija" "Predložene aplikacije dodane u prazan prostor" + "Predlaganje aplikacija je omogućeno" + "Predlaganje aplikacija je onemogućeno" "Predviđena aplikacija: %1$s" "Udio" "Snimka zaslona" diff --git a/quickstep/res/values-hu/strings.xml b/quickstep/res/values-hu/strings.xml index 50e0459fb9..75983c4313 100644 --- a/quickstep/res/values-hu/strings.xml +++ b/quickstep/res/values-hu/strings.xml @@ -32,17 +32,19 @@ "Alkalmazásjavaslatok" "Az összes alkalmazás" "Várható alkalmazások" - "Könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz" - "A Pixel telefon kitalálja, melyik alkalmazásra lesz következőleg szüksége – egyenesen a kezdőképernyőn. Koppintson a beállításhoz." "Alkalmazásjavaslatokat kaphat a kezdőképernyő alsó sorában" + "Alkalmazásjavaslatokat kaphat a kezdőképernyőn megjelenő kedvencek sorában" "A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változni fognak. Az alsó sorban lévő alkalmazások felkerülnek a kezdőképernyőre." + "A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változnak majd. A kedvencek sorában lévő alkalmazások a kezdőképernyőre kerülnek." "A kezdőképernyőről könnyedén hozzáférhet a leggyakrabban használt alkalmazásokhoz. A javaslatok a rutinjai alapján változni fognak. Az alsó sorban lévő alkalmazások egy új mappába kerülnek." - "Alkalmazásjavaslatok kérése" + "Kérek javaslatokat" "Köszönöm, nem" - "Beállítások" + "Beállítások" "A leggyakrabban használt alkalmazások jelennek meg itt; a lista a rutinok alapján változhat" "Alkalmazásjavaslatok kéréséhez húzzon ki alkalmazásokat az alsó sorból" "Alkalmazásjavaslatok hozzáadva az üres területhez" + "Alkalmazásjavaslatok engedélyezve" + "Alkalmazásjavaslatok letiltva" "Várható alkalmazás: %1$s" "Megosztás" "Képernyőkép" diff --git a/quickstep/res/values-hy/strings.xml b/quickstep/res/values-hy/strings.xml index 4105e67e75..53988e19ba 100644 --- a/quickstep/res/values-hy/strings.xml +++ b/quickstep/res/values-hy/strings.xml @@ -32,17 +32,19 @@ "Առաջարկվող հավելվածներ" "Բոլոր հավելվածները" "Ձեր կանխատեսված հավելվածները" - "Արագ բացեք հաճախ օգտագործվող հավելվածները" - "Pixel-ը կանխատեսում է, թե որ հավելվածները կարող են ձեզ պետք լինել, և ցուցադրում է դրանք հիմնական էկրանին։ Հպեք՝ կարգավորելու համար։" "Ստացեք հավելվածների առաջարկներ հիմնական էկրանի ներքևում" + "Ստացեք հավելվածների առաջարկներ հիմնական էկրանի «Ընտրանի» տողում" "Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ Ներքևում ցուցադրվող հավելվածները կտեղափոխվեն հիմնական էկրանի վերևի մաս։" + "Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ «Ընտրանի» տողի հավելվածները կտեղափոխվեն հիմնական էկրան։" "Արագ բացեք հաճախ օգտագործվող հավելվածներն անմիջապես հիմնական էկրանից։ Առաջարկները կփոփոխվեն՝ կախված ձեր գործողություններից։ Ներքևում ցուցադրվող հավելվածները կտեղափոխվեն նոր պանակ։" "Ստանալ հավելվածների առաջարկներ" "Ոչ, շնորհակալություն" - "Կարգավորումներ" + "Կարգավորումներ" "Հաճախ օգտագործվող հավելվածները ցուցադրվում են այստեղ և փոփոխվում են ըստ ձեր գործողությունների հերթականության։" "Քաշեք հավելվածները ներքևի տողից՝ հավելվածների առաջարկները տեսնելու համար" - "Առաջարկվող հավելվածներն ավելացվել են դատարկ տարածքում" + "Առաջարկվող հավելվածները կավելացվեն ազատ տեղերում" + "«Առաջարկվող հավելվածներ» գործառույթը միացված է" + "«Առաջարկվող հավելվածներ» գործառույթն անջատված է" "Առաջարկվող հավելված՝ %1$s" "Կիսվել" "Սքրինշոթ անել" diff --git a/quickstep/res/values-in/strings.xml b/quickstep/res/values-in/strings.xml index 7b6fcc9e19..a85ea4e2e3 100644 --- a/quickstep/res/values-in/strings.xml +++ b/quickstep/res/values-in/strings.xml @@ -32,17 +32,19 @@ "Saran aplikasi" "Semua aplikasi" "Aplikasi yang diprediksi" - "Mudah mengakses aplikasi yang paling sering digunakan" - "Pixel memprediksi aplikasi yang akan diperlukan berikutnya, langsung di Layar utama. Ketuk untuk menyiapkan." "Dapatkan saran aplikasi di baris paling bawah Layar utama" - "Mudah mengakses aplikasi yang paling sering digunakan, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah ke atas pada Layar utama." - "Mudah mengakses aplikasi yang paling sering digunakan, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah ke folder baru." + "Dapatkan saran aplikasi di baris favorit Layar utama" + "Akses aplikasi yang paling sering digunakan dengan mudah, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah naik ke Layar utama." + "Mudah mengakses aplikasi yang paling sering digunakan, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris favorit akan berpindah ke Layar utama." + "Akses aplikasi yang paling sering digunakan dengan mudah, langsung di Layar utama. Saran akan berubah berdasarkan rutinitas Anda. Aplikasi di baris paling bawah akan berpindah ke folder baru." "Dapatkan saran aplikasi" "Lain kali" - "Setelan" + "Setelan" "Aplikasi yang paling sering digunakan muncul di sini, dan berubah berdasarkan rutinitas" "Tarik aplikasi dari baris paling bawah untuk mendapatkan saran aplikasi" "Saran aplikasi ditambahkan ke ruang kosong" + "Saran aplikasi diaktifkan" + "Saran aplikasi dinonaktifkan" "Aplikasi yang diprediksi: %1$s" "Bagikan" "Screenshot" diff --git a/quickstep/res/values-is/strings.xml b/quickstep/res/values-is/strings.xml index 01f6ecbfd6..f8b63fb64a 100644 --- a/quickstep/res/values-is/strings.xml +++ b/quickstep/res/values-is/strings.xml @@ -32,17 +32,19 @@ "Tillögur að forritum" "Öll forrit" "Spáð forrit" - "Hafðu greiðan aðgang að forritunum sem þú notar mest" - "Pixel leggur til hvaða forrit þú þarft næst á heimaskjánum sjálfum. Ýttu til að setja upp." "Fáðu tillögur að forritum í neðstu röð heimaskjásins" - "Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við rútínurnar þínar. Forrit í neðstu röð færast upp á heimaskjáinn." - "Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við rútínurnar þínar. Forrit í neðstu röð færast í nýja möppu." + "Fáðu tillögur að forritum á eftirlætissvæði heimaskjásins" + "Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við notkun þína. Forrit í neðstu röð færast upp á heimaskjáinn." + "Nálgastu forritin sem þú notar mest á einfaldan hátt á heimaskjánum. Tillögurnar breytast í samræmi við notkun þína. Forrit á eftirlætissvæði færast á heimaskjáinn." + "Nálgastu forritin sem þú notar mest auðveldlega á heimaskjánum. Tillögurnar breytast í samræmi við notkun þína. Forrit í neðstu röð færast í nýja möppu." "Fá tillögur að forritum" "Nei, takk" - "Áfram" + "Stillingar" "Mest notuðu forritin birtast hér og breytast í samræmi við rútínur" "Dragðu forrit af neðstu röð til að fá tillögð forrit" "Tillögðum forritum bætt við autt svæði" + "Kveikt á tillögðum forritum" + "Slökkt er á tillögðum forritum" "Tillaga að forriti: %1$s" "Deila" "Skjámynd" diff --git a/quickstep/res/values-it/strings.xml b/quickstep/res/values-it/strings.xml index 5609775078..e0a78b2301 100644 --- a/quickstep/res/values-it/strings.xml +++ b/quickstep/res/values-it/strings.xml @@ -32,17 +32,19 @@ "App suggerite" "Tutte le app" "Le app previste" - "Accedi facilmente alle app più utilizzate" - "Pixel prevede quali app userai e te le mostra sulla schermata Home. Tocca per configurare." "Visualizza app suggerite nella riga inferiore della schermata Home" + "Visualizza app suggerite nella riga dei Preferiti della schermata Home" "Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga inferiore verranno spostate più in alto sulla schermata Home." + "Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga dei Preferiti verranno spostate nella schermata Home." "Accedi facilmente alle app più utilizzate direttamente dalla schermata Home. I suggerimenti varieranno in base alle tue routine. Le app nella riga inferiore verranno spostate in una nuova cartella." "Visualizza app suggerite" "No, grazie" - "Impostazioni" + "Impostazioni" "Le app più utilizzate vengono visualizzate qui e variano in base alle routine" - "Trascina le app fuori dalla riga inferiore per visualizzare le app suggerite" + "Trascina le app fuori dalla fila in basso per vedere le app suggerite" "App suggerite aggiunte a uno spazio vuoto" + "La funzionalità app suggerite è attiva" + "La funzionalità app suggerite è disattivata" "App prevista: %1$s" "Condividi" "Screenshot" diff --git a/quickstep/res/values-iw/strings.xml b/quickstep/res/values-iw/strings.xml index 4196714137..81753e11b2 100644 --- a/quickstep/res/values-iw/strings.xml +++ b/quickstep/res/values-iw/strings.xml @@ -32,17 +32,19 @@ "הצעות לאפליקציות" "כל האפליקציות" "האפליקציות החזויות שלך" - "גישה נוחה לאפליקציות הכי נפוצות ממסך הבית." - "‏ה-Pixel מפעיל חיזוי כדי לדעת מהן האפליקציות הבאות הנדרשות לך ומציג אותן במסך הבית. יש להקיש כדי להגדיר." - "קבלת הצעות לאפליקציות בשורה התחתונה של מסך הבית." + "קבלת הצעות לאפליקציות בשורה התחתונה של מסך הבית" + "קבלת הצעות לאפליקציות בשורת המועדפות של מסך הבית" "גישה נוחה לאפליקציות הכי נפוצות ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות שמופיעות בשורה התחתונה יעברו למעלה למסך הבית." + "גישה נוחה לאפליקציות שהשתמשת בהן הכי הרבה, ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות בשורת המועדפות יועברו למסך הבית." "גישה נוחה לאפליקציות הכי נפוצות ישירות ממסך הבית. ההצעות ישתנו בהתאם להרגלי השימוש שלך. אפליקציות שמופיעות בשורה התחתונה יעברו למעלה למסך הבית." "קבלת הצעות לאפליקציות" "לא, תודה" - "הגדרות" + "הגדרות" "רוב האפליקציות הכי נפוצות מופיעות כאן ומשתנות בהתאם להרגלי השימוש שלך" "יש לגרור אפליקציות מהשורה התחתונה כדי לקבל הצעות לאפליקציות" "הצעות לאפליקציות נוספו לאזור ריק" + "ההצעות לאפליקציות מופעלות" + "ההצעות לאפליקציות מושבתות" "האפליקציות החזויות: %1$s" "שיתוף" "צילום מסך" diff --git a/quickstep/res/values-ja/strings.xml b/quickstep/res/values-ja/strings.xml index af0173d7f5..d4d65726de 100644 --- a/quickstep/res/values-ja/strings.xml +++ b/quickstep/res/values-ja/strings.xml @@ -32,17 +32,19 @@ "アプリの候補" "すべてのアプリ" "予測されたアプリ" - "使用頻度の高いアプリに簡単にアクセス" - "Pixel によって、次に必要なアプリが予測され、ホーム画面にすぐに表示されます。タップしてセットアップします。" - "ホーム画面の一番下の行でアプリの候補を入手できます" - "使用頻度の高いアプリが、ホーム画面にすぐに表示され、簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。ホーム画面で一番下の行にあるアプリが上に移動します。" - "使用頻度の高いアプリが、ホーム画面にすぐに表示され、簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。一番下の行にあるアプリが新しいフォルダに移動します。" - "アプリの候補を入手" + "ホーム画面の一番下の行でアプリの候補を利用できます" + "ホーム画面のお気に入りの行でアプリの候補を利用できます" + "ホーム画面で、使用頻度の高いアプリに簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。一番下の行にあるアプリがホーム画面に移動します。" + "ホーム画面で、使用頻度の高いアプリに簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。お気に入りの行にあるアプリがホーム画面に移動します。" + "ホーム画面で、使用頻度の高いアプリに簡単にアクセスできるようになります。アプリの候補はルーティンに応じて変わります。一番下の行にあるアプリが新しいフォルダに移動します。" + "アプリの候補を利用" "使用しない" - "設定" + "設定" "使用頻度の高いアプリがここに表示されます(ルーティンに応じて変わります)" - "一番下の行からアプリをドラッグしてアプリの候補を入手します" + "一番下の行からアプリをドラッグするとアプリの候補が表示されます" "空いたスペースにアプリの候補が追加されます" + "アプリの候補は有効です" + "アプリの候補は無効です" "予測されたアプリ: %1$s" "共有" "スクリーンショット" diff --git a/quickstep/res/values-ka/strings.xml b/quickstep/res/values-ka/strings.xml index 74afc6dc07..1d0a7124b0 100644 --- a/quickstep/res/values-ka/strings.xml +++ b/quickstep/res/values-ka/strings.xml @@ -32,17 +32,19 @@ "აპის შემოთავაზებები" "ყველა აპი" "თქვენი პროგნოზირებული აპები" - "მარტივად იქონიეთ წვდომა ყველაზე ხშირად გამოყენებულ აპებზე" - "Pixel წინასწარმეტყველებს, თუ რომელი აპის გამოყენება დაგჭირდებათ შემდეგ ჯერზე, პირდაპირ მთავარი ეკრანიდან. შეეხეთ დასაყენებლად." "მიიღეთ აპის შეთავაზებები მთავარი ეკრანის ქვედა რიგში" + "მიიღეთ აპების შემოთავაზებები მთავარი ეკრანის რჩეულების მწკრივში" "მარტივად იქონიეთ ყველაზე ხშირად გამოყენებულ აპებზე წვდომა მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. მოხდება ქვედა რიგში არსებული აპების მთავარ ეკრანზე გადატანა." + "მარტივად იქონიეთ წვდომა ყველაზე ხშირად გამოყენებულ აპებზე მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. რჩეულების მწკრივში არსებული აპები თქვენს მთავარ ეკრანზე გადავა." "მარტივად იქონიეთ ყველაზე ხშირად გამოყენებულ აპებზე წვდომა მთავარი ეკრანიდან. შეთავაზებები შეიცვლება თქვენი რუტინების მიხედვით. მოხდება ქვედა რიგში არსებული აპების ახალ საქაღალდეში გადატანა." "აპის შეთავაზებების მიღება" "არა, გმადლობთ" - "პარამეტრები" + "პარამეტრები" "ყველაზე ხშირად გამოყენებული აპები აქ ჩანს და ცვალებადობს რუტინების მიხედვით" "გადაიტანეთ აპები ეკრანის ქვედა რიგში, რათა აპის შეთავაზებები მიიღოთ" "აპის შეთავაზებები დამატებულია ცარიელ სივრცეში" + "აპის შეთავაზებები ჩართულია" + "აპის შეთავაზებები გათიშულია" "ნაწინასწარმეტყველები აპი: %1$s" "გაზიარება" "ეკრანის ანაბეჭდი" diff --git a/quickstep/res/values-kk/strings.xml b/quickstep/res/values-kk/strings.xml index 61371fb615..1bb1684dde 100644 --- a/quickstep/res/values-kk/strings.xml +++ b/quickstep/res/values-kk/strings.xml @@ -32,17 +32,19 @@ "Ұсынылған қолданбалар" "Барлық қолданбалар" "Ұсынылатын қолданбалар" - "Жиі пайдаланылатын қолданбаларға оңай кіру" - "Pixel сізге қажет болуы мүмкін қолданбаларды болжап, оларды негізгі экранда көрсетеді. Реттеу үшін түртіңіз." "Негізгі экранның төменгі жолында ұсынылған қолданбаларды алу" + "Ұсынылған қолданбалар негізгі экранда таңдаулылар арасында көрсетілетін болады" "Жиі пайдаланылатын қолданбаларға негізгі экраннан оңай кіріңіз. Ұсыныстар әрекеттер тізімі негізінде өзгереді. Төменгі жолдағы қолданбалар негізгі экраныңызға қарай жоғары жылжиды." + "Жиі пайдаланылатын қолданбаларға негізгі экраннан оңай кіре аласыз. Ұсыныстар күнделікті әрекеттеріңізге сәйкес өзгереді. Таңдаулылар жолындағы қолданбалар негізгі экранға ауысады." "Жиі пайдаланылатын қолданбаларға негізгі экраннан оңай кіріңіз. Ұсыныстар әрекеттер тізімі негізінде өзгереді. Төмендегі қолданбалар жаңа қалтаға жылжиды." "Ұсынылған қолданбаларды көру" "Жоқ, рақмет" - "Параметрлер" + "Параметрлер" "Жиі пайдаланылатын қолданбалар осы жерде көрсетіледі және әрекеттер тізімі негізінде өзгереді." "Ұсынылған қолданбаларды алу үшін қолданбаларды төменгі жолдан жылжытыңыз." "Ұсынылған қолданбалар бос орынға қосылды." + "\"Ұсынылған қолданбалар\" функциясы қосулы." + "\"Ұсынылған қолданбалар\" функциясы өшірулі." "Болжалды қолданба: %1$s" "Бөлісу" "Скриншот" diff --git a/quickstep/res/values-km/strings.xml b/quickstep/res/values-km/strings.xml index 11597b2514..dd2fbacbed 100644 --- a/quickstep/res/values-km/strings.xml +++ b/quickstep/res/values-km/strings.xml @@ -32,17 +32,19 @@ "ការណែនាំកម្មវិធី" "កម្មវិធី​ទាំងអស់" "កម្មវិធី​ដែលបាន​ព្យាករ​របស់អ្នក" - "ចូលប្រើ​កម្មវិធី​ដែលអ្នកប្រើ​ញឹកញាប់បំផុត​បានយ៉ាង​ងាយស្រួល" - "Pixel ព្យាករ​កម្មវិធី​ដែលអ្នក​នឹងត្រូវការ​បន្ទាប់ នៅលើ​អេក្រង់ដើម​របស់អ្នក​ផ្ទាល់។ ចុច​ដើម្បី​រៀបចំ។" "ទទួលបាន​ការណែនាំកម្មវិធី​នៅជួរខាងក្រោម​នៃអេក្រង់ដើម​របស់អ្នក" + "ទទួលបាន​ការណែនាំកម្មវិធី​នៅលើ​ជួរដេកសំណព្វ​នៃអេក្រង់ដើម​របស់អ្នក" "ចូលប្រើ​កម្មវិធី​ដែលអ្នកប្រើ​ញឹកញាប់បំផុត​បានយ៉ាង​ងាយស្រួល​នៅលើ​អេក្រង់ដើម​ផ្ទាល់។ ការណែនាំ​នឹងប្រែប្រួល​ទៅតាម​ទម្លាប់​របស់អ្នក។ កម្មវិធី​នៅជួរ​ខាងក្រោម​នឹងផ្លាស់ទីឡើង​ទៅអេក្រង់ដើម​របស់អ្នក។" + "ចូលប្រើ​កម្មវិធី​ដែលអ្នកប្រើ​ញឹកញាប់បំផុត​បានយ៉ាង​ងាយស្រួល​នៅលើ​អេក្រង់ដើមដោយផ្ទាល់។ ការណែនាំ​នឹងប្រែប្រួល​ទៅតាម​ទម្លាប់​របស់អ្នក។ កម្មវិធី​នៅក្នុង​ជួរដេក​សំណព្វ​នឹងផ្លាស់ទី​ទៅអេក្រង់ដើម​របស់អ្នក។" "ចូលប្រើ​កម្មវិធី​ដែលអ្នកប្រើ​ញឹកញាប់បំផុត​បានយ៉ាង​ងាយស្រួល​នៅលើ​អេក្រង់ដើម​ផ្ទាល់។ ការណែនាំ​នឹងប្រែប្រួល​ទៅតាម​ទម្លាប់​របស់អ្នក។ កម្មវិធី​នៅជួរ​ខាងក្រោម​នឹងផ្លាស់ទី​ទៅថតថ្មី។" "ទទួលបាន​ការណែនាំ​កម្មវិធី" "ទេ អរគុណ" - "ការកំណត់" + "ការកំណត់" "កម្មវិធី​ដែលប្រើ​ញឹកញាប់បំផុត​បង្ហាញ​នៅទីនេះ និង​ប្រែប្រួល​ទៅតាមទម្លាប់" "អូស​កម្មវិធី​ចេញពី​ជួរខាងក្រោម ដើម្បី​ទទួលបាន​ការណែនាំ​កម្មវិធី" "បានបញ្ចូល​ការណែនាំកម្មវិធី​ទៅក្នុង​កន្លែងទំនេរ" + "បានបើក​ការណែនាំ​កម្មវិធី" + "បានបិទ​ការណែនាំ​កម្មវិធី" "កម្មវិធី​ដែលបាន​ព្យាករ៖ %1$s" "ចែករំលែក" "រូបថតអេក្រង់" diff --git a/quickstep/res/values-kn/strings.xml b/quickstep/res/values-kn/strings.xml index 997b8fd1f5..6458d6e8f2 100644 --- a/quickstep/res/values-kn/strings.xml +++ b/quickstep/res/values-kn/strings.xml @@ -32,17 +32,19 @@ "ಆ್ಯಪ್ ಸಲಹೆಗಳು" "ಎಲ್ಲಾ ಆ್ಯಪ್‌ಗಳು" "ನಿಮ್ಮ ಸಂಭವನೀಯ ಆ್ಯಪ್‌ಗಳು" - "ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ" - "ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ನಿಮಗೆ ಮುಂದೆ ಅಗತ್ಯವಿರುವ ಆ್ಯಪ್‌ಗಳ ಕುರಿತು Pixel ಮುನ್ಸೂಚನೆ ನೀಡುತ್ತದೆ. ಸೆಟಪ್ ಮಾಡಲು ಟ್ಯಾಪ್ ಮಾಡಿ." "ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನ ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ" + "ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನ ಮೆಚ್ಚಿನವುಗಳ ಸಾಲಿನಲ್ಲಿ ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ" "ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ ಚಲಿಸುತ್ತವೆ." + "ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಮೆಚ್ಚಿನವುಗಳ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್‌ಗಳು ನಿಮ್ಮ ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ಗೆ ಚಲಿಸುತ್ತವೆ." "ಹೋಮ್ ಸ್ಕ್ರೀನ್‌ನಲ್ಲಿಯೇ ನೀವು ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳನ್ನು ಸುಲಭವಾಗಿ ಪ್ರವೇಶಿಸಿ. ನಿಮ್ಮ ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಸಲಹೆಗಳು ಬದಲಾಗುತ್ತವೆ. ಕೆಳಭಾಗದ ಸಾಲಿನಲ್ಲಿನ ಆ್ಯಪ್‌ಗಳು ಹೊಸ ಫೋಲ್ಡರ್‌ಗೆ ಚಲಿಸುತ್ತವೆ." "ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಿರಿ" "ಬೇಡ" - "ಸೆಟ್ಟಿಂಗ್‌ಗಳನ್ನು" + "ಸೆಟ್ಟಿಂಗ್‌ಗಳು" "ಹೆಚ್ಚು ಬಳಸಿದ ಆ್ಯಪ್‌ಗಳು ಇಲ್ಲಿ ಕಾಣಿಸುತ್ತವೆ ಮತ್ತು ದಿನಚರಿಯನ್ನು ಆಧರಿಸಿ ಬದಲಾಗುತ್ತದೆ" "ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಪಡೆಯಲು, ಆ್ಯಪ್‌ಗಳನ್ನು ಕೆಳಭಾಗದ ಸಾಲಿನಿಂದ ಡ್ರ್ಯಾಗ್ ಮಾಡಿ" "ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಖಾಲಿ ಸ್ಥಳಕ್ಕೆ ಸೇರಿಸಲಾಗಿದೆ" + "ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" + "ಆ್ಯಪ್ ಸಲಹೆಗಳನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ" "ಶಿಫಾರಸು ಮಾಡಿದ ಆ್ಯಪ್: %1$s" "ಹಂಚಿಕೊಳ್ಳಿ" "ಸ್ಕ್ರೀನ್‌ಶಾಟ್" diff --git a/quickstep/res/values-ko/strings.xml b/quickstep/res/values-ko/strings.xml index 4c686637eb..f7051f547a 100644 --- a/quickstep/res/values-ko/strings.xml +++ b/quickstep/res/values-ko/strings.xml @@ -32,17 +32,19 @@ "앱 제안" "모든 앱" "추천 앱" - "홈 화면 하단 행에서 앱 제안을 확인하세요." - "홈 화면에서 가장 많이 사용한 앱에 바로 액세스할 수 있습니다. 제안은 루틴에 따라 달라집니다. 하단 행의 앱이 홈 화면으로 이동합니다." - "홈 화면에서 가장 많이 사용한 앱에 바로 액세스할 수 있습니다. 제안은 루틴에 따라 달라집니다. 하단 행의 앱이 새로운 폴더로 이동합니다." + "홈 화면 하단에서 앱 제안 보기" + "홈 화면의 즐겨찾기 행에서 앱 제안 보기" + "홈 화면에서 자주 사용하는 앱에 바로 액세스할 수 있습니다. 제안은 사용 습관에 따라 바뀌며, 하단의 앱들은 홈 화면으로 이동합니다." + "홈 화면에서 가장 많이 사용한 앱에 바로 액세스할 수 있습니다. 제안은 루틴에 따라 달라집니다. 즐겨찾기 행의 앱이 홈 화면으로 이동합니다." + "홈 화면에서 자주 사용하는 앱에 바로 액세스할 수 있습니다. 제안은 사용 습관에 따라 바뀌며, 하단의 앱들은 새 폴더로 이동합니다." "앱 제안받기" "나중에" - "설정" + "설정" "가장 많이 사용한 앱이 여기에 표시되며 루틴에 따라 달라짐" "하단 행에서 앱을 드래그하여 앱 제안 받기" - "빈 공간에 앱 제안 추가됨" - - + "빈 공간에 앱 제안이 추가됨" + "앱 제안이 사용 설정됨" + "앱 제안이 사용 중지됨" "예상 앱: %1$s" "공유" "스크린샷" diff --git a/quickstep/res/values-ky/strings.xml b/quickstep/res/values-ky/strings.xml index 456abf6983..bdc065eb65 100644 --- a/quickstep/res/values-ky/strings.xml +++ b/quickstep/res/values-ky/strings.xml @@ -32,17 +32,19 @@ "Сунушталган колдонмолор" "Бардык колдонмолор" "Божомолдонгон колдонмолоруңуз" - "Көп колдонулган колдонмолорго оңой кириңиз" - "Pixel жакын арада кайсы колдонмолорду колдоно турганыңызды божомолдоп, Башкы экраныңызда сунуштап турат. Жөндөө үчүн, таптап коюңуз." - "Сунушталган колдонмолорду Башкы экрандын ылдый жагында жайгашкан тилкесинде көрүңүз" - "Көп колдонулган колдонмолорго Башкы экрандан оңой кириңиз. Сунуштар тартиптин негизинде өзгөрөт. Төмөндө жайгашкан тилкедеги колдонмолор Башкы экраныңызга көтөрүлөт." - "Көп колдонулган колдонмолорго Башкы экрандан оңой кириңиз. Сунуштар тартиптин негизинде өзгөрөт. Ылдый жакта жайгашкан тилкедеги колдонмолор жаңы папкага жылдырылат." + "Сунушталган колдонмолор башкы экрандын ылдый жагында көрүнөт." + "Сунушталган колдонмолор башкы экрандагы тандалмалардын катарында көрүнөт." + "Көп колдонулган колдонмолор башкы экранда жайгашып, алардын тизмеси маал-маалы менен өзгөрүп турат. Ылдый жакта жайгашкан тилкедеги колдонмолор башкы экранга жылдырылат." + "Көп иштетилген колдонмолорго Башкы экрандан оңой кириңиз. Сунуштар тартиптин негизинде өзгөрөт. Тандалмалардын катарындагы колдонмолор башкы экраныңызга жылдырылат." + "Көп колдонулган колдонмолор башкы экранда жайгашып, алардын тизмеси маал-маалы менен өзгөрүп турат. Ылдый жакта жайгашкан тилкедеги колдонмолор жаңы папкага жылдырылат." "Сунушталган колдонолорду алуу" "Жок, рахмат" - "Жөндөөлөр" + "Жөндөөлөр" "Көп иштетилген колдонмолор ушул жерде көрүнүп, тартиптин негизинде өзгөрөт" - "Сунушталган колдонмолорду көрүү үчүн ылдый жакта жайгашкан тилкедеги колдонмолорду сүрүп салыңыз" + "Сунуштарды алып туруу үчүн, ылдый жактагы тилкедеги колдонмолорду сүйрөп келиңиз" "Сунушталган колдонмолор бош жерге кошулат" + "Сунушталган колдонмолор функциясы иштетилди" + "Сунушталган колдонмолор функциясы өчүрүлгөн" "Божомолдонгон колдонмо: %1$s" "Бөлүшүү" "Скриншот" diff --git a/quickstep/res/values-lo/strings.xml b/quickstep/res/values-lo/strings.xml index c041479aae..b8c507bd1e 100644 --- a/quickstep/res/values-lo/strings.xml +++ b/quickstep/res/values-lo/strings.xml @@ -32,17 +32,19 @@ "ການແນະນຳແອັບ" "ແອັບທັງໝົດ" "ແອັບທີ່ຄາດເດົາໄວ້ແລ້ວຂອງທ່ານ" - "ເຂົ້າເຖິງແອັບທີ່ທ່ານໃຊ້ຫຼາຍທີ່ສຸດໄດ້ຢ່າງງ່າຍດາຍ" - "Pixel ຈະຄາດເດົາແອັບທີ່ທ່ານຈະໃຊ້ຕໍ່ໄປທັນທີຢູ່ໜ້າຈໍຫຼັກຂອງທ່ານ. ແຕະເພື່ອຕັ້ງຄ່າ." "ຮັບການແນະນຳແອັບຢູ່ແຖວລຸ່ມສຸດຂອງໜ້າຈໍຫຼັກທ່ານ" + "ຮັບການແນະນຳແອັບຢູ່ແຖວລາຍການທີ່ມັກຂອງໜ້າຈໍຫຼັກຂອງທ່ານ" "ເຂົ້າເຖິງແອັບທີ່ທ່ານໃຊ້ຫຼາຍທີ່ສຸດໄດ້ຢ່າງງ່າຍດາຍທັນທີຈາກໜ້າຈໍຫຼັກ. ການແນະນຳຈະປ່ຽນແປງຕາມການນຳໃຊ້ປະຈຳຂອງທ່ານ. ແອັບຢູ່ແຖວລຸ່ມສຸດຈະຍ້າຍຂຶ້ນໄປໃສ່ໜ້າຈໍຫຼັກຂອງທ່ານ." + "ເຂົ້າເຖິງແອັບທີ່ທ່ານໃຊ້ຫຼາຍທີ່ສຸດໄດ້ຢ່າງງ່າຍດາຍທັນທີຈາກໜ້າຈໍຫຼັກ. ການແນະນຳຈະປ່ຽນແປງຕາມການນຳໃຊ້ປະຈຳຂອງທ່ານ. ຕອນນີ້ແອັບໃນລາຍການທີ່ມັກຈະຍ້າຍໄປໃສ່ໜ້າຈໍຫຼັກຂອງທ່ານ." "ເຂົ້າເຖິງແອັບທີ່ທ່ານໃຊ້ຫຼາຍທີ່ສຸດໄດ້ຢ່າງງ່າຍດາຍທັນທີຈາກໜ້າຈໍຫຼັກ. ການແນະນຳຈະປ່ຽນແປງຕາມການນຳໃຊ້ປະຈຳຂອງທ່ານ. ແອັບຢູ່ແຖວລຸ່ມສຸດຈະຍ້າຍໄປໂຟນເດີໃໝ່." "ຮັບການແນະນຳແອັບ" "ບໍ່, ຂອບໃຈ" - "ການຕັ້ງຄ່າ" + "ການຕັ້ງຄ່າ" "ແອັບທີ່ໃຊ້ຫຼາຍທີ່ສຸດຈະປາກົດຢູ່ບ່ອນນີ້ ແລະ ປ່ຽນໄປຕາມການນຳໃຊ້ປະຈຳ" "ລາກແອັບຈາກແຖບລຸ່ມສຸດເພື່ອຮັບການແນະນຳແອັບ" "ເພີ່ມການແນະນຳແອັບໃສ່ພື້ນທີ່ຫວ່າງແລ້ວ" + "ເປີດການນຳໃຊ້ການແນະນຳແອັບແລ້ວ" + "ປິດການນຳໃຊ້ການແນະນຳແອັບແລ້ວ" "ແອັບທີ່ຄາດເດົາໄວ້: %1$s" "ແບ່ງປັນ" "ຮູບໜ້າຈໍ" diff --git a/quickstep/res/values-lt/strings.xml b/quickstep/res/values-lt/strings.xml index 3ef6454ffb..cd4310a9f8 100644 --- a/quickstep/res/values-lt/strings.xml +++ b/quickstep/res/values-lt/strings.xml @@ -32,17 +32,19 @@ "Programų pasiūlymai" "Visos programos" "Numatomos programos" - "Lengvai pasiekite dažniausiai naudojamas programas" - "„Pixel“ numato, kurių programų jums gali reikėti vėliau, ir sudeda jas iškart pagrindiniame ekrane. Palieskite, kad nustatytumėte." "Gaukite programų pasiūlymų apatinėje pagrindinio ekrano eilutėje" + "Gaukite programų pasiūlymų pagrindinio ekrano eilutėje „Mėgstamiausios“" "Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Apatinėje eilutėje esančios programos bus perkeltos į pagrindinį ekraną." + "Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Eilutėje „Mėgstamiausios“ rodomos programos bus perkeltos į pagrindinį ekraną." "Lengvai pasiekite dažniausiai naudojamas programas iškart pagrindiniame ekrane. Pasiūlymai keisis atsižvelgiant į tai, kaip jas naudojate. Apatinėje eilutėje esančios programos bus perkeltos į naują aplanką." "Gauti programų pasiūlymų" "Ne, ačiū" - "Nustatymai" + "Nustatymai" "Dažniausiai naudojamos programos rodomos čia ir keičiasi pagal tai, kaip jas naudojate" "Nuvilkę programas į apatinę eilutę gausite programų pasiūlymų" "Programų pasiūlymai pridedami tuščioje vietoje" + "Siūlomų programų funkcija įgalinta" + "Siūlomų programų funkcija išjungta" "Numatoma programa: %1$s" "Bendrinti" "Ekrano kopija" diff --git a/quickstep/res/values-lv/strings.xml b/quickstep/res/values-lv/strings.xml index 65d7a678fa..82c96fe213 100644 --- a/quickstep/res/values-lv/strings.xml +++ b/quickstep/res/values-lv/strings.xml @@ -32,17 +32,19 @@ "Ieteicamās lietotnes" "Visas lietotnes" "Jūsu prognozētās lietotnes" - "Ērta piekļuve visbiežāk izmantotajām lietotnēm" - "Pixel tālruņa sākuma ekrānā tiek prognozēts, kuras lietotnes jūs izmantosiet nākamās. Pieskarieties, lai to iestatītu." "Sākuma ekrāna apakšējā rindā tiks rādītas ieteicamās lietotnes" + "Saņemiet lietotņu ieteikumus izlases rindā sākuma ekrānā" "Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Apakšējā rindā esošās lietotnes tiks pārvietotas uz augšu — uz sākuma ekrānu." + "Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Lietotnes no izlases rindas tiks pārvietotas uz sākuma ekrānu." "Varat sākuma ekrānā ērti piekļūt savām visbiežāk izmantotajām lietotnēm. Ieteikumi mainīsies atkarībā no jūsu paradumiem. Apakšējā rindā esošās lietotnes tiks pārvietotas uz jaunu mapi." "Rādīt ieteicamās lietotnes" "Nē, paldies" - "Iestatījumi" + "Iestatījumi" "Šeit tiek rādītas visbiežāk izmantotās lietotnes, un tās mainās atkarībā no jūsu paradumiem" "Lai skatītu ieteicamās lietotnes, velciet lietotnes prom no apakšējās rindas" "Ieteicamās lietotnes tika pievienotas tukšajā vietā" + "Ieteicamās lietotnes ir iespējotas" + "Ieteicamās lietotnes ir atspējotas" "Prognozētā lietotne: %1$s" "Kopīgot" "Izveidot ekrānuzņēmumu" diff --git a/quickstep/res/values-mk/strings.xml b/quickstep/res/values-mk/strings.xml index 70fd5eaf87..130e012704 100644 --- a/quickstep/res/values-mk/strings.xml +++ b/quickstep/res/values-mk/strings.xml @@ -32,17 +32,19 @@ "Предлози за апликации" "Сите апликации" "Вашите предвидени апликации" - "Лесно пристапувајте до најкористените апликации" - "Pixel предвидува кои апликации ќе ви требаат следно, директно на почетниот екран. Допрете за поставување." "Добивајте предлози за апликации на долниот ред од почетниот екран" + "Добивајте предлози за апликации во редот со омилени на почетниот екран" "Лесно пристапувајте до најкористените апликации директно на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од последниот ред ќе се поместуваат нагоре до почетниот екран." + "Лесно пристапувајте до најкористените апликации на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од редот со омилени ќе се преместат на почетниот екран." "Лесно пристапувајте до најкористените апликации директно на почетниот екран. Предлозите ќе се менуваат според рутините. Апликациите од последниот ред ќе се преместуваат во нова папка." "Добивајте предлози за апликации" "Не, фала" - "Поставки" + "Поставки" "Најкористените апликации се појавуваат тука и се менуваат според рутините" "Отстранете апликации од долниот ред со повлекување за да добивате предлози за апликации" "Предлозите за апликации се додадени во празен простор" + "Предлозите за апликации се овозможени" + "Предлозите за апликации се оневозможени" "Предвидена апликација: %1$s" "Сподели" "Слика од екранот" diff --git a/quickstep/res/values-ml/strings.xml b/quickstep/res/values-ml/strings.xml index c6f70ff702..8e1eec5ca3 100644 --- a/quickstep/res/values-ml/strings.xml +++ b/quickstep/res/values-ml/strings.xml @@ -32,17 +32,19 @@ "ആപ്പ് നിർദ്ദേശങ്ങൾ" "എല്ലാ ആപ്പുകളും" "നിങ്ങളുടെ പ്രവചിക്കപ്പെട്ട ആപ്പുകൾ" - "നിങ്ങൾ ഏറ്റവുമധികം ഉപയോഗിച്ച ആപ്പുകൾ എളുപ്പത്തിൽ ആക്‌സസ് ചെയ്യുക" - "അടുത്തതായി നിങ്ങൾക്ക് ആവശ്യമുള്ള ആപ്പുകൾ, ഹോം സ്‌ക്രീനിൽ തന്നെ Pixel പ്രവചിക്കുന്നു. സജ്ജീകരിക്കാൻ ടാപ്പ് ചെയ്യുക." "നിങ്ങളുടെ ഹോം സ്‌ക്രീനിന്റെ താഴത്തെ നിരയിൽ ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക" + "നിങ്ങളുടെ ഹോം സ്‌ക്രീനിന്റെ \'പ്രിയപ്പെട്ടവ\' വരിയിൽ ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക" "നിങ്ങൾ ഏറ്റവും കൂടുതൽ ഉപയോഗിച്ച ആപ്പുകൾ ഹോം സ്ക്രീനിൽ നിന്ന് തന്നെ എളുപ്പത്തിൽ ആക്‌സസ് ചെയ്യൂ. നിങ്ങളുടെ ദിനചര്യകളുടെ അടിസ്ഥാനത്തിൽ നിർദ്ദേശങ്ങൾ മാറും. താഴത്തെ നിരയിലുള്ള ആപ്പുകൾ നിങ്ങളുടെ ഹോം സ്‌ക്രീനിലേക്ക് നീങ്ങും." + "നിങ്ങൾ ഏറ്റവും കൂടുതൽ ഉപയോഗിച്ച ആപ്പുകൾ ഹോം സ്ക്രീനിൽ നിന്ന് തന്നെ എളുപ്പത്തിൽ ആക്‌സസ് ചെയ്യൂ. നിങ്ങളുടെ ദിനചര്യകളുടെ അടിസ്ഥാനത്തിൽ നിർദ്ദേശങ്ങൾ മാറും. \'പ്രിയപ്പെട്ടവ\' വരിയിലുള്ള ആപ്പുകൾ നിങ്ങളുടെ ഹോം സ്‌ക്രീനിലേക്ക് നീങ്ങും." "നിങ്ങൾ ഏറ്റവും കൂടുതൽ ഉപയോഗിച്ച ആപ്പുകൾ ഹോം സ്ക്രീനിൽ നിന്ന് തന്നെ എളുപ്പത്തിൽ ആക്‌സസ് ചെയ്യൂ. നിങ്ങളുടെ ദിനചര്യകളുടെ അടിസ്ഥാനത്തിൽ നിർദ്ദേശങ്ങൾ മാറും. താഴത്തെ നിരയിലുള്ള ആപ്പുകൾ പുതിയൊരു ഫോൾഡറിലേക്ക് നീങ്ങും." "ആപ്പ് നിർദ്ദേശങ്ങൾ നേടുക" "വേണ്ട" - "ക്രമീകരണം" + "ക്രമീകരണം" "ഏറ്റവുമധികം ഉപയോഗിക്കുന്ന ആപ്പുകൾ ഇവിടെ ദൃശ്യമാകും, ദിനചര്യയ്ക്ക് അനുസരിച്ച് അത് മാറുകയും ചെയ്യും" "ആപ്പ് നിർദ്ദേശങ്ങൾ നേടാൻ താഴത്തെ നിരയിലെ ആപ്പുകൾ വലിച്ചിടുക" "ആപ്പ് നിർദ്ദേശങ്ങൾ ഒഴിഞ്ഞ സ്ഥലത്തേക്ക് ചേർത്തു" + "ആപ്പ് നിർദ്ദേശങ്ങൾ പ്രവർത്തനക്ഷമമാക്കി" + "ആപ്പ് നിർദ്ദേശങ്ങൾ പ്രവർത്തനരഹിതമാക്കി" "പ്രവചിച്ച ആപ്പ്: %1$s" "പങ്കിടുക" "സ്ക്രീൻഷോട്ട്" diff --git a/quickstep/res/values-mn/strings.xml b/quickstep/res/values-mn/strings.xml index 388fee270b..f4b9d43e6e 100644 --- a/quickstep/res/values-mn/strings.xml +++ b/quickstep/res/values-mn/strings.xml @@ -33,16 +33,18 @@ "Бүх апп" "Таны таамагласан аппууд" "Үндсэн нүүрнийхээ доод мөрөнд санал болгож буй аппуудыг аваарай" + "Үндсэн нүүрний дуртай мөрнөөсөө санал болгож буй аппуудыг аваарай" "Хамгийн их ашигладаг аппууддаа Үндсэн нүүрээс хялбархан хандаарай. Санал болгож буй аппуудыг таны хэвшлээс хамаарч өөрчилнө. Доод мөр дэх аппуудыг таны Үндсэн нүүр лүү дээш зөөнө." + "Хамгийн их ашигладаг аппууддаа Үндсэн нүүрнээсээ хялбархан хандаарай. Санал болголтыг таны хэвшлээс хамааран өөрчилнө. Дуртай мөрөнд буй аппуудыг таны үндсэн нүүр лүү зөөнө." "Хамгийн их ашигладаг аппууддаа Үндсэн нүүрээс хялбархан хандаарай. Санал болгож буй аппуудыг таны хэвшлээс хамаарч өөрчилнө. Доод мөр дэх аппуудыг шинэ фолдер луу зөөнө." "Санал болгож буй аппуудыг авах" "Үгүй, баярлалаа" - "Тохиргоо" + "Тохиргоо" "Хамгийн их ашигладаг аппуудыг энд харуулах бөгөөд хэвшлээс хамаарч өөрчилдөг" "Санал болгож буй аппуудыг авахын тулд доод мөрөөс аппуудыг чирж гаргаарай" "Санал болгож буй аппуудыг хоосон зайд нэмсэн" - - + "Санал болгож буй аппуудыг идэвхжүүлсэн" + "Санал болгож буй аппуудыг идэвхгүй болгосон" "Таамаглаж буй апп: %1$s" "Хуваалцах" "Дэлгэцийн агшин дарах" diff --git a/quickstep/res/values-mr/strings.xml b/quickstep/res/values-mr/strings.xml index 48fc4ee877..4a5fdddc2b 100644 --- a/quickstep/res/values-mr/strings.xml +++ b/quickstep/res/values-mr/strings.xml @@ -32,17 +32,19 @@ "अ‍ॅप सूचना" "सर्व अ‍ॅप्स" "तुमची पूर्वानुमानीत अ‍ॅप्स" - "तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स सहजपणे अ‍ॅक्सेस करा" - "तुमच्या होम स्क्रीनवरच, Pixel तुम्हाला पुढे लागणार असलेल्या अ‍ॅप्सचे पूर्वानुमान करते. सेट करण्यासाठी टॅप करा." - "तुमच्या होम स्क्रीनच्या तळाच्या पंक्तीवर अ‍ॅप सूचना मिळवा" - "तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स होम स्क्रीनवरच सहजपणे अ‍ॅक्सेस करा. सूचना तुमच्या दिनक्रमांच्या आधारावर बदलतील. तळाच्या पंक्तीवरील अ‍ॅप्स तुमच्या होम स्क्रीनवर जातील." + "तुमच्या होम स्क्रीनच्या तळाशी अ‍ॅप सूचना मिळवा" + "तुमच्या होम स्क्रीनच्या पसंतीच्या पंक्तीवर अ‍ॅप सूचना मिळवा" + "तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स होम स्क्रीनवरच सहजपणे अ‍ॅक्सेस करा. तुमच्या दिनक्रमानुसार तुम्हाला मिळणाऱ्या सूचना बदलतील. तळाशी असणारी अ‍ॅप्स तुमच्या होम स्क्रीनवर जातील." + "तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स होम स्क्रीनवर सहजपणे अ‍ॅक्सेस करा. सूचना तुमच्या दिनक्रमांनुसार बदलतील. पसंतीच्या पंक्तीमधील अ‍ॅप्स तुमच्या होम स्क्रीनवर हलवली जातील." "तुमची सर्वाधिक वापरली जाणारी अ‍ॅप्स होम स्क्रीनवरच सहजपणे अ‍ॅक्सेस करा. सूचना तुमच्या दिनक्रमांच्या आधारावर बदलतील. तळाच्या पंक्तीवरील अ‍ॅप्स नवीन फोल्डरवर जातील." "अ‍ॅप सूचना मिळवा" "नाही, नको" - "सेटिंग्ज" + "सेटिंग्ज" "सर्वाधिक वापरली जाणारी अ‍ॅप्स येथे दिसतात आणि दिनक्रमांच्या आधारावर बदलतात" "अ‍ॅप सूचना मिळवण्यासाठी तळाच्या पंक्तीवरून अ‍ॅप्स ड्रॅग करा" "रिकाम्या जागेवर जोडलेल्या अ‍ॅप सूचना" + "अ‍ॅप सूचना सुरू केल्या आहेत" + "अ‍ॅप सूचना बंद केल्या आहेत" "पूर्वानुमान केलेले अ‍ॅप: %1$s" "शेअर करा" "स्क्रीनशॉट" diff --git a/quickstep/res/values-ms/strings.xml b/quickstep/res/values-ms/strings.xml index 3fc66e0da0..714831a2b2 100644 --- a/quickstep/res/values-ms/strings.xml +++ b/quickstep/res/values-ms/strings.xml @@ -32,17 +32,19 @@ "Cadangan apl" "Semua apl" "Apl ramalan anda" - "Akses apl yang paling kerap anda gunakan dengan mudah" - "Pixel meramalkan apl yang anda perlukan seterusnya, terus pada Skrin utama anda. Ketik untuk membuat persediaan." "Dapatkan cadangan apl di baris bawah Skrin utama anda" + "Dapatkan cadangan apl di baris kegemaran Skrin utama anda" "Akses apl yang paling kerap anda gunakan dengan mudah pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris bawah akan beralih ke atas, ke Skrin utama anda." + "Akses apl yang paling kerap anda gunakan dengan mudah pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris kegemaran akan beralih ke Skrin utama anda." "Akses apl yang paling kerap anda gunakan dengan mudah, terus pada Skrin utama. Cadangan akan berubah berdasarkan rutin anda. Apl di baris bawah akan beralih ke folder baharu." "Dapatkan cadangan apl" "Tidak perlu" - "Tetapan" + "Tetapan" "Apl yang paling kerap digunakan dipaparkan di sini dan berubah berdasarkan rutin" "Seret apl keluar dari baris bawah untuk mendapatkan cadangan apl" "Cadangan apl ditambahkan pada ruang kosong" + "Cadangan apl didayakan" + "Cadangan apl dilumpuhkan" "Apl yang diramalkan: %1$s" "Kongsi" "Tangkapan skrin" diff --git a/quickstep/res/values-my/strings.xml b/quickstep/res/values-my/strings.xml index 1922526dc0..0dc3a165b5 100644 --- a/quickstep/res/values-my/strings.xml +++ b/quickstep/res/values-my/strings.xml @@ -32,17 +32,19 @@ "အက်ပ်အကြံပြုချက်များ" "အက်ပ်အားလုံး" "သင်၏ ခန့်မှန်းအက်ပ်များ" - "အသုံးအများဆုံးအက်ပ်များကို အလွယ်တကူ သုံးခြင်း" - "Pixel က သင်၏ \'ပင်မစာမျက်နှာ\' တွင် သင်လိုအပ်မည့် အက်ပ်များကို ကြိုတင်မှန်းဆပါသည်။ စနစ်ထည့်သွင်းရန် တို့ပါ။" "သင်၏ \'ပင်မစာမျက်နှာ\' အောက်ခြေအတန်းတွင် အက်ပ်အကြံပြုချက်များ ရယူခြင်း" + "သင်၏ \'ပင်မစာမျက်နှာ\' ၏ အနှစ်သက်ဆုံးများအတန်းတွင် အက်ပ်အကြံပြုချက်များ ရယူခြင်း" "အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ သုံးနိုင်သည်။ သင်၏ ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အောက်ခြေအတန်းရှိ အက်ပ်များကို သင်၏ \'ပင်မစာမျက်နှာ\' သို့ရွှေ့လိုက်မည်။" + "အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ သုံးနိုင်သည်။ သင်၏ ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အနှစ်သက်ဆုံးများအတန်းရှိ အက်ပ်များကို သင်၏ \'ပင်မစာမျက်နှာ\' သို့ရွှေ့လိုက်မည်။" "အသုံးအများဆုံးအက်ပ်များကို \'ပင်မစာမျက်နှာ\' တွင် အလွယ်တကူ သုံးနိုင်သည်။ သင်၏ ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ အကြံပြုချက်များ ပြောင်းလဲပါမည်။ အောက်ခြေအတန်းရှိ အက်ပ်များကို ဖိုင်တွဲအသစ်သို့ ရွှေ့လိုက်မည်။" "အက်ပ်အကြံပြုချက်များ ရယူရန်" "မလိုပါ" - "ဆက်တင်များ" + "ဆက်တင်များ" "အသုံးအများဆုံးအက်ပ်များကို ဤနေရာတွင် ပြပြီး ပုံမှန်အစီအစဉ်များပေါ် အခြေခံ၍ ပြောင်းလဲသည်" "အက်ပ်အကြံပြုချက်များ ရယူရန် အောက်ခြေအတန်းရှိ အက်ပ်များကို ဖိဆွဲထုတ်လိုက်ပါ" "အက်ပ်အကြံပြုချက်များကို နေရာလွတ်သို့ ထည့်လိုက်သည်" + "အက်ပ်အကြံပြုချက်များကို ဖွင့်ထားသည်" + "အက်ပ်အကြံပြုချက်များကို ပိတ်ထားသည်" "ကြိုတင်မှန်းဆထားသော အက်ပ်− %1$s" "မျှဝေရန်" "ဖန်သားပြင်ဓာတ်ပုံ" diff --git a/quickstep/res/values-nb/strings.xml b/quickstep/res/values-nb/strings.xml index 68e5f2b3a9..161612212b 100644 --- a/quickstep/res/values-nb/strings.xml +++ b/quickstep/res/values-nb/strings.xml @@ -32,17 +32,19 @@ "Appanbefalinger" "Alle apper" "Forslag til apper" - "Få enkel tilgang til appene du bruker oftest" - "Pixel foreslår de neste appene du trenger, rett på startskjermen. Trykk for å konfigurere." "Få appforslag i den nederste raden på startskjermen" + "Få appforslag i favoritter-raden på startskjermen" "Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Appene i den nederste raden flyttes opp til startskjermen." + "Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Apper i favoritter-raden blir flyttet til startskjermen." "Få enkel tilgang til appene du bruker oftest, rett fra startskjermen. Forslagene endres basert på rutinene dine. Appene i den nederste raden flyttes til en ny mappe." "Få appforslag" "Nei takk" - "Innstillinger" + "Innstillinger" "Appene som brukes oftest, vises her og endres basert på rutiner" "Dra appene vekk fra den nederste raden for å få appforslag." "Appforslag er lagt til på et tomt område" + "Appforslag er slått på" + "Appforslag er slått av" "Foreslått app: %1$s" "Del" "Skjermdump" diff --git a/quickstep/res/values-ne/strings.xml b/quickstep/res/values-ne/strings.xml index 4c6339e7c8..c8c35a8c80 100644 --- a/quickstep/res/values-ne/strings.xml +++ b/quickstep/res/values-ne/strings.xml @@ -32,17 +32,19 @@ "अनुप्रयोगसम्बन्धी सुझावहरू" "सबै एपहरू" "तपाईंका पूर्वानुमानित एपहरू" - "आफूले सबैभन्दा बढी प्रयोग गर्ने एपहरूमाथि सजिलै पहुँच राख्नुहोस्" - "Pixel ले तपाईंको गृह स्क्रिनमा तपाईंलाई अब कुन एप आवश्यक छ भन्ने कुराको पूर्वानुमान गर्छ। सेटअप गर्न ट्याप गर्नुहोस्।" "तपाईंको गृह स्क्रिनको पुछारको पङ्क्तिमा सिफारिस गरिएका एपहरू प्राप्त गर्नुहोस्" - "गृह स्क्रिनबाटै आफूले सबैभन्दा बढी प्रयोग गर्ने एपमाथि सजिलैसँग पहुँच राख्नुहोस्। सिफारिस गरिने एपहरूको क्रम तपाईंले एप प्रयोग गर्ने समयतालिकाअनुसार बदलिने छ। फेदको पङ्क्तिमा रहेका एपहरू तपाईंको गृह स्क्रिनको सिरानमा सर्ने छन्।" + "आफ्नो होम स्क्रिनको मन पर्ने नामक पङ्क्तिमा सिफारिस गरिएका एपहरू प्राप्त गर्नुहोस्" + "गृह स्क्रिनबाटै आफूले सबैभन्दा बढी प्रयोग गर्ने एप सजिलै चलाउनुहोस्। सिफारिस गरिने एपहरूको क्रम तपाईंले एप प्रयोग गर्ने समयतालिकाअनुसार बदलिने छ। फेदको पङ्क्तिमा रहेका एपहरू तपाईंको गृह स्क्रिनको सिरानमा सर्ने छन्।" + "आफूले सबैभन्दा बढी प्रयोग गर्ने एपहरू गृह स्क्रिनबाटै सजिलैसँग खोल्नुहोस्। सिफारिस गरिने एपहरूको क्रम तपाईंको दिनचर्याअनुसार बदलिने छ। मन पर्ने नामक पङ्क्तिमा रहेका एपहरू सारेर होम स्क्रिनमा लगिने छन्।" "गृह स्क्रिनबाटै आफूले सबैभन्दा बढी प्रयोग गर्ने एपमाथि सजिलैसँग पहुँच राख्नुहोस्। सिफारिस गरिने एपहरूको क्रम तपाईंले एप प्रयोग गर्ने समयतालिकाअनुसार बदलिने छ। फेदको पङ्क्तिमा रहेका एपहरू एउटा नयाँ फोल्डरमा सर्ने छन्।" "सिफारिस गरिएका एपहरू प्राप्त गर्नुहोस्" "पर्दैन धन्यवाद" - "सेटिङ" + "सेटिङ" "सबैभन्दा बढी प्रयोग हुने एपहरू यहाँ देखिन्छन् र यी एपहरूको क्रम तपाईंले एप प्रयोग गर्ने समयतालिकाअनुसार बदलिरहन्छ" "सिफारिस गरिएका एपहरू प्राप्त गर्न फेदको पङ्क्तिमा रहेका एपहरू ड्र्याग गरी हटाउनुहोस्" "खाली ठाउँमा सिफारिस गरिएका एपहरू थपिए" + "सिफारिस गरिएका एपहरू देखाउने सुविधा सक्षम पारिएका छन्" + "सिफारिस गरिएका एपहरू देखाउने सुविधा असक्षम पारिएको छ" "पूर्वानुमान गरिएको एप: %1$s" "सेयर गर्नुहोस्" "स्क्रिनसट" diff --git a/quickstep/res/values-nl/strings.xml b/quickstep/res/values-nl/strings.xml index 9e079dfaa6..b814d39d99 100644 --- a/quickstep/res/values-nl/strings.xml +++ b/quickstep/res/values-nl/strings.xml @@ -32,17 +32,19 @@ "App-suggesties" "Alle apps" "Je voorspelde apps" - "Eenvoudig toegang tot je meestgebruikte apps" - "Pixel voorspelt welke apps je als volgende nodig hebt en geeft ze weer op je startscherm. Tik om dit in te stellen." "App-suggesties ontvangen op de onderste rij van je startscherm" + "App-suggesties ontvangen op de rij met favorieten op het startscherm" "Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de onderste rij worden naar je startscherm verplaatst." + "Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de rij met favorieten worden naar het startscherm verplaatst." "Open je meestgebruikte apps gemakkelijk vanaf het startscherm. De suggesties veranderen op basis van je routines. Apps op de onderste rij worden naar een nieuwe map verplaatst." "App-suggesties ontvangen" - "Nee" - "Instellingen" + "Nee, bedankt" + "Instellingen" "De meestgebruikte apps worden hier weergegeven en kunnen veranderen op basis van je routines" "Sleep apps weg van de onderste rij om app-suggesties te ontvangen" "App-suggesties toegevoegd aan lege ruimte" + "App-suggesties zijn ingeschakeld" + "App-suggesties zijn uitgeschakeld" "Voorspelde app: %1$s" "Delen" "Screenshot" diff --git a/quickstep/res/values-or/strings.xml b/quickstep/res/values-or/strings.xml index f3637a1d59..1a63e114fa 100644 --- a/quickstep/res/values-or/strings.xml +++ b/quickstep/res/values-or/strings.xml @@ -32,17 +32,19 @@ "ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ" "ସମସ୍ତ ଆପ୍ସ" "ଆପଣ ପୂର୍ବାନୁମାନ କରିଥିବା ଆପ୍ସ" - "ଆପଣଙ୍କ ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକୁ ସହଜରେ ଆକ୍ସେସ୍ କରନ୍ତୁ" - "ଆପଣଙ୍କୁ ପରବର୍ତ୍ତୀ ସମୟରେ କେଉଁ ଆପଗୁଡ଼ିକର ଆବଶ୍ୟକତା ହେବ, ତାହା Pixel ସିଧା ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନରେ ପୂର୍ବାନୁମାନ କରେ। ସେଟ୍ ଅପ୍ କରିବାକୁ ଟାପ୍ କରନ୍ତୁ।" "ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନର ତଳ ଧାଡ଼ିରେ ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ" + "ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନର ପସନ୍ଦର ଧାଡ଼ିରେ ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ" "ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକୁ ସିଧା ମୂଳ ସ୍କ୍ରିନରେ ସହଜରେ ଆକ୍ସେସ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ପରିବର୍ତ୍ତିତ ହେବ। ତଳ ଧାଡ଼ିରେ ଥିବା ଆପଗୁଡ଼ିକ ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନକୁ ମୁଭ୍ କରିଯିବ।" + "ମୂଳ ସ୍କ୍ରିନରେ ହିଁ ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକୁ ସହଜରେ ଆକ୍ସେସ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ବଦଳିବ। ଆପଣଙ୍କ ମୂଳ ସ୍କ୍ରିନକୁ ପସନ୍ଦର ଧାଡ଼ିରେ ଥିବା ଆପଗୁଡ଼ିକ ମୁଭ୍ ହେବ।" "ଆପଣଙ୍କର ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକୁ, ସିଧା ମୂଳ ସ୍କ୍ରିନରେ ସହଜରେ ଆକ୍ସେସ୍ କରନ୍ତୁ। ଆପଣଙ୍କ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରାମର୍ଶଗୁଡ଼ିକ ପରିବର୍ତ୍ତିତ ହେବ। ତଳ ଧାଡ଼ିରେ ଥିବା ଆପଗୁଡ଼ିକ ଏକ ନୂଆ ଫୋଲ୍ଡରକୁ ମୁଭ୍ କରିଯିବ।" "ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଆନ୍ତୁ" "ନାହିଁ, ଥାଉ" - "ସେଟିଂସ୍" + "ସେଟିଂସ୍" "ସବୁଠାରୁ ଅଧିକ-ବ୍ୟବହୃତ ଆପଗୁଡ଼ିକ ଏଠାରେ ଦେଖାଯାଏ ଏବଂ ରୁଟିନଗୁଡ଼ିକ ଆଧାରରେ ପରିବର୍ତ୍ତିତ ହୋଇଥାଏ" "ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ପାଇବାକୁ ଆପଗୁଡ଼ିକୁ ତଳ ଧାଡ଼ିରୁ ଟାଣି ଆଣନ୍ତୁ" "ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକ ଖାଲି ସ୍ଥାନରେ ଯୋଗ କରାଯାଇଛି" + "ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକୁ ସକ୍ଷମ କରାଯାଇଛି" + "ଆପ୍ ପରାମର୍ଶଗୁଡ଼ିକୁ ଅକ୍ଷମ କରାଯାଇଛି" "ପୂର୍ବାନୁମାନ କରାଯାଇଥିବା ଆପ୍: %1$s" "ସେୟାର୍ କରନ୍ତୁ" "ସ୍କ୍ରିନସଟ୍" diff --git a/quickstep/res/values-pa/strings.xml b/quickstep/res/values-pa/strings.xml index 20a2aa5267..22fa519efc 100644 --- a/quickstep/res/values-pa/strings.xml +++ b/quickstep/res/values-pa/strings.xml @@ -32,17 +32,19 @@ "ਐਪ ਸੁਝਾਅ" "ਸਾਰੀਆਂ ਐਪਾਂ" "ਤੁਹਾਡੀਆਂ ਪੂਰਵ ਅਨੁਮਾਨਿਤ ਐਪਾਂ" - "ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ" - "Pixel ਅਨੁਮਾਨ ਲਗਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਨੂੰ ਤੁਹਾਡੀ ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ, ਅੱਗੇ ਕਿਹੜੀਆਂ ਐਪਾਂ ਦੀ ਲੋੜ ਪਵੇਗੀ। ਸੈੱਟਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ।" "ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ ਦੀ ਹੇਠਲੀ ਕਤਾਰ \'ਤੇ ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ" + "ਆਪਣੀ ਹੋਮ ਸਕ੍ਰੀਨ ਦੀ ਮਨਪਸੰਦ ਕਤਾਰ \'ਤੇ ਐਪ ਸੁਝਾਅ ਹਾਸਲ ਕਰੋ" "ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਹੇਠਲੀ ਕਤਾਰ ਵਾਲੀਆਂ ਐਪਾਂ ਤੁਹਾਡੀ ਹੋਮ ਸਕ੍ਰੀਨ ਵੱਲ ਉੱਪਰ ਆ ਜਾਣਗੀਆਂ।" + "ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਮਨਪਸੰਦ ਕਤਾਰ ਵਿਚਲੀਆਂ ਐਪਾਂ ਤੁਹਾਡੀ ਹੋਮ ਸਕ੍ਰੀਨ ਉੱਪਰ ਆ ਜਾਣਗੀਆਂ।" "ਹੋਮ ਸਕ੍ਰੀਨ \'ਤੇ ਆਪਣੀਆਂ ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਤੱਕ ਆਸਾਨੀ ਨਾਲ ਪਹੁੰਚ ਕਰੋ। ਸੁਝਾਅ ਤੁਹਾਡੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਣਗੇ। ਹੇਠਲੀ ਕਤਾਰ ਵਾਲੀਆਂ ਐਪਾਂ ਇੱਕ ਨਵੇਂ ਫੋਲਡਰ ਵਿੱਚ ਚਲੀਆਂ ਜਾਣਗੀਆਂ।" "ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰੋ" "ਨਹੀਂ ਧੰਨਵਾਦ" - "ਸੈਟਿੰਗਾਂ" + "ਸੈਟਿੰਗਾਂ" "ਸਭ ਤੋਂ ਵੱਧ ਵਰਤੀਆਂ ਗਈਆਂ ਐਪਾਂ ਇੱਥੇ ਦਿਸਦੀਆਂ ਹਨ, ਅਤੇ ਨਿਯਮਬੱਧ ਕੰਮਾਂ ਦੇ ਆਧਾਰ \'ਤੇ ਬਦਲਦੀਆਂ ਹਨ" - "ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਐਪਾਂ ਨੂੰ ਹੇਠਲੀ ਕਤਾਰ ਤੋਂ ਪਰੇ ਘਸੀਟੋ" + "ਐਪ ਸੁਝਾਅ ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਹੇਠਲੀ ਕਤਾਰ ਤੋਂ ਐਪਾਂ ਨੂੰ ਘਸੀਟੋ" "ਐਪ ਸੁਝਾਅ ਖਾਲੀ ਜਗ੍ਹਾ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ" + "ਐਪ ਸੁਝਾਵਾਂ ਨੂੰ ਚਾਲੂ ਕੀਤਾ ਗਿਆ" + "ਐਪ ਸੁਝਾਵਾਂ ਨੂੰ ਬੰਦ ਕੀਤਾ ਗਿਆ" "ਪੂਰਵ ਅਨੁਮਾਨਿਤ ਐਪ: %1$s" "ਸਾਂਝਾ ਕਰੋ" "ਸਕ੍ਰੀਨਸ਼ਾਟ" diff --git a/quickstep/res/values-pl/strings.xml b/quickstep/res/values-pl/strings.xml index bc87f6fde9..33ea9b41a1 100644 --- a/quickstep/res/values-pl/strings.xml +++ b/quickstep/res/values-pl/strings.xml @@ -32,17 +32,19 @@ "Sugestie aplikacji" "Wszystkie aplikacje" "Przewidywane aplikacje" - "Łatwy dostęp do najczęstszych aplikacji" - "Pixel przewiduje, których aplikacji będziesz potrzebować w następnej kolejności, bezpośrednio na ekranie głównym. Kliknij, by skonfigurować." "Otrzymuj sugestie aplikacji w dolnym wierszu ekranu głównego" - "Korzystaj z najczęściej używanych aplikacji na ekranie głównym w łatwy sposób. Sugestie będą się zmieniać na podstawie Twojej rutyny. Aplikacje z dolnych wierszy będą się przenosić w górę do ekranu głównego." + "Otrzymuj sugestie aplikacji w wierszu ulubionych na ekranie głównym" + "Łatwo uruchamiaj najczęściej używane aplikacje z ekranu głównego. Sugestie będą zmieniać się w zależności od Twoich nawyków. Aplikacje z dolnych wierszy będą przesuwane w górę, do ekranu głównego." + "Zyskaj łatwy dostęp do najczęściej używanych aplikacji na ekranie głównym. Sugestie będą się zmieniać na podstawie Twojej rutyny. Aplikacje z wiersza ulubionych zostaną przeniesione na ekran główny." "Korzystaj z najczęściej używanych aplikacji na ekranie głównym w łatwy sposób. Sugestie będą się zmieniać na podstawie Twojej rutyny. Aplikacje z dolnych wierszy będą się przenosić do nowego folderu." "Otrzymuj sugestie aplikacji" - "Nie" - "Ustawienia" + "Nie, dziękuję" + "Ustawienia" "Najczęściej używane aplikacje wyświetlają się tutaj i zmieniają się w zależności od rutyny" "Przeciągnij aplikacje z dolnego wiersza, aby otrzymać sugestie aplikacji" "Sugestie aplikacji dodane w pustym obszarze" + "Włączono sugestie aplikacji" + "Sugestie aplikacji są wyłączone" "Przewidywana aplikacja: %1$s" "Udostępnij" "Zrzut ekranu" diff --git a/quickstep/res/values-pt-rPT/strings.xml b/quickstep/res/values-pt-rPT/strings.xml index d5f298ee07..5ac7287f74 100644 --- a/quickstep/res/values-pt-rPT/strings.xml +++ b/quickstep/res/values-pt-rPT/strings.xml @@ -32,17 +32,19 @@ "Sugestões de apps" "Todas as aplicações" "As suas aplicações previstas" - "Aceda facilmente às suas apps mais utilizadas" - "O Pixel prevê as apps de que necessitará a seguir, diretamente no ecrã principal. Toque para configurar." - "Obtenha sugestões de apps na última fila do ecrã principal." + "Obtenha sugestões de apps na última fila do ecrã principal" + "Obtenha sugestões de apps na fila dos favoritos do ecrã principal" "Aceda facilmente às suas apps mais utilizadas, diretamente no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na última fila passam para o ecrã principal." + "Aceda facilmente às suas apps mais utilizadas no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na fila dos favoritos passam para o ecrã principal." "Aceda facilmente às suas apps mais utilizadas, diretamente no ecrã principal. As sugestões mudam em função das suas rotinas. As apps na última fila passam para uma nova pasta." "Obter sugestões de apps" "Não, obrigado" - "Definições" + "Definições" "As apps mais utilizadas aparecem aqui e mudam em função das rotinas." "Arraste as apps para fora da última fila para obter sugestões de apps." - "Sugestões de apps adicionadas ao espaço vazio." + "Sugestões de apps adicionadas a um espaço vazio." + "Sugestões de apps ativadas" + "As sugestões de apps estão desativadas" "App prevista: %1$s" "Partilhar" "Tirar captura de ecrã" diff --git a/quickstep/res/values-pt/strings.xml b/quickstep/res/values-pt/strings.xml index 435259e8b7..7c80a588d8 100644 --- a/quickstep/res/values-pt/strings.xml +++ b/quickstep/res/values-pt/strings.xml @@ -33,16 +33,18 @@ "Todos os apps" "Suas predições de apps" "Receba sugestões de apps na linha inferior da tela inicial" + "Receba sugestões de apps na linha \"Favoritos\" da tela inicial" "Acesse diretamente na tela inicial os apps que você mais usa. As sugestões mudarão de acordo com sua rotina. Os apps na linha inferior serão movidos para a tela inicial." + "Acesse os apps mais usados na tela inicial de forma simples. As sugestões mudarão de acordo com sua rotina. Os apps na linha \"Favoritos\" serão movidos para a tela inicial." "Acesse diretamente na tela inicial os apps que você mais usa. As sugestões mudarão de acordo com sua rotina. Os apps na linha inferior serão movidos para uma nova pasta." "Receber sugestões de apps" "Não" - "Configurações" + "Configurações" "Os apps mais usados aparecem aqui e mudam de acordo com sua rotina" "Arraste apps da linha inferior para receber sugestões de apps" "Sugestões de apps adicionadas a um espaço vazio" - - + "O recurso \"sugestões de apps\" está ativado" + "O recurso \"sugestões de apps\" está desativado" "App previsto: %1$s" "Compartilhar" "Capturar tela" diff --git a/quickstep/res/values-ro/strings.xml b/quickstep/res/values-ro/strings.xml index 58c208294b..e13ed187f1 100644 --- a/quickstep/res/values-ro/strings.xml +++ b/quickstep/res/values-ro/strings.xml @@ -32,17 +32,19 @@ "Sugestii de aplicații" "Toate aplicațiile" "Aplicațiile estimate" - "Accesați cu ușurință cele mai folosite aplicații" - "Pixel estimează aplicațiile de care veți avea nevoie în continuare, direct pe ecranul de pornire. Atingeți ca să configurați." "Primiți sugestii de aplicații în rândul de jos al ecranului de pornire" + "Primiți sugestii de aplicații în rândul de preferințe al ecranului de pornire" "Accesați cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta în sus pe ecranul de pornire." + "Accesați cu ușurință cele mai folosite aplicații direct din ecranul de pornire. Sugestiile se vor schimba în funcție de rutina dvs. Aplicațiile din rândul de preferințe se vor muta în ecranul de pornire." "Accesați cu ușurință cele mai folosite aplicații, direct din ecranul de pornire. Sugestiile se vor modifica în funcție de rutine. Aplicațiile din rândul de jos se vor muta într-un dosar nou." "Primiți sugestii de aplicații" "Nu, mulțumesc" - "Setări" + "Setări" "Cele mai folosite aplicații apar aici și se modifică în funcție de rutine" "Trageți aplicații din rândul de jos pentru a primi sugestii de aplicații" "Sugestiile de aplicații sunt adăugate în spațiile goale" + "Sugestiile de aplicații au fost activate" + "Sugestiile de aplicații au fost dezactivate" "Aplicația estimată: %1$s" "Distribuiți" "Captură de ecran" diff --git a/quickstep/res/values-ru/strings.xml b/quickstep/res/values-ru/strings.xml index 35ce0faaaa..736bb14f4c 100644 --- a/quickstep/res/values-ru/strings.xml +++ b/quickstep/res/values-ru/strings.xml @@ -20,7 +20,7 @@ "Разделить экран" - "Блокировать" + "Закрепить" "Произвольная форма" "Здесь пока ничего нет." "Настройки использования приложения" @@ -32,17 +32,19 @@ "Рекомендуемые приложения" "Все приложения" "Ваши рекомендуемые приложения" - "Быстрый доступ к часто используемым приложениям" - "Устройство Pixel прогнозирует, какие приложения вы будете использовать в ближайшее время, и показывает их на главном экране. Нажмите, чтобы настроить." - "Рекомендуемые приложения будут появляться в нижнем ряду на главном экране." + "Рекомендуемые приложения будут появляться в нижнем ряду на главном экране" + "Рекомендуемые приложения будут появляться в разделе избранных на главном экране" "Быстрый доступ к часто используемым приложениям на главном экране. Список меняется с учетом ваших привычек. Приложения из нижнего ряда будут перемещены вверх на главный экран." + "Включите функцию для быстрого доступа к часто используемым приложениям на главном экране. Список меняется с учетом ваших действий. Приложения из раздела избранных будут перемещены на главный экран." "Быстрый доступ к часто используемым приложениям на главном экране. Список меняется с учетом ваших привычек. Приложения из нижнего ряда будут перемещены в новую папку." - "Показывать рекомендуемые приложения" + "Показывать рекомендации" "Отмена" - "Настройки" + "Настройки" "Здесь появляются часто используемые приложения. Список меняется с учетом ваших привычек." - "Перетащите приложения из нижнего ряда, чтобы получать рекомендации" - "Рекомендуемые приложения будут появляться на свободных местах" + "Перетащите приложения из нижнего ряда, чтобы получить рекомендации" + "Рекомендуемые приложения будут появляться на свободных местах." + "Функция \"Рекомендуемые приложения\" включена." + "Функция \"Рекомендуемые приложения\" отключена." "Рекомендуемое приложение: %1$s" "Поделиться" "Скриншот" diff --git a/quickstep/res/values-si/strings.xml b/quickstep/res/values-si/strings.xml index f6d1dea397..7deb5f6814 100644 --- a/quickstep/res/values-si/strings.xml +++ b/quickstep/res/values-si/strings.xml @@ -32,17 +32,19 @@ "යෙදුම් යෝජනා" "සියලු යෙදුම්" "ඔබේ පුරෝකථන කළ යෙදුම්" - "ඔබගේ වැඩිපුරම භාවිත කළ යෙදුම්වලට පහසුවෙන් ප්‍රවේශ වන්න" - "ඔබගේ මුල් තිරයේ සිටම ඔබට ඊළඟට අවශ්‍ය යෙදුම් Pixel පුරෝකථනය කරයි. පිහිටුවීමට තට්ටු කරන්න." "ඔබගේ මුල් තිරයේ පහළ පේළියේ යෙදුම් යෝජනා ලබා ගන්න" + "ඔබේ මුල් තිරයේ ප්‍රියතම පේළියේ යෙදුම් යෝජනා ලබා ගන්න" "ඔබගේ වැඩිපුරම භාවිත කරන යෙදුම්වලට මුල් තිරයේ සිටම පහසුවෙන් ප්‍රවේශ වන්න. ඔබගේ දිනචරියා මත පදනම්ව යෝජනා වෙනස් වනු ඇත. පහළ පේළියේ යෙදුම් ඔබගේ මුල් තිරය දක්වා ගෙන යනු ඇත." + "ඔබගේ වැඩිපුරම භාවිත කරන යෙදුම්වලට මුල් තිරයේ සිටම පහසුවෙන් ප්‍රවේශ වන්න. ඔබගේ දිනචරියා මත පදනම්ව යෝජනා වෙනස් වනු ඇත. ප්‍රියතම තුළ යෙදුම් ඔබේ මුල් තිරය වෙත ගෙන යනු ඇත." "ඔබගේ වැඩිපුරම භාවිත කරන යෙදුම්වලට මුල් තිරයේ සිටම පහසුවෙන් ප්‍රවේශ වන්න. ඔබගේ දිනචරියා මත පදනම්ව යෝජනා වෙනස් වනු ඇත. පහළ පේළියේ යෙදුම් නව ෆෝල්ඩරයකට ගෙන යනු ඇත." "යෙදුම් යෝජනා ලබා ගන්න" "එපා ස්තුතියි" - "සැකසීම්" + "සැකසීම්" "වැඩිපුරම භාවිත කළ යෙදුම් මෙහි දිස්වන අතර දිනචරියා මත පදනම්ව වෙනස් වේ" "යෙදුම් යෝජනා ලබා ගැනීමට පහළ පේළියෙන් ඉවතට යෙදුම් ඇදගෙන යන්න" "යෙදුම් යෝජනා හිස් අවකාශයට එක් කර ඇත" + "යෙදුම් යෝජනා සබලිතයි" + "යෙදුම් යෝජනා අබල කර ඇත" "පුරෝකථනය කළ යෙදුම: %1$s" "බෙදා ගන්න" "තිර රුව" diff --git a/quickstep/res/values-sk/strings.xml b/quickstep/res/values-sk/strings.xml index 73b99f44e3..9c8f95f087 100644 --- a/quickstep/res/values-sk/strings.xml +++ b/quickstep/res/values-sk/strings.xml @@ -33,16 +33,18 @@ "Všetky aplikácie" "Vaše predpovedané aplikácie" "Nechajte si v spodnom riadku na ploche zobrazovať návrhy aplikácií" + "Nechajte si na ploche na riadku obľúbených zobrazovať návrhy aplikácií" "Získajte jednoduchý prístup k najpoužívanejším aplikáciám priamo na ploche. Návrhy sa budú meniť podľa vašich zvyklostí. Aplikácie v spodnom riadku sa presunú nahor na plochu." + "Získajte jednoduchý prístup k najpoužívanejším aplikáciám priamo na ploche. Návrhy sa budú meniť podľa vašich postupov. Aplikácie v riadku s obľúbenými sa presunú na plochu." "Získajte jednoduchý prístup k najpoužívanejším aplikáciám priamo na ploche. Návrhy sa budú meniť podľa vašich zvyklostí. Aplikácie v spodnom riadku sa presunú do nového priečinka." "Zobrazovať návrhy aplikácií" "Nie, ďakujem" - "Nastavenia" + "Nastavenia" "Tu sú zobrazené najpoužívanejšie aplikácie a menia sa podľa postupov" "Ak chcete získať návrhy aplikácií, presuňte aplikácie zo spodného riadka" - "Návrhy aplikácie boli pridané na prázdne miesto" - - + "Na prázdne miesto pridané návrhy aplikácií" + "Návrhy aplikácií zapnuté" + "Návrhy aplikácií vypnuté" "Predpovedaná aplikácia: %1$s" "Zdieľať" "Snímka obrazovky" diff --git a/quickstep/res/values-sl/strings.xml b/quickstep/res/values-sl/strings.xml index cf9fa5e12e..5d45f6d84d 100644 --- a/quickstep/res/values-sl/strings.xml +++ b/quickstep/res/values-sl/strings.xml @@ -33,16 +33,18 @@ "Vse aplikacije" "Predvidene aplikacije" "Oglejte si predlagane aplikacije v spodnji vrstici začetnega zaslona" + "Prejemajte predloge aplikacij v vrstici s priljubljenimi na začetnem zaslonu" "Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije se iz spodnje vrstice premaknejo na začetni zaslon." + "Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije v vrstici s priljubljenimi bodo premaknjene na začetni zaslon." "Preprosto dostopajte do najpogosteje uporabljenih aplikacij kar na začetnem zaslonu. Predlogi se spreminjajo na podlagi dejanj, ki jih pogosto izvajate. Aplikacije se iz spodnje vrstice premaknejo v novo mapo." "Prikaži predlagane aplikacije" "Ne, hvala" - "Nastavitve" + "Nastavitve" "Tukaj so navedene najpogosteje uporabljene aplikacije in spremembe na podlagi rutin" "Če si želite ogledati predlagane aplikacije, povlecite aplikacije iz spodnje vrstice" "Predlagane aplikacije so bile dodane v prazni prostor" - - + "Predlogi aplikacij so omogočeni" + "Predlogi aplikacij so onemogočeni" "Predvidena aplikacija: %1$s" "Deli" "Posnetek zaslona" diff --git a/quickstep/res/values-sr/strings.xml b/quickstep/res/values-sr/strings.xml index b0319839f0..ae29bf5e94 100644 --- a/quickstep/res/values-sr/strings.xml +++ b/quickstep/res/values-sr/strings.xml @@ -32,17 +32,19 @@ "Предлози апликација" "Све апликације" "Предвиђене апликације" - "Лако приступајте апликацијама које најчешће користите" - "Pixel предвиђа које ће вам апликације следеће требати и ставља их на почетни екран. Додирните да бисте подесили." "Добијајте предлоге апликација у доњем реду почетног екрана" + "Добијајте предлоге апликација у реду са омиљеним ставкама на почетном екрану" "Лако приступајте апликацијама које најчешће користите директно са почетног екрана. Предлози се мењају на основу употребе. Апликације из доњег реда се премештају нагоре на почетни екран." + "Лако приступајте апликацијама које најчешће користите директно са почетног екрана. Предлози се мењају на основу ваших рутина. Апликације из реда са омиљеним ставкама се премештају на почетни екран." "Лако приступајте апликацијама које најчешће користите директно са почетног екрана. Предлози се мењају на основу употребе. Апликације из доњег реда се премештају у нов директоријум." "Приказуј предлоге апликација" "Не, хвала" - "Подешавања" + "Подешавања" "Овде се приказују најчешће коришћене апликације и мењају се у зависности од употребе" "Превуците апликације из доњег реда да бисте добили предлоге" "Предлози апликација се додају на празно место" + "Предлози апликација су омогућени" + "Предлози апликација су онемогућени" "Предвиђамо апликацију: %1$s" "Дели" "Снимак екрана" diff --git a/quickstep/res/values-sv/strings.xml b/quickstep/res/values-sv/strings.xml index e1b9650903..42d7327d1b 100644 --- a/quickstep/res/values-sv/strings.xml +++ b/quickstep/res/values-sv/strings.xml @@ -32,17 +32,19 @@ "Appförslag" "Alla appar" "Föreslagna appar" - "Kom enkelt åt de appar du använder mest" - "Pixel förutser vilka appar du kan behöva härnäst, direkt på startskärmen. Tryck om du vill konfigurera." "Få appförslag på den nedersta raden på startskärmen" + "Få appförslag på raden Favoriter på startskärmen" "Kom enkelt åt de appar du använder mest direkt från startskärmen. Förslagen ändras efter dina rutiner. Appar på nedersta raden flyttas upp till startskärmen." + "Kom enkelt åt de appar du använder mest direkt från startskärmen. Förslagen ändras efter dina rutiner. Appar på raden Favoriter flyttas till startskärmen." "Kom enkelt åt de appar du använder mest direkt från startskärmen. Förslagen ändras efter dina rutiner. Appar på nedersta raden flyttas till en ny mapp." "Få appförslag" "Nej tack" - "Inställningar" + "Inställningar" "De appar som används mest visas här och ändras efter dina rutiner" "Dra appar till den nedersta raden om du vill få appförslag" "Appförslag har lagts till på tom yta" + "Appförslag har aktiverats" + "Appförslag har inaktiverats" "Appförslag: %1$s" "Dela" "Skärmdump" diff --git a/quickstep/res/values-sw/strings.xml b/quickstep/res/values-sw/strings.xml index 1986370902..3e949e8ee6 100644 --- a/quickstep/res/values-sw/strings.xml +++ b/quickstep/res/values-sw/strings.xml @@ -32,17 +32,19 @@ "Mapendekezo ya programu" "Programu zote" "Programu zako zinazopendekezwa" - "Pata mapendekezo ya programu kwenye safu mlalo ya chini ya Skrini yako ya kwanza" - "Fikia kwa urahisi programu unazotumia sana moja kwa moja kwenye Skrini ya kwanza. Mapendekezo yatabadilika kulingana na ratiba zako. Programu zilizo kwenye safu mlalo ya chini zitahamishiwa kwenye Skrini yako ya kwanza." + "Pata mapendekezo ya programu kwenye sehemu ya chini ya Skrini yako ya kwanza" + "Pata mapendekezo ya programu katika safu ya vipendwa ya Skrini yako ya kwanza" + "Fikia kwa urahisi programu unazotumia sana moja kwa moja kwenye Skrini ya kwanza. Mapendekezo yatabadilika kulingana na ratiba zako. Programu zilizo kwenye sehemu ya chini zitahamishiwa kwenye Skrini yako ya kwanza." + "Fikia kwa urahisi programu unazotumia sana moja kwa moja kwenye Skrini ya kwanza. Mapendekezo yatabadilika kulingana na utumiaji wako. Programu zilizo katika safu ya vipendwa zitahamishiwa kwenye Skrini yako ya kwanza." "Fikia kwa urahisi programu unazotumia zaidi, moja kwa moja kwenye Skrini ya kwanza. Mapendekezo yatabadilika kulingana na ratiba zako. Programu zilizo kwenye safu mlalo ya chini zitahamishiwa kwenye folda mpya." "Pata mapendekezo ya programu" - "Hapana, asante" - "Mipangilio" + "Hapana" + "Mipangilio" "Programu zinazotumiwa zaidi huonekana hapa na hubadilika kulingana na ratiba" - "Buruta programu kutoka kwenye safu mlalo ya chini ili upate mapendekezo ya programu" + "Buruta programu kutoka kwenye safu ya chini ili upate mapendekezo ya programu" "Mapendekezo ya programu yamewekwa kwenye nafasi isiyo na kitu" - - + "Umewasha mapendekezo ya programu" + "Umezima mapendekezo ya programu" "Programu iliyotabiriwa: %1$s" "Shiriki" "Picha ya skrini" diff --git a/quickstep/res/values-ta/strings.xml b/quickstep/res/values-ta/strings.xml index aa3fbc5856..5c1ef8f051 100644 --- a/quickstep/res/values-ta/strings.xml +++ b/quickstep/res/values-ta/strings.xml @@ -32,17 +32,19 @@ "ஆப்ஸ் பரிந்துரைகள்" "அனைத்து ஆப்ஸும்" "நீங்கள் கணித்த ஆப்ஸ்" - "அதிகமாகப் பயன்படுத்திய ஆப்ஸை எளிதாக அணுகலாம்" - "அடுத்ததாகத் தேவைப்படும் ஆப்ஸ் எது என்பதை Pixel கணித்து உங்கள் முகப்புத் திரையில் அதைக் காட்டும். அமைக்க, தட்டவும்." "முகப்புத் திரையின் கடைசி வரிசையில் ஆப்ஸ் பரிந்துரைகளைப் பெறலாம்" + "உங்கள் முகப்புத் திரையின் \'பிடித்தவை\' வரிசையில் ஆப்ஸ் பரிந்துரைகளைப் பெறலாம்" "அதிகமாகப் பயன்படுத்திய ஆப்ஸை முகப்புத் திரையிலேயே அணுகலாம். உங்கள் வழக்கங்களின் அடிப்படையில் பரிந்துரைகள் மாறும். கடைசி வரிசையிலுள்ள ஆப்ஸ் உங்கள் முகப்புத் திரைக்கு நகர்த்தப்படும்." + "அதிகமாகப் பயன்படுத்திய ஆப்ஸை முகப்புத் திரையிலேயே எளிதாக அணுகலாம். உங்கள் வழக்கங்களின் அடிப்படையில் பரிந்துரைகள் மாறும். பிடித்தவை வரிசையில் உள்ள ஆப்ஸ் உங்கள் முகப்புத் திரைக்கு நகர்த்தப்படும்." "அதிகமாகப் பயன்படுத்திய ஆப்ஸை முகப்புத் திரையிலேயே அணுகலாம். உங்கள் வழக்கங்களின் அடிப்படையில் பரிந்துரைகள் மாறும். கடைசி வரிசையிலுள்ள ஆப்ஸ் புதிய கோப்புறைக்கு நகர்த்தப்படும்." "ஆப்ஸ் பரிந்துரைகளைப் பெறுக" "வேண்டாம்" - "அமைப்புகள்" + "அமைப்புகள்" "அதிகமாகப் பயன்படுத்திய ஆப்ஸ் இங்கே தோன்றும், வழக்கங்களின் அடிப்படையில் அவை மாறும்" "ஆப்ஸ் பரிந்துரைகளைப் பெற கடைசி வரிசையிலிருந்து ஆப்ஸை இழுக்கவும்" "ஆப்ஸ் பரிந்துரைகள் காலி இடத்தில் சேர்க்கப்பட்டன" + "ஆப்ஸ் பரிந்துரைகள் இயக்கப்பட்டுள்ளன" + "ஆப்ஸ் பரிந்துரைகள் முடக்கப்பட்டுள்ளன" "கணித்த ஆப்ஸ்: %1$s" "பகிர்" "ஸ்கிரீன்ஷாட்" diff --git a/quickstep/res/values-te/strings.xml b/quickstep/res/values-te/strings.xml index 4af9937bc5..35c455fb2b 100644 --- a/quickstep/res/values-te/strings.xml +++ b/quickstep/res/values-te/strings.xml @@ -32,17 +32,19 @@ "యాప్ సలహాలు" "అన్ని యాప్‌లు" "మీ సూచించబడిన యాప్‌లు" - "మీరు ఎక్కువగా ఉపయోగించే యాప్‌లను సులభంగా యాక్సెస్ చేయండి" - "హోమ్ స్క్రీన్‌లో మీకు తర్వాత అవసరమయ్యే యాప్‌లను Pixel సూచిస్తుంది. సెటప్ చేయడానికి ట్యాప్ చేయండి." "మీ హోమ్ స్క్రీన్‌ దిగువ వరుసలో యాప్ సలహాలను పొందండి" + "మీ హోమ్ స్క్రీన్‌లోని ఇష్టమైన వాటి వరుసలో యాప్ సూచ‌న‌లు పొందండి" "మీరు ఎక్కువగా ఉపయోగించే యాప్‌లను నేరుగా హోమ్ స్క్రీన్‌లోనే సులభంగా యాక్సెస్ చేయండి. మీ రోజువారీ కార్యకలాపాలను బట్టి సూచనలు మారతాయి. దిగువ వరుసలోని యాప్‌లు మీ హోమ్ స్క్రీన్ పైకి చేరుకుంటాయి." + "మీరు ఎక్కువగా ఉపయోగించే యాప్‌లను నేరుగా హోమ్ స్క్రీన్‌లోనే సులభంగా యాక్సెస్ చేయండి. మీ రోజువారీ కార్యకలాపాలను బట్టి సూచనలు మారతాయి. ఇష్టమైన వాటి వరుసలోని యాప్‌లు మీ హోమ్ స్క్రీన్‌కు చేరుకుంటాయి." "మీరు ఎక్కువగా ఉపయోగించే యాప్‌లను నేరుగా హోమ్ స్క్రీన్‌లోనే సులభంగా యాక్సెస్ చేయండి. మీ రోజువారీ కార్యకలాపాలను బట్టి సూచనలు మారతాయి. దిగువ వరుసలోని యాప్‌లు కొత్త ఫోల్డర్‌కు తరలించబడతాయి." - "యాప్ సలహాలను పొందండి" + "యాప్ సూచ‌న‌లను పొందండి" "వద్దు" - "సెట్టింగ్‌లు" + "సెట్టింగ్‌లు" "ఎక్కువగా ఉపయోగించిన యాప్‌లు ఇక్కడ కనిపిస్తాయి, అవి రోజువారీ కార్యకలాపాలను బట్టి మారుతూ ఉంటాయి" "యాప్ సలహాలను పొందడానికి దిగువ వరుస నుండి యాప్‌లను లాగండి" - "యాప్ సలహాలు ఖాళీ స్పేస్‌కు జోడించబడ్డాయి" + "యాప్ సూచ‌న‌లు ఖాళీ స్పేస్‌కు జోడించబడ్డాయి" + "యాప్ సూచ‌న‌లు ఎనేబుల్ చేయబడ్డాయి" + "యాప్ సూచ‌న‌లు డిజేబుల్‌ చేయబడ్డాయి" "సూచించబడిన యాప్: %1$s" "షేర్ చేయండి" "స్క్రీన్‌షాట్" diff --git a/quickstep/res/values-th/strings.xml b/quickstep/res/values-th/strings.xml index 28bea34c80..e81a97615e 100644 --- a/quickstep/res/values-th/strings.xml +++ b/quickstep/res/values-th/strings.xml @@ -33,16 +33,18 @@ "แอปทั้งหมด" "แอปที่คาดการณ์ไว้" "รับคำแนะนำเกี่ยวกับแอปที่แถวล่างของหน้าจอหลัก" + "รับคำแนะนำเกี่ยวกับแอปในแถวรายการโปรดของหน้าจอหลัก" "เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายขึ้นมาอยู่ในหน้าจอหลัก" + "เข้าถึงแอปที่ใช้มากที่สุดได้อย่างง่ายดายในหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามการใช้งานประจำ แอปในแถวรายการโปรดจะย้ายไปอยู่ในหน้าจอหลัก" "เข้าถึงแอปที่คุณใช้มากที่สุดได้อย่างง่ายดายจากหน้าจอหลัก คำแนะนำจะเปลี่ยนไปตามแอปที่ใช้งานเป็นประจำ แอปในแถวล่างจะย้ายไปอยู่ในโฟลเดอร์ใหม่" "รับคำแนะนำเกี่ยวกับแอป" "ไม่เป็นไร" - "การตั้งค่า" + "การตั้งค่า" "แอปที่ใช้มากที่สุดจะปรากฎที่นี่และจะเปลี่ยนไปตามการใช้งานประจำ" "ลากแอปออกจากแถวล่างเพื่อดูคำแนะนำเกี่ยวกับแอป" - "มีการเพิ่มคำแนะนำเกี่ยวกับแอปในพื้นที่ว่าง" - - + "เพิ่มคำแนะนำเกี่ยวกับแอปในพื้นที่ว่างแล้ว" + "เปิดใช้คำแนะนำเกี่ยวกับแอปอยู่" + "ปิดใช้คำแนะนำเกี่ยวกับแอปอยู่" "แอปที่คาดว่าจะใช้: %1$s" "แชร์" "ภาพหน้าจอ" diff --git a/quickstep/res/values-tl/strings.xml b/quickstep/res/values-tl/strings.xml index 89d84225fa..5d00b8b6d9 100644 --- a/quickstep/res/values-tl/strings.xml +++ b/quickstep/res/values-tl/strings.xml @@ -32,17 +32,19 @@ "Mga iminumungkahing app" "Lahat ng app" "Iyong mga nahulaang app" - "Madaling i-access ang mga pinakaginagamit mong app" - "Huhulaan ng Pixel ang mga susunod na app na kakailanganin mo, nang direkta sa iyong Home screen. Mag-tap para i-set up." "Makakuha ng mga iminumungkahing app sa ibabang row ng iyong Home screen" + "Makakuha ng mga iminumungkahing app sa row ng mga paborito ng iyong Home screen" "Madaling ma-access ang mga pinakaginagamit mong app nang direkta sa Home screen. Magbabago ang mga suhestyon batay sa iyong mga routine. Mapupunta sa iyong Home screen ang mga app na nasa ibabang row." + "Madaling ma-access ang mga pinakaginagamit mong app nang direkta sa Home screen. Magbabago ang mga suhestyon batay sa iyong mga routine. Mapupunta sa iyong Home screen ang mga app sa row ng mga paborito." "Madaling ma-access ang mga pinakaginagamit mong app, direkta sa Home screen. Magbabago ang mga suhestyon batay sa iyong mga routine. Mapupunta sa isang bagong folder ang mga app na nasa ibabang row." "Kumuha ng mga suhestiyon sa app" "Huwag na lang" - "Mga Setting" + "Mga Setting" "Ipinapakita ang mga pinakaginagamit na app dito, at nababago ito batay sa mga routine" "I-drag ang mga app mula sa ibabang row para makakuha ng mga iminumungkahing app" "Idinagdag sa bakanteng espasyo ang mga iminumungkahing app" + "Naka-enable ang mga iminumungkahing app" + "Naka-disable ang mga iminumungkahing app" "Hinulaang app: %1$s" "Ibahagi" "Screenshot" diff --git a/quickstep/res/values-tr/strings.xml b/quickstep/res/values-tr/strings.xml index 35ffbfefc5..2f9ef313c2 100644 --- a/quickstep/res/values-tr/strings.xml +++ b/quickstep/res/values-tr/strings.xml @@ -32,17 +32,19 @@ "Önerilen uygulamalar" "Tüm uygulamalar" "Tahmin edilen uygulamalarınız" - "En çok kullanılan uygulamalarınıza kolayca erişin" - "Pixel, bir sonraki adımda ihtiyaç duyacağınız uygulamaları Ana ekranınızda tahmin eder. Ayarlamak için dokunun." - "Önerilen uygulamaları Ana ekranınızın alt satırında alın" - "En çok kullanılan uygulamalarınıza Ana ekranda kolayca erişin. Öneriler rutinlerinize dayalı olarak değişir. Alt satırdaki uygulamalar, yukarı taşınarak Ana ekranınıza alınır." - "En çok kullanılan uygulamalarınıza Ana ekranda kolayca erişin. Öneriler rutinlerinize dayalı olarak değişir. Alt satırdaki uygulamalar yeni bir klasöre taşınır." - "Önerilen uygulamaları al" + "Ana ekranınızın alt satırında uygulama önerileri alın" + "Ana ekranınızın favoriler satırında uygulama önerileri alın" + "En çok kullanılan uygulamalarınıza Ana ekranda kolayca erişin. Öneriler, rutinlerinize dayalı olarak değişir. Alt satırdaki uygulamalar, yukarı taşınarak Ana ekranınıza alınır." + "En çok kullanılan uygulamalarınıza Ana ekrandan kolayca erişin. Öneriler rutinlerinize dayalı olarak değişir. Favoriler satırındaki uygulamalar Ana ekranınıza taşınır." + "En çok kullanılan uygulamalarınıza Ana ekranda kolayca erişin. Öneriler, rutinlerinize dayalı olarak değişir. Alt satırdaki uygulamalar yeni bir klasöre taşınır." + "Uygulama önerileri al" "Hayır, teşekkürler" - "Ayarlar" + "Ayarlar" "En çok kullanılan uygulamalar burada görünür ve rutinlere dayalı olarak değişir" "Önerilen uygulamaları almak için alt satırdaki uygulamaları dışarı sürükleyin" "Önerilen uygulamalar boş alana eklendi" + "Uygulama önerileri etkinleştirildi" + "Uygulama önerileri devre dışı bırakıldı" "Tahmin edilen uygulama: %1$s" "Paylaş" "Ekran görüntüsü" diff --git a/quickstep/res/values-uk/strings.xml b/quickstep/res/values-uk/strings.xml index 43b97f7b81..7f12d8d7c9 100644 --- a/quickstep/res/values-uk/strings.xml +++ b/quickstep/res/values-uk/strings.xml @@ -32,17 +32,19 @@ "Рекомендовані додатки" "Усі додатки" "Передбачені додатки" - "Легко відкривайте найвикористовуваніші додатки" - "Пристрій Pixel передбачає ваші дії, показуючи рекомендовані додатки просто на головному екрані. Натисніть, щоб налаштувати." "Рекомендовані додатки з\'являтимуться в нижньому рядку головного екрана" - "З легкістю відкривайте найвикористовуваніші додатки просто з головного екрана. Рекомендації змінюватимуться залежно від ваших дій. Додатки в нижньому рядку буде переміщено на головний екран." + "Рекомендовані додатки з\'являтимуться в рядку \"Вибране\" на головному екрані" + "З легкістю відкривайте на головному екрані ті додатки, які використовуєте найчастіше. Рекомендації змінюватимуться залежно від ваших дій. Додатки в нижньому рядку перемістяться на головний екран." + "З легкістю відкривайте найпотрібніші додатки просто з головного екрана. Рекомендації змінюватимуться залежно від ваших дій. Додатки з рядка \"Вибране\" буде переміщено на головний екран." "З легкістю відкривайте найвикористовуваніші додатки просто з головного екрана. Рекомендації змінюватимуться залежно від ваших дій. Додатки в нижньому рядку буде переміщено в нову папку." - "Показувати рекомендовані додатки" - "Ні" - "Налаштування" + "Показувати рекомендації" + "Не потрібно" + "Налаштування" "Тут з\'являються найвикористовуваніші додатки, список яких змінюється залежно від ваших дій" "Щоб побачити рекомендовані додатки, перетягніть наявні з нижнього рядка" "Рекомендовані додатки додано у вільну область" + "Рекомендовані додатки ввімкнено" + "Рекомендовані додатки вимкнено" "Передбачений додаток: %1$s" "Поділитися" "Знімок екрана" diff --git a/quickstep/res/values-ur/strings.xml b/quickstep/res/values-ur/strings.xml index 0e3da7f219..09cd4ae5e2 100644 --- a/quickstep/res/values-ur/strings.xml +++ b/quickstep/res/values-ur/strings.xml @@ -33,16 +33,18 @@ "تمام ایپس" "آپ کی پیشن گوئی کردہ ایپس" "اپنی ہوم اسکرین کی نچلی قطار پر ایپ کی تجاویز حاصل کریں" + "اپنی ہوم اسکرین کی پسندیدہ قطار پر ایپ کی تجاویز حاصل کریں" "ہوم اسکرین پر آسانی سے اپنی سب سے زیادہ مستعمل ایپس تک رسائی حاصل کریں۔ آپ کی روٹینز کی بنیاد پر تجاویز تبدیل ہوں گی۔ نچلی قطار میں موجود ایپس آپ کی ہوم اسکرین کے اوپر منتقل ہوں گی۔" + "ہوم اسکرین پر آسانی سے اپنی سب سے زیادہ مستعمل ایپس تک رسائی حاصل کریں۔ آپ کی روٹینز کی بنیاد پر تجاویز تبدیل ہوں گی۔ پسندیدہ میں موجود ایپس آپ کی ہوم اسکرین کے اوپر منتقل ہوں گی۔" "ہوم اسکرین پر، آسانی سے اپنی سب سے زیادہ مستعمل ایپس تک رسائی حاصل کریں۔ آپ کی روٹینز کی بنیاد پر تجاویز تبدیل ہوں گی۔ نچلی قطار میں موجود ایپس نئے فولڈر میں منتقل ہوں گی۔" "ایپس کی تجاویز حاصل کریں" "نہیں شکریہ" - "ترتیبات" + "ترتیبات" "سب سے زیادہ مستعمل ایپس یہاں ظاہر ہوتی ہیں، اور روٹینز کی بنیاد پر تبدیل ہوتی ہیں" "ایپس کی تجاویز حاصل کرنے کیلئے ایپس کو نچلی قطار سے نیچے گھسیٹیں" "ایپس کی تجاویز کو خالی اسپیس میں شامل کر دیا گیا" - - + "ایپ کی تجاویز فعال ہیں" + "ایپ کی تجاویز غیر فعال ہیں" "پیشن گوئی کردہ ایپ: %1$s" "اشتراک کریں" "اسکرین شاٹ" diff --git a/quickstep/res/values-uz/strings.xml b/quickstep/res/values-uz/strings.xml index b653399056..d6c0e7994a 100644 --- a/quickstep/res/values-uz/strings.xml +++ b/quickstep/res/values-uz/strings.xml @@ -32,17 +32,19 @@ "Tavsiya etiladigan ilovalar" "Barcha ilovalar" "Taklif qilingan ilovalaringiz" - "Faol ishlatiladigan ilovalarga osongina kiring" - "Pixel yaqinda qaysi ilovalardan foydalanishingiz mumkinligini bosh ekranda aytadi. Sozlash uchun bosing." "Ilova takliflari bosh ekran pastidagi qatorda chiqadi" + "Saralanganlar qatorida Bosh ekrandagi ilovalar taklif qilinsin" "Faol ishlatiladigan ilovalarga bosh ekrandan osongina kira olasiz. Tavsiyalar oxirgi faoliyatingiz asosida almashib boradi. Pastki qatordagi ilovalar bosh ekranga chiqadi." + "Faol ishlatiladigan ilovalarga bosh ekrandan osongina kira olasiz. Tavsiyalar oxirgi faoliyatingiz asosida almashib boradi. Saralanganlar qatoridagi ilovalar bosh ekranga chiqadi." "Faol ishlatiladigan ilovalarga bosh ekrandan osongina kira olasiz. Tavsiyalar oxirgi faoliyatingiz asosida almashib boradi. Pastki qatordagi ilovalar yangi jildga chiqadi." "Ilova takliflarini olish" "Kerak emas" - "Sozlamalar" + "Sozlamalar" "Faol ishlatiladigan ilovalar bu yerda chiqadi va oxirgi faoliyatingiz asosida almashadi" "Takliflar olish uchun ilovalarni pastki qatordan tashqariga oling" "Tavsiya etilgan ilovalarni ochiq joylarga kiriting" + "Endi ilova takliflari chiqadi" + "Endi ilova takliflari chiqmaydi" "Taklif etilgan ilova: %1$s" "Ulashish" "Skrinshot" diff --git a/quickstep/res/values-zh-rCN/strings.xml b/quickstep/res/values-zh-rCN/strings.xml index 56f2f9ee55..1a06aad744 100644 --- a/quickstep/res/values-zh-rCN/strings.xml +++ b/quickstep/res/values-zh-rCN/strings.xml @@ -32,17 +32,19 @@ "应用建议" "所有应用" "您的预测应用" - "轻松访问您最常用的应用" - "Pixel 会预测您接下来要使用的应用,并直接在主屏幕上显示这些应用。点按即可设置。" "在主屏幕的最下面一排获取应用建议" + "在主屏幕的收藏行获取应用建议" "直接在主屏幕上轻松访问您最常用的应用。系统会根据您的日常安排提供不同的建议。最下面一排中的应用会向上移动到主屏幕中。" + "直接在主屏幕上轻松访问您最常用的应用。建议会因您的日常安排而变化,收藏行中的应用将移到主屏幕上。" "直接在主屏幕上轻松访问您最常用的应用。系统会根据您的日常安排提供不同的建议。最下面一排中的应用会移到新文件夹中。" "获取应用建议" "不用了" - "设置" + "设置" "最常用的应用会显示在此处,显示的项目会根据日常安排而发生变化" "将应用从最下面一排拖至别处,以获取应用建议" "应用建议已添加到空白区域" + "已启用应用建议" + "已停用应用建议" "预测的应用:%1$s" "分享" "屏幕截图" diff --git a/quickstep/res/values-zh-rHK/strings.xml b/quickstep/res/values-zh-rHK/strings.xml index ce0f6e20d2..dc9caadd90 100644 --- a/quickstep/res/values-zh-rHK/strings.xml +++ b/quickstep/res/values-zh-rHK/strings.xml @@ -32,17 +32,19 @@ "應用程式建議" "所有應用程式" "您的預測應用程式" - "輕鬆存取最常用的應用程式" - "Pixel 會在主畫面預測您將會使用的應用程式。輕按即可設定。" - "在主畫面的底部應用程式列獲取應用程式建議" - "在主畫面輕鬆存取最常用的應用程式。系統會根據您的日常安排變更建議,並會將底部應用程式列的應用程式上移至主畫面。" + "在主畫面底部取得應用程式建議" + "在主畫面「我的最愛」列取得應用程式建議" + "在主畫面輕鬆存取常用的應用程式。系統會根據您的日常安排更改建議,並將底部的應用程式移到主畫面。" + "在主畫面輕鬆存取最常用的應用程式。系統會根據您的日常安排變更建議,「我的最愛」列中的應用程式會移至主畫面。" "在主畫面輕鬆存取最常用的應用程式。系統會根據您的日常安排變更建議,並將底部應用程式列的應用程式移至新資料夾。" - "獲取應用程式建議" + "取得應用程式建議" "不用了,謝謝" - "設定" + "設定" "最常用的應用程式會在這裡顯示,並會根據日常安排變更" "將應用程式從底部應用程式列拖曳出來,即可獲取應用程式建議" "系統會將應用程式建議新增至空白位置" + "已啟用應用程式建議" + "已停用應用程式建議" "預測應用程式:%1$s" "分享" "螢幕截圖" diff --git a/quickstep/res/values-zh-rTW/strings.xml b/quickstep/res/values-zh-rTW/strings.xml index c93d913b4c..d62629090e 100644 --- a/quickstep/res/values-zh-rTW/strings.xml +++ b/quickstep/res/values-zh-rTW/strings.xml @@ -32,17 +32,19 @@ "應用程式建議" "所有應用程式" "系統預測你會使用的應用程式" - "輕鬆存取最常使用的應用程式" - "Pixel 會預測你接下來要使用的應用程式,並將預測結果顯示在主畫面上。輕觸即可進行設定。" "在主畫面的底部取得應用程式建議" - "在主畫面上輕鬆存取最常使用的應用程式。應用程式建議會根據日常安排有所不同。系統會將底部列出的應用程式上移到主畫面。" + "在主畫面的收藏列取得應用程式建議" + "在主畫面上輕鬆存取最常使用的應用程式。應用程式建議會依據你的日常使用習慣而有所不同。系統會將底部列出的應用程式上移到主畫面。" + "在主畫面上輕鬆存取最常使用的應用程式。系統會根據你的日常使用習慣提供不同的應用程式建議,並在主畫面顯示收藏列中的應用程式。" "在主畫面上輕鬆存取最常使用的應用程式。應用程式建議會根據日常安排有所不同。系統會將底部列出的應用程式移到新的資料夾。" "取得應用程式建議" "不用了,謝謝" - "設定" + "設定" "最常使用的應用程式會顯示在這裡,顯示的項目會根據日常安排有所不同" - "將應用程式往底部列拖曳即可取得應用程式建議" + "將應用程式從底部列向外拖曳即可取得應用程式建議" "應用程式建議已新增到空白位置" + "應用程式建議功能已啟用" + "應用程式建議功能已停用" "預測的應用程式:%1$s" "分享" "擷取螢幕畫面" diff --git a/quickstep/res/values-zu/strings.xml b/quickstep/res/values-zu/strings.xml index 637d02c85f..43ed289cf0 100644 --- a/quickstep/res/values-zu/strings.xml +++ b/quickstep/res/values-zu/strings.xml @@ -32,17 +32,19 @@ "Iziphakamiso zohlelo lokusebenza" "Zonke izinhlelo zokusebenza" "Izinhlelo zakho zokusebenza eziqagelwe" - "Finyelela ngokushesha kuzinhlelo zakho zokusebenza ezisetshenziswa njalo" - "I-Pixel ibikezela izinhlelo zokusebenza ozozidinga ngokulandelayo, khona kusikrini sakho sasekhaya. Thepha ukuze usethe." "Thola iziphakamiso ze-app emgqeni ongezansi wesikrini sakho sasekhaya" + "Thola iziphakamiso zohlelo lokusebenza kumugqa wezintandokazi Zesikrini sakho sasekhaya" "Finyelela kalula izinhlelo zakho zokusebenza ezisetshenziswa kakhulu khona kusikrini sasekhaya. Iziphakamiso zizoshintsha ngokususelwe kwimijikelezo yakho. Izinhlelo zokusebenza ezisemgqeni ongezansi zizoya phezulu kusikrini sakho sasekhaya." + "Finyelela kalula izinhlelo zakho zokusebenza ezisetshenziswa kakhulu khona kusikrini sasekhaya. Iziphakamiso zizoshintsha ngokususelwe kwimijikelezo yakho. Izintandokazi zomugqa wezinhlelo zokusebenza zizoya Kusikrini sakho sasekhaya." "Finyelela kalula izinhlelo zakho zokusebenza ezisetshenziswa njalo, kusikrini sasekhaya. Iziphakamiso zizoshintsha ngokususelwe kwimijikelezo yakho. Izinhlelo zokusebenza ezisemgqeni ongezansi zizoya phezulu kufolda entsha." "Thola iziphakamiso zohlelo lokusebenza" "Cha ngiyabonga" - "Izilungiselelo" + "Amasethingi" "Izinhlelo zokusebenza ezisetshenziswa kakhulu zivela lapha, kanye noshintsho olususelwe kwimijikelezo" "Hudula izinhlelo zokusebenza kusuka emgqeni ongezansi ukuthola iziphakamiso zohlelo lokusebenza" "Iziphakamiso zohlelo lokusebenza ezengezwe esikhaleni esingenalutho" + "Iziphakamiso zohlelo lokusebenza zinikwe amandla" + "Iziphakamiso zohlelo lokusebenza zikhutshaziwe" "Uhlelo lokusebenza olubikezelwe: %1$s" "Yabelana" "Isithombe-skrini" From 41046b77d5e335798c9c1220f5a74796bc9aada8 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 14:56:11 -0700 Subject: [PATCH 47/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I0ba1d1be7316185dbda521d30cda4997daf831fb --- res/values-be/strings.xml | 2 +- res/values-da/strings.xml | 2 +- res/values-es-rUS/strings.xml | 4 ++-- res/values-eu/strings.xml | 2 +- res/values-fa/strings.xml | 4 ++-- res/values-fi/strings.xml | 4 ++-- res/values-gu/strings.xml | 4 ++-- res/values-it/strings.xml | 2 +- res/values-km/strings.xml | 2 +- res/values-lo/strings.xml | 2 +- res/values-mk/strings.xml | 2 +- res/values-mr/strings.xml | 2 +- res/values-ne/strings.xml | 10 +++++----- res/values-or/strings.xml | 6 +++--- res/values-pa/strings.xml | 4 ++-- res/values-pl/strings.xml | 4 ++-- res/values-ru/strings.xml | 2 +- res/values-sl/strings.xml | 2 +- res/values-sq/strings.xml | 2 +- res/values-sw/strings.xml | 4 +--- res/values-uz/strings.xml | 2 +- res/values-vi/strings.xml | 2 +- res/values-zh-rHK/strings.xml | 4 ++-- 23 files changed, 36 insertions(+), 38 deletions(-) diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 2ccd34fd0c..bba849292f 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -132,7 +132,7 @@ "Адхіліць" "Апавяшчэнне адхілена" "Асабістыя" - "Праца" + "Працоўныя" "Працоўны профіль" "Знайдзіце працоўныя праграмы тут" "Кожная працоўная праграма мае значок і знаходзіцца пад аховай вашай арганізацыі. Для больш простага доступу перамясціце праграмы на Галоўны экран." diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 093fe0082e..970cd4d0a5 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -80,7 +80,7 @@ "Widgets" "Baggrunde" "Layout og baggrunde" - "Startskærmindstillinger" + "Indstillinger for startskærm" "Deaktiveret af din administrator" "Tillad rotation af startskærmen" "Når telefonen roteres" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index 960ef9381c..9834ad220a 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -80,7 +80,7 @@ "Widgets" "Fondos de pantalla" "Estilos y fondos de pantalla" - "Configuración de página principal" + "Configuración de pantalla principal" "El administrador inhabilitó esta función" "Permitir la rotación de la pantalla principal" "Al girar el teléfono" @@ -130,7 +130,7 @@ "Descartar" "Se descartó la notificación" "Personales" - "Laborales" + "De trabajo" "Perfil de trabajo" "Apps de trabajo" "Cada app de trabajo tiene una insignia y está protegida por tu organización. Transfiere las apps a la pantalla principal para acceder a ellas con mayor facilidad." diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 10aebe7ad6..85fa13a482 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -83,7 +83,7 @@ "Hasierako pantailaren ezarpenak" "Administratzaileak desgaitu du" "Eman hasierako pantaila biratzeko baimena" - "Telefonoa biratzen denean" + "Telefonoa biratzean" "Jakinarazpen-biribiltxoak" "Aktibatuta" "Desaktibatuta" diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 913ff48eaf..2b1e8b4764 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -82,7 +82,7 @@ "سبک و کاغذدیواری" "تنظیمات صفحه اصلی" "توسط سرپرست سیستم غیرفعال شده است" - "امکان دادن به چرخش صفحه اصلی" + "قابل‌چرخش بودن صفحه اصلی" "وقتی تلفن چرخانده می‌شود" "نقطه‌های اعلان" "روشن" @@ -130,7 +130,7 @@ "رد کردن" "اعلان رد شد" "شخصی" - "محل کار" + "کاری" "نمایه کاری" "اینجا برنامه‌های کاری را پیدا کنید" "همه برنامه‌های کاری نشانی دارند و توسط سازمانتان ایمن نگه داشته می‌شوند. برنامه‌های کاری را برای دسترسی آسان‌تر به صفحه اصلی انتقال دهید." diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index e0930b62a5..a3d0960735 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -80,13 +80,13 @@ "Widgetit" "Taustakuvat" "Tyylit ja taustakuvat" - "Kotiasetukset" + "Aloitusnäyttö" "Järjestelmänvalvoja on poistanut toiminnon käytöstä." "Salli aloitusnäytön kiertäminen" "Kun puhelinta kierretään" "Pistemerkit" "Käytössä" - "Ei käytössä" + "Ei päällä" "Ilmoituksien käyttöoikeus tarvitaan" "%1$s tarvitsee ilmoitusten käyttöoikeuden, jotta pistemerkkejä voidaan näyttää." "Muuta asetuksia" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 9f86990556..824002b5f8 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -20,7 +20,7 @@ "Launcher3" - "કાર્યાલય" + "ઑફિસ" "ઍપ્લિકેશન ઇન્સ્ટોલ થઈ નથી." "ઍપ્લિકેશન ઉપલબ્ધ નથી" "સુરક્ષિત મોડમાં ડાઉનલોડ કરેલ ઍપ્લિકેશન અક્ષમ કરી" @@ -130,7 +130,7 @@ "છોડી દો" "સૂચના છોડી દીધી" "મનગમતી ઍપ" - "કાર્યાલયની ઍપ" + "ઑફિસની ઍપ" "ઑફિસની પ્રોફાઇલ" "કાર્ય ઍપને અહીંથી મેળવો" "દરેક કાર્ય ઍપ પાસે એક બૅજ હોય છે અને તમારી સંસ્થા દ્વારા તેને સુરક્ષિત રાખવામાં આવે છે. વધુ સરળ ઍક્સેસ માટે ઍપને તમારી હોમ સ્ક્રીન પર ખસેડો." diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 1807817eaf..aaceb531f6 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -86,7 +86,7 @@ "Con il telefono ruotato" "Indicatori di notifica" "On" - "OFF" + "Off" "Accesso alle notifiche necessario" "Per mostrare gli indicatori di notifica, attiva le notifiche per l\'app %1$s" "Modifica impostazioni" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 973804200a..86f6d7878f 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -127,7 +127,7 @@ "ធាតុក្រាហ្វិកដែលបានប្តូរទំហំទៅទទឹងប្រវែង %1$s កម្ពស់ប្រវែង %2$s" "ផ្លូវកាត់" "ផ្លូវកាត់ និង​ការជូនដំណឹង" - "បដិសេធ" + "ច្រានចោល" "បាន​បដិសេធ​ការជូនដំណឹង" "ផ្ទាល់ខ្លួន" "ការងារ" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index e764347037..b223efd665 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -82,7 +82,7 @@ "ຮູບແບບ ແລະ ຮູບພື້ນຫຼັງ" "ການຕັ້ງຄ່າ Home" "ຖືກປິດການນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ" - "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍທຳອິດໄດ້" + "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍຢູ່ໜ້າຫຼັກໄດ້" "ເມື່ອໝຸນໂທລະສັບ" "ຈຸດການແຈ້ງເຕືອນ" "ເປີດ" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 458fb73817..d5cc308f92 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -82,7 +82,7 @@ "Стилови и тапети" "Поставки за почетен екран" "Оневозможено од администраторот" - "Дозволете ротација на почетниот екран" + "Дозволи ротација на почетниот екран" "Кога телефонот се ротира" "Точки за известување" "Вклучено" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 69eb5ee304..1163a8f362 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -88,7 +88,7 @@ "सुरू" "बंद" "सूचनांच्या अ‍ॅक्सेसची आवश्यकता आहे" - "सूचना बिंदू दाखवण्यासाठी, %1$s साठी अ‍ॅप सूचना चालू करा" + "सूचना बिंदू दाखवण्यासाठी, %1$s साठी अ‍ॅप सूचना सुरू करा" "सेटिंग्ज बदला" "सूचना बिंदू दाखवा" "होम स्क्रीनवर आयकन जोडा" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index db2f6dc2de..364d9d34c2 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -44,20 +44,20 @@ "कुनै सर्टकट छनौट गर्न वा रोजेका कारबाहीहरू प्रयोग गर्न डबल ट्याप गरेर छोइराख्नुहोस्।" "यो गृह स्क्रिनमा कुनै थप ठाउँ छैन।" "मन पर्ने ट्रे अब कुनै ठाँउ छैन" - "अनुप्रयोगको सूची" + "एपको सूची" "व्यक्तिगत अनुप्रयोगहरूको सूची" "कार्यसम्बन्धी अनुप्रयोगहरूको सूची" "गृह" "हटाउनुहोस्" "विस्थापित गर्नुहोस्" - "अनुप्रयोगको जानकारी" + "एपको जानकारी" "स्थापना गर्नुहोस्" "सर्टकट स्थापना गर्नेहोस्" - "प्रयोगकर्ताको हस्तक्षेप बिना एउटा अनुप्रयोगलाई सर्टकटमा थप्नको लागि अनुमति दिनुहोस्।" + "प्रयोगकर्ताको हस्तक्षेप बिना एउटा एपलाई सर्टकटमा थप्नको लागि अनुमति दिनुहोस्।" "गृह सेटिङहरू र सर्टकटहरू पढ्नुहोस्" - "गृहमा एउटा अनुप्रयोगलाई सेटिङहरू र सर्टकटहरू पढ्न अनुमति दिनुहोस्।" + "गृहमा एउटा एपलाई सेटिङहरू र सर्टकटहरू पढ्न अनुमति दिनुहोस्।" "गृह सेटिङहरू र सर्टकटहरू लेख्नुहोस्" - "गृहमा एउटा अनुप्रयोगलाई सेटिङ र सर्टकट बदल्न अनुमति दिनुहोस्।" + "गृहमा एउटा एपलाई सेटिङ र सर्टकट बदल्न अनुमति दिनुहोस्।" "%1$s ले फोन कलहरू गर्न अनुमति छैन" "समस्या लोडिङ गर्ने विजेट" "सेटअप" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index ca243d4904..5a2c3a83e5 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -20,7 +20,7 @@ "ଲଞ୍ଚର୍3" - "କାମ" + "ୱାର୍କ" "ଆପ୍‌ ଇନଷ୍ଟଲ୍‌ ହୋଇନାହିଁ" "ଆପ୍‌ ଉପଲବ୍ଧ ନାହିଁ" "ନିରାପଦ ମୋଡରେ ଡାଉନଲୋଡ୍‌ ହେଇଥିବା ଆପ୍‌ ଅକ୍ଷମ କରାଗଲା" @@ -82,7 +82,7 @@ "ଷ୍ଟାଇଲ୍ ଏବଂ ୱାଲ୍‍‍ପେପର୍" "ହୋମ୍‌ ସେଟିଂସ୍" "ଆପଣଙ୍କ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଅକ୍ଷମ କରାଯାଇଛି" - "ହୋମ୍‌ ସ୍କ୍ରୀନ୍ ବୁଲାଇବା ଅନୁମତି ଦିଅନ୍ତୁ" + "ହୋମ୍‌ ସ୍କ୍ରିନ୍ ବୁଲାଇବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ" "ଯେତେବେଳେ ଫୋନକୁ ବୁଲାଯାଇଥାଏ" "ବିଜ୍ଞପ୍ତି ଡଟ୍ସ" "ଚାଲୁ" @@ -130,7 +130,7 @@ "ଖାରଜ କରନ୍ତୁ" "ବିଜ୍ଞପ୍ତି ଖାରଜ କରାଗଲା" "ବ୍ୟକ୍ତିଗତ" - "କାମ" + "ୱାର୍କ" "ୱର୍କ ପ୍ରୋଫାଇଲ୍‌" "ଏଠାରେ କାମ ଆପ୍‌ ଖୋଜନ୍ତୁ" "ପ୍ରତ୍ୟେକ କାଯ୍ୟକାରୀ ଆପ୍‌ର ଗୋଟିଏ ବ୍ୟାଜ୍ (ଚିହ୍ନ) ଅଛି, ଯାହାକୁ ଆପଣଙ୍କ ସଂସ୍ଥା ସୁରକ୍ଷିତ ରଖିଥାଏ। ସହଜରେ ଆକ୍ସେସ୍ କରିବା ପାଇଁ ଆପ୍‌କୁ ହୋମ୍ ସ୍କ୍ରୀନ୍ ଉପରକୁ ଆଣନ୍ତୁ।" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index bda16d7a1d..9b09d5dd56 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -82,8 +82,8 @@ "ਸ਼ੈਲੀਆਂ ਅਤੇ ਵਾਲਪੇਪਰ" "ਹੋਮ ਸੈਟਿੰਗਾਂ" "ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਈ ਗਈ" - "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁੰਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" - "ਜਦੋਂ ਫ਼ੋਨ ਘੁੰਮਾਇਆ ਜਾਂਦਾ ਹੈ" + "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" + "ਜਦੋਂ ਫ਼ੋਨ ਘੁਮਾਇਆ ਜਾਂਦਾ ਹੈ" "ਸੂਚਨਾ ਬਿੰਦੂ" "ਚਾਲੂ" "ਬੰਦ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index d49688fcc9..ca4e4e7687 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -82,7 +82,7 @@ "Widżety" "Tapety" "Style i tapety" - "Ustawienia strony głównej" + "Ustawienia ekranu głównego" "Funkcja wyłączona przez administratora" "Zezwalaj na obrót ekranu głównego" "Po obróceniu telefonu" @@ -132,7 +132,7 @@ "Zamknij" "Powiadomienie odrzucone" "Osobiste" - "Do pracy" + "Służbowe" "Profil do pracy" "Aplikacje do pracy" "Każda aplikacja do pracy ma plakietkę, a o jej bezpieczeństwo dba Twoja organizacja. Aplikacje można przenieść na ekran główny, by były łatwiej dostępne." diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 1cc699f1c3..244b061fc0 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -85,7 +85,7 @@ "Главный экран" "Функция отключена администратором" "Разрешить поворачивать главный экран" - "Когда телефон повернут" + "При повороте телефона" "Значки уведомлений" "Включены" "Отключены" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index b1c9f10500..7eb63afba3 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -132,7 +132,7 @@ "Opusti" "Obvestilo je bilo opuščeno" "Osebno" - "Služba" + "Delo" "Delovni profil" "Tukaj poiščite delovne aplikacije" "Vsaka delovna aplikacija ima značko. Za varnost teh aplikacij skrbi vaša organizacija. Za preprostejši dostop premaknite aplikacije na začetni zaslon." diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml index 7f2567c60c..4379421a92 100644 --- a/res/values-sq/strings.xml +++ b/res/values-sq/strings.xml @@ -80,7 +80,7 @@ "Miniaplikacionet" "Imazhet e sfondit" "Stilet dhe imazhet e sfondit" - "Cilësimet e Home" + "Cilësimet e ekranit bazë" "Çaktivizuar nga administratori" "Lejo rrotullimin e ekranit kryesor" "Kur telefoni rrotullohet" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 445e382f2d..a102890b3d 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -69,9 +69,7 @@ %1$s, ina arifa %2$d "Ukurasa%1$d wa %2$d" - - - + "Skrini ya mwanzo %1$d ya %2$d" "Ukurasa mpya wa skrini ya kwanza" "Folda imefunguliwa, %1$d kwa %2$d" "Gusa ili ufunge folda" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index be6cba7124..884998e51a 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -20,7 +20,7 @@ "Launcher3" - "Ishga oid" + "Ish" "Ilova o‘rnatilmadi." "Ilova mavjud emas" "Yuklab olingan ilova xavfsiz rejimda o‘chirib qo‘yildi" diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml index a0a122a855..e71e22e456 100644 --- a/res/values-vi/strings.xml +++ b/res/values-vi/strings.xml @@ -130,7 +130,7 @@ "Loại bỏ" "Đã loại bỏ thông báo" "Cá nhân" - "Cơ quan" + "Công việc" "Hồ sơ công việc" "Tìm ứng dụng công việc tại đây" "Mỗi ứng dụng công việc đều có một huy hiệu và được tổ chức của bạn bảo mật. Bạn có thể di chuyển ứng dụng đến Màn hình chính để truy cập dễ dàng hơn." diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index ed53c328c4..acb232fbf7 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -92,7 +92,7 @@ "變更設定" "顯示通知圓點" "將圖示加到主畫面" - "適用於新安裝的應用程式" + "新安裝的應用程式" "不明" "移除" "搜尋" @@ -130,7 +130,7 @@ "關閉" "關閉咗通知" "個人" - "商務" + "工作" "工作設定檔" "請在此處尋找工作應用程式" "每個工作應用程式都有一個徽章,並由您的機構負責保持安全。您可以將工作應用程式移至主畫面,以便輕鬆存取。" From 6adc72a4ca6983978a6553f8bee5c0a3a4806b37 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 14:56:48 -0700 Subject: [PATCH 48/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I5b34e26e49c2826502c68a22f79f6e7a1310973c --- 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 | 5 +++-- res/values-ca/strings.xml | 3 ++- res/values-cs/strings.xml | 3 ++- res/values-da/strings.xml | 5 +++-- res/values-de/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 | 7 ++++--- res/values-et/strings.xml | 3 ++- res/values-eu/strings.xml | 5 +++-- res/values-fi/strings.xml | 7 ++++--- res/values-fr-rCA/strings.xml | 5 +++-- res/values-fr/strings.xml | 3 ++- res/values-gl/strings.xml | 5 +++-- res/values-gu/strings.xml | 3 ++- res/values-hi/strings.xml | 3 ++- res/values-hr/strings.xml | 5 +++-- res/values-hu/strings.xml | 3 ++- res/values-hy/strings.xml | 5 +++-- res/values-in/strings.xml | 3 ++- res/values-is/strings.xml | 5 +++-- res/values-it/strings.xml | 3 ++- res/values-iw/strings.xml | 3 ++- res/values-ja/strings.xml | 5 +++-- 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 | 5 +++-- res/values-lt/strings.xml | 3 ++- res/values-lv/strings.xml | 3 ++- res/values-mk/strings.xml | 7 ++++--- res/values-ml/strings.xml | 3 ++- res/values-mn/strings.xml | 3 ++- res/values-mr/strings.xml | 11 ++++++----- res/values-ms/strings.xml | 3 ++- res/values-my/strings.xml | 3 ++- res/values-nb/strings.xml | 3 ++- res/values-ne/strings.xml | 3 ++- res/values-nl/strings.xml | 3 ++- res/values-or/strings.xml | 7 ++++--- res/values-pa/strings.xml | 7 ++++--- res/values-pl/strings.xml | 7 ++++--- res/values-pt-rPT/strings.xml | 3 ++- res/values-pt/strings.xml | 3 ++- res/values-ro/strings.xml | 3 ++- res/values-ru/strings.xml | 7 ++++--- res/values-si/strings.xml | 3 ++- res/values-sk/strings.xml | 3 ++- res/values-sl/strings.xml | 3 ++- res/values-sr/strings.xml | 3 ++- res/values-sv/strings.xml | 3 ++- res/values-sw/strings.xml | 5 +++-- 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-zh-rCN/strings.xml | 3 ++- res/values-zh-rHK/strings.xml | 5 +++-- res/values-zh-rTW/strings.xml | 3 ++- res/values-zu/strings.xml | 3 ++- 79 files changed, 190 insertions(+), 111 deletions(-) diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml index 4d508c6351..f19d121e7f 100644 --- a/res/values-af/strings.xml +++ b/res/values-af/strings.xml @@ -78,7 +78,8 @@ "Tik om nuwe naam te stoor" "Vouer is gesluit" "Vouer hernoem na %1$s" - "Vouer: %1$s" + "Vouer: %1$s, %2$d items" + "Vouer: %1$s, %2$d of meer items" "Legstukke" "Muurpapiere" "Style en muurpapiere" diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml index e68c70a413..90a54c0d64 100644 --- a/res/values-am/strings.xml +++ b/res/values-am/strings.xml @@ -78,7 +78,8 @@ "ዳግም የተሰጠውን ስም ለማስቀመጥ መታ ያድርጉ" "አቃፊ ተዘግቷል" "አቃፊ %1$s ተብሎ ዳግም ተሰይሟል" - "አቃፊ፦ %1$s" + "አቃፊ፦ %1$s%2$d ንጥሎች" + "አቃፊ፦ %1$s%2$d ወይም ተጨማሪ ንጥሎች" "ፍርግሞች" "የግድግዳ ወረቀቶች" "ቅጦች እና ልጣፎች" diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml index fb1246e330..a9e5cb4a73 100644 --- a/res/values-ar/strings.xml +++ b/res/values-ar/strings.xml @@ -82,7 +82,8 @@ "انقر لحفظ الاسم الجديد" "تم إغلاق المجلد" "تمت إعادة تسمية المجلد إلى %1$s" - "المجلد: %1$s" + "المجلد: %1$s، %2$d عنصر" + "المجلد: %1$s، %2$d عنصر أو أكثر" "الأدوات" "الخلفيات" "الأنماط والخلفيات" diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml index 90898b0a70..a6967b758b 100644 --- a/res/values-as/strings.xml +++ b/res/values-as/strings.xml @@ -78,7 +78,8 @@ "সলনি কৰা নাম ছেভ কৰিবলৈ টিপক" "ফ\'ল্ডাৰ বন্ধ কৰা হ’ল" "ফ\'ল্ডাৰৰ নাম সলনি কৰি %1$s কৰা হৈছে" - "ফ’ল্ডাৰ: %1$s" + "ফ’ল্ডাৰ: %1$s, %2$d টা বস্তু" + "ফ’ল্ডাৰ: %1$s, %2$d টা অথবা তাতকৈ অধিক বস্তু" "ৱিজেটসমূহ" "ৱালপেপাৰসমূহ" "ষ্টাইল & ৱালপেপাৰ" diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml index f14255f5b3..72d211c44c 100644 --- a/res/values-az/strings.xml +++ b/res/values-az/strings.xml @@ -78,7 +78,8 @@ "Ad dəyişikliyini yadda saxlamaq üçün toxunun" "Qovluq bağlıdır" "Qovluq adı %1$s ilə dəyişdirildi" - "Qovluq: %1$s" + "Qovluq: %1$s, %2$d element" + "Qovluq: %1$s, %2$d və ya daha çox element" "Vidcet" "Divar kağızları" "Üslub və divar kağızları" diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml index 7509b1f05c..8f6f8c1cb9 100644 --- a/res/values-b+sr+Latn/strings.xml +++ b/res/values-b+sr+Latn/strings.xml @@ -79,7 +79,8 @@ "Dodirnite da biste sačuvali preimenovanje" "Direktorijum je zatvoren" "Direktorijum je preimenovan u %1$s" - "Direktorijum: %1$s" + "Direktorijum: %1$s, %2$d stavke" + "Direktorijum: %1$s, %2$d ili više stavki" "Vidžeti" "Pozadine" "Stilovi i pozadine" diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml index 1937642c7a..14bfd8b551 100644 --- a/res/values-be/strings.xml +++ b/res/values-be/strings.xml @@ -80,7 +80,8 @@ "Краніце, каб захаваць новую назву" "Папка закрыта" "Папка перайменавана ў %1$s" - "Папка: %1$s" + "Папка: %1$s, элементы: %2$d" + "Папка: %1$s, элементы: %2$d ці больш" "Віджэты" "Шпалеры" "Стылі і шпалеры" diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml index 0edd78eacf..0d06ead6b7 100644 --- a/res/values-bg/strings.xml +++ b/res/values-bg/strings.xml @@ -78,7 +78,8 @@ "Докоснете, за да запазите новото име" "Папката бе затворена" "Папката е преименувана на „%1$s“" - "Папка: „%1$s“" + "Папка: „%1$s“ – %2$d елемента" + "Папка: „%1$s“ – %2$d или повече елементи" "Приспособления" "Тапети" "Стилове и тапети" diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml index 00555adbc2..b2d3070fef 100644 --- a/res/values-bn/strings.xml +++ b/res/values-bn/strings.xml @@ -78,7 +78,8 @@ "পুনঃনামকরণ সংরক্ষণ করতে আলতো চাপ দিন" "ফোল্ডার বন্ধ করা হয়েছে" "ফোল্ডারের নাম পাল্টে %1$s করা হয়েছে" - "ফোল্ডার: %1$s" + "ফোল্ডার: %1$s, %2$dটি আইটেম" + "ফোল্ডার: %1$s, %2$dটি বা তার বেশি আইটেম" "উইজেট" "ওয়ালপেপারগুলি" "স্টাইল এবং ওয়ালপেপার" diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml index 4b83e7d832..bf07ed5ea8 100644 --- a/res/values-bs/strings.xml +++ b/res/values-bs/strings.xml @@ -52,7 +52,7 @@ "Deinstaliraj" "Informacije o aplikaciji" "Instaliraj" - "Nemojte preporučiti aplikaciju" + "Ne predlaži aplikaciju" "Predviđanje PIN-a" "instaliraj prečice" "Dopušta aplikaciji dodavanje prečica bez posredovanja korisnika." @@ -79,7 +79,8 @@ "Dodirnite da sačuvate promjenu naziva" "Folder je zatvoren" "Ime foldera je promijenjeno u %1$s" - "Folder: %1$s" + "Folder: %1$s, br. stavki: %2$d" + "Folder: %1$s, %2$d ili više stavki" "Vidžeti" "Pozadinske slike" "Stilovi i pozadinske slike" diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml index fb9a226dc2..efef421ffc 100644 --- a/res/values-ca/strings.xml +++ b/res/values-ca/strings.xml @@ -78,7 +78,8 @@ "Toca per desar el nom nou" "Carpeta tancada" "S\'ha canviat el nom de la carpeta a %1$s" - "Carpeta: %1$s" + "Carpeta: %1$s, %2$d elements" + "Carpeta: %1$s, %2$d o més elements" "Widgets" "Fons de pantalla" "Estils i fons de pantalla" diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml index e90299e622..91caf6ff5e 100644 --- a/res/values-cs/strings.xml +++ b/res/values-cs/strings.xml @@ -80,7 +80,8 @@ "Klepnutím změnu názvu uložíte" "Složka je uzavřena" "Složka přejmenována na %1$s" - "Složka: %1$s" + "Složka: %1$s, počet položek: %2$d" + "Složka: %1$s, počet položek: %2$d nebo více" "Widgety" "Tapety" "Styly a tapety" diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml index 70f9cd6e29..8a8db672e9 100644 --- a/res/values-da/strings.xml +++ b/res/values-da/strings.xml @@ -78,11 +78,12 @@ "Tryk for at gemme omdøbningen" "Mappen er lukket" "Mappen er omdøbt til %1$s" - "Mappe: %1$s" + "Mappe: %1$s, %2$d elementer" + "Mappe: %1$s, %2$d eller flere elementer" "Widgets" "Baggrunde" "Layout og baggrunde" - "Startskærmindstillinger" + "Indstillinger for startskærm" "Deaktiveret af din administrator" "Tillad rotation af startskærmen" "Når telefonen roteres" diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml index f1f5f384d4..520d64a103 100644 --- a/res/values-de/strings.xml +++ b/res/values-de/strings.xml @@ -78,7 +78,8 @@ "Neuen Namen zum Speichern antippen" "Ordner geschlossen" "Ordner umbenannt in %1$s" - "Ordner: %1$s" + "Ordner: %1$s, %2$d Elemente" + "Ordner: %1$s, %2$d oder mehr Elemente" "Widgets" "Hintergründe" "Designs und Hintergründe" diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml index 794ed0451d..3c54e5ad1b 100644 --- a/res/values-en-rAU/strings.xml +++ b/res/values-en-rAU/strings.xml @@ -78,7 +78,8 @@ "Tap to save rename" "Folder closed" "Folder renamed to %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d items" + "Folder: %1$s, %2$d or more items" "Widgets" "Wallpapers" "Styles & wallpapers" diff --git a/res/values-en-rCA/strings.xml b/res/values-en-rCA/strings.xml index 794ed0451d..3c54e5ad1b 100644 --- a/res/values-en-rCA/strings.xml +++ b/res/values-en-rCA/strings.xml @@ -78,7 +78,8 @@ "Tap to save rename" "Folder closed" "Folder renamed to %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d items" + "Folder: %1$s, %2$d or more items" "Widgets" "Wallpapers" "Styles & wallpapers" diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml index 794ed0451d..3c54e5ad1b 100644 --- a/res/values-en-rGB/strings.xml +++ b/res/values-en-rGB/strings.xml @@ -78,7 +78,8 @@ "Tap to save rename" "Folder closed" "Folder renamed to %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d items" + "Folder: %1$s, %2$d or more items" "Widgets" "Wallpapers" "Styles & wallpapers" diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml index 794ed0451d..3c54e5ad1b 100644 --- a/res/values-en-rIN/strings.xml +++ b/res/values-en-rIN/strings.xml @@ -78,7 +78,8 @@ "Tap to save rename" "Folder closed" "Folder renamed to %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d items" + "Folder: %1$s, %2$d or more items" "Widgets" "Wallpapers" "Styles & wallpapers" diff --git a/res/values-en-rXC/strings.xml b/res/values-en-rXC/strings.xml index 0e2c6e492f..2e8520494e 100644 --- a/res/values-en-rXC/strings.xml +++ b/res/values-en-rXC/strings.xml @@ -78,7 +78,8 @@ "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‎‎‏‏‎‏‎‏‏‏‏‎‏‎‎‏‎‎‎‎‏‏‎‎‎‏‎‏‎‎‎‏‎‏‏‎‎‎‎‏‏‏‎‏‏‎‏‏‏‎‏‎Tap to save rename‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‎‎‏‏‏‏‏‏‎‏‏‏‎‏‎‎‎‎‎‎‎‏‎‏‏‏‏‎‎‎‏‏‎‎‎‏‎‎‎‏‏‏‏‏‏‏‎‏‏‎‎Folder closed‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‎‏‏‏‏‎‎‎‎‏‏‏‎‏‏‏‎‎‎‎‏‎‎‎‏‎‏‎‎‎‏‏‎‎‎‎‎‎‏‏‏‏‎‎‎‏‏‎‎‎‎Folder renamed to ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" - "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‎‏‏‏‎‎‎‎‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‏‎‏‏‎‏‏‎‎‏‎‏‏‎Folder: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‏‎‏‎‎‏‎‎‏‎‎‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‎‏‏‏‎‎‏‎‎‎‎‎‎‎‏‏‎Folder: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎%2$d‎‏‎‎‏‏‏‎ items‎‏‎‎‏‎" + "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‎‏‏‎‏‎‎‎‎‏‎‎‏‏‏‏‎‎‏‎‏‏‎‏‎‎‏‎‏‏‏‎‏‎‎‏‎‎‏‎‎‏‏‎‏‏‎‎‏‎‎‏‏‏‏‏‏‏‏‎Folder: ‎‏‎‎‏‏‎%1$s‎‏‎‎‏‏‏‎, ‎‏‎‎‏‏‎%2$d‎‏‎‎‏‏‏‎ or more items‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‎‎‏‎‏‏‎‏‎‎‎‎‎‎‏‏‎‎‏‎‏‏‎‏‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‏‏‎Widgets‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‏‏‎‎‏‏‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‎‎‏‎‏‏‎‎‏‏‎‏‏‏‏‎‏‏‎Wallpapers‎‏‎‎‏‎" "‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‏‏‏‎‎‎‏‎‎‎‎‏‎‎‏‎‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‎‏‎‏‏‏‏‎‏‏‎‎‎‏‏‎Styles & wallpapers‎‏‎‎‏‎" diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml index de3bea27cd..e21c27937e 100644 --- a/res/values-es-rUS/strings.xml +++ b/res/values-es-rUS/strings.xml @@ -78,11 +78,12 @@ "Presiona para guardar el cambio de nombre" "Carpeta cerrada" "El nombre de la carpeta se cambió a %1$s." - "Carpeta: %1$s" + "Carpeta: %1$s, %2$d elementos" + "Carpeta: %1$s, %2$d o más elementos" "Widgets" "Fondos de pantalla" "Estilos y fondos de pantalla" - "Configuración de página principal" + "Configuración de pantalla principal" "El administrador inhabilitó esta función" "Permitir la rotación de la pantalla principal" "Al girar el teléfono" @@ -93,7 +94,7 @@ "Para mostrar los puntos de notificación, activa las notificaciones de la app para %1$s" "Cambiar la configuración" "Mostrar puntos de notificación" - "Agrega íconos de apps a pant. principal" + "Agrega íconos de apps a pantalla principal" "Para nuevas apps" "Desconocido" "Eliminar" diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml index 2deae355ca..e97fc6feef 100644 --- a/res/values-et/strings.xml +++ b/res/values-et/strings.xml @@ -78,7 +78,8 @@ "Puudutage ümbernimetamise salvestamiseks" "Kaust on suletud" "Kausta uus nimi: %1$s" - "Kaust: %1$s" + "Kaust: %1$s, %2$d üksust" + "Kaust: %1$s, %2$d või rohkem üksust" "Vidinad" "Taustapildid" "Stiilid ja taustapildid" diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml index 444e46a5b5..18cc7662f3 100644 --- a/res/values-eu/strings.xml +++ b/res/values-eu/strings.xml @@ -78,14 +78,15 @@ "Izen berria gordetzeko, sakatu hau" "Karpeta itxi da" "Karpetari %1$s izena eman zaio" - "Karpeta: %1$s" + "%1$s karpeta (%2$d elementu)" + "%1$s karpeta (%2$d elementu edo gehiago)" "Widgetak" "Horma-paperak" "Estiloak eta horma-paperak" "Hasierako pantailaren ezarpenak" "Administratzaileak desgaitu du" "Eman hasierako pantaila biratzeko baimena" - "Telefonoa biratzen denean" + "Telefonoa biratzean" "Jakinarazpen-biribiltxoak" "Aktibatuta" "Desaktibatuta" diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml index 77c2837b4d..2dbc9df998 100644 --- a/res/values-fi/strings.xml +++ b/res/values-fi/strings.xml @@ -78,11 +78,12 @@ "Tallenna uusi nimi koskettamalla." "Kansio on suljettu" "Kansion nimeksi vaihdettiin %1$s" - "Kansio: %1$s" + "Kansio: %1$s, %2$d kohdetta" + "Kansio: %1$s, ainakin %2$d kohdetta" "Widgetit" "Taustakuvat" "Tyylit ja taustakuvat" - "Kotiasetukset" + "Aloitusnäyttö" "Järjestelmänvalvoja on poistanut toiminnon käytöstä." "Salli aloitusnäytön kiertäminen" "Kun puhelinta kierretään" @@ -93,7 +94,7 @@ "%1$s tarvitsee ilmoitusten käyttöoikeuden, jotta pistemerkkejä voidaan näyttää." "Muuta asetuksia" "Näytä ilmoituksista kertovat pistemerkit" - "Lisää sovelluskuvakkeita aloitusnäytölle" + "Lisää sovelluskuvakkeet aloitusnäytölle" "Uusille sovelluksille" "Tuntematon" "Poista" diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml index 4e9e83898e..23fd8d849d 100644 --- a/res/values-fr-rCA/strings.xml +++ b/res/values-fr-rCA/strings.xml @@ -78,7 +78,8 @@ "Touchez pour enregistrer le nouveau nom" "Dossier fermé" "Nouveau nom du dossier : %1$s" - "Dossier : %1$s" + "Dossier : %1$s, %2$d élément(s)" + "Dossier : %1$s, %2$d éléments ou plus" "Widgets" "Fonds d\'écran" "Styles et fonds d\'écran" @@ -93,7 +94,7 @@ "Pour afficher les points de notification, activez les notifications d\'application pour %1$s" "Modifier les paramètres" "Afficher les points de notification" - "Ajouter icônes d\'applis à l\'écran d\'acc." + "Ajouter icônes d\'applis à l\'écran d\'accueil" "Pour les nouvelles applications" "Inconnu" "Supprimer" diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml index d1f94cf69d..2628cdb53e 100644 --- a/res/values-fr/strings.xml +++ b/res/values-fr/strings.xml @@ -78,7 +78,8 @@ "Appuyez pour enregistrer le nouveau nom du dossier." "Dossier fermé" "Nouveau nom du dossier : %1$s" - "Dossier \"%1$s\"" + "Dossier : %1$s, %2$d éléments" + "Dossier : %1$s, %2$d éléments ou plus" "Widgets" "Fonds d\'écran" "Styles et fonds d\'écran" diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml index 9920a00c98..9fdf22bde6 100644 --- a/res/values-gl/strings.xml +++ b/res/values-gl/strings.xml @@ -78,7 +78,8 @@ "Toca fóra para cambiar o nome do cartafol" "Pechouse o cartafol" "O cartafol cambiou o nome a %1$s" - "Cartafol: %1$s" + "Cartafol: %1$s, %2$d elementos" + "Cartafol: %1$s, %2$d elementos ou máis" "Widgets" "Fondos de pantalla" "Estilos/fondos de pantalla" @@ -93,7 +94,7 @@ "Para que se mostren os puntos de notificacións, activa as notificacións da aplicación %1$s" "Cambiar configuración" "Mostrar puntos de notificacións" - "Engade aplicacións á pantalla de inicio" + "Engadir iconas de aplicacións á pantalla de inicio" "Para novas aplicacións" "Descoñecido" "Eliminar" diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml index 4ed21bff60..8f49421bda 100644 --- a/res/values-gu/strings.xml +++ b/res/values-gu/strings.xml @@ -78,7 +78,8 @@ "નામ બદલવાનું સાચવવા માટે ટૅપ કરો" "ફોલ્ડર બંધ કર્યું" "ફોલ્ડરનું નામ બદલીને %1$s કર્યું" - "ફોલ્ડર: %1$s" + "ફોલ્ડર: %1$s, %2$d આઇટમ" + "ફોલ્ડર: %1$s, %2$d કે વધુ આઇટમ" "વિજેટ્સ" "વૉલપેપર્સ" "શૈલીઓ અને વૉલપેપર" diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml index 662fb82094..af3dcdb8b2 100644 --- a/res/values-hi/strings.xml +++ b/res/values-hi/strings.xml @@ -78,7 +78,8 @@ "नाम बदलना सहेजने के लिए टैप करें" "फ़ोल्डर बंद किया गया" "फ़ोल्डर का नाम बदलकर %1$s किया गया" - "फ़ोल्डर: %1$s" + "फ़ोल्डर: %1$s, %2$d आइटम" + "फ़ोल्डर: %1$s, %2$d या इससे ज़्यादा आइटम" "विजेट" "वॉलपेपर" "स्टाइल और वॉलपेपर" diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml index cab649cde8..f24dc06469 100644 --- a/res/values-hr/strings.xml +++ b/res/values-hr/strings.xml @@ -79,7 +79,8 @@ "Dodirnite da biste spremili promijenjeni naziv" "Mapa je zatvorena" "Mapa je preimenovana u %1$s" - "Mapa: %1$s" + "Mapa: %1$s, %2$d stavke" + "Mapa: %1$s, %2$d ili više stavki" "Widgeti" "Pozadine" "Stilovi i pozadine" @@ -94,7 +95,7 @@ "Za prikaz točaka obavijesti uključite obavijesti aplikacije %1$s" "Promjena postavki" "Prikaži točke obavijesti" - "Dodajte ikone aplikacija na poč. zaslon" + "Dodajte ikone aplikacija na početni zaslon" "Za nove aplikacije" "Nepoznato" "Ukloni" diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml index b17c6500af..60c043fbe8 100644 --- a/res/values-hu/strings.xml +++ b/res/values-hu/strings.xml @@ -78,7 +78,8 @@ "Koppintson ide az átnevezés mentéséhez" "Mappa lezárva" "A mappa új neve: %1$s" - "Mappa: %1$s" + "Mappa: %1$s, %2$d elem" + "Mappa: %1$s, %2$d vagy több elem" "Modulok" "Háttérképek" "Stílusok és háttérképek" diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml index dc7fbe3d50..99b582b0b2 100644 --- a/res/values-hy/strings.xml +++ b/res/values-hy/strings.xml @@ -52,7 +52,7 @@ "Հեռացնել" "Հավելվածի մասին" "Տեղադրել" - "Չառաջարկել հավելված" + "Թաքցնել առաջարկը" "Ամրացնել առաջարկվող հավելվածը" "տեղադրել դյուրանցումներ" "Ծրագրին թույլ է տալիս ավելացնել դյուրանցումներ՝ առանց օգտագործողի միջամտության:" @@ -78,7 +78,8 @@ "Հպեք՝ նոր անվանումը պահելու համար" "Պանակը փակ է" "Պանակը վերանվանվեց %1$s" - "Պանակ՝ %1$s" + "Պանակ՝ %1$s, %2$d տարր" + "Պանակ՝ %1$s, %2$d կամ ավելի տարրեր" "Վիջեթներ" "Պաստառներ" "Ոճեր և պաստառներ" diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml index 81ea1c21e1..9a49be55de 100644 --- a/res/values-in/strings.xml +++ b/res/values-in/strings.xml @@ -78,7 +78,8 @@ "Ketuk untuk menyimpan ganti nama" "Folder ditutup" "Folder diganti namanya menjadi %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d item" + "Folder: %1$s, %2$d item atau lebih" "Widget" "Wallpaper" "Gaya & wallpaper" diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml index 4abdd88504..8e66deaf2f 100644 --- a/res/values-is/strings.xml +++ b/res/values-is/strings.xml @@ -52,7 +52,7 @@ "Fjarlægja" "Forritsupplýsingar" "Setja upp" - "Ekki stinga upp á forriti" + "Ekki fá tillögu að forriti" "Festa tillögu" "setja upp flýtileiðir" "Leyfir forriti að bæta við flýtileiðum án íhlutunar notanda." @@ -78,7 +78,8 @@ "Ýttu til að vista breytt heiti" "Möppu lokað" "Heiti möppu breytt í %1$s" - "Mappa: %1$s" + "Mappa: %1$s, %2$d atriði" + "Mappa: %1$s, %2$d eða fleiri atriði" "Græjur" "Veggfóður" "Stílar og veggfóður" diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml index 9cc2f757a6..4ffc861fa4 100644 --- a/res/values-it/strings.xml +++ b/res/values-it/strings.xml @@ -78,7 +78,8 @@ "Tocca per salvare il nuovo nome" "Cartella chiusa" "Nome della cartella sostituito con %1$s" - "Cartella: %1$s" + "Cartella: %1$s, %2$d elementi" + "Cartella: %1$s, %2$d o più elementi" "Widget" "Sfondi" "Stili e sfondi" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index fa6d7b7e3c..f54859824a 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -80,7 +80,8 @@ "הקש כדי לשמור שינוי שם" "התיקיה נסגרה" "שם התיקיה שונה ל-%1$s" - "תיקיה: %1$s" + "תיקייה: %1$s, מספר הפריטים: %2$d" + "תיקייה: %1$s, %2$d פריטים או יותר" "רכיבי ווידג\'ט" "טפטים" "סגנונות וטפטים" diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml index 29056d63db..0be3a0ff54 100644 --- a/res/values-ja/strings.xml +++ b/res/values-ja/strings.xml @@ -52,7 +52,7 @@ "アンインストール" "アプリ情報" "インストール" - "候補のアプリを表示しない" + "アプリの候補を表示しない" "予測を固定" "ショートカットのインストール" "ユーザー操作なしでショートカットを追加することをアプリに許可します。" @@ -78,7 +78,8 @@ "タップして変更後の名前を保存します" "フォルダは閉じています" "フォルダの名前を「%1$s」に変更しました" - "フォルダ: %1$s" + "フォルダ: %1$s%2$d 件のアイテム" + "フォルダ: %1$s%2$d 件以上のアイテム" "ウィジェット" "壁紙" "スタイルと壁紙" diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml index b1ede68f27..44ea3866ef 100644 --- a/res/values-ka/strings.xml +++ b/res/values-ka/strings.xml @@ -78,7 +78,8 @@ "შეეხეთ გადარქმეული სახელის შესანახად" "საქაღალდე დაიხურა" "საქაღალდეს შეეცვალა სახელი „%1$s“-ად" - "საქაღალდე: %1$s" + "საქაღალდე: %1$s, %2$d ერთეული" + "საქაღალდე: %1$s, %2$d ან მეტი ერთეული" "ვიჯეტები" "ფონები" "სტილები და ფონები" diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml index 0c0f3a61bd..7dd4400914 100644 --- a/res/values-kk/strings.xml +++ b/res/values-kk/strings.xml @@ -78,7 +78,8 @@ "Қайта атауды сақтау үшін түртіңіз" "Қалта жабылды" "Қалта атауы %1$s болып өзгертілді" - "Қалта: %1$s" + "Қалта: %1$s, %2$d элемент бар" + "Қалта: %1$s, %2$d не одан көп элемент бар" "Виджеттер" "Тұсқағаздар" "Стильдер мен тұсқағаздар" diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml index 7ddc233144..3ba564eadf 100644 --- a/res/values-km/strings.xml +++ b/res/values-km/strings.xml @@ -78,7 +78,8 @@ "ប៉ះដើម្បីរក្សាទុកឈ្មោះដែលបានប្តូរ" "បាន​បិទ​ថត" "បាន​ប្ដូរ​ឈ្មោះ​ថត​ជា %1$s" - "ថត៖ %1$s" + "ថត៖ %1$s, ធាតុ %2$d" + "ថត៖ %1$s, ធាតុ %2$d ឬច្រើនជាងនេះ" "ធាតុ​ក្រាហ្វិក" "ផ្ទាំង​រូបភាព" "រចនាប័ទ្ម និង​ផ្ទាំង​រូបភាព" diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml index 310e3a6b39..1990e9e64e 100644 --- a/res/values-kn/strings.xml +++ b/res/values-kn/strings.xml @@ -78,7 +78,8 @@ "ಮರುಹೆಸರನ್ನು ಉಳಿಸಲು ಟ್ಯಾಪ್ ಮಾಡಿ" "ಫೋಲ್ಡರ್ ಮುಚ್ಚಿದೆ" "ಫೋಲ್ಡರ್‌ ಅನ್ನು %1$s ಗೆ ಮರುಹೆಸರಿಸಲಾಗಿದೆ" - "ಫೋಲ್ಡರ್: %1$s" + "ಫೋಲ್ಡರ್: %1$s, %2$d ಐಟಂಗಳು" + "ಫೋಲ್ಡರ್: %1$s, %2$d ಅಥವಾ ಹೆಚ್ಚಿನ ಐಟಂಗಳು" "ವಿಜೆಟ್‌ಗಳು" "ವಾಲ್‌ಪೇಪರ್‌ಗಳು" "ಶೈಲಿಗಳು & ವಾಲ್‌ಪೇಪರ್‌ಗಳು" diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml index 0c09aa05d0..aaf6dff8fa 100644 --- a/res/values-ko/strings.xml +++ b/res/values-ko/strings.xml @@ -52,7 +52,7 @@ "제거" "앱 정보" "설치" - "앱 추천 안함" + "앱 제안 받지 않음" "예상 앱 고정" "바로가기 설치" "앱이 사용자의 작업 없이 바로가기를 추가할 수 있도록 합니다." @@ -78,7 +78,8 @@ "탭하여 변경된 이름 저장" "폴더 닫음" "폴더 이름 변경: %1$s" - "폴더: %1$s" + "폴더: %1$s, 항목 %2$d개" + "폴더: %1$s, 항목 %2$d개 이상" "위젯" "배경화면" "스타일 및 배경화면" diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml index e7998b98e0..d4b4c5db32 100644 --- a/res/values-ky/strings.xml +++ b/res/values-ky/strings.xml @@ -78,7 +78,8 @@ "Өзгөртүлгөн аталышын сактоо үчүн таптаңыз" "Фолдер жабык" "Фолдердин аты %1$s деп өзгөртүлдү" - "Фолдер: %1$s" + "%1$s папкасындагы объекттер: %2$d" + "%1$s папкасындагы объекттер: %2$d же андан көбүрөөк" "Виджеттер" "Тушкагаздар" "Стилдер жана тушкагаздар" diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml index 7c5d422afb..b8ca8a4858 100644 --- a/res/values-lo/strings.xml +++ b/res/values-lo/strings.xml @@ -78,13 +78,14 @@ "ແຕະເພື່ອບັນທຶກການປ່ຽນຊື່" "ປິດໂຟນເດີແລ້ວ" "ປ່ຽນຊື່ໂຟນເດີເປັນ %1$s ແລ້ວ" - "ໂຟນເດີ: %1$s" + "ໂຟນເດີ: %1$s, %2$d ລາຍການ" + "ໂຟນເດີ: %1$s, %2$d ຫຼື ລາຍການເພີ່ມເຕີມ" "ວິດເຈັດ" "ພາບພື້ນຫຼັງ" "ຮູບແບບ ແລະ ຮູບພື້ນຫຼັງ" "ການຕັ້ງຄ່າ Home" "ຖືກປິດການນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ" - "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍທຳອິດໄດ້" + "ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍຢູ່ໜ້າຫຼັກໄດ້" "ເມື່ອໝຸນໂທລະສັບ" "ຈຸດການແຈ້ງເຕືອນ" "ເປີດ" diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml index 63aa23b7b8..d959788bf9 100644 --- a/res/values-lt/strings.xml +++ b/res/values-lt/strings.xml @@ -80,7 +80,8 @@ "Palieskite, kad išsaugotumėte pakeistą pavadinimą" "Aplankas uždarytas" "Aplankas pervardytas kaip „%1$s“" - "Aplankas: „%1$s“" + "Aplankas: „%1$s“, elementų: %2$d" + "Aplankas: „%1$s“, elementų: %2$d ar daugiau" "Valdikliai" "Ekrano fonai" "Stiliai ir ekrano fonai" diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml index 723c5098b3..aa01d6d607 100644 --- a/res/values-lv/strings.xml +++ b/res/values-lv/strings.xml @@ -79,7 +79,8 @@ "Pieskarieties, lai saglabātu jauno nosaukumu." "Mape aizvērta" "Mape pārdēvēta par: %1$s" - "Mape: %1$s" + "Mape %1$s, %2$d vienumi" + "Mape %1$s, vienumu skaits mapē: vismaz %2$d" "Logrīki" "Fona tapetes" "Stili un fona tapetes" diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml index 792b213051..82ffdd5486 100644 --- a/res/values-mk/strings.xml +++ b/res/values-mk/strings.xml @@ -78,13 +78,14 @@ "Допрете за да го зачувате преименувањето" "Папката е затворена" "Папката е преименувана во %1$s" - "Папка: %1$s" + "Папка: %1$s, %2$d ставки" + "Папка: %1$s, %2$d или повеќе ставки" "Виџети" "Тапети" "Стилови и тапети" "Поставки за почетен екран" "Оневозможено од администраторот" - "Дозволете ротација на почетниот екран" + "Дозволи ротација на почетниот екран" "Кога телефонот се ротира" "Точки за известување" "Вклучено" @@ -93,7 +94,7 @@ "За да се прикажуваат „Точки за известување“, вклучете ги известувањата за апликацијата %1$s" "Промени ги поставките" "Прикажувај точки за известување" - "Додај икони за апликации на почетен екран" + "Додавај икони за апликации на почетен екран" "За нови апликации" "Непознато" "Отстрани" diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml index f7a67a400d..0d0a9518d4 100644 --- a/res/values-ml/strings.xml +++ b/res/values-ml/strings.xml @@ -78,7 +78,8 @@ "പേരുമാറ്റം സംരക്ഷിക്കുന്നതിന് ടാപ്പുചെയ്യുക" "ഫോൾഡർ അടച്ചു" "ഫോൾഡറിന്റെ പേര് %1$s എന്നായി മാറ്റി" - "ഫോൾഡർ: %1$s" + "ഫോൾഡർ: %1$s, %2$d ഇനങ്ങൾ" + "ഫോൾഡർ: %1$s, %2$d അല്ലെങ്കിൽ അതിലധികം ഇനങ്ങൾ" "വിഡ്ജെറ്റുകൾ" "വാൾപേപ്പർ" "സ്‌റ്റൈലുകളും വാൾപേപ്പറുകളും" diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml index 1e4e189d28..027e78042a 100644 --- a/res/values-mn/strings.xml +++ b/res/values-mn/strings.xml @@ -78,7 +78,8 @@ "Шинэ нэрийг хадгалахын тулд дарна уу." "Фолдер хаагдав" "Фолдерын нэр %1$s болов" - "Фолдер: %1$s" + "Фолдер: %1$s, %2$d зүйл" + "Фолдер: %1$s, %2$d эсвэл үүнээс олон зүйл" "Виджет" "Ханын зураг" "Загвар ба ханын зураг" diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml index 7c8365a3d0..488f911e32 100644 --- a/res/values-mr/strings.xml +++ b/res/values-mr/strings.xml @@ -78,7 +78,8 @@ "पुनर्नामित करणे सेव्ह करण्यासाठी टॅप करा" "फोल्डर बंद" "फोल्डरचे नाव बदलून %1$s असे ठेवले" - "फोल्डर: %1$s" + "फोल्डर: %1$s, %2$d आयटम" + "फोल्डर: %1$s, %2$d किंवा त्याहून अधिक आयटम" "विजेट" "वॉलपेपर" "शैली आणि वॉलपेपर" @@ -136,12 +137,12 @@ "कार्यालय" "कार्य प्रोफाइल" "वैयक्तिक डेटा वेगळा असतो आणि तो ऑफिस अ‍ॅप्सपासून लपवलेला असतो" - "ऑफिस अ‍ॅप्स आणि डेटा तुमच्या अ‍ॅडमिनला दृश्यमान असतो" + "कार्य अ‍ॅप्स आणि डेटा तुमच्या अ‍ॅडमिनला दृश्यमान असतो" "पुढील" "समजले" - "ऑफिस प्रोफाइल थांबवली आहे" + "कार्य प्रोफाइल थांबवली आहे" "कामासंबंधित अ‍ॅप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अ‍ॅक्सेस करू शकत नाहीत" - "ऑफिस प्रोफाइल थांबवली आहे. ऑफिस अ‍ॅप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अ‍ॅक्सेस करू शकत नाहीत" - "ऑफिस अ‍ॅप्स आणि सूचना थांबवा" + "कार्य प्रोफाइल थांबवली आहे. कार्य अ‍ॅप्स तुम्हाला सूचना पाठवू शकत नाहीत, तुमची बॅटरी वापरू शकत नाहीत किंवा तुमचे स्थान अ‍ॅक्सेस करू शकत नाहीत" + "कार्य अ‍ॅप्स आणि सूचना थांबवा" "हे करता आले नाही: %1$s" diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml index a82e02f010..38e87f1d9d 100644 --- a/res/values-ms/strings.xml +++ b/res/values-ms/strings.xml @@ -78,7 +78,8 @@ "Ketik untuk menyimpan penamaan semula" "Folder ditutup" "Folder dinamakan semula kepada %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d item" + "Folder: %1$s, %2$d atau lebih banyak item" "Widget" "Kertas dinding" "Gaya & kertas dinding" diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml index cfe735d6dd..4e465caf71 100644 --- a/res/values-my/strings.xml +++ b/res/values-my/strings.xml @@ -78,7 +78,8 @@ "အမည်ပြောင်းခြင်းကို သိမ်းရန် တို့ပါ" "ပိတ်ထားသောအကန့်" "ပြောင်းလဲလိုက်သော အကန့်အမည် %1$s" - "အကန့်အမည်: %1$s" + "ဖိုင်တွဲ - %1$s%2$d ဖိုင်များ" + "ဖိုင်တွဲ - %1$s%2$d သို့မဟုတ် နောက်ထပ်ဖိုင်များ" "ဝိဂျက်များ" "နောက်ခံများ" "ပုံစံနှင့် နောက်ခံပုံများ" diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml index e9449f481b..5750d26784 100644 --- a/res/values-nb/strings.xml +++ b/res/values-nb/strings.xml @@ -78,7 +78,8 @@ "Trykk for å lagre det nye navnet" "Mappen ble lukket" "Mappen heter nå %1$s" - "Mappe: %1$s" + "Mappe: %1$s, %2$d elementer" + "Mappe: %1$s, %2$d eller flere elementer" "Moduler" "Bakgrunner" "Stiler og bakgrunner" diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml index 33dc1f0343..23394a775f 100644 --- a/res/values-ne/strings.xml +++ b/res/values-ne/strings.xml @@ -78,7 +78,8 @@ "पुनःनामाकरणलाई सुरक्षित गर्न ट्याप गर्नुहोस्" "फोल्डर बन्द भयो" "फोल्डर %1$s मा पुनःनामाकरण गरियो।" - "फोल्डर: %1$s" + "फोल्डर: %1$s, %2$d वस्तुहरू" + "फोल्डर: %1$s, %2$d वा सोभन्दा बढी वस्तुहरू" "विजेटहरू" "वालपेपरहरु" "शैली तथा वालपेपरहरू" diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml index 17a664065f..76f1ecb0e5 100644 --- a/res/values-nl/strings.xml +++ b/res/values-nl/strings.xml @@ -78,7 +78,8 @@ "Tik om de gewijzigde naam op te slaan" "Map gesloten" "De naam van de map is gewijzigd in %1$s" - "Map: %1$s" + "Map: %1$s, %2$d items" + "Map: %1$s, %2$d of meer items" "Widgets" "Achtergrond" "Stijl en achtergrond" diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml index 2e8b25bfd4..105c033fc3 100644 --- a/res/values-or/strings.xml +++ b/res/values-or/strings.xml @@ -78,13 +78,14 @@ "ନାମ ବଦଳାଇବା ସେଭ୍ କରିବାକୁ ଟାପ୍‌ କରନ୍ତୁ" "ଫୋଲ୍ଡର ବନ୍ଦ କରାଗଲା" "ଫୋଲ୍ଡରର ନାମ %1$sକୁ ବଦଳାଗଲା" - "ଫୋଲ୍ଡର: %1$s" + "ଫୋଲ୍ଡର୍: %1$s, %2$d ଆଇଟମଗୁଡ଼ିକ" + "ଫୋଲ୍ଡର୍: %1$s, %2$d କିମ୍ବା ଅଧିକ ଆଇଟମ୍" "ୱିଜେଟ୍‌" "ୱାଲପେପର୍‌" "ଷ୍ଟାଇଲ୍ ଏବଂ ୱାଲ୍‍‍ପେପର୍" "ହୋମ୍‌ ସେଟିଂସ୍" "ଆପଣଙ୍କ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଅକ୍ଷମ କରାଯାଇଛି" - "ହୋମ୍‌ ସ୍କ୍ରୀନ୍ ବୁଲାଇବା ଅନୁମତି ଦିଅନ୍ତୁ" + "ହୋମ୍‌ ସ୍କ୍ରିନ୍ ବୁଲାଇବାକୁ ଅନୁମତି ଦିଅନ୍ତୁ" "ଯେତେବେଳେ ଫୋନକୁ ବୁଲାଯାଇଥାଏ" "ବିଜ୍ଞପ୍ତି ଡଟ୍ସ" "ଚାଲୁ" @@ -93,7 +94,7 @@ "ବିଜ୍ଞପ୍ତି ବିନ୍ଦୁ ଦେଖାଇବାକୁ, %1$s ପାଇଁ ଆପ୍‌ ବିଜ୍ଞପ୍ତି ଅନ୍‌ କରନ୍ତୁ" "ସେଟିଂସ୍ ପରିବର୍ତ୍ତନ କରନ୍ତୁ" "ବିଜ୍ଞପ୍ତି ଡଟ୍‌ଗୁଡ଼ିକୁ ଦେଖାନ୍ତୁ" - "ମୂଳ ସ୍କ୍ରିନରେ ଆପ୍ ଆଇକନଗୁଡ଼ିକୁ ଯୋଗ କରନ୍ତୁ" + "ହୋମ୍ ସ୍କ୍ରିନରେ ଆପ୍ ଆଇକନଗୁଡ଼ିକୁ ଯୋଗ କରନ୍ତୁ" "ନୂଆ ଆପ୍‌ ପାଇଁ" "ଅଜଣା" "ବାହାର କରନ୍ତୁ" diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml index 2b56306ae2..8b90a65394 100644 --- a/res/values-pa/strings.xml +++ b/res/values-pa/strings.xml @@ -78,14 +78,15 @@ "ਬਦਲੇ ਗਏ ਨਾਮ ਨੂੰ ਰੱਖਿਅਤ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ" "ਫੋਲਡਰ ਬੰਦ ਕੀਤਾ" "ਫੋਲਡਰ ਨੂੰ %1$s ਮੁੜ ਨਾਮ ਦਿੱਤਾ ਗਿਆ" - "ਫੋਲਡਰ: %1$s" + "ਫੋਲਡਰ: %1$s, %2$d ਆਈਟਮਾਂ" + "ਫੋਲਡਰ: %1$s, %2$d ਜਾਂ ਹੋਰ ਆਈਟਮਾਂ" "ਵਿਜੇਟ" "ਵਾਲਪੇਪਰ" "ਸ਼ੈਲੀਆਂ ਅਤੇ ਵਾਲਪੇਪਰ" "ਹੋਮ ਸੈਟਿੰਗਾਂ" "ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਈ ਗਈ" - "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁੰਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" - "ਜਦੋਂ ਫ਼ੋਨ ਘੁੰਮਾਇਆ ਜਾਂਦਾ ਹੈ" + "ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ" + "ਜਦੋਂ ਫ਼ੋਨ ਘੁਮਾਇਆ ਜਾਂਦਾ ਹੈ" "ਸੂਚਨਾ ਬਿੰਦੂ" "ਚਾਲੂ" "ਬੰਦ" diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml index fb6c4ae870..49dceb06e8 100644 --- a/res/values-pl/strings.xml +++ b/res/values-pl/strings.xml @@ -80,11 +80,12 @@ "Kliknij, by zapisać nową nazwę" "Folder zamknięty" "Nazwa folderu zmieniona na %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d elementy" + "Folder: %1$s, liczba elementów: %2$d lub więcej" "Widżety" "Tapety" "Style i tapety" - "Ustawienia strony głównej" + "Ustawienia ekranu głównego" "Funkcja wyłączona przez administratora" "Zezwalaj na obrót ekranu głównego" "Po obróceniu telefonu" @@ -141,7 +142,7 @@ "Dane i aplikacje z profilu do pracy są widoczne dla Twojego administratora IT" "Dalej" "OK" - "Wstrzymano profil do pracy" + "Wstrzymano profil służbowy" "Aplikacje do pracy nie mogą wysyłać powiadomień, używać baterii ani mieć dostępu do Twojej lokalizacji" "Wstrzymano profil do pracy. Aplikacje do pracy nie mogą wysyłać powiadomień, używać baterii ani uzyskiwać dostępu do Twojej lokalizacji" "Wstrzymaj aplikacje do pracy i powiadomienia" diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml index e6af945fc8..a6b72dbe5c 100644 --- a/res/values-pt-rPT/strings.xml +++ b/res/values-pt-rPT/strings.xml @@ -78,7 +78,8 @@ "Tocar para guardar o nome novo" "Pasta fechada" "Nome de pasta alterado para %1$s" - "Pasta: %1$s" + "Pasta: %1$s, %2$d itens" + "Pasta: %1$s, %2$d ou mais itens" "Widgets" "Imagens de fundo" "Estilos e imagens de fundo" diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml index d1eb271140..165c8fc040 100644 --- a/res/values-pt/strings.xml +++ b/res/values-pt/strings.xml @@ -78,7 +78,8 @@ "Toque para salvar o novo nome" "Pasta fechada" "Pasta renomeada para %1$s" - "Pasta: %1$s" + "Pasta: %1$s, %2$d itens" + "Pasta: %1$s, %2$d ou mais itens" "Widgets" "Planos de fundo" "Estilos e planos de fundo" diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml index 9ecfeabe97..fb8e36124d 100644 --- a/res/values-ro/strings.xml +++ b/res/values-ro/strings.xml @@ -79,7 +79,8 @@ "Atingeți pentru a salva noul nume" "Dosar închis" "Dosar redenumit %1$s" - "Dosar: %1$s" + "Dosar: %1$s, %2$d elemente" + "Dosar: %1$s, %2$d sau mai multe elemente" "Widgeturi" "Imagini de fundal" "Stiluri și imagini de fundal" diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml index 3b5f171575..9d144294e1 100644 --- a/res/values-ru/strings.xml +++ b/res/values-ru/strings.xml @@ -80,14 +80,15 @@ "Нажмите, чтобы подтвердить переименование" "Папка закрыта" "Папка переименована в \"%1$s\"" - "Папка: %1$s" + "Папка \"%1$s\" (объектов: %2$d)" + "Папка \"%1$s\" (объектов: %2$d или больше)" "Виджеты" "Обои" "Стили и обои" "Главный экран" "Функция отключена администратором" "Разрешить поворачивать главный экран" - "Когда телефон повернут" + "При повороте телефона" "Значки уведомлений" "Включены" "Отключены" @@ -141,7 +142,7 @@ "Рабочие приложения и данные видны системному администратору." "Далее" "ОК" - "Рабочий профиль приостановлен" + "Действие рабочего профиля приостановлено." "Рабочие приложения не могут отправлять уведомления, расходовать заряд батареи и получать доступ к вашему местоположению." "Рабочий профиль приостановлен. Рабочие приложения не могут отправлять уведомления, расходовать заряд батареи и получать доступ к данным о вашем местоположении." "Приостановить рабочие приложения и уведомления" diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml index da42f108ef..bfc6b7a4e1 100644 --- a/res/values-si/strings.xml +++ b/res/values-si/strings.xml @@ -78,7 +78,8 @@ "යළි නම් කිරීම සුරැකීමට තට්ටු කරන්න" "ෆෝල්ඩරය වසා ඇත" "%1$s වෙත ෆෝල්ඩරය නැවත නම් කෙරිණි" - "ෆෝල්ඩරය: %1$s" + "ෆෝල්ඩරය: %1$s, අයිතම %2$d" + "ෆෝල්ඩර: %1$s, අයිතම %2$dක් හෝ වැඩි ගණනක්" "විජට්" "වෝල්පේපර" "විලාස සහ වෝල්පේපර" diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml index 17dfccfc66..ab980633d3 100644 --- a/res/values-sk/strings.xml +++ b/res/values-sk/strings.xml @@ -80,7 +80,8 @@ "Nový názov uložíte klepnutím" "Priečinok je uzavretý" "Priečinok bol premenovaný na %1$s" - "Priečinok: %1$s" + "Priečinok: %1$s, %2$d položky" + "Priečinok: %1$s, %2$d alebo viac položiek" "Miniaplikácie" "Tapety" "Štýly a tapety" diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml index 5ed77124db..91d76b5ec6 100644 --- a/res/values-sl/strings.xml +++ b/res/values-sl/strings.xml @@ -80,7 +80,8 @@ "Dotaknite se, da shranite preimenovanje" "Mapa je zaprta" "Mapa je preimenovana v %1$s" - "Mapa: %1$s" + "Mapa: %1$s, št. elementov: %2$d" + "Mapa: %1$s, %2$d ali več elementov" "Pripomočki" "Ozadja" "Slogi in ozadja" diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml index 256425c3bb..758ec6cf6a 100644 --- a/res/values-sr/strings.xml +++ b/res/values-sr/strings.xml @@ -79,7 +79,8 @@ "Додирните да бисте сачували преименовање" "Директоријум је затворен" "Директоријум је преименован у %1$s" - "Директоријум: %1$s" + "Директоријум: %1$s, %2$d ставке" + "Директоријум: %1$s, %2$d или више ставки" "Виџети" "Позадине" "Стилови и позадине" diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml index 3ab4517681..b8beb9bdb2 100644 --- a/res/values-sv/strings.xml +++ b/res/values-sv/strings.xml @@ -78,7 +78,8 @@ "Tryck för att spara namnändringen" "Mappen är stängd" "Mappen har bytt namn till %1$s" - "Mapp: %1$s" + "Mapp: %1$s, %2$d objekt" + "Mapp: %1$s, %2$d eller fler objekt" "Widgetar" "Bakgrunder" "Format och bakgrunder" diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml index 35e5678de0..b91ed0a5ec 100644 --- a/res/values-sw/strings.xml +++ b/res/values-sw/strings.xml @@ -52,7 +52,7 @@ "Sakinua" "Maelezo ya programu" "Sakinisha" - "Usipendekeze programu" + "Isipendekeze programu" "Bandika Utabiri" "kuweka njia za mkato" "Huruhusu programu kuongeza njia za mkato bila mtumiaji kuingilia kati." @@ -78,7 +78,8 @@ "Gusa ili ubadilishe jina" "Folda imefungwa" "Folda imebadilishwa jina kuwa %1$s" - "Folda: %1$s" + "Folda: %1$s, vipengee %2$d" + "Folda: %1$s, vipengee %2$d au zaidi" "Wijeti" "Mandhari" "Mitindo na mandhari" diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml index 30de5790e8..2740c2adc7 100644 --- a/res/values-ta/strings.xml +++ b/res/values-ta/strings.xml @@ -78,7 +78,8 @@ "மாற்றிய பெயரைச் சேமிக்க, தட்டவும்" "கோப்புறை மூடப்பட்டது" "கோப்புறை %1$s என மறுபெயரிடப்பட்டது" - "கோப்புறை: %1$s" + "கோப்புறை: %1$s, %2$d கோப்புகள்" + "கோப்புறை: %1$s, %2$d அல்லது அதற்கு அதிகமான கோப்புகள்" "விட்ஜெட்கள்" "வால்பேப்பர்கள்" "ஸ்டைல்கள் & வால்பேப்பர்கள்" diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml index 0eab3a908c..2d3d446179 100644 --- a/res/values-te/strings.xml +++ b/res/values-te/strings.xml @@ -78,7 +78,8 @@ "పేరు మార్పును సేవ్ చేయడానికి నొక్కండి" "ఫోల్డర్ మూసివేయబడింది" "ఫోల్డర్ పేరు %1$sగా మార్చబడింది" - "ఫోల్డర్: %1$s" + "ఫోల్డర్: %1$s, %2$d ఐటెమ్‌లు" + "ఫోల్డర్: %1$s, %2$d లేదా అంతకంటే ఎక్కువ ఐటెమ్‌లు" "విడ్జెట్‌లు" "వాల్‌పేపర్‌లు" "స్ట‌యిల్స్‌ & వాల్‌పేపర్‌లు" diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml index a7cbf64882..15498804ff 100644 --- a/res/values-th/strings.xml +++ b/res/values-th/strings.xml @@ -78,7 +78,8 @@ "แตะเพื่อบันทึกการเปลี่ยนชื่อ" "โฟลเดอร์ปิดอยู่" "เปลี่ยนชื่อโฟลเดอร์เป็น %1$s" - "โฟลเดอร์: %1$s" + "โฟลเดอร์: %1$s, %2$d รายการ" + "โฟลเดอร์: %1$s, อย่างน้อย %2$d รายการ" "วิดเจ็ต" "วอลเปเปอร์" "รูปแบบและวอลเปเปอร์" diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml index 9c0d8175a4..ac78aebacb 100644 --- a/res/values-tl/strings.xml +++ b/res/values-tl/strings.xml @@ -78,7 +78,8 @@ "I-tap upang i-save ang bagong pangalan" "Nakasara ang folder" "Pinalitan ang pangalan ng folder ng %1$s" - "Folder: %1$s" + "Folder: %1$s, %2$d (na) item" + "Folder: %1$s, %2$d o higit pang item" "Mga Widget" "Mga Wallpaper" "Mga istilo at wallpaper" diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml index 3ca4d10adb..c84e670bf7 100644 --- a/res/values-tr/strings.xml +++ b/res/values-tr/strings.xml @@ -78,7 +78,8 @@ "Yeni adın kaydedilmesi için dokunun" "Klasör kapatıldı" "Klasörün adı %1$s olarak değiştirildi" - "Klasör: %1$s" + "Klasör: %1$s, %2$d öğe" + "Klasör: %1$s, %2$d veya daha fazla öğe" "Widget\'lar" "Duvar Kağıtları" "Stiller ve duvar kağıtları" diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml index 821096c5c5..57e7c5acb0 100644 --- a/res/values-uk/strings.xml +++ b/res/values-uk/strings.xml @@ -80,7 +80,8 @@ "Торкніться, щоб зберегти зміни" "Папку закрито" "Папку перейменовано на %1$s" - "Папка %1$s" + "Папка \"%1$s\", елементів: %2$d" + "Папка \"%1$s\", елементів: %2$d або більше" "Віджети" "Фонові малюнки" "Стиль і фон" diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml index 6b6ffae77a..881ae53d05 100644 --- a/res/values-ur/strings.xml +++ b/res/values-ur/strings.xml @@ -78,7 +78,8 @@ "نام کی تبدیلی محفوظ کرنے کیلئے تھپتھپائیں" "فولڈر بند ہو گیا" "فولڈر کا نام تبدیل کر کے %1$s کر دیا گیا" - "فولڈر: %1$s" + "فولڈر: %1$s، %2$d آئٹمز" + "فولڈر: %1$s، %2$d یا مزید آئٹمز" "ویجیٹس" "وال پیپرز" "طرزیں اور وال پیپر" diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml index d2939d2486..002a75265f 100644 --- a/res/values-uz/strings.xml +++ b/res/values-uz/strings.xml @@ -78,7 +78,8 @@ "O‘zgarishni saqlash uchun ustiga bosing" "Jild yopildi" "Jild nomi %1$sga o‘zgartirildi" - "Jild: %1$s" + "Jild: %1$s, %2$d fayllar" + "Jild: %1$s, %2$d va undan ortiq fayllar" "Vidjetlar" "Fon rasmlari" "Mavzu va fon rasmlari" @@ -93,7 +94,7 @@ "Bildirishnoma belgilarini ko‘rsatish uchun %1$s ilovasida bildirishnomalarni yoqing" "Sozlamalarni o‘zgartirish" "Bildirishnoma belgilarini chiqarish" - "Ilova belgilarini bosh ekranga chiqaring" + "Ilova ikonkalarini bosh ekranga chiqarish" "Yangi o‘rnatilgan ilovalar ikonkasini bosh ekranga chiqarish" "Noma’lum" "Olib tashlash" diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml index ee835506f6..095c0e3c2d 100644 --- a/res/values-zh-rCN/strings.xml +++ b/res/values-zh-rCN/strings.xml @@ -78,7 +78,8 @@ "点按可保存新名称" "文件夹已关闭" "已将文件夹重命名为“%1$s”" - "文件夹:%1$s" + "文件夹:%1$s%2$d 个项目" + "文件夹:%1$s%2$d 个或更多项目" "微件" "壁纸" "样式和壁纸" diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml index 2fcaa24662..f497c58208 100644 --- a/res/values-zh-rHK/strings.xml +++ b/res/values-zh-rHK/strings.xml @@ -78,7 +78,8 @@ "輕按即可儲存新名稱" "已關閉資料夾" "資料夾已重新命名為「%1$s」" - "資料夾:%1$s" + "資料夾:%1$s%2$d 個項目" + "資料夾:%1$s%2$d 個或以上的項目" "小工具" "桌布" "樣式和桌布" @@ -94,7 +95,7 @@ "變更設定" "顯示通知圓點" "將應用程式圖示新增至主畫面" - "適用於新安裝的應用程式" + "新安裝的應用程式" "不明" "移除" "搜尋" diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml index e015c807e9..d735715eee 100644 --- a/res/values-zh-rTW/strings.xml +++ b/res/values-zh-rTW/strings.xml @@ -78,7 +78,8 @@ "輕觸即可儲存新名稱" "資料夾已關閉" "已將資料夾重新命名為「%1$s」" - "資料夾:%1$s" + "資料夾:%1$s%2$d 個項目" + "資料夾:%1$s%2$d 個以上的項目" "小工具" "桌布" "樣式和桌布" diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml index fe04efb387..d9dc21072d 100644 --- a/res/values-zu/strings.xml +++ b/res/values-zu/strings.xml @@ -78,7 +78,8 @@ "Thepha ukuze ulondoloze ukuqamba kabusha" "Ifolda ivaliwe" "Ifolda iqanjwe kabusha ngo-%1$s" - "Ifolda: %1$s" + "Ifolda: %1$s, %2$d izinto" + "Ifolda: %1$s, %2$d noma izinto eziningi" "Amawijethi" "Izithombe zangemuva" "Izitayela nezithombe zangemuva" From 43218d677b53bb4b49612701cd34ab879fca4c96 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Fri, 10 Jul 2020 14:58:25 -0700 Subject: [PATCH 49/56] Import translations. DO NOT MERGE ANYWHERE Auto-generated-cl: translation import Change-Id: I62e914b1de16fc174d688f092955c96d8e3fe204 --- SecondaryDisplayLauncher/res/values-ne/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SecondaryDisplayLauncher/res/values-ne/strings.xml b/SecondaryDisplayLauncher/res/values-ne/strings.xml index 9a5b0a0590..6bcff21762 100644 --- a/SecondaryDisplayLauncher/res/values-ne/strings.xml +++ b/SecondaryDisplayLauncher/res/values-ne/strings.xml @@ -20,6 +20,6 @@ "उक्त क्रियाकलाप सुरु गर्न सकिएन" - "अनुप्रयोगको सर्टकट थप्नुहोस्‌" + "एपको सर्टकट थप्नुहोस्‌" "वालपेपर सेट गर्नुहोस्" From 4945540579159dfa23575367a2598ded38df8229 Mon Sep 17 00:00:00 2001 From: vadimt Date: Fri, 10 Jul 2020 19:19:08 -0700 Subject: [PATCH 50/56] Removing a method that simply returns false Bug: 154157191 Change-Id: Idedf1ce0ba78e915460cf3ea22cf5e7c70a96e92 --- .../com/android/launcher3/tapl/LogEventChecker.java | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java index 2edfc53f75..ab6465c572 100644 --- a/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java +++ b/tests/tapl/com/android/launcher3/tapl/LogEventChecker.java @@ -94,8 +94,7 @@ public class LogEventChecker { List actual = new ArrayList<>(actualEvents.getNonNull(sequence)); final int mismatchPosition = getMismatchPosition(expectedEvents.getValue(), actual); - hasMismatches = hasMismatches - || mismatchPosition != -1 && !ignoreMistatch(successfulGesture, sequence); + hasMismatches = hasMismatches || mismatchPosition != -1; formatSequenceWithMismatch( sb, sequence, @@ -106,8 +105,7 @@ public class LogEventChecker { // Check for unexpected event sequences in the actual data. for (String actualNamedSequence : actualEvents.keySet()) { if (!mExpectedEvents.containsKey(actualNamedSequence)) { - hasMismatches = hasMismatches - || !ignoreMistatch(successfulGesture, actualNamedSequence); + hasMismatches = true; formatSequenceWithMismatch( sb, actualNamedSequence, @@ -120,13 +118,6 @@ public class LogEventChecker { return hasMismatches ? "mismatching events: " + sb.toString() : null; } - // Workaround for b/154157191 - private static boolean ignoreMistatch(boolean successfulGesture, String sequence) { - // b/156287114 - return false; -// return TestProtocol.SEQUENCE_TIS.equals(sequence) && successfulGesture; - } - // If the list of actual events matches the list of expected events, returns -1, otherwise // the position of the mismatch. private static int getMismatchPosition(List expected, List actual) { From 611fe7618024babb8370bbc7bf32b8a69089c77e Mon Sep 17 00:00:00 2001 From: Tracy Zhou Date: Wed, 1 Jul 2020 17:49:49 -0700 Subject: [PATCH 51/56] Place launcher above the target app in live tile mode Fixes: 160361464 Test: manual Change-Id: Id9d012fb71c6817ce82aa048d3dd56ea4d456f01 --- .../quickstep/util/TaskViewSimulator.java | 5 +++++ .../quickstep/util/TransformParams.java | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java index c994aeffa8..64ae1e0479 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TaskViewSimulator.java @@ -15,6 +15,7 @@ */ package com.android.quickstep.util; +import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE; import static com.android.launcher3.states.RotationHelper.deltaRotation; import static com.android.launcher3.touch.PagedOrientationHandler.MATRIX_POST_TRANSLATE; import static com.android.quickstep.util.RecentsOrientedState.postDisplayRotation; @@ -304,6 +305,10 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { builder.withMatrix(mMatrix) .withWindowCrop(mTmpCropRect) .withCornerRadius(getCurrentCornerRadius()); + + if (ENABLE_QUICKSTEP_LIVE_TILE.get() && params.getRecentsSurface() != null) { + builder.withRelativeLayerTo(params.getRecentsSurface(), Integer.MAX_VALUE); + } } /** diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TransformParams.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TransformParams.java index 7a62e83c39..45f49bb785 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TransformParams.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/util/TransformParams.java @@ -16,6 +16,7 @@ package com.android.quickstep.util; import android.util.FloatProperty; +import android.view.SurfaceControl; import com.android.launcher3.Utilities; import com.android.launcher3.anim.Interpolators; @@ -58,6 +59,7 @@ public class TransformParams { private float mCornerRadius; private RemoteAnimationTargets mTargetSet; private SurfaceTransactionApplier mSyncTransactionApplier; + private SurfaceControl mRecentsSurface; private BuilderProxy mHomeBuilderProxy = BuilderProxy.ALWAYS_VISIBLE; private BuilderProxy mBaseBuilderProxy = BuilderProxy.ALWAYS_VISIBLE; @@ -138,6 +140,8 @@ public class TransformParams { public SurfaceParams[] createSurfaceParams(BuilderProxy proxy) { RemoteAnimationTargets targets = mTargetSet; SurfaceParams[] surfaceParams = new SurfaceParams[targets.unfilteredApps.length]; + mRecentsSurface = getRecentsSurface(targets); + for (int i = 0; i < targets.unfilteredApps.length; i++) { RemoteAnimationTargetCompat app = targets.unfilteredApps[i]; SurfaceParams.Builder builder = new SurfaceParams.Builder(app.leash); @@ -165,6 +169,20 @@ public class TransformParams { return surfaceParams; } + private static SurfaceControl getRecentsSurface(RemoteAnimationTargets targets) { + for (int i = 0; i < targets.unfilteredApps.length; i++) { + RemoteAnimationTargetCompat app = targets.unfilteredApps[i]; + if (app.mode == targets.targetMode) { + if (app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_RECENTS) { + return app.leash.getSurfaceControl(); + } + } else { + return app.leash.getSurfaceControl(); + } + } + return null; + } + // Pubic getters so outside packages can read the values. public float getProgress() { @@ -179,6 +197,10 @@ public class TransformParams { return mCornerRadius; } + public SurfaceControl getRecentsSurface() { + return mRecentsSurface; + } + public RemoteAnimationTargets getTargetSet() { return mTargetSet; } From 3e0bc0da694dd2957cc0db78b79c97f295e41b28 Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 13 Jul 2020 08:59:49 -0700 Subject: [PATCH 52/56] Import translations. DO NOT MERGE Auto-generated-cl: translation import Change-Id: I8e0011048459efe373201bd47cc53c060ed9bd7c --- res/values-iw/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index c25e8795f7..2b39b78cf6 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -80,7 +80,7 @@ "התיקיה נסגרה" "שם התיקיה שונה ל-%1$s" "תיקיה: %1$s" - "רכיבי ווידג\'ט" + "ווידג\'טים" "טפטים" "סגנונות וטפטים" "הגדרות דף הבית" From 49cc656c58f34e96eb33585dd1b6b3c1fb1a7eea Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 13 Jul 2020 09:00:30 -0700 Subject: [PATCH 53/56] Import translations. DO NOT MERGE Auto-generated-cl: translation import Change-Id: I3459c37dc46796cc8269475ac3242bc2fa2e627b --- res/values-iw/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index 35256991d6..d882fd705b 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -79,7 +79,7 @@ "התיקיה נסגרה" "שם התיקיה שונה ל-%1$s" "תיקיה: %1$s" - "רכיבי ווידג\'ט" + "ווידג\'טים" "טפטים" "סגנונות וטפטים" "הגדרות דף הבית" From bda86377d53f3918391b02986b4d2dc69667a39e Mon Sep 17 00:00:00 2001 From: Bill Yi Date: Mon, 13 Jul 2020 09:01:02 -0700 Subject: [PATCH 54/56] Import translations. DO NOT MERGE Auto-generated-cl: translation import Change-Id: Ib6c93b1b07d90da7333bce3cb6cbbf8eb4f7cffe --- res/values-fa/strings.xml | 2 +- res/values-iw/strings.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml index 8b185f20dd..15970431c4 100644 --- a/res/values-fa/strings.xml +++ b/res/values-fa/strings.xml @@ -136,7 +136,7 @@ "شخصی" "کاری" "نمایه کاری" - "داده‌های شخصی از برنامه‌های کاری جدا است و از آن پنهان است" + "داده‌های شخصی از برنامه‌های کاری جدا و از دسترس آن‌ها پنهان هستند" "برنامه‌های کاری و داده‌ها برای سرپرست فناوری اطلاعات نمایان هستند" "بعدی" "متوجه‌ام" diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml index f54859824a..17af02335d 100644 --- a/res/values-iw/strings.xml +++ b/res/values-iw/strings.xml @@ -82,7 +82,7 @@ "שם התיקיה שונה ל-%1$s" "תיקייה: %1$s, מספר הפריטים: %2$d" "תיקייה: %1$s, %2$d פריטים או יותר" - "רכיבי ווידג\'ט" + "ווידג\'טים" "טפטים" "סגנונות וטפטים" "הגדרות דף הבית" From a639d46c8b9bf42b5dae2df7cbcb1641fa1fe1c1 Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 13 Jul 2020 10:41:21 -0700 Subject: [PATCH 55/56] Preventing disambiguation screen when swiping up Bug: 161052537 Change-Id: Ibeeba0841963dc5eb1b5a09847cafc26eb6e4adc --- .../inputconsumers/OverviewWithoutFocusInputConsumer.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java index d972c0f444..1c77a0593d 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/inputconsumers/OverviewWithoutFocusInputConsumer.java @@ -19,7 +19,6 @@ import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_HOME; import static com.android.launcher3.logging.StatsLogManager.LauncherEvent.LAUNCHER_HOME_GESTURE; import android.content.Context; -import android.content.Intent; import android.graphics.PointF; import android.view.MotionEvent; @@ -80,9 +79,7 @@ public class OverviewWithoutFocusInputConsumer implements InputConsumer, @Override public void onSwipeUp(boolean wasFling, PointF finalVelocity) { - mContext.startActivity(new Intent(Intent.ACTION_MAIN) - .addCategory(Intent.CATEGORY_HOME) - .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)); + mContext.startActivity(mGestureState.getHomeIntent()); ActiveGestureLog.INSTANCE.addLog("startQuickstep"); BaseActivity activity = BaseDraggingActivity.fromContext(mContext); int pageIndex = -1; // This number doesn't reflect workspace page index. From 369501d8aa7af1ff9f91cbc87bd895cd185d14be Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Mon, 13 Jul 2020 17:43:51 -0700 Subject: [PATCH 56/56] Fixing swiping up on home interrupting animation Bug: 161180005 Change-Id: Ida59b87b2fb5905d98b0090630a6ce32fc9c36c8 (cherry picked from commit 93188d61da1df0e2abe82775300582915b353c6e) --- .../src/com/android/quickstep/BaseSwipeUpHandlerV2.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java index 37aa0dadd2..6c4c5d3f4d 100644 --- a/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java +++ b/quickstep/recents_ui_overrides/src/com/android/quickstep/BaseSwipeUpHandlerV2.java @@ -42,6 +42,7 @@ import static com.android.quickstep.SysUINavigationMode.Mode.TWO_BUTTONS; import static com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState.HIDE; import static com.android.quickstep.util.ShelfPeekAnim.ShelfAnimState.PEEK; import static com.android.quickstep.views.RecentsView.UPDATE_SYSUI_FLAGS_THRESHOLD; +import static com.android.systemui.shared.system.RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME; import android.animation.Animator; import android.animation.TimeInterpolator; @@ -90,6 +91,7 @@ import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.InputConsumerController; import com.android.systemui.shared.system.LatencyTrackerCompat; import com.android.systemui.shared.system.RemoteAnimationTargetCompat; +import com.android.systemui.shared.system.TaskInfoCompat; import com.android.systemui.shared.system.TaskStackChangeListener; /** @@ -940,7 +942,8 @@ public abstract class BaseSwipeUpHandlerV2, Q exte @Override public void onActivityRestartAttempt(ActivityManager.RunningTaskInfo task, boolean homeTaskVisible, boolean clearedTask, boolean wasVisible) { - if (task.taskId == mGestureState.getRunningTaskId()) { + if (task.taskId == mGestureState.getRunningTaskId() + && TaskInfoCompat.getActivityType(task) != ACTIVITY_TYPE_HOME) { // Since this is an edge case, just cancel and relaunch with default activity // options (since we don't know if there's an associated app icon to launch from) endRunningWindowAnim(true /* cancel */); @@ -1327,6 +1330,6 @@ public abstract class BaseSwipeUpHandlerV2, Q exte private static boolean isNotInRecents(RemoteAnimationTargetCompat app) { return app.isNotInRecents - || app.activityType == RemoteAnimationTargetCompat.ACTIVITY_TYPE_HOME; + || app.activityType == ACTIVITY_TYPE_HOME; } }