Merge "Set up a place holder tile for desktop" into tm-qpr-dev
This commit is contained in:
@@ -255,7 +255,8 @@ public class RecentTasksList {
|
|||||||
TaskLoadResult allTasks = new TaskLoadResult(requestId, loadKeysOnly, rawTasks.size());
|
TaskLoadResult allTasks = new TaskLoadResult(requestId, loadKeysOnly, rawTasks.size());
|
||||||
for (GroupedRecentTaskInfo rawTask : rawTasks) {
|
for (GroupedRecentTaskInfo rawTask : rawTasks) {
|
||||||
if (rawTask.getType() == GroupedRecentTaskInfo.TYPE_FREEFORM) {
|
if (rawTask.getType() == GroupedRecentTaskInfo.TYPE_FREEFORM) {
|
||||||
// TODO: add entry for freeform tasks
|
GroupTask desktopTask = createDesktopTask(rawTask);
|
||||||
|
allTasks.add(desktopTask);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
ActivityManager.RecentTaskInfo taskInfo1 = rawTask.getTaskInfo1();
|
ActivityManager.RecentTaskInfo taskInfo1 = rawTask.getTaskInfo1();
|
||||||
@@ -283,6 +284,16 @@ public class RecentTasksList {
|
|||||||
return allTasks;
|
return allTasks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private GroupTask createDesktopTask(GroupedRecentTaskInfo taskInfo) {
|
||||||
|
// TODO(b/244348395): create a subclass of GroupTask for desktop tile
|
||||||
|
// We need a single task information as the primary task. Use the first task
|
||||||
|
Task.TaskKey key = new Task.TaskKey(taskInfo.getTaskInfo1());
|
||||||
|
Task task = new Task(key);
|
||||||
|
task.desktopTile = true;
|
||||||
|
task.topActivity = key.sourceComponent;
|
||||||
|
return new GroupTask(task, null, null);
|
||||||
|
}
|
||||||
|
|
||||||
private SplitConfigurationOptions.SplitBounds convertSplitBounds(
|
private SplitConfigurationOptions.SplitBounds convertSplitBounds(
|
||||||
SplitBounds shellSplitBounds) {
|
SplitBounds shellSplitBounds) {
|
||||||
return shellSplitBounds == null ?
|
return shellSplitBounds == null ?
|
||||||
|
|||||||
@@ -58,6 +58,7 @@ import com.android.systemui.shared.system.smartspace.ILauncherUnlockAnimationCon
|
|||||||
import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
|
import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
|
||||||
import com.android.systemui.shared.system.smartspace.SmartspaceState;
|
import com.android.systemui.shared.system.smartspace.SmartspaceState;
|
||||||
import com.android.wm.shell.back.IBackAnimation;
|
import com.android.wm.shell.back.IBackAnimation;
|
||||||
|
import com.android.wm.shell.desktopmode.IDesktopMode;
|
||||||
import com.android.wm.shell.floating.IFloatingTasks;
|
import com.android.wm.shell.floating.IFloatingTasks;
|
||||||
import com.android.wm.shell.onehanded.IOneHanded;
|
import com.android.wm.shell.onehanded.IOneHanded;
|
||||||
import com.android.wm.shell.pip.IPip;
|
import com.android.wm.shell.pip.IPip;
|
||||||
@@ -95,6 +96,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
|||||||
private IStartingWindow mStartingWindow;
|
private IStartingWindow mStartingWindow;
|
||||||
private IRecentTasks mRecentTasks;
|
private IRecentTasks mRecentTasks;
|
||||||
private IBackAnimation mBackAnimation;
|
private IBackAnimation mBackAnimation;
|
||||||
|
private IDesktopMode mDesktopMode;
|
||||||
private final DeathRecipient mSystemUiProxyDeathRecipient = () -> {
|
private final DeathRecipient mSystemUiProxyDeathRecipient = () -> {
|
||||||
MAIN_EXECUTOR.execute(() -> clearProxy());
|
MAIN_EXECUTOR.execute(() -> clearProxy());
|
||||||
};
|
};
|
||||||
@@ -169,7 +171,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
|||||||
IFloatingTasks floatingTasks, IOneHanded oneHanded, IShellTransitions shellTransitions,
|
IFloatingTasks floatingTasks, IOneHanded oneHanded, IShellTransitions shellTransitions,
|
||||||
IStartingWindow startingWindow, IRecentTasks recentTasks,
|
IStartingWindow startingWindow, IRecentTasks recentTasks,
|
||||||
ISysuiUnlockAnimationController sysuiUnlockAnimationController,
|
ISysuiUnlockAnimationController sysuiUnlockAnimationController,
|
||||||
IBackAnimation backAnimation) {
|
IBackAnimation backAnimation, IDesktopMode desktopMode) {
|
||||||
unlinkToDeath();
|
unlinkToDeath();
|
||||||
mSystemUiProxy = proxy;
|
mSystemUiProxy = proxy;
|
||||||
mPip = pip;
|
mPip = pip;
|
||||||
@@ -181,6 +183,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
|||||||
mSysuiUnlockAnimationController = sysuiUnlockAnimationController;
|
mSysuiUnlockAnimationController = sysuiUnlockAnimationController;
|
||||||
mRecentTasks = recentTasks;
|
mRecentTasks = recentTasks;
|
||||||
mBackAnimation = backAnimation;
|
mBackAnimation = backAnimation;
|
||||||
|
mDesktopMode = desktopMode;
|
||||||
linkToDeath();
|
linkToDeath();
|
||||||
// re-attach the listeners once missing due to setProxy has not been initialized yet.
|
// re-attach the listeners once missing due to setProxy has not been initialized yet.
|
||||||
if (mPipAnimationListener != null && mPip != null) {
|
if (mPipAnimationListener != null && mPip != null) {
|
||||||
@@ -207,7 +210,7 @@ public class SystemUiProxy implements ISystemUiProxy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void clearProxy() {
|
public void clearProxy() {
|
||||||
setProxy(null, null, null, null, null, null, null, null, null, null);
|
setProxy(null, null, null, null, null, null, null, null, null, null, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO(141886704): Find a way to remove this
|
// TODO(141886704): Find a way to remove this
|
||||||
@@ -908,4 +911,19 @@ public class SystemUiProxy implements ISystemUiProxy {
|
|||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Desktop Mode
|
||||||
|
//
|
||||||
|
|
||||||
|
/** Call shell to show all apps active on the desktop */
|
||||||
|
public void showDesktopApps() {
|
||||||
|
if (mDesktopMode != null) {
|
||||||
|
try {
|
||||||
|
mDesktopMode.showDesktopApps();
|
||||||
|
} catch (RemoteException e) {
|
||||||
|
Log.w(TAG, "Failed call showDesktopApps", e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,6 +28,7 @@ import static com.android.quickstep.util.ActiveGestureErrorDetector.GestureEvent
|
|||||||
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.QuickStepContract.KEY_EXTRA_RECENT_TASKS;
|
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_RECENT_TASKS;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_BACK_ANIMATION;
|
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_BACK_ANIMATION;
|
||||||
|
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_DESKTOP_MODE;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_FLOATING_TASKS;
|
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_FLOATING_TASKS;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_ONE_HANDED;
|
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_ONE_HANDED;
|
||||||
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_PIP;
|
import static com.android.systemui.shared.system.QuickStepContract.KEY_EXTRA_SHELL_PIP;
|
||||||
@@ -111,6 +112,7 @@ import com.android.systemui.shared.system.InputMonitorCompat;
|
|||||||
import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
|
import com.android.systemui.shared.system.smartspace.ISysuiUnlockAnimationController;
|
||||||
import com.android.systemui.shared.tracing.ProtoTraceable;
|
import com.android.systemui.shared.tracing.ProtoTraceable;
|
||||||
import com.android.wm.shell.back.IBackAnimation;
|
import com.android.wm.shell.back.IBackAnimation;
|
||||||
|
import com.android.wm.shell.desktopmode.IDesktopMode;
|
||||||
import com.android.wm.shell.floating.IFloatingTasks;
|
import com.android.wm.shell.floating.IFloatingTasks;
|
||||||
import com.android.wm.shell.onehanded.IOneHanded;
|
import com.android.wm.shell.onehanded.IOneHanded;
|
||||||
import com.android.wm.shell.pip.IPip;
|
import com.android.wm.shell.pip.IPip;
|
||||||
@@ -184,10 +186,12 @@ public class TouchInteractionService extends Service
|
|||||||
bundle.getBinder(KEY_EXTRA_RECENT_TASKS));
|
bundle.getBinder(KEY_EXTRA_RECENT_TASKS));
|
||||||
IBackAnimation backAnimation = IBackAnimation.Stub.asInterface(
|
IBackAnimation backAnimation = IBackAnimation.Stub.asInterface(
|
||||||
bundle.getBinder(KEY_EXTRA_SHELL_BACK_ANIMATION));
|
bundle.getBinder(KEY_EXTRA_SHELL_BACK_ANIMATION));
|
||||||
|
IDesktopMode desktopMode = IDesktopMode.Stub.asInterface(
|
||||||
|
bundle.getBinder(KEY_EXTRA_SHELL_DESKTOP_MODE));
|
||||||
MAIN_EXECUTOR.execute(() -> {
|
MAIN_EXECUTOR.execute(() -> {
|
||||||
SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy, pip,
|
SystemUiProxy.INSTANCE.get(TouchInteractionService.this).setProxy(proxy, pip,
|
||||||
splitscreen, floatingTasks, onehanded, shellTransitions, startingWindow,
|
splitscreen, floatingTasks, onehanded, shellTransitions, startingWindow,
|
||||||
recentTasks, launcherUnlockAnimationController, backAnimation);
|
recentTasks, launcherUnlockAnimationController, backAnimation, desktopMode);
|
||||||
TouchInteractionService.this.initInputMonitor("TISBinder#onInitialize()");
|
TouchInteractionService.this.initInputMonitor("TISBinder#onInitialize()");
|
||||||
preloadOverview(true /* fromInit */);
|
preloadOverview(true /* fromInit */);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ import com.android.launcher3.util.ViewPool.Reusable;
|
|||||||
import com.android.quickstep.RecentsModel;
|
import com.android.quickstep.RecentsModel;
|
||||||
import com.android.quickstep.RemoteAnimationTargets;
|
import com.android.quickstep.RemoteAnimationTargets;
|
||||||
import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
|
import com.android.quickstep.RemoteTargetGluer.RemoteTargetHandle;
|
||||||
|
import com.android.quickstep.SystemUiProxy;
|
||||||
import com.android.quickstep.TaskIconCache;
|
import com.android.quickstep.TaskIconCache;
|
||||||
import com.android.quickstep.TaskOverlayFactory;
|
import com.android.quickstep.TaskOverlayFactory;
|
||||||
import com.android.quickstep.TaskThumbnailCache;
|
import com.android.quickstep.TaskThumbnailCache;
|
||||||
@@ -708,6 +709,11 @@ public class TaskView extends FrameLayout implements Reusable {
|
|||||||
RecentsView recentsView = getRecentsView();
|
RecentsView recentsView = getRecentsView();
|
||||||
RemoteTargetHandle[] remoteTargetHandles = recentsView.mRemoteTargetHandles;
|
RemoteTargetHandle[] remoteTargetHandles = recentsView.mRemoteTargetHandles;
|
||||||
RunnableList runnableList = new RunnableList();
|
RunnableList runnableList = new RunnableList();
|
||||||
|
if (mTask != null && mTask.desktopTile) {
|
||||||
|
// clicked on desktop
|
||||||
|
SystemUiProxy.INSTANCE.get(getContext()).showDesktopApps();
|
||||||
|
return runnableList;
|
||||||
|
}
|
||||||
if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask() && remoteTargetHandles != null) {
|
if (ENABLE_QUICKSTEP_LIVE_TILE.get() && isRunningTask() && remoteTargetHandles != null) {
|
||||||
if (!mIsClickableAsLiveTile) {
|
if (!mIsClickableAsLiveTile) {
|
||||||
return runnableList;
|
return runnableList;
|
||||||
|
|||||||
Reference in New Issue
Block a user