Merge "Waiting for the drop bar to go away after dragging an icon" into ub-launcher3-master
diff --git a/AndroidManifest-common.xml b/AndroidManifest-common.xml
index 979096c..819e6bc 100644
--- a/AndroidManifest-common.xml
+++ b/AndroidManifest-common.xml
@@ -154,12 +154,13 @@
<!--
The content provider for exposing various launcher grid options.
+ TODO: Enable when all apps columns are correct
TODO: Add proper permissions
- -->
<provider
android:name="com.android.launcher3.graphics.GridOptionsProvider"
android:authorities="${packageName}.grid_control"
android:exported="true" />
+ -->
<!--
The settings activity. To extend point settings_fragment_name to appropriate fragment class
diff --git a/quickstep/libs/sysui_shared.jar b/quickstep/libs/sysui_shared.jar
index 42fb42d..9ccd477 100644
--- a/quickstep/libs/sysui_shared.jar
+++ b/quickstep/libs/sysui_shared.jar
Binary files differ
diff --git a/quickstep/src/com/android/quickstep/DeferredTouchConsumer.java b/quickstep/src/com/android/quickstep/DeferredTouchConsumer.java
deleted file mode 100644
index 1633485..0000000
--- a/quickstep/src/com/android/quickstep/DeferredTouchConsumer.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2018 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package com.android.quickstep;
-
-import android.annotation.TargetApi;
-import android.os.Build;
-import android.view.Choreographer;
-import android.view.MotionEvent;
-import android.view.VelocityTracker;
-
-/**
- * A TouchConsumer which defers all events on the UIThread until the consumer is created.
- */
-@TargetApi(Build.VERSION_CODES.P)
-public class DeferredTouchConsumer implements TouchConsumer {
-
- private final VelocityTracker mVelocityTracker;
- private final DeferredTouchProvider mTouchProvider;
-
- private MotionEventQueue mMyQueue;
- private TouchConsumer mTarget;
-
- public DeferredTouchConsumer(DeferredTouchProvider touchProvider) {
- mVelocityTracker = VelocityTracker.obtain();
- mTouchProvider = touchProvider;
- }
-
- @Override
- public void accept(MotionEvent event) {
- mTarget.accept(event);
- }
-
- @Override
- public void reset() {
- mTarget.reset();
- }
-
- @Override
- public void onQuickScrubStart() {
- mTarget.onQuickScrubStart();
- }
-
- @Override
- public void onQuickScrubEnd() {
- mTarget.onQuickScrubEnd();
- }
-
- @Override
- public void onQuickScrubProgress(float progress) {
- mTarget.onQuickScrubProgress(progress);
- }
-
- @Override
- public void onQuickStep(MotionEvent ev) {
- mTarget.onQuickStep(ev);
- }
-
- @Override
- public void onCommand(int command) {
- mTarget.onCommand(command);
- }
-
- @Override
- public void preProcessMotionEvent(MotionEvent ev) {
- mVelocityTracker.addMovement(ev);
- }
-
- @Override
- public Choreographer getIntrimChoreographer(MotionEventQueue queue) {
- mMyQueue = queue;
- return null;
- }
-
- @Override
- public void deferInit() {
- mTarget = mTouchProvider.createTouchConsumer(mVelocityTracker);
- mTarget.getIntrimChoreographer(mMyQueue);
- }
-
- @Override
- public boolean forceToLauncherConsumer() {
- return mTarget.forceToLauncherConsumer();
- }
-
- @Override
- public OtherActivityTouchConsumer.RecentsAnimationState getRecentsAnimationStateToReuse() {
- return mTarget.getRecentsAnimationStateToReuse();
- }
-
- @Override
- public boolean deferNextEventToMainThread() {
- // If our target is still null, defer the next target as well
- TouchConsumer target = mTarget;
- return target == null ? true : target.deferNextEventToMainThread();
- }
-
- @Override
- public void onShowOverviewFromAltTab() {
- mTarget.onShowOverviewFromAltTab();
- }
-
- public interface DeferredTouchProvider {
-
- TouchConsumer createTouchConsumer(VelocityTracker tracker);
- }
-}
diff --git a/quickstep/src/com/android/quickstep/MotionEventQueue.java b/quickstep/src/com/android/quickstep/MotionEventQueue.java
index 8a598a3..b61268b 100644
--- a/quickstep/src/com/android/quickstep/MotionEventQueue.java
+++ b/quickstep/src/com/android/quickstep/MotionEventQueue.java
@@ -15,21 +15,23 @@
*/
package com.android.quickstep;
-import static android.view.MotionEvent.ACTION_CANCEL;
import static android.view.MotionEvent.ACTION_MASK;
-import static android.view.MotionEvent.ACTION_MOVE;
import static android.view.MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-import static com.android.quickstep.TouchConsumer.INTERACTION_QUICK_SCRUB;
import android.annotation.TargetApi;
import android.os.Build;
+import android.os.Looper;
import android.util.Log;
+import android.util.Pair;
import android.view.Choreographer;
+import android.view.InputEvent;
import android.view.MotionEvent;
-import com.android.systemui.shared.system.ChoreographerCompat;
+import com.android.systemui.shared.system.InputChannelCompat;
+import com.android.systemui.shared.system.InputChannelCompat.InputEventDispatcher;
+import com.android.systemui.shared.system.InputChannelCompat.InputEventReceiver;
-import java.util.ArrayList;
+import java.util.function.Supplier;
/**
* Helper class for batching input events
@@ -49,153 +51,88 @@
ACTION_VIRTUAL | (3 << ACTION_POINTER_INDEX_SHIFT);
private static final int ACTION_RESET =
ACTION_VIRTUAL | (4 << ACTION_POINTER_INDEX_SHIFT);
- private static final int ACTION_DEFER_INIT =
- ACTION_VIRTUAL | (5 << ACTION_POINTER_INDEX_SHIFT);
private static final int ACTION_SHOW_OVERVIEW_FROM_ALT_TAB =
- ACTION_VIRTUAL | (6 << ACTION_POINTER_INDEX_SHIFT);
+ ACTION_VIRTUAL | (5 << ACTION_POINTER_INDEX_SHIFT);
private static final int ACTION_QUICK_STEP =
- ACTION_VIRTUAL | (7 << ACTION_POINTER_INDEX_SHIFT);
+ ACTION_VIRTUAL | (6 << ACTION_POINTER_INDEX_SHIFT);
private static final int ACTION_COMMAND =
+ ACTION_VIRTUAL | (7 << ACTION_POINTER_INDEX_SHIFT);
+ private static final int ACTION_SWITCH_CONSUMER =
ACTION_VIRTUAL | (8 << ACTION_POINTER_INDEX_SHIFT);
- private final EventArray mEmptyArray = new EventArray();
- private final Object mExecutionLock = new Object();
+ private final InputEventDispatcher mDispatcher;
+ private final InputEventReceiver mReceiver;
- // We use two arrays and swap the current index when one array is being consumed
- private final EventArray[] mArrays = new EventArray[] {new EventArray(), new EventArray()};
- private int mCurrentIndex = 0;
+ private final Object mConsumerParamsLock = new Object();
+ private Supplier[] mConsumerParams = new Supplier[2];
- private final Runnable mMainFrameCallback = this::frameCallbackForMainChoreographer;
- private final Runnable mInterimFrameCallback = this::frameCallbackForInterimChoreographer;
+ private TouchConsumer mConsumer;
- private final Choreographer mMainChoreographer;
+ public MotionEventQueue(Looper looper, Choreographer choreographer) {
+ Pair<InputEventDispatcher, InputEventReceiver> pair = InputChannelCompat.createPair(
+ "sysui-callbacks", looper, choreographer, this::onInputEvent);
- private final TouchConsumer mConsumer;
-
- private Choreographer mInterimChoreographer;
- private Choreographer mCurrentChoreographer;
-
- private Runnable mCurrentRunnable;
-
- public MotionEventQueue(Choreographer choreographer, TouchConsumer consumer) {
- mMainChoreographer = choreographer;
- mConsumer = consumer;
- mCurrentChoreographer = mMainChoreographer;
- mCurrentRunnable = mMainFrameCallback;
-
- setInterimChoreographer(consumer.getIntrimChoreographer(this));
+ mConsumer = TouchConsumer.NO_OP;
+ mDispatcher = pair.first;
+ mReceiver = pair.second;
}
- public void setInterimChoreographer(Choreographer choreographer) {
- synchronized (mExecutionLock) {
- synchronized (mArrays) {
- setInterimChoreographerLocked(choreographer);
- ChoreographerCompat.postInputFrame(mCurrentChoreographer, mCurrentRunnable);
- }
+ private void onInputEvent(InputEvent ev) {
+ if (!(ev instanceof MotionEvent)) {
+ throw new IllegalStateException("Unknown event " + ev);
}
- }
-
- private void setInterimChoreographerLocked(Choreographer choreographer) {
- mInterimChoreographer = choreographer;
- if (choreographer == null) {
- mCurrentChoreographer = mMainChoreographer;
- mCurrentRunnable = mMainFrameCallback;
+ MotionEvent event = (MotionEvent) ev;
+ if (event.getActionMasked() == ACTION_VIRTUAL) {
+ switch (event.getAction()) {
+ case ACTION_QUICK_SCRUB_START:
+ mConsumer.onQuickScrubStart();
+ break;
+ case ACTION_QUICK_SCRUB_PROGRESS:
+ mConsumer.onQuickScrubProgress(event.getX());
+ break;
+ case ACTION_QUICK_SCRUB_END:
+ mConsumer.onQuickScrubEnd();
+ break;
+ case ACTION_RESET:
+ mConsumer.reset();
+ break;
+ case ACTION_SHOW_OVERVIEW_FROM_ALT_TAB:
+ mConsumer.onShowOverviewFromAltTab();
+ mConsumer.onQuickScrubStart();
+ break;
+ case ACTION_QUICK_STEP:
+ mConsumer.onQuickStep(event);
+ break;
+ case ACTION_COMMAND:
+ mConsumer.onCommand(event.getSource());
+ break;
+ case ACTION_SWITCH_CONSUMER:
+ synchronized (mConsumerParamsLock) {
+ int index = event.getSource();
+ mConsumer = (TouchConsumer) mConsumerParams[index].get();
+ mConsumerParams[index] = null;
+ }
+ break;
+ default:
+ Log.e(TAG, "Invalid virtual event: " + event.getAction());
+ }
} else {
- mCurrentChoreographer = mInterimChoreographer;
- mCurrentRunnable = mInterimFrameCallback;
+ mConsumer.accept(event);
}
}
public void queue(MotionEvent event) {
- mConsumer.preProcessMotionEvent(event);
- queueNoPreProcess(event);
+ mDispatcher.dispatch(event);
}
- private void queueNoPreProcess(MotionEvent event) {
- synchronized (mArrays) {
- EventArray array = mArrays[mCurrentIndex];
- if (array.isEmpty()) {
- ChoreographerCompat.postInputFrame(mCurrentChoreographer, mCurrentRunnable);
- }
-
- int eventAction = event.getAction();
- if (eventAction == ACTION_MOVE && array.lastEventAction == ACTION_MOVE) {
- // Replace and recycle the last event
- array.set(array.size() - 1, event).recycle();
- } else {
- array.add(event);
- array.lastEventAction = eventAction;
- }
- }
+ private void queueVirtualAction(int action, float param) {
+ queue(MotionEvent.obtain(0, 0, action, param, 0, 0));
}
- private void frameCallbackForMainChoreographer() {
- runFor(mMainChoreographer);
- }
-
- private void frameCallbackForInterimChoreographer() {
- runFor(mInterimChoreographer);
- }
-
- private void runFor(Choreographer caller) {
- synchronized (mExecutionLock) {
- EventArray array = swapAndGetCurrentArray(caller);
- int size = array.size();
- for (int i = 0; i < size; i++) {
- MotionEvent event = array.get(i);
- if (event.getActionMasked() == ACTION_VIRTUAL) {
- switch (event.getAction()) {
- case ACTION_QUICK_SCRUB_START:
- mConsumer.onQuickScrubStart();
- break;
- case ACTION_QUICK_SCRUB_PROGRESS:
- mConsumer.onQuickScrubProgress(event.getX());
- break;
- case ACTION_QUICK_SCRUB_END:
- mConsumer.onQuickScrubEnd();
- break;
- case ACTION_RESET:
- mConsumer.reset();
- break;
- case ACTION_DEFER_INIT:
- mConsumer.deferInit();
- break;
- case ACTION_SHOW_OVERVIEW_FROM_ALT_TAB:
- mConsumer.onShowOverviewFromAltTab();
- mConsumer.onQuickScrubStart();
- break;
- case ACTION_QUICK_STEP:
- mConsumer.onQuickStep(event);
- break;
- case ACTION_COMMAND:
- mConsumer.onCommand(event.getSource());
- break;
- default:
- Log.e(TAG, "Invalid virtual event: " + event.getAction());
- }
- } else {
- mConsumer.accept(event);
- }
- event.recycle();
- }
- array.clear();
- array.lastEventAction = ACTION_CANCEL;
- }
- }
-
- private EventArray swapAndGetCurrentArray(Choreographer caller) {
- synchronized (mArrays) {
- if (caller != mCurrentChoreographer) {
- return mEmptyArray;
- }
- EventArray current = mArrays[mCurrentIndex];
- mCurrentIndex = mCurrentIndex ^ 1;
- return current;
- }
- }
-
- private void queueVirtualAction(int action, float progress) {
- queueNoPreProcess(MotionEvent.obtain(0, 0, action, progress, 0, 0));
+ private void queueVirtualAction(int action, int param) {
+ MotionEvent ev = MotionEvent.obtain(0, 0, action, 0, 0, 0);
+ ev.setSource(param);
+ queue(ev);
}
public void onQuickScrubStart() {
@@ -216,33 +153,44 @@
public void onQuickStep(MotionEvent event) {
event.setAction(ACTION_QUICK_STEP);
- queueNoPreProcess(event);
+ queue(event);
}
public void reset() {
queueVirtualAction(ACTION_RESET, 0);
}
- public void deferInit() {
- queueVirtualAction(ACTION_DEFER_INIT, 0);
+ public void onCommand(int command) {
+ queueVirtualAction(ACTION_COMMAND, command);
}
- public void onCommand(int command) {
- MotionEvent ev = MotionEvent.obtain(0, 0, ACTION_COMMAND, 0, 0, 0);
- ev.setSource(command);
- queueNoPreProcess(ev);
+ public void switchConsumer(Supplier<TouchConsumer> consumer) {
+ int index = -1;
+ synchronized (mConsumerParamsLock) {
+ // Find a null index
+ for (int i = 0; i < mConsumerParams.length; i++) {
+ if (mConsumerParams[i] == null) {
+ index = i;
+ break;
+ }
+ }
+ if (index < 0) {
+ index = mConsumerParams.length;
+ final Supplier[] newValues = new Supplier[index + 1];
+ System.arraycopy(mConsumerParams, 0, newValues, 0, index);
+ mConsumerParams = newValues;
+ }
+ mConsumerParams[index] = consumer;
+ }
+ queueVirtualAction(ACTION_SWITCH_CONSUMER, index);
}
public TouchConsumer getConsumer() {
return mConsumer;
}
- private static class EventArray extends ArrayList<MotionEvent> {
-
- public int lastEventAction = ACTION_CANCEL;
-
- public EventArray() {
- super(4);
- }
+ public void dispose() {
+ mDispatcher.dispose();
+ mReceiver.dispose();
}
}
diff --git a/quickstep/src/com/android/quickstep/MultiStateCallback.java b/quickstep/src/com/android/quickstep/MultiStateCallback.java
index 1592a97..a408f95 100644
--- a/quickstep/src/com/android/quickstep/MultiStateCallback.java
+++ b/quickstep/src/com/android/quickstep/MultiStateCallback.java
@@ -15,8 +15,12 @@
*/
package com.android.quickstep;
+import static com.android.quickstep.WindowTransformSwipeHandler.STATES;
+
+import android.util.Log;
import android.util.SparseArray;
+import java.util.StringJoiner;
import java.util.function.Consumer;
/**
@@ -24,6 +28,9 @@
*/
public class MultiStateCallback {
+ private static final String TAG = "MultiStateCallback";
+ private static final boolean DEBUG_STATES = false;
+
private final SparseArray<Runnable> mCallbacks = new SparseArray<>();
private final SparseArray<Consumer<Boolean>> mStateChangeHandlers = new SparseArray<>();
@@ -97,4 +104,25 @@
public boolean hasStates(int stateMask) {
return (mState & stateMask) == stateMask;
}
+
+ private void debugNewState(int stateFlag) {
+ if (!DEBUG_STATES) {
+ return;
+ }
+
+ int state = getState();
+ StringJoiner currentStateStr = new StringJoiner(", ", "[", "]");
+ String stateFlagStr = "Unknown-" + stateFlag;
+ for (int i = 0; i < STATES.length; i++) {
+ if ((state & (i << i)) != 0) {
+ currentStateStr.add(STATES[i]);
+ }
+ if (stateFlag == (1 << i)) {
+ stateFlagStr = STATES[i] + " (" + stateFlag + ")";
+ }
+ }
+ Log.d(TAG, "[" + System.identityHashCode(this) + "] Adding " + stateFlagStr + " to "
+ + currentStateStr);
+ }
+
}
diff --git a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
index 13a9341..5801c10 100644
--- a/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/OtherActivityTouchConsumer.java
@@ -21,6 +21,7 @@
import static android.view.MotionEvent.ACTION_POINTER_UP;
import static android.view.MotionEvent.ACTION_UP;
import static android.view.MotionEvent.INVALID_POINTER_ID;
+
import static com.android.launcher3.util.RaceConditionTracker.ENTER;
import static com.android.launcher3.util.RaceConditionTracker.EXIT;
import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
@@ -35,10 +36,8 @@
import android.graphics.Rect;
import android.os.Build;
import android.os.Bundle;
-import android.os.Looper;
import android.os.SystemClock;
import android.util.SparseArray;
-import android.view.Choreographer;
import android.view.Display;
import android.view.MotionEvent;
import android.view.Surface;
@@ -63,9 +62,6 @@
import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
import com.android.systemui.shared.system.WindowManagerWrapper;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.TimeUnit;
-
import androidx.annotation.Nullable;
/**
@@ -74,7 +70,6 @@
@TargetApi(Build.VERSION_CODES.P)
public class OtherActivityTouchConsumer extends ContextWrapper implements TouchConsumer {
- private static final long LAUNCHER_DRAW_TIMEOUT_MS = 150;
public static final String DOWN_EVT = "OtherActivityTouchConsumer.DOWN";
private static final String UP_EVT = "OtherActivityTouchConsumer.UP";
@@ -84,12 +79,15 @@
private final Intent mHomeIntent;
private final ActivityControlHelper mActivityControlHelper;
private final MainThreadExecutor mMainThreadExecutor;
- private final Choreographer mBackgroundThreadChoreographer;
private final OverviewCallbacks mOverviewCallbacks;
private final TaskOverlayFactory mTaskOverlayFactory;
private final TouchInteractionLog mTouchInteractionLog;
private final InputConsumerController mInputConsumer;
+ private final MotionEventQueue mEventQueue;
+ private final MotionPauseDetector mMotionPauseDetector;
+ private VelocityTracker mVelocityTracker;
+
private final boolean mIsDeferredDownTarget;
private final PointF mDownPos = new PointF();
private final PointF mLastPos = new PointF();
@@ -103,29 +101,28 @@
private Rect mStableInsets = new Rect();
private boolean mCanGestureBeContinued;
- private VelocityTracker mVelocityTracker;
- private MotionPauseDetector mMotionPauseDetector;
- private MotionEventQueue mEventQueue;
private boolean mIsGoingToLauncher;
private RecentsAnimationState mRecentsAnimationState;
public OtherActivityTouchConsumer(Context base, RunningTaskInfo runningTaskInfo,
RecentsModel recentsModel, Intent homeIntent, ActivityControlHelper activityControl,
- MainThreadExecutor mainThreadExecutor, Choreographer backgroundThreadChoreographer,
+ MainThreadExecutor mainThreadExecutor,
@HitTarget int downHitTarget, OverviewCallbacks overviewCallbacks,
TaskOverlayFactory taskOverlayFactory, InputConsumerController inputConsumer,
- VelocityTracker velocityTracker, TouchInteractionLog touchInteractionLog,
+ TouchInteractionLog touchInteractionLog, MotionEventQueue eventQueue,
@Nullable RecentsAnimationState recentsAnimationStateToReuse) {
super(base);
mRunningTask = runningTaskInfo;
mRecentsModel = recentsModel;
mHomeIntent = homeIntent;
- mVelocityTracker = velocityTracker;
+
mMotionPauseDetector = new MotionPauseDetector(base);
+ mEventQueue = eventQueue;
+ mVelocityTracker = VelocityTracker.obtain();
+
mActivityControlHelper = activityControl;
mMainThreadExecutor = mainThreadExecutor;
- mBackgroundThreadChoreographer = backgroundThreadChoreographer;
mIsDeferredDownTarget = activityControl.deferStartingActivity(downHitTarget);
mOverviewCallbacks = overviewCallbacks;
mTaskOverlayFactory = taskOverlayFactory;
@@ -145,6 +142,12 @@
if (mVelocityTracker == null) {
return;
}
+ mVelocityTracker.addMovement(ev);
+ if (ev.getActionMasked() == ACTION_POINTER_UP) {
+ mVelocityTracker.clear();
+ mMotionPauseDetector.clear();
+ }
+
mTouchInteractionLog.addMotionEvent(ev);
switch (ev.getActionMasked()) {
case ACTION_DOWN: {
@@ -275,56 +278,33 @@
mInteractionHandler = handler;
handler.setGestureEndCallback(mEventQueue::reset);
mMotionPauseDetector.setOnMotionPauseListener(handler::onMotionPauseChanged);
-
- CountDownLatch drawWaitLock = new CountDownLatch(1);
- handler.setLauncherOnDrawCallback(() -> {
- drawWaitLock.countDown();
- if (handler == mInteractionHandler) {
- switchToMainChoreographer();
- }
- });
handler.initWhenReady();
TraceHelper.beginSection("RecentsController");
- AssistDataReceiver assistDataReceiver = !mTaskOverlayFactory.needAssist() ? null :
- new AssistDataReceiver() {
- @Override
- public void onHandleAssistData(Bundle bundle) {
- if (mInteractionHandler == null) {
- // Interaction is probably complete
- mRecentsModel.preloadAssistData(mRunningTask.id, bundle);
- } else if (handler == mInteractionHandler) {
- handler.onAssistDataReceived(bundle);
- }
- }
- };
-
- Runnable startActivity;
if (reuseOldAnimState) {
- startActivity = () -> {
- handler.onRecentsAnimationStart(mRecentsAnimationState.mController,
- mRecentsAnimationState.mTargets, mRecentsAnimationState.mHomeContentInsets,
- mRecentsAnimationState.mMinimizedHomeBounds);
- };
+ handler.onRecentsAnimationStart(mRecentsAnimationState.mController,
+ mRecentsAnimationState.mTargets, mRecentsAnimationState.mHomeContentInsets,
+ mRecentsAnimationState.mMinimizedHomeBounds);
} else {
- startActivity = () -> ActivityManagerWrapper.getInstance().startRecentsActivity(
- mHomeIntent, assistDataReceiver, mRecentsAnimationState, null, null);
+ AssistDataReceiver assistDataReceiver = !mTaskOverlayFactory.needAssist() ? null :
+ new AssistDataReceiver() {
+ @Override
+ public void onHandleAssistData(Bundle bundle) {
+ if (mInteractionHandler == null) {
+ // Interaction is probably complete
+ mRecentsModel.preloadAssistData(mRunningTask.id, bundle);
+ } else if (handler == mInteractionHandler) {
+ handler.onAssistDataReceived(bundle);
+ }
+ }
+ };
+
+ BackgroundExecutor.get().submit(
+ () -> ActivityManagerWrapper.getInstance().startRecentsActivity(
+ mHomeIntent, assistDataReceiver, mRecentsAnimationState, null, null));
}
-
- if (Looper.myLooper() != Looper.getMainLooper()) {
- startActivity.run();
- try {
- drawWaitLock.await(LAUNCHER_DRAW_TIMEOUT_MS, TimeUnit.MILLISECONDS);
- } catch (Exception e) {
- // We have waited long enough for launcher to draw
- }
- } else {
- // We should almost always get touch-town on background thread. This is an edge case
- // when the background Choreographer has not yet initialized.
- BackgroundExecutor.get().submit(startActivity);
- }
}
@Override
@@ -380,12 +360,6 @@
}
@Override
- public Choreographer getIntrimChoreographer(MotionEventQueue queue) {
- mEventQueue = queue;
- return mBackgroundThreadChoreographer;
- }
-
- @Override
public void onQuickScrubStart() {
if (!mPassedInitialSlop && mIsDeferredDownTarget && mInteractionHandler == null) {
// If we deferred starting the window animation on touch down, then
@@ -444,21 +418,6 @@
return displacement;
}
- public void switchToMainChoreographer() {
- mEventQueue.setInterimChoreographer(null);
- }
-
- @Override
- public void preProcessMotionEvent(MotionEvent ev) {
- if (mVelocityTracker != null) {
- mVelocityTracker.addMovement(ev);
- if (ev.getActionMasked() == ACTION_POINTER_UP) {
- mVelocityTracker.clear();
- mMotionPauseDetector.clear();
- }
- }
- }
-
@Override
public boolean forceToLauncherConsumer() {
return mIsGoingToLauncher;
diff --git a/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java b/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java
index 60bd9fb..c2d4d80 100644
--- a/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java
+++ b/quickstep/src/com/android/quickstep/RecentsAnimationWrapper.java
@@ -23,6 +23,7 @@
import com.android.launcher3.MainThreadExecutor;
import com.android.launcher3.util.LooperExecutor;
+import com.android.launcher3.util.Preconditions;
import com.android.launcher3.util.TraceHelper;
import com.android.launcher3.util.UiThreadHelper;
import com.android.quickstep.util.RemoteAnimationTargetSet;
@@ -33,6 +34,8 @@
import java.util.concurrent.ExecutorService;
import java.util.function.Supplier;
+import androidx.annotation.UiThread;
+
/**
* Wrapper around RecentsAnimationController to help with some synchronization
*/
@@ -67,8 +70,10 @@
mTouchProxySupplier = touchProxySupplier;
}
+ @UiThread
public synchronized void setController(
RecentsAnimationControllerCompat controller, RemoteAnimationTargetSet targetSet) {
+ Preconditions.assertUIThread();
TraceHelper.partitionSection("RecentsController", "Set controller " + controller);
this.mController = controller;
this.targetSet = targetSet;
diff --git a/quickstep/src/com/android/quickstep/TouchConsumer.java b/quickstep/src/com/android/quickstep/TouchConsumer.java
index 1d5ffe7..ef37595 100644
--- a/quickstep/src/com/android/quickstep/TouchConsumer.java
+++ b/quickstep/src/com/android/quickstep/TouchConsumer.java
@@ -17,7 +17,6 @@
import android.annotation.TargetApi;
import android.os.Build;
-import android.view.Choreographer;
import android.view.MotionEvent;
import androidx.annotation.IntDef;
@@ -56,18 +55,6 @@
default void onCommand(int command) { }
- /**
- * Called on the binder thread to allow the consumer to process the motion event before it is
- * posted on a handler thread.
- */
- default void preProcessMotionEvent(MotionEvent ev) { }
-
- default Choreographer getIntrimChoreographer(MotionEventQueue queue) {
- return null;
- }
-
- default void deferInit() { }
-
default boolean deferNextEventToMainThread() {
return false;
}
diff --git a/quickstep/src/com/android/quickstep/TouchInteractionService.java b/quickstep/src/com/android/quickstep/TouchInteractionService.java
index 7da7bcd..0f52deb 100644
--- a/quickstep/src/com/android/quickstep/TouchInteractionService.java
+++ b/quickstep/src/com/android/quickstep/TouchInteractionService.java
@@ -23,8 +23,7 @@
import static android.view.MotionEvent.ACTION_UP;
import static com.android.launcher3.config.FeatureFlags.ENABLE_QUICKSTEP_LIVE_TILE;
-import static com.android.systemui.shared.system.ActivityManagerWrapper
- .CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
+import static com.android.systemui.shared.system.ActivityManagerWrapper.CLOSE_SYSTEM_WINDOWS_REASON_RECENTS;
import static com.android.systemui.shared.system.NavigationBarCompat.HIT_TARGET_NONE;
import android.annotation.TargetApi;
@@ -33,14 +32,12 @@
import android.content.Intent;
import android.graphics.PointF;
import android.os.Build;
-import android.os.Handler;
-import android.os.HandlerThread;
import android.os.IBinder;
+import android.os.Looper;
import android.util.Log;
import android.util.SparseArray;
import android.view.Choreographer;
import android.view.MotionEvent;
-import android.view.VelocityTracker;
import android.view.ViewConfiguration;
import com.android.launcher3.BaseDraggingActivity;
@@ -52,7 +49,6 @@
import com.android.systemui.shared.recents.IOverviewProxy;
import com.android.systemui.shared.recents.ISystemUiProxy;
import com.android.systemui.shared.system.ActivityManagerWrapper;
-import com.android.systemui.shared.system.ChoreographerCompat;
import com.android.systemui.shared.system.InputConsumerController;
import com.android.systemui.shared.system.NavigationBarCompat.HitTarget;
@@ -78,11 +74,6 @@
private static final String TAG = "TouchInteractionService";
- /**
- * A background thread used for handling UI for another window.
- */
- private static HandlerThread sRemoteUiThread;
-
private final IBinder mMyBinder = new IOverviewProxy.Stub() {
@Override
@@ -191,9 +182,6 @@
private TouchInteractionLog mTouchInteractionLog;
private InputConsumerController mInputConsumer;
- private Choreographer mMainThreadChoreographer;
- private Choreographer mBackgroundThreadChoreographer;
-
@Override
public void onCreate() {
super.onCreate();
@@ -202,8 +190,7 @@
mMainThreadExecutor = new MainThreadExecutor();
mOverviewComponentObserver = new OverviewComponentObserver(this);
mOverviewCommandHelper = new OverviewCommandHelper(this, mOverviewComponentObserver);
- mMainThreadChoreographer = Choreographer.getInstance();
- mEventQueue = new MotionEventQueue(mMainThreadChoreographer, TouchConsumer.NO_OP);
+ mEventQueue = new MotionEventQueue(Looper.myLooper(), Choreographer.getInstance());
mOverviewInteractionState = OverviewInteractionState.INSTANCE.get(this);
mOverviewCallbacks = OverviewCallbacks.get(this);
mTaskOverlayFactory = TaskOverlayFactory.INSTANCE.get(this);
@@ -215,13 +202,13 @@
// Temporarily disable model preload
// new ModelPreload().start(this);
- initBackgroundChoreographer();
}
@Override
public void onDestroy() {
mInputConsumer.unregisterInputConsumer();
mOverviewComponentObserver.onDestroy();
+ mEventQueue.dispose();
sConnected = false;
super.onDestroy();
}
@@ -236,20 +223,18 @@
mEventQueue.reset();
TouchConsumer oldConsumer = mEventQueue.getConsumer();
if (oldConsumer.deferNextEventToMainThread()) {
- mEventQueue = new MotionEventQueue(mMainThreadChoreographer,
- new DeferredTouchConsumer((v) -> getCurrentTouchConsumer(downHitTarget,
- oldConsumer.forceToLauncherConsumer(),
- oldConsumer.getRecentsAnimationStateToReuse(), v)));
- mEventQueue.deferInit();
+ mEventQueue.switchConsumer(() -> getCurrentTouchConsumer(downHitTarget,
+ oldConsumer.forceToLauncherConsumer(),
+ oldConsumer.getRecentsAnimationStateToReuse()));
+
} else {
- mEventQueue = new MotionEventQueue(mMainThreadChoreographer,
- getCurrentTouchConsumer(downHitTarget, false, null, null));
+ TouchConsumer consumer = getCurrentTouchConsumer(downHitTarget, false, null);
+ mEventQueue.switchConsumer(() -> consumer);
}
}
private TouchConsumer getCurrentTouchConsumer(@HitTarget int downHitTarget,
- boolean forceToLauncher, RecentsAnimationState recentsAnimationStateToReuse,
- VelocityTracker tracker) {
+ boolean forceToLauncher, RecentsAnimationState recentsAnimationStateToReuse) {
RunningTaskInfo runningTaskInfo = mAM.getRunningTask(0);
if (runningTaskInfo == null && !forceToLauncher) {
@@ -265,27 +250,15 @@
mOverviewComponentObserver.getActivityControlHelper(), false,
mTouchInteractionLog, false /* waitForWindowAvailable */);
} else {
- if (tracker == null) {
- tracker = VelocityTracker.obtain();
- }
return new OtherActivityTouchConsumer(this, runningTaskInfo, mRecentsModel,
mOverviewComponentObserver.getOverviewIntent(),
mOverviewComponentObserver.getActivityControlHelper(), mMainThreadExecutor,
- mBackgroundThreadChoreographer, downHitTarget, mOverviewCallbacks,
- mTaskOverlayFactory, mInputConsumer, tracker, mTouchInteractionLog,
+ downHitTarget, mOverviewCallbacks,
+ mTaskOverlayFactory, mInputConsumer, mTouchInteractionLog, mEventQueue,
recentsAnimationStateToReuse);
}
}
- private void initBackgroundChoreographer() {
- if (sRemoteUiThread == null) {
- sRemoteUiThread = new HandlerThread("remote-ui");
- sRemoteUiThread.start();
- }
- new Handler(sRemoteUiThread.getLooper()).post(() ->
- mBackgroundThreadChoreographer = ChoreographerCompat.getSfInstance());
- }
-
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
mTouchInteractionLog.dump(pw);
diff --git a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
index 6564950..0e9ddee 100644
--- a/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
+++ b/quickstep/src/com/android/quickstep/WindowTransformSwipeHandler.java
@@ -60,7 +60,6 @@
import android.os.Looper;
import android.os.SystemClock;
import android.os.UserHandle;
-import android.util.Log;
import android.view.HapticFeedbackConstants;
import android.view.MotionEvent;
import android.view.View;
@@ -68,11 +67,9 @@
import android.view.WindowManager;
import android.view.animation.Interpolator;
-import androidx.annotation.AnyThread;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.UiThread;
-import androidx.annotation.WorkerThread;
import com.android.launcher3.AbstractFloatingView;
import com.android.launcher3.BaseDraggingActivity;
@@ -113,13 +110,11 @@
import com.android.systemui.shared.system.SyncRtSurfaceTransactionApplierCompat;
import com.android.systemui.shared.system.WindowCallbacksCompat;
-import java.util.StringJoiner;
import java.util.function.BiFunction;
@TargetApi(Build.VERSION_CODES.O)
public class WindowTransformSwipeHandler<T extends BaseDraggingActivity> {
private static final String TAG = WindowTransformSwipeHandler.class.getSimpleName();
- private static final boolean DEBUG_STATES = false;
// Launcher UI related states
private static final int STATE_LAUNCHER_PRESENT = 1 << 0;
@@ -171,7 +166,7 @@
| STATE_QUICK_SCRUB_START | STATE_APP_CONTROLLER_RECEIVED;
// For debugging, keep in sync with above states
- private static final String[] STATES = new String[] {
+ public static final String[] STATES = new String[] {
"STATE_LAUNCHER_PRESENT",
"STATE_LAUNCHER_STARTED",
"STATE_LAUNCHER_DRAWN",
@@ -280,8 +275,6 @@
private QuickScrubController mQuickScrubController;
private AnimationFactory mAnimationFactory = (t, i) -> { };
- private Runnable mLauncherDrawnCallback;
-
private boolean mWasLauncherAlreadyVisible;
private boolean mPassedOverviewThreshold;
@@ -297,8 +290,7 @@
private final long mTouchTimeMs;
private long mLauncherFrameDrawnTime;
- private boolean mBgLongSwipeMode = false;
- private boolean mUiLongSwipeMode = false;
+ private boolean mLongSwipeMode = false;
private float mLongSwipeDisplacement = 0;
private LongSwipeHelper mLongSwipeController;
@@ -326,13 +318,7 @@
}
private void initStateCallbacks() {
- mStateCallback = new MultiStateCallback() {
- @Override
- public void setState(int stateFlag) {
- debugNewState(stateFlag);
- super.setState(stateFlag);
- }
- };
+ mStateCallback = new MultiStateCallback();
// Re-setup the recents UI when gesture starts, as the state could have been changed during
// that time by a previous window transition.
@@ -416,14 +402,6 @@
}
}
- private void executeOnUiThread(Runnable action) {
- if (Looper.myLooper() == mMainThreadHandler.getLooper()) {
- action.run();
- } else {
- postAsyncCallback(mMainThreadHandler, action);
- }
- }
-
private void setStateOnUiThread(int stateFlag) {
if (Looper.myLooper() == mMainThreadHandler.getLooper()) {
mStateCallback.setState(stateFlag);
@@ -484,7 +462,7 @@
});
mRecentsView.setEnableFreeScroll(false);
mRecentsView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
- if (!mBgLongSwipeMode && mGestureEndTarget != HOME) {
+ if (!mLongSwipeMode && mGestureEndTarget != HOME) {
updateFinalShift();
}
});
@@ -551,10 +529,6 @@
mRecentsView.setRunningTaskIconScaledDown(true);
}
- public void setLauncherOnDrawCallback(Runnable callback) {
- mLauncherDrawnCallback = callback;
- }
-
private void launcherFrameDrawn() {
AlphaProperty property = mActivityControlHelper.getAlphaProperty(mActivity);
if (property.getValue() < 1) {
@@ -575,9 +549,6 @@
mStateCallback.setState(STATE_ACTIVITY_MULTIPLIER_COMPLETE);
}
}
- if (mLauncherDrawnCallback != null) {
- mLauncherDrawnCallback.run();
- }
mLauncherFrameDrawnTime = SystemClock.uptimeMillis();
}
@@ -632,25 +603,11 @@
return TaskView.getCurveScaleForInterpolation(interpolation);
}
- @WorkerThread
- @SuppressWarnings("WrongThread")
+ @UiThread
public void dispatchMotionEventToRecentsView(MotionEvent event, @Nullable Float velocityX) {
if (mRecentsView == null) {
return;
}
- if (Looper.myLooper() == mMainThreadHandler.getLooper()) {
- dispatchMotionEventToRecentsViewUi(event, velocityX);
- } else {
- MotionEvent ev = MotionEvent.obtain(event);
- postAsyncCallback(mMainThreadHandler, () -> {
- dispatchMotionEventToRecentsViewUi(ev, velocityX);
- ev.recycle();
- });
- }
- }
-
- @UiThread
- private void dispatchMotionEventToRecentsViewUi(MotionEvent event, @Nullable Float velocityX) {
// Pass the motion events to RecentsView to allow scrolling during swipe up.
if (!mDispatchedDownEvent) {
// The first event we dispatch should be ACTION_DOWN.
@@ -666,23 +623,21 @@
mRecentsView.simulateTouchEvent(event, velocityX);
}
- @WorkerThread
+ @UiThread
public void updateDisplacement(float displacement) {
// We are moving in the negative x/y direction
displacement = -displacement;
if (displacement > mTransitionDragLength && mTransitionDragLength > 0) {
mCurrentShift.updateValue(1);
- if (!mBgLongSwipeMode && !FeatureFlags.SWIPE_HOME.get()) {
- mBgLongSwipeMode = true;
- executeOnUiThread(this::onLongSwipeEnabledUi);
+ if (!mLongSwipeMode && !FeatureFlags.SWIPE_HOME.get()) {
+ onLongSwipeEnabled();
}
mLongSwipeDisplacement = displacement - mTransitionDragLength;
- executeOnUiThread(this::onLongSwipeDisplacementUpdated);
+ onLongSwipeDisplacementUpdated();
} else {
- if (mBgLongSwipeMode) {
- mBgLongSwipeMode = false;
- executeOnUiThread(this::onLongSwipeDisabledUi);
+ if (mLongSwipeMode) {
+ onLongSwipeDisabled();
}
float translation = Math.max(displacement, 0);
float shift = mTransitionDragLength == 0 ? 0 : translation / mTransitionDragLength;
@@ -694,16 +649,15 @@
setShelfState(isPaused ? PEEK : HIDE, FAST_OUT_SLOW_IN, SHELF_ANIM_DURATION);
}
+ @UiThread
public void setShelfState(ShelfAnimState shelfState, Interpolator interpolator, long duration) {
if (mInteractionType == INTERACTION_NORMAL) {
- executeOnUiThread(() -> {
- mAnimationFactory.setShelfState(shelfState, interpolator, duration);
- mIsShelfPeeking = shelfState == PEEK;
- if (mRecentsView != null && shelfState.shouldPreformHaptic) {
- mRecentsView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY,
- HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
- }
- });
+ mAnimationFactory.setShelfState(shelfState, interpolator, duration);
+ mIsShelfPeeking = shelfState == PEEK;
+ if (mRecentsView != null && shelfState.shouldPreformHaptic) {
+ mRecentsView.performHapticFeedback(HapticFeedbackConstants.VIRTUAL_KEY,
+ HapticFeedbackConstants.FLAG_IGNORE_VIEW_SETTING);
+ }
}
}
@@ -721,7 +675,7 @@
updateLauncherTransitionProgress();
}
- @WorkerThread
+ @UiThread
private void updateFinalShift() {
float shift = mCurrentShift.value;
@@ -736,12 +690,8 @@
}
float offsetScale = getTaskCurveScaleForOffsetX(offsetX,
mClipAnimationHelper.getTargetRect().width());
- SyncRtSurfaceTransactionApplierCompat syncTransactionApplier
- = Looper.myLooper() == mMainThreadHandler.getLooper()
- ? mSyncTransactionApplier
- : null;
mTransformParams.setProgress(shift).setOffsetX(offsetX).setOffsetScale(offsetScale)
- .setSyncTransactionApplier(syncTransactionApplier);
+ .setSyncTransactionApplier(mSyncTransactionApplier);
mClipAnimationHelper.applyTransform(mRecentsAnimationWrapper.targetSet,
mTransformParams);
@@ -752,14 +702,10 @@
}
}
- executeOnUiThread(this::updateFinalShiftUi);
- }
-
- private void updateFinalShiftUi() {
if (ENABLE_QUICKSTEP_LIVE_TILE.get()) {
if (mRecentsAnimationWrapper.getController() != null && mLayoutListener != null) {
mLayoutListener.open();
- mLayoutListener.update(mCurrentShift.value > 1, mUiLongSwipeMode,
+ mLayoutListener.update(mCurrentShift.value > 1, mLongSwipeMode,
mClipAnimationHelper.getCurrentRectWithInsets(),
mClipAnimationHelper.getCurrentCornerRadius());
}
@@ -801,6 +747,7 @@
? 0 : (progress - mShiftAtGestureStart) / (1 - mShiftAtGestureStart));
}
+ @UiThread
public void onRecentsAnimationStart(RecentsAnimationControllerCompat controller,
RemoteAnimationTargetSet targets, Rect homeContentInsets, Rect minimizedHomeBounds) {
DeviceProfile dp = InvariantDeviceProfile.INSTANCE.get(mContext).getDeviceProfile(mContext);
@@ -842,6 +789,7 @@
mPassedOverviewThreshold = false;
}
+ @UiThread
public void onRecentsAnimationCanceled() {
mRecentsAnimationWrapper.setController(null, null);
mActivityInitListener.unregister();
@@ -849,6 +797,7 @@
mTouchInteractionLog.cancelRecentsAnimation();
}
+ @UiThread
public void onGestureStarted() {
notifyGestureStartedAsync();
mShiftAtGestureStart = mCurrentShift.value;
@@ -860,10 +809,9 @@
}
/**
- * Notifies the launcher that the swipe gesture has started. This can be called multiple times
- * on both background and UI threads
+ * Notifies the launcher that the swipe gesture has started. This can be called multiple times.
*/
- @AnyThread
+ @UiThread
private void notifyGestureStartedAsync() {
final T curActivity = mActivity;
if (curActivity != null) {
@@ -873,7 +821,7 @@
}
}
- @WorkerThread
+ @UiThread
public void onGestureEnded(float endVelocity, float velocityX) {
float flingThreshold = mContext.getResources()
.getDimension(R.dimen.quickstep_fling_threshold_velocity);
@@ -882,8 +830,8 @@
mLogAction = isFling ? Touch.FLING : Touch.SWIPE;
- if (mBgLongSwipeMode) {
- executeOnUiThread(() -> onLongSwipeGestureFinishUi(endVelocity, isFling, velocityX));
+ if (mLongSwipeMode) {
+ onLongSwipeGestureFinish(endVelocity, isFling, velocityX);
} else {
handleNormalGestureEnd(endVelocity, isFling, velocityX);
}
@@ -904,6 +852,7 @@
mTouchInteractionLog);
}
+ @UiThread
private void handleNormalGestureEnd(float endVelocity, boolean isFling, float velocityX) {
float velocityPxPerMs = endVelocity / 1000;
float velocityXPxPerMs = velocityX / 1000;
@@ -1033,12 +982,14 @@
}
/** Animates to the given progress, where 0 is the current app and 1 is overview. */
+ @UiThread
private void animateToProgress(float start, float end, long duration, Interpolator interpolator,
GestureEndTarget target, float velocityPxPerMs) {
mRecentsAnimationWrapper.runOnInit(() -> animateToProgressInternal(start, end, duration,
interpolator, target, velocityPxPerMs));
}
+ @UiThread
private void animateToProgressInternal(float start, float end, long duration,
Interpolator interpolator, GestureEndTarget target, float velocityPxPerMs) {
mGestureEndTarget = target;
@@ -1080,44 +1031,37 @@
}
});
windowAnim.start();
- long startMillis = SystemClock.uptimeMillis();
// Always play the entire launcher animation when going home, since it is separate from
// the animation that has been controlled thus far.
- final float finalStart = mGestureEndTarget == HOME ? 0 : start;
- executeOnUiThread(() -> {
- // Animate the launcher components at the same time as the window, always on UI thread.
- // Adjust start progress and duration in case we are on a different thread.
- long elapsedMillis = SystemClock.uptimeMillis() - startMillis;
- elapsedMillis = Utilities.boundToRange(elapsedMillis, 0, duration);
- float elapsedProgress = (float) elapsedMillis / duration;
- float adjustedStart = Utilities.mapRange(elapsedProgress, finalStart, end);
- long adjustedDuration = duration - elapsedMillis;
- // We want to use the same interpolator as the window, but need to adjust it to
- // interpolate over the remaining progress (end - start).
- TimeInterpolator adjustedInterpolator = Interpolators.mapToProgress(
- interpolator, adjustedStart, end);
- if (homeAnimFactory != null) {
- Animator homeAnim = homeAnimFactory.createActivityAnimationToHome();
- homeAnim.setDuration(adjustedDuration).setInterpolator(adjustedInterpolator);
- homeAnim.start();
- mLauncherTransitionController = null;
- }
- if (mLauncherTransitionController == null) {
- return;
- }
- if (finalStart == end || duration <= 0) {
- mLauncherTransitionController.dispatchSetInterpolator(t -> end);
- mLauncherTransitionController.getAnimationPlayer().end();
- } else {
- mLauncherTransitionController.dispatchSetInterpolator(adjustedInterpolator);
- mLauncherTransitionController.getAnimationPlayer().setDuration(adjustedDuration);
+ if (mGestureEndTarget == HOME) {
+ start = 0;
+ }
- if (QUICKSTEP_SPRINGS.get()) {
- mLauncherTransitionController.dispatchOnStartWithVelocity(end, velocityPxPerMs);
- }
- mLauncherTransitionController.getAnimationPlayer().start();
+ // We want to use the same interpolator as the window, but need to adjust it to
+ // interpolate over the remaining progress (end - start).
+ TimeInterpolator adjustedInterpolator = Interpolators.mapToProgress(
+ interpolator, start, end);
+ if (homeAnimFactory != null) {
+ Animator homeAnim = homeAnimFactory.createActivityAnimationToHome();
+ homeAnim.setDuration(duration).setInterpolator(adjustedInterpolator);
+ homeAnim.start();
+ mLauncherTransitionController = null;
+ }
+ if (mLauncherTransitionController == null) {
+ return;
+ }
+ if (start == end || duration <= 0) {
+ mLauncherTransitionController.dispatchSetInterpolator(t -> end);
+ mLauncherTransitionController.getAnimationPlayer().end();
+ } else {
+ mLauncherTransitionController.dispatchSetInterpolator(adjustedInterpolator);
+ mLauncherTransitionController.getAnimationPlayer().setDuration(duration);
+
+ if (QUICKSTEP_SPRINGS.get()) {
+ mLauncherTransitionController.dispatchOnStartWithVelocity(end, velocityPxPerMs);
}
- });
+ mLauncherTransitionController.getAnimationPlayer().start();
+ }
}
/**
@@ -1148,12 +1092,8 @@
originalTarget, finalTarget));
currentRect.set(rectFEvaluator.evaluate(progress, startRect, targetRect));
float alpha = 1 - interpolatedProgress;
- SyncRtSurfaceTransactionApplierCompat syncTransactionApplier
- = Looper.myLooper() == mMainThreadHandler.getLooper()
- ? mSyncTransactionApplier
- : null;
mTransformParams.setCurrentRectAndTargetAlpha(currentRect, alpha)
- .setSyncTransactionApplier(syncTransactionApplier);
+ .setSyncTransactionApplier(mSyncTransactionApplier);
mClipAnimationHelper.applyTransform(targetSet, mTransformParams);
});
anim.addListener(new AnimationSuccessListener() {
@@ -1404,8 +1344,8 @@
public void onQuickScrubProgress(float progress) {
mCurrentQuickScrubProgress = progress;
- if (Looper.myLooper() != Looper.getMainLooper() || mQuickScrubController == null
- || mQuickScrubBlocked || !mStateCallback.hasStates(QUICK_SCRUB_START_UI_STATE)) {
+ if (mQuickScrubController == null || mQuickScrubBlocked ||
+ !mStateCallback.hasStates(QUICK_SCRUB_START_UI_STATE)) {
return;
}
mQuickScrubController.onQuickScrubProgress(progress);
@@ -1427,39 +1367,19 @@
setStateOnUiThread(STATE_HANDLER_INVALIDATED);
}
- private void debugNewState(int stateFlag) {
- if (!DEBUG_STATES) {
- return;
- }
-
- int state = mStateCallback.getState();
- StringJoiner currentStateStr = new StringJoiner(", ", "[", "]");
- String stateFlagStr = "Unknown-" + stateFlag;
- for (int i = 0; i < STATES.length; i++) {
- if ((state & (i << i)) != 0) {
- currentStateStr.add(STATES[i]);
- }
- if (stateFlag == (1 << i)) {
- stateFlagStr = STATES[i] + " (" + stateFlag + ")";
- }
- }
- Log.d(TAG, "[" + System.identityHashCode(this) + "] Adding " + stateFlagStr + " to "
- + currentStateStr);
- }
-
public void setGestureEndCallback(Runnable gestureEndCallback) {
mGestureEndCallback = gestureEndCallback;
}
// Handling long swipe
- private void onLongSwipeEnabledUi() {
- mUiLongSwipeMode = true;
+ private void onLongSwipeEnabled() {
+ mLongSwipeMode = true;
checkLongSwipeCanEnter();
checkLongSwipeCanStart();
}
- private void onLongSwipeDisabledUi() {
- mUiLongSwipeMode = false;
+ private void onLongSwipeDisabled() {
+ mLongSwipeMode = false;
mStateCallback.clearState(STATE_SCREENSHOT_VIEW_SHOWN);
if (mLongSwipeController != null) {
@@ -1472,7 +1392,7 @@
}
private void onLongSwipeDisplacementUpdated() {
- if (!mUiLongSwipeMode || mLongSwipeController == null) {
+ if (!mLongSwipeMode || mLongSwipeController == null) {
return;
}
@@ -1480,7 +1400,7 @@
}
private void checkLongSwipeCanEnter() {
- if (!mUiLongSwipeMode || !mStateCallback.hasStates(LONG_SWIPE_ENTER_STATE)
+ if (!mLongSwipeMode || !mStateCallback.hasStates(LONG_SWIPE_ENTER_STATE)
|| !mActivityControlHelper.supportsLongSwipe(mActivity)) {
return;
}
@@ -1491,7 +1411,7 @@
}
private void checkLongSwipeCanStart() {
- if (!mUiLongSwipeMode || !mStateCallback.hasStates(LONG_SWIPE_START_STATE)
+ if (!mLongSwipeMode || !mStateCallback.hasStates(LONG_SWIPE_START_STATE)
|| !mActivityControlHelper.supportsLongSwipe(mActivity)) {
return;
}
@@ -1511,13 +1431,13 @@
}
}
- private void onLongSwipeGestureFinishUi(float velocity, boolean isFling, float velocityX) {
- if (!mUiLongSwipeMode || mLongSwipeController == null) {
- mUiLongSwipeMode = false;
+ private void onLongSwipeGestureFinish(float velocity, boolean isFling, float velocityX) {
+ if (!mLongSwipeMode || mLongSwipeController == null) {
+ mLongSwipeMode = false;
handleNormalGestureEnd(velocity, isFling, velocityX);
return;
}
- mUiLongSwipeMode = false;
+ mLongSwipeMode = false;
finishCurrentTransitionToRecents();
mLongSwipeController.end(velocity, isFling,
() -> setStateOnUiThread(STATE_HANDLER_INVALIDATED));
diff --git a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java
index 4e8bbe6..bbcd425 100644
--- a/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java
+++ b/quickstep/src/com/android/quickstep/views/DigitalWellBeingToast.java
@@ -23,7 +23,6 @@
import android.content.Context;
import android.content.Intent;
import android.content.pm.LauncherApps;
-import android.content.pm.LauncherApps.AppUsageLimit;
import android.content.res.Resources;
import android.icu.text.MeasureFormat;
import android.icu.text.MeasureFormat.FormatWidth;
@@ -45,12 +44,12 @@
import com.android.launcher3.userevent.nano.LauncherLogProto;
import com.android.systemui.shared.recents.model.Task;
+import java.lang.reflect.Method;
import java.time.Duration;
import java.util.Locale;
public final class DigitalWellBeingToast extends LinearLayout {
static final Intent OPEN_APP_USAGE_SETTINGS_TEMPLATE = new Intent(ACTION_APP_USAGE_SETTINGS);
- private final LauncherApps mLauncherApps;
public interface InitializeCallback {
void call(float saturation, String contentDescription);
@@ -67,7 +66,6 @@
setLayoutDirection(Utilities.isRtl(getResources()) ?
View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR);
setOnClickListener((view) -> openAppUsageSettings());
- mLauncherApps = context.getSystemService(LauncherApps.class);
}
@Override
@@ -81,29 +79,47 @@
public void initialize(Task task, InitializeCallback callback) {
mTask = task;
Utilities.THREAD_POOL_EXECUTOR.execute(() -> {
- final AppUsageLimit usageLimit = mLauncherApps.getAppUsageLimit(
- task.getTopComponent().getPackageName(),
- UserHandle.of(task.key.userId));
+ long appUsageLimitTimeMs = -1;
+ long appRemainingTimeMs = -1;
- final long appUsageLimitTimeMs =
- usageLimit != null ? usageLimit.getTotalUsageLimit() : -1;
- final long appRemainingTimeMs =
- usageLimit != null ? usageLimit.getUsageRemaining() : -1;
+ try {
+ final Method getAppUsageLimit = LauncherApps.class.getMethod(
+ "getAppUsageLimit",
+ String.class,
+ UserHandle.class);
+ final Object usageLimit = getAppUsageLimit.invoke(
+ getContext().getSystemService(LauncherApps.class),
+ task.getTopComponent().getPackageName(),
+ UserHandle.of(task.key.userId));
+
+ if (usageLimit != null) {
+ final Class appUsageLimitClass = usageLimit.getClass();
+ appUsageLimitTimeMs = (long) appUsageLimitClass.getMethod("getTotalUsageLimit").
+ invoke(usageLimit);
+ appRemainingTimeMs = (long) appUsageLimitClass.getMethod("getUsageRemaining").
+ invoke(usageLimit);
+ }
+ } catch (Exception e) {
+ // Do nothing
+ }
+
+ final long appUsageLimitTimeMsFinal = appUsageLimitTimeMs;
+ final long appRemainingTimeMsFinal = appRemainingTimeMs;
post(() -> {
- if (appUsageLimitTimeMs < 0) {
+ if (appUsageLimitTimeMsFinal < 0) {
setVisibility(GONE);
} else {
setVisibility(VISIBLE);
- mText.setText(getText(appRemainingTimeMs));
- mImage.setImageResource(appRemainingTimeMs > 0 ?
+ mText.setText(getText(appRemainingTimeMsFinal));
+ mImage.setImageResource(appRemainingTimeMsFinal > 0 ?
R.drawable.hourglass_top : R.drawable.hourglass_bottom);
}
callback.call(
- appUsageLimitTimeMs >= 0 && appRemainingTimeMs <= 0 ? 0 : 1,
+ appUsageLimitTimeMsFinal >= 0 && appRemainingTimeMsFinal <= 0 ? 0 : 1,
getContentDescriptionForTask(
- task, appUsageLimitTimeMs, appRemainingTimeMs));
+ task, appUsageLimitTimeMsFinal, appRemainingTimeMsFinal));
});
});
}
diff --git a/res/values-af/strings.xml b/res/values-af/strings.xml
index 0f08c0a..8fdc27b 100644
--- a/res/values-af/strings.xml
+++ b/res/values-af/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Vouer: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Legstukke"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Muurpapiere"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Tuis-instellings"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Gedeaktiveer deur jou administrateur"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Laat toe dat tuisskerm gedraai word"</string>
diff --git a/res/values-am/strings.xml b/res/values-am/strings.xml
index 5df7ced..4c80204 100644
--- a/res/values-am/strings.xml
+++ b/res/values-am/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"አቃፊ፦ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ፍርግሞች"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"የግድግዳ ወረቀቶች"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"የመነሻ ቅንብሮች"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"በእርስዎ አስተዳዳሪ የተሰናከለ"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"የመነሻ ማያ ገጽ ማሽከርከርን ይፍቀዱ"</string>
diff --git a/res/values-ar/strings.xml b/res/values-ar/strings.xml
index 5b5cfa4..72f6e6a 100644
--- a/res/values-ar/strings.xml
+++ b/res/values-ar/strings.xml
@@ -84,6 +84,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"المجلد: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"الأدوات"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"الخلفيات"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"إعدادات الصفحة الرئيسية"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"أوقف المشرف هذه الميزة"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"السماح بتدوير الشاشة الرئيسية"</string>
diff --git a/res/values-as/strings.xml b/res/values-as/strings.xml
index 75616f3..f528f2b 100644
--- a/res/values-as/strings.xml
+++ b/res/values-as/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ফ’ল্ডাৰ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ৱিজেটসমূহ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ৱালপেপাৰসমূহ"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"গৃহ ছেটিংসমূহ"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"আপোনাৰ প্ৰশাসকে অক্ষম কৰি ৰাখিছে"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"গৃহ স্ক্ৰীণ ঘূৰোৱাৰ অনুমতি দিয়ক"</string>
diff --git a/res/values-az/strings.xml b/res/values-az/strings.xml
index 9fc8626..26b5da5 100644
--- a/res/values-az/strings.xml
+++ b/res/values-az/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Qovluq: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Vidcet"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Divar kağızları"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Home ayarları"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Admininiz tərəfindən deaktiv edilib"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Əsas ekranın firlanmağına icazə verin"</string>
diff --git a/res/values-b+sr+Latn/strings.xml b/res/values-b+sr+Latn/strings.xml
index 269ba78..7306b02 100644
--- a/res/values-b+sr+Latn/strings.xml
+++ b/res/values-b+sr+Latn/strings.xml
@@ -81,6 +81,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Direktorijum: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Vidžeti"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Pozadine"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Podešavanja početnog ekrana"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administrator je onemogućio"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Dozvoli rotaciju početnog ekrana"</string>
diff --git a/res/values-be/strings.xml b/res/values-be/strings.xml
index 1a1cfce..a30b403 100644
--- a/res/values-be/strings.xml
+++ b/res/values-be/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Папка: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Віджэты"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Шпалеры"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Налады галоўнага экрана"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Адключаная адміністратарам"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Дазволіць паварот галоўнага экрана"</string>
diff --git a/res/values-bg/strings.xml b/res/values-bg/strings.xml
index 436e890..360a036 100644
--- a/res/values-bg/strings.xml
+++ b/res/values-bg/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Папка: „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Приспособления"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Тапети"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Настройки за началния екран"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Деактивирано от администратора ви"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Разрешаване на завъртането на началния екран"</string>
diff --git a/res/values-bn/strings.xml b/res/values-bn/strings.xml
index 7efacf3..59f7d29 100644
--- a/res/values-bn/strings.xml
+++ b/res/values-bn/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ফোল্ডার: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"উইজেট"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ওয়ালপেপারগুলি"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"হোম সেটিংস"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"আপনার প্রশাসক দ্বারা অক্ষম করা হয়েছে"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"হোমস্ক্রীন ঘোরানোর অনুমতি দিন"</string>
diff --git a/res/values-bs/strings.xml b/res/values-bs/strings.xml
index 6703d22..803fee8 100644
--- a/res/values-bs/strings.xml
+++ b/res/values-bs/strings.xml
@@ -81,6 +81,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Dodaci"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Pozadinske slike"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Postavke početnog ekrana"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Onemogućio vaš administrator"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Dozvoli rotiranje početnog ekrana"</string>
diff --git a/res/values-ca/strings.xml b/res/values-ca/strings.xml
index a4f701f..02180dc 100644
--- a/res/values-ca/strings.xml
+++ b/res/values-ca/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fons de pantalla"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Configuració de pantalla d\'inici"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desactivada per l\'administrador"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permet la rotació de la pantalla d\'inici"</string>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index a9e705a..0d78e54 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Složka: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgety"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Nastavení plochy"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Zakázáno administrátorem"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Povolit otáčení plochy"</string>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 573da2d..e1f1b63 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mappe: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Baggrunde"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Indstillinger for startskærmen"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Deaktiveret af din administrator"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Tillad rotation af startskærmen"</string>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index d26661d..4fcb8a0 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Ordner: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Hintergründe"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Einstellungen für den Startbildschirm"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Von deinem Administrator deaktiviert"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Drehung des Startbildschirms zulassen"</string>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 9745089..73d88a1 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Φάκελος: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Γραφικά στοιχεία"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ταπετσαρίες"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Ρυθμίσεις Αρχ. Οθ."</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Απενεργοποιήθηκε από τον διαχειριστή σας"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Να επιτρέπεται η περιστροφή της αρχικής οθόνης"</string>
diff --git a/res/values-en-rAU/strings.xml b/res/values-en-rAU/strings.xml
index 04c341c..0061afb 100644
--- a/res/values-en-rAU/strings.xml
+++ b/res/values-en-rAU/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Home settings"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disabled by your admin"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Allow Homescreen rotation"</string>
diff --git a/res/values-en-rGB/strings.xml b/res/values-en-rGB/strings.xml
index 04c341c..0061afb 100644
--- a/res/values-en-rGB/strings.xml
+++ b/res/values-en-rGB/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Home settings"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disabled by your admin"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Allow Homescreen rotation"</string>
diff --git a/res/values-en-rIN/strings.xml b/res/values-en-rIN/strings.xml
index 04c341c..0061afb 100644
--- a/res/values-en-rIN/strings.xml
+++ b/res/values-en-rIN/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpapers"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Home settings"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disabled by your admin"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Allow Homescreen rotation"</string>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index 4f5a13a..3a72f4c 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Configuración de página principal"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"El administrador inhabilitó esta función"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permitir la rotación de la pantalla principal"</string>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index 899b2f1..bad7520 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Carpeta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Ajustes de la pantalla de inicio"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Inhabilitado por el administrador"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permitir rotación de la pantalla de inicio"</string>
diff --git a/res/values-et/strings.xml b/res/values-et/strings.xml
index 269bb20..5892d09 100644
--- a/res/values-et/strings.xml
+++ b/res/values-et/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Kaust: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Vidinad"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Taustapildid"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Avaekraani seaded"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Keelas administraator"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Luba avaekraani pööramine"</string>
diff --git a/res/values-eu/strings.xml b/res/values-eu/strings.xml
index 9a07a20..e82474e 100644
--- a/res/values-eu/strings.xml
+++ b/res/values-eu/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Karpeta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgetak"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Horma-paperak"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Hasierako pantailaren ezarpenak"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administratzaileak desgaitu du"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Baimendu hasierako pantaila biratzea"</string>
diff --git a/res/values-fa/strings.xml b/res/values-fa/strings.xml
index f2c0998..7ea9262 100644
--- a/res/values-fa/strings.xml
+++ b/res/values-fa/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"پوشه: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ابزارکها"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"کاغذدیواریها"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"تنظیمات صفحه اصلی"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"توسط سرپرست سیستم غیرفعال شده است"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"امکان دادن به چرخش صفحه اصلی"</string>
diff --git a/res/values-fi/strings.xml b/res/values-fi/strings.xml
index ba4e68f..9b56c0f 100644
--- a/res/values-fi/strings.xml
+++ b/res/values-fi/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Kansio: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgetit"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Taustakuvat"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Kotiasetukset"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Järjestelmänvalvoja on poistanut toiminnon käytöstä."</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Salli aloitusnäytön kiertäminen"</string>
diff --git a/res/values-fr-rCA/strings.xml b/res/values-fr-rCA/strings.xml
index 4ea32c0..3b947aa 100644
--- a/res/values-fr-rCA/strings.xml
+++ b/res/values-fr-rCA/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Dossier : <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fonds d\'écran"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Paramètres d\'accueil"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Cette fonction est désactivée par votre administrateur"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Autoriser la rotation de l\'écran d\'accueil"</string>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 696dec9..6a95e19 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Dossier \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fonds d\'écran"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Paramètres accueil"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Désactivé par votre administrateur"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Autoriser la rotation de l\'écran d\'accueil"</string>
diff --git a/res/values-gl/strings.xml b/res/values-gl/strings.xml
index 00528b4..e6e6ed1 100644
--- a/res/values-gl/strings.xml
+++ b/res/values-gl/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Cartafol: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fondos de pantalla"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Configuración da pantalla de Inicio"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Función desactivada polo administrador"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permitir xirar a pantalla de inicio"</string>
diff --git a/res/values-gu/strings.xml b/res/values-gu/strings.xml
index 181422a..8dfcb2c 100644
--- a/res/values-gu/strings.xml
+++ b/res/values-gu/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ફોલ્ડર: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"વિજેટ્સ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"વૉલપેપર્સ"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"હોમ સેટિંગ્સ"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"તમારા વ્યવસ્થાપક દ્વારા અક્ષમ કરેલ"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"હોમ સ્ક્રીનને ફેરવવાની મંજૂરી આપો"</string>
diff --git a/res/values-hi/strings.xml b/res/values-hi/strings.xml
index ca35c2f..0b39ffe 100644
--- a/res/values-hi/strings.xml
+++ b/res/values-hi/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"फ़ोल्डर: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"शॉर्टकट"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"वॉलपेपर"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"होम पेज की सेटिंग"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"आपके एडमिन ने बंद किया हुआ है"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"होमस्क्रीन घुमाने की अनुमति दें"</string>
diff --git a/res/values-hr/strings.xml b/res/values-hr/strings.xml
index a15fcb2..8ea98d6 100644
--- a/res/values-hr/strings.xml
+++ b/res/values-hr/strings.xml
@@ -81,6 +81,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mapa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgeti"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Pozadine"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Postavke početnog zaslona"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Onemogućio administrator"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Dopusti zakretanje početnog zaslona"</string>
diff --git a/res/values-hu/strings.xml b/res/values-hu/strings.xml
index fb3a149..ae0dba3 100644
--- a/res/values-hu/strings.xml
+++ b/res/values-hu/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mappa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Modulok"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Háttérképek"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Kezdőoldal beállításai"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"A rendszergazda letiltotta"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"A kezdőképernyő elforgatásának engedélyezése"</string>
diff --git a/res/values-hy/strings.xml b/res/values-hy/strings.xml
index b0082c0..7542b75 100644
--- a/res/values-hy/strings.xml
+++ b/res/values-hy/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Պանակ՝ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Վիջեթներ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Պաստառներ"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Գլխավոր էջի կարգավորումներ"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Անջատվել է ձեր ադմինիստրատորի կողմից"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Թույլ տալ հիմնական էկրանի պտտումը"</string>
diff --git a/res/values-in/strings.xml b/res/values-in/strings.xml
index 448473e..96b3d92 100644
--- a/res/values-in/strings.xml
+++ b/res/values-in/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Wallpaper"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Setelan layar Utama"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Dinonaktifkan oleh admin"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Izinkan layar Utama diputar"</string>
diff --git a/res/values-is/strings.xml b/res/values-is/strings.xml
index 174beaa..5673a2d 100644
--- a/res/values-is/strings.xml
+++ b/res/values-is/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mappa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Græjur"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Veggfóður"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Heimastillingar"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Gert óvirkt af kerfisstjóra"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Leyfa snúning fyrir heimaskjá"</string>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 52c851f..9cd5c0f 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Cartella: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Sfondi"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Impostazioni Home"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Disattivata dall\'amministratore"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Consenti rotazione della schermata Home"</string>
diff --git a/res/values-iw/strings.xml b/res/values-iw/strings.xml
index 4c9a1cd..64022ce 100644
--- a/res/values-iw/strings.xml
+++ b/res/values-iw/strings.xml
@@ -33,7 +33,7 @@
<string name="long_accessible_way_to_add" msgid="4289502106628154155">"הקש פעמיים וגע נגיעה רציפה בווידג\'ט כדי לבחור בו, או השתמש בפעולות מותאמות אישית."</string>
<string name="widget_dims_format" msgid="2370757736025621599">"%1$d × %2$d"</string>
<string name="widget_accessible_dims_format" msgid="3640149169885301790">"רוחב %1$d על גובה %2$d"</string>
- <string name="add_item_request_drag_hint" msgid="5899764264480397019">"גע והחזק כדי להוסיף ידנית"</string>
+ <string name="add_item_request_drag_hint" msgid="5899764264480397019">"יש ללחוץ לחיצה ארוכה כדי להוסיף ידנית"</string>
<string name="place_automatically" msgid="8064208734425456485">"הוסף באופן אוטומטי"</string>
<string name="all_apps_search_bar_hint" msgid="1390553134053255246">"חיפוש אפליקציות"</string>
<string name="all_apps_loading_message" msgid="5813968043155271636">"טוען אפליקציות…"</string>
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"תיקיה: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"רכיבי ווידג\'ט"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"טפטים"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"הגדרות דף הבית"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"הושבת על ידי מנהל המערכת שלך"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"אפשרות סיבוב של מסך דף הבית"</string>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index 49d5f56..952c86b 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"フォルダ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ウィジェット"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"壁紙"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ホームの設定"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"管理者により無効にされています"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ホーム画面の回転を許可"</string>
diff --git a/res/values-ka/strings.xml b/res/values-ka/strings.xml
index 846060c..efcaeab 100644
--- a/res/values-ka/strings.xml
+++ b/res/values-ka/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"საქაღალდე: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ვიჯეტები"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ფონები"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"მთავარი გვერდის პარამეტრები"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"გათიშულია თქვენი ადმინისტრატორის მიერ"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"მთავარი ეკრანის შეტრიალების დაშვება"</string>
diff --git a/res/values-kk/strings.xml b/res/values-kk/strings.xml
index c6a2ce4..fb1f71d 100644
--- a/res/values-kk/strings.xml
+++ b/res/values-kk/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Қалта: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Виджеттер"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Тұсқағаздар"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Негізгі экран параметрлері"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Әкімші өшірді"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Негізгі экранның бұрылуына рұқсат ету"</string>
diff --git a/res/values-km/strings.xml b/res/values-km/strings.xml
index 4f3e82c..59a3666 100644
--- a/res/values-km/strings.xml
+++ b/res/values-km/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ថត៖ <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ធាតុក្រាហ្វិក"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ផ្ទាំងរូបភាព"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ការកំណត់ទំព័រដើម"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"បានបិទដំណើរការដោយអ្នកគ្រប់គ្រងរបស់អ្នក"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"អនុញ្ញាតការបងិ្វលអេក្រង់ដើម"</string>
diff --git a/res/values-kn/strings.xml b/res/values-kn/strings.xml
index 3479eb5..9fc4aec 100644
--- a/res/values-kn/strings.xml
+++ b/res/values-kn/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ಫೋಲ್ಡರ್: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ವಿಜೆಟ್ಗಳು"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ವಾಲ್ಪೇಪರ್ಗಳು"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ಮುಖಪುಟ ಸೆಟ್ಟಿಂಗ್ಗಳು"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"ನಿಮ್ಮ ನಿರ್ವಾಹಕರು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಿದ್ದಾರೆ"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ಮುಖಪುಟ ತಿರುಗುವಿಕೆಯನ್ನು ಅನುಮತಿಸಿ"</string>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index b4ac8e6..506ffc5 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"폴더: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"위젯"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"배경화면"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"홈 설정"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"관리자가 사용 중지함"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"홈 화면 회전 허용"</string>
diff --git a/res/values-ky/strings.xml b/res/values-ky/strings.xml
index 544d7fe..433bb98 100644
--- a/res/values-ky/strings.xml
+++ b/res/values-ky/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Фолдер: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Виджеттер"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Тушкагаздар"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Башкы беттин жөндөөлөрү"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Администраторуңуз өчүрүп койгон"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Башкы экранды айлантууга уруксат берүү"</string>
diff --git a/res/values-lo/strings.xml b/res/values-lo/strings.xml
index be59112..2664021 100644
--- a/res/values-lo/strings.xml
+++ b/res/values-lo/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ໂຟນເດີ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ວິດເຈັດ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ພາບພື້ນຫຼັງ"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ການຕັ້ງຄ່າ Home"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"ຖືກປິດການນຳໃຊ້ໂດຍຜູ້ເບິ່ງແຍງລະບົບຂອງທ່ານ"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ອະນຸຍາດໃຫ້ໝຸນໜ້າຈໍທຳອິດໄດ້"</string>
diff --git a/res/values-lt/strings.xml b/res/values-lt/strings.xml
index 2556a96..6dbf1d6 100644
--- a/res/values-lt/strings.xml
+++ b/res/values-lt/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Aplankas: „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Valdikliai"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ekrano fonai"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"„Home“ nustatymai"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Išjungė administratorius"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Leisti pasukti pagrindinį ekraną"</string>
diff --git a/res/values-lv/strings.xml b/res/values-lv/strings.xml
index c33490d..2a9b772 100644
--- a/res/values-lv/strings.xml
+++ b/res/values-lv/strings.xml
@@ -81,6 +81,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mape: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Logrīki"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fona tapetes"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Sākumlapas iestatījumi"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Atspējojis administrators"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Atļaut sākuma ekrāna pagriešanu"</string>
diff --git a/res/values-mk/strings.xml b/res/values-mk/strings.xml
index 563e2fe..3d4151c 100644
--- a/res/values-mk/strings.xml
+++ b/res/values-mk/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Папка: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Виџети"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Тапети"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Поставки за Home"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Оневозможено од администраторот"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Дозволете ротација на Почетниот екран"</string>
diff --git a/res/values-ml/strings.xml b/res/values-ml/strings.xml
index 5390f0d..c3cb059 100644
--- a/res/values-ml/strings.xml
+++ b/res/values-ml/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ഫോൾഡർ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"വിജറ്റുകൾ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"വാൾപേപ്പർ"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ഹോം ക്രമീകരണം"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"അഡ്മിൻ പ്രവർത്തനരഹിതമാക്കിയിരിക്കുന്നു"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ഹോം സ്ക്രീൻ തിരിക്കൽ അനുവദിക്കുക"</string>
diff --git a/res/values-mn/strings.xml b/res/values-mn/strings.xml
index 0b6dcd4..ac01fa2 100644
--- a/res/values-mn/strings.xml
+++ b/res/values-mn/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Фолдер: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Виджет"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ханын зураг"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Нүүр хуудасны тохиргоо"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Таны админ идэвхгүй болгосон"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Нүүр дэлгэцийг эргүүлэхийг зөвшөөрөх"</string>
diff --git a/res/values-mr/strings.xml b/res/values-mr/strings.xml
index 253c4a2..3be13ef 100644
--- a/res/values-mr/strings.xml
+++ b/res/values-mr/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"फोल्डर: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"विजेट"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"वॉलपेपर"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"होम सेटिंग्ज"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"आपल्या प्रशासकाने अक्षम केले"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"मुख्यस्क्रीन फिरविण्यास अनुमती द्या"</string>
diff --git a/res/values-ms/strings.xml b/res/values-ms/strings.xml
index 358dbc3..a97e201 100644
--- a/res/values-ms/strings.xml
+++ b/res/values-ms/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Kertas dinding"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Tetapan laman utama"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Dilumpuhkan oleh pentadbir anda"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Benarkan putaran Skrin Utama"</string>
diff --git a/res/values-my/strings.xml b/res/values-my/strings.xml
index b9884c0..2e1e0d4 100644
--- a/res/values-my/strings.xml
+++ b/res/values-my/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"အကန့်အမည်: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ဝိဂျက်များ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"နောက်ခံများ"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ပင်မဆက်တင်များ"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"သင့်စီမံခန့်ခွဲသူက ပိတ်လိုက်ပါသည်"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ပင်မစာမျက်နှာလှည့်ခြင်းကို ခွင့်ပြုပါ"</string>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index fa404f7..e3e1768 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mappe: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Moduler"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Bakgrunner"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Startsideinnstillinger"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administratoren har slått av funksjonen"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Tillat rotasjon av startskjermen"</string>
diff --git a/res/values-ne/strings.xml b/res/values-ne/strings.xml
index a99c4ad..ea6fdf5 100644
--- a/res/values-ne/strings.xml
+++ b/res/values-ne/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"फोल्डर: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"विजेटहरू"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"वालपेपरहरु"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"गृहपृष्ठका सेटिङहरू"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"तपाईँको प्रशासकद्वारा असक्षम गरिएको"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"गृह स्क्रिनलाई घुम्ने अनुमति दिनुहोस्"</string>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index 964f10c..1ae31be 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Map: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Achtergrond"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Instellingen startscherm"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Uitgeschakeld door je beheerder"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Draaien van startscherm toestaan"</string>
diff --git a/res/values-or/strings.xml b/res/values-or/strings.xml
index 0e1efd3..7959e11 100644
--- a/res/values-or/strings.xml
+++ b/res/values-or/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ଫୋଲ୍ଡର: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ୱିଜେଟ୍"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ୱାଲପେପର୍"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ହୋମ୍ ସେଟିଙ୍ଗ"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"ଆପଣଙ୍କ ଆଡମିନଙ୍କ ଦ୍ୱାରା ଅକ୍ଷମ କରାଯାଇଛି"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ହୋମ୍ ସ୍କ୍ରୀନ୍ ବୁଲାଇବା ଅନୁମତି ଦିଅନ୍ତୁ"</string>
diff --git a/res/values-pa/strings.xml b/res/values-pa/strings.xml
index e00ba10..e740cb9 100644
--- a/res/values-pa/strings.xml
+++ b/res/values-pa/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ਫੋਲਡਰ: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ਵਿਜੇਟ"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"ਵਾਲਪੇਪਰ"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ਹੋਮ ਸੈਟਿੰਗਾਂ"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"ਤੁਹਾਡੇ ਪ੍ਰਸ਼ਾਸਕ ਦੁਆਰਾ ਅਯੋਗ ਬਣਾਈ ਗਈ"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ਹੋਮ ਸਕ੍ਰੀਨ ਨੂੰ ਘੁੰਮਾਉਣ ਦੀ ਆਗਿਆ ਦਿਓ"</string>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index 6bcbfd5..bab3895 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widżety"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Ustawienia strony głównej"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Funkcja wyłączona przez administratora"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Zezwalaj na obrót ekranu głównego"</string>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index 2527cd5..7cd96a5 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Pasta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Imagens de fundo"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Definições da página inicial"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desativada pelo gestor"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permitir rotação do ecrã principal"</string>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 93bcca7..7c90a14 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Pasta: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgets"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Planos de fundo"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Configurações da tela inicial"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Desativado pelo administrador"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permitir rotação da tela inicial"</string>
diff --git a/res/values-ro/strings.xml b/res/values-ro/strings.xml
index d1e5b3d..6885de5 100644
--- a/res/values-ro/strings.xml
+++ b/res/values-ro/strings.xml
@@ -81,6 +81,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Dosar: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgeturi"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Imagini de fundal"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Setări pentru ecranul de pornire"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Dezactivată de administrator"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Permiteți rotirea ecranului de pornire"</string>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index f633ed6..56c9a4f 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Папка: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Виджеты"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Обои"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Настройки главного экрана"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Функция отключена администратором"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Разрешить поворачивать главный экран"</string>
diff --git a/res/values-si/strings.xml b/res/values-si/strings.xml
index ae0fb50..d3737be 100644
--- a/res/values-si/strings.xml
+++ b/res/values-si/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ෆෝල්ඩරය: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"විජට්"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"වෝල්පේපර"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Home සැකසීම්"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"ඔබගේ පරිපාලක විසින් අබල කරන ලදී"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"මුල් පිටු තිරය කරකැවීමට ඉඩ දෙන්න"</string>
diff --git a/res/values-sk/strings.xml b/res/values-sk/strings.xml
index 7bdf9c4..6d64792 100644
--- a/res/values-sk/strings.xml
+++ b/res/values-sk/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Priečinok: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Miniaplikácie"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Tapety"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Nastavenia Home"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Zakázané vaším správcom"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Povoliť otáčanie plochy"</string>
diff --git a/res/values-sl/strings.xml b/res/values-sl/strings.xml
index 0d9f504..3f1b14c 100644
--- a/res/values-sl/strings.xml
+++ b/res/values-sl/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mapa: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Pripomočki"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Ozadja"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Nastavitve začetnega zaslona"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Onemogočil skrbnik."</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Omogočanje sukanja začetnega zaslona"</string>
diff --git a/res/values-sq/strings.xml b/res/values-sq/strings.xml
index 8dfb229..31d3f4c 100644
--- a/res/values-sq/strings.xml
+++ b/res/values-sq/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Dosja: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Miniaplikacionet"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Imazhet e sfondit"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Cilësimet e Home"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Çaktivizuar nga administratori"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Lejo rrotullimin e ekranit kryesor"</string>
diff --git a/res/values-sr/strings.xml b/res/values-sr/strings.xml
index 067cf9f..5a2c0af 100644
--- a/res/values-sr/strings.xml
+++ b/res/values-sr/strings.xml
@@ -81,6 +81,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Директоријум: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Виџети"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Позадине"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Подешавања почетног екрана"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Администратор је онемогућио"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Дозволи ротацију почетног екрана"</string>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index 791fcc1..74d434e 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Mapp: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widgetar"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Bakgrunder"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Startinställningar"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Inaktiverat av administratören"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Tillåt rotering av startskärmen"</string>
diff --git a/res/values-sw/strings.xml b/res/values-sw/strings.xml
index b705b8e..1483dcb 100644
--- a/res/values-sw/strings.xml
+++ b/res/values-sw/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folda: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Wijeti"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Mandhari"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Mipangilio ya mwanzo"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Imezimwa na msimamizi wako"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Ruhusu kuzungusha skrini ya Kwanza"</string>
diff --git a/res/values-ta/strings.xml b/res/values-ta/strings.xml
index 28c6a04..17c0adb 100644
--- a/res/values-ta/strings.xml
+++ b/res/values-ta/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"கோப்புறை: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ஷார்ட்கட்ஸ்"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"வால்பேப்பர்கள்"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"முகப்பு அமைப்புகள்"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"உங்கள் நிர்வாகி முடக்கியுள்ளார்"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"முகப்புத் திரை சுழற்சியை அனுமதி"</string>
diff --git a/res/values-te/strings.xml b/res/values-te/strings.xml
index 744a79a..48dd872 100644
--- a/res/values-te/strings.xml
+++ b/res/values-te/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"ఫోల్డర్: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"విడ్జెట్లు"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"వాల్పేపర్లు"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"హోమ్ సెట్టింగ్లు"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"మీ నిర్వాహకులు నిలిపివేసారు"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"హోమ్ స్క్రీన్ భ్రమణాన్ని అనుమతించండి"</string>
diff --git a/res/values-th/strings.xml b/res/values-th/strings.xml
index 6bac806..829a266 100644
--- a/res/values-th/strings.xml
+++ b/res/values-th/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"โฟลเดอร์: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"วิดเจ็ต"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"วอลเปเปอร์"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"การตั้งค่าหน้าแรก"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"ปิดใช้โดยผู้ดูแลระบบ"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"อนุญาตให้หมุนหน้าจอหลัก"</string>
diff --git a/res/values-tl/strings.xml b/res/values-tl/strings.xml
index b555240..d2b6915 100644
--- a/res/values-tl/strings.xml
+++ b/res/values-tl/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Folder: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Mga Widget"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Mga Wallpaper"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Mga setting ng Home"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Na-disable ng iyong admin"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Payagan ang pag-rotate ng Home screen"</string>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index 10635f9..edd5ed8 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Klasör: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Widget\'lar"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Duvar Kağıtları"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Ana ekran ayarları"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Yöneticiniz tarafından devre dışı bırakıldı"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Ana ekranı döndürmeye izin ver"</string>
diff --git a/res/values-uk/strings.xml b/res/values-uk/strings.xml
index f7ce822..9523443 100644
--- a/res/values-uk/strings.xml
+++ b/res/values-uk/strings.xml
@@ -82,6 +82,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Папка <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Віджети"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Фонові малюнки"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Налаштування Home"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Вимкнув адміністратор"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Дозволити обертання головного екрана"</string>
diff --git a/res/values-ur/strings.xml b/res/values-ur/strings.xml
index 010275c..c01de26 100644
--- a/res/values-ur/strings.xml
+++ b/res/values-ur/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"فولڈر: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"ویجیٹس"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"وال پیپرز"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"ہوم ترتیبات"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"آپ کے منتظم کی طرف سے غیر فعال کر دیا گیا"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"ہوم اسکرین گھمانے کی اجازت دیں"</string>
diff --git a/res/values-uz/strings.xml b/res/values-uz/strings.xml
index 9b4493c..d184b5c 100644
--- a/res/values-uz/strings.xml
+++ b/res/values-uz/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Jild: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Vidjetlar"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Fon rasmlari"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Bosh ekran sozlamalari"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Administrator tomonidan o‘chirilgan"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Asosiy ekranni aylantirishga ruxsat berish"</string>
diff --git a/res/values-vi/strings.xml b/res/values-vi/strings.xml
index 1f2de46..5570567 100644
--- a/res/values-vi/strings.xml
+++ b/res/values-vi/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Thư mục: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Tiện ích con"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Hình nền"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Cài đặt màn hình chính"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Bị tắt bởi quản trị viên của bạn"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Cho phép xoay Màn hình chính"</string>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index 12935ca..3a99dec 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"文件夹:<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"微件"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"壁纸"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"主屏幕设置"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"已被您的管理员停用"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"允许旋转主屏幕"</string>
diff --git a/res/values-zh-rHK/strings.xml b/res/values-zh-rHK/strings.xml
index 2178d87..39bf109 100644
--- a/res/values-zh-rHK/strings.xml
+++ b/res/values-zh-rHK/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"資料夾:<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"小工具"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"桌布"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"主螢幕設定"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"已由您的管理員停用"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"允許主畫面旋轉"</string>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 66f104b..358e6e2 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"資料夾:<xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"小工具"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"桌布"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Home 設定"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"已由你的管理員停用"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"允許旋轉主螢幕"</string>
diff --git a/res/values-zu/strings.xml b/res/values-zu/strings.xml
index 1d38ff8..614ae35 100644
--- a/res/values-zu/strings.xml
+++ b/res/values-zu/strings.xml
@@ -80,6 +80,8 @@
<string name="folder_name_format" msgid="6629239338071103179">"Ifolda: <xliff:g id="NAME">%1$s</xliff:g>"</string>
<string name="widget_button_text" msgid="2880537293434387943">"Amawijethi"</string>
<string name="wallpaper_button_text" msgid="8404103075899945851">"Izithombe zangemuva"</string>
+ <!-- no translation found for styles_wallpaper_button_text (4342122323125579619) -->
+ <skip />
<string name="settings_button_text" msgid="8873672322605444408">"Izilungiselelo zasekhaya"</string>
<string name="msg_disabled_by_admin" msgid="6898038085516271325">"Kukhutshazwe umlawuli wakho"</string>
<string name="allow_rotation_title" msgid="7728578836261442095">"Vumela ukuphendukiswa kwesikrini sasekhaya"</string>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index 51350c0..13e096c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -177,6 +177,8 @@
<string name="widget_button_text">Widgets</string>
<!-- Text for wallpaper change button -->
<string name="wallpaper_button_text">Wallpapers</string>
+ <!-- Text for wallpaper change button -->
+ <string name="styles_wallpaper_button_text">Styles & wallpapers</string>
<!-- Text for settings button -->
<string name="settings_button_text">Home settings</string>
<!-- Message shown when a feature is disabled by the administrator -->
diff --git a/robolectric_tests/src/com/android/launcher3/config/FlagOverrideSampleTest.java b/robolectric_tests/src/com/android/launcher3/config/FlagOverrideSampleTest.java
index c5a0820..54038d2 100644
--- a/robolectric_tests/src/com/android/launcher3/config/FlagOverrideSampleTest.java
+++ b/robolectric_tests/src/com/android/launcher3/config/FlagOverrideSampleTest.java
@@ -27,6 +27,7 @@
public void withFlagOn() {
assertTrue(FeatureFlags.EXAMPLE_FLAG.get());
assertFalse(FeatureFlags.QUICK_SWITCH.get());
+ assertFalse(FeatureFlags.STYLE_WALLPAPER.get());
}
diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java
index 60dfbb7..1dec173 100644
--- a/src/com/android/launcher3/Utilities.java
+++ b/src/com/android/launcher3/Utilities.java
@@ -106,6 +106,7 @@
// An intent extra to indicate the horizontal scroll of the wallpaper.
public static final String EXTRA_WALLPAPER_OFFSET = "com.android.launcher3.WALLPAPER_OFFSET";
+ public static final String EXTRA_WALLPAPER_FLAVOR = "com.android.launcher3.WALLPAPER_FLAVOR";
// These values are same as that in {@link AsyncTask}.
private static final int CPU_COUNT = Runtime.getRuntime().availableProcessors();
diff --git a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
index 84edb3d..45bade8 100644
--- a/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
+++ b/src/com/android/launcher3/accessibility/LauncherAccessibilityDelegate.java
@@ -127,9 +127,7 @@
}
// Do not add move actions for keyboard request as this uses virtual nodes.
- if (!fromKeyboard && ((item instanceof ShortcutInfo)
- || (item instanceof LauncherAppWidgetInfo)
- || (item instanceof FolderInfo))) {
+ if (!fromKeyboard && itemSupportsAccessibleDrag(item)) {
info.addAction(mActions.get(MOVE));
if (item.container >= 0) {
@@ -146,6 +144,15 @@
}
}
+ private boolean itemSupportsAccessibleDrag(ItemInfo item) {
+ if (item instanceof ShortcutInfo) {
+ // Support the action unless the item is in a context menu.
+ return item.screenId >= 0;
+ }
+ return (item instanceof LauncherAppWidgetInfo)
+ || (item instanceof FolderInfo);
+ }
+
@Override
public boolean performAccessibilityAction(View host, int action, Bundle args) {
if ((host.getTag() instanceof ItemInfo)
diff --git a/src/com/android/launcher3/config/BaseFlags.java b/src/com/android/launcher3/config/BaseFlags.java
index fa4ebaf..b921d29 100644
--- a/src/com/android/launcher3/config/BaseFlags.java
+++ b/src/com/android/launcher3/config/BaseFlags.java
@@ -92,6 +92,10 @@
= new ToggleableGlobalSettingsFlag("QUICK_SWITCH", false,
"Swiping right on the nav bar while in an app switches to the previous app");
+ public static final ToggleableGlobalSettingsFlag STYLE_WALLPAPER
+ = new ToggleableGlobalSettingsFlag("STYLE_WALLPAPER", false,
+ "Direct users to the new ThemePicker based WallpaperPicker");
+
/**
* Feature flag to handle define config changes dynamically instead of killing the process.
*/
diff --git a/src/com/android/launcher3/views/OptionsPopupView.java b/src/com/android/launcher3/views/OptionsPopupView.java
index 71bf781..48cf9e8 100644
--- a/src/com/android/launcher3/views/OptionsPopupView.java
+++ b/src/com/android/launcher3/views/OptionsPopupView.java
@@ -15,6 +15,7 @@
*/
package com.android.launcher3.views;
+import static com.android.launcher3.Utilities.EXTRA_WALLPAPER_FLAVOR;
import static com.android.launcher3.Utilities.EXTRA_WALLPAPER_OFFSET;
import android.content.Context;
@@ -149,7 +150,9 @@
RectF target = new RectF(x - halfSize, y - halfSize, x + halfSize, y + halfSize);
ArrayList<OptionItem> options = new ArrayList<>();
- options.add(new OptionItem(R.string.wallpaper_button_text, R.drawable.ic_wallpaper,
+ int res = FeatureFlags.STYLE_WALLPAPER.get() ?
+ R.string.styles_wallpaper_button_text : R.string.wallpaper_button_text;
+ options.add(new OptionItem(res, R.drawable.ic_wallpaper,
ControlType.WALLPAPER_BUTTON, OptionsPopupView::startWallpaperPicker));
if (!FeatureFlags.GO_DISABLE_WIDGETS) {
options.add(new OptionItem(R.string.widget_button_text, R.drawable.ic_widget,
@@ -197,6 +200,9 @@
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK)
.putExtra(EXTRA_WALLPAPER_OFFSET,
launcher.getWorkspace().getWallpaperOffsetForCenterPage());
+ if (!FeatureFlags.STYLE_WALLPAPER.get()) {
+ intent.putExtra(EXTRA_WALLPAPER_FLAVOR, "wallpaper_only");
+ }
String pickerPackage = launcher.getString(R.string.wallpaper_picker_package);
if (!TextUtils.isEmpty(pickerPackage)) {
intent.setPackage(pickerPackage);
diff --git a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
index c223ea5..466bc5e 100644
--- a/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
+++ b/tests/tapl/com/android/launcher3/tapl/LauncherInstrumentation.java
@@ -424,4 +424,8 @@
mInstrumentation.sendPointerSync(event);
event.recycle();
}
+
+ float getDisplayDensity() {
+ return mInstrumentation.getTargetContext().getResources().getDisplayMetrics().density;
+ }
}
\ No newline at end of file
diff --git a/tests/tapl/com/android/launcher3/tapl/Workspace.java b/tests/tapl/com/android/launcher3/tapl/Workspace.java
index 966aff9..587c712 100644
--- a/tests/tapl/com/android/launcher3/tapl/Workspace.java
+++ b/tests/tapl/com/android/launcher3/tapl/Workspace.java
@@ -30,6 +30,7 @@
* Operations on the workspace screen.
*/
public final class Workspace extends Home {
+ private static final float FLING_SPEED = 3500.0F;
private final UiObject2 mHotseat;
private final int ICON_DRAG_SPEED = 2000;
@@ -125,7 +126,7 @@
*/
public void flingForward() {
final UiObject2 workspace = verifyActiveContainer();
- workspace.fling(Direction.RIGHT);
+ workspace.fling(Direction.RIGHT, (int) (FLING_SPEED * mLauncher.getDisplayDensity()));
mLauncher.waitForIdle();
verifyActiveContainer();
}
@@ -136,7 +137,7 @@
*/
public void flingBackward() {
final UiObject2 workspace = verifyActiveContainer();
- workspace.fling(Direction.LEFT);
+ workspace.fling(Direction.LEFT, (int) (FLING_SPEED * mLauncher.getDisplayDensity()));
mLauncher.waitForIdle();
verifyActiveContainer();
}