Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d57e709 authored by Vinit Nayak's avatar Vinit Nayak
Browse files

Shows AppPairs in previous tasks

Fixes: 203006080
Change-Id: I63912a61e7617ec41f229c19cc267dc5a1857bae
parent 44fcfa5b
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -1809,13 +1809,8 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
                mGestureState.updateLastStartedTaskId(taskId);
                boolean hasTaskPreviouslyAppeared = mGestureState.getPreviouslyAppearedTaskIds()
                        .contains(taskId);
                boolean isOldTaskSplit = LauncherSplitScreenListener.INSTANCE.getNoCreate()
                        .getRunningSplitTaskIds().length > 0;
                nextTask.launchTask(success -> {
                    resultCallback.accept(success);
                    if (isOldTaskSplit) {
                        SystemUiProxy.INSTANCE.getNoCreate().exitSplitScreen(taskId);
                    }
                    if (success) {
                        if (hasTaskPreviouslyAppeared) {
                            onRestartPreviouslyAppearedTask();
+15 −2
Original line number Diff line number Diff line
@@ -27,12 +27,14 @@ import android.util.SparseBooleanArray;

import androidx.annotation.VisibleForTesting;

import com.android.quickstep.util.GroupTask;
import com.android.launcher3.util.LooperExecutor;
import com.android.systemui.shared.recents.model.GroupTask;
import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.system.KeyguardManagerCompat;
import com.android.wm.shell.recents.IRecentTasksListener;
import com.android.wm.shell.util.GroupedRecentTaskInfo;
import com.android.wm.shell.util.StagedSplitBounds;

import java.util.ArrayList;
import java.util.Collections;
@@ -192,12 +194,23 @@ public class RecentTasksList {
                                tmpLockedUsers.get(task2Key.userId) /* isLocked */);
                task2.setLastSnapshotData(taskInfo2);
            }
            allTasks.add(new GroupTask(task1, task2));
            final SplitConfigurationOptions.StagedSplitBounds launcherSplitBounds =
                    convertSplitBounds(rawTask.mStagedSplitBounds);
            allTasks.add(new GroupTask(task1, task2, launcherSplitBounds));
        }

        return allTasks;
    }

    private SplitConfigurationOptions.StagedSplitBounds convertSplitBounds(
            StagedSplitBounds shellSplitBounds) {
        return shellSplitBounds == null ?
                null :
                new SplitConfigurationOptions.StagedSplitBounds(
                        shellSplitBounds.leftTopBounds, shellSplitBounds.rightBottomBounds,
                        shellSplitBounds.leftTopTaskId, shellSplitBounds.rightBottomTaskId);
    }

    private ArrayList<GroupTask> copyOf(ArrayList<GroupTask> tasks) {
        ArrayList<GroupTask> newTasks = new ArrayList<>();
        for (int i = 0; i < tasks.size(); i++) {
+1 −1
Original line number Diff line number Diff line
@@ -34,7 +34,7 @@ import com.android.launcher3.icons.IconProvider;
import com.android.launcher3.icons.IconProvider.IconChangeListener;
import com.android.launcher3.util.Executors.SimpleThreadFactory;
import com.android.launcher3.util.MainThreadInitializedObject;
import com.android.systemui.shared.recents.model.GroupTask;
import com.android.quickstep.util.GroupTask;
import com.android.systemui.shared.recents.model.Task;
import com.android.systemui.shared.recents.model.ThumbnailData;
import com.android.systemui.shared.system.ActivityManagerWrapper;
+5 −5
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ import android.content.Context;

import androidx.annotation.Nullable;

import com.android.launcher3.util.SplitConfigurationOptions;
import com.android.launcher3.util.SplitConfigurationOptions.StagedSplitBounds;
import com.android.quickstep.util.AnimatorControllerWithResistance;
import com.android.quickstep.util.LauncherSplitScreenListener;
import com.android.quickstep.util.TaskViewSimulator;
@@ -33,7 +33,7 @@ import com.android.systemui.shared.system.RemoteAnimationTargetCompat;
 */
public class RemoteTargetGluer {
    private RemoteTargetHandle[] mRemoteTargetHandles;
    private SplitConfigurationOptions.StagedSplitBounds mStagedSplitBounds;
    private StagedSplitBounds mStagedSplitBounds;

    /**
     * Use this constructor if remote targets are split-screen independent
@@ -108,9 +108,9 @@ public class RemoteTargetGluer {
            primaryTaskTarget = targets.findTask(splitIds[0]);
            secondaryTaskTarget = targets.findTask(splitIds[1]);

            mStagedSplitBounds = new SplitConfigurationOptions.StagedSplitBounds(
            mStagedSplitBounds = new StagedSplitBounds(
                    primaryTaskTarget.screenSpaceBounds,
                    secondaryTaskTarget.screenSpaceBounds);
                    secondaryTaskTarget.screenSpaceBounds, splitIds[0], splitIds[1]);
            mRemoteTargetHandles[0].mTransformParams.setTargetSet(
                    createRemoteAnimationTargetsForTarget(primaryTaskTarget, targets));
            mRemoteTargetHandles[0].mTaskViewSimulator.setPreview(primaryTaskTarget,
@@ -135,7 +135,7 @@ public class RemoteTargetGluer {
        return mRemoteTargetHandles;
    }

    public SplitConfigurationOptions.StagedSplitBounds getStagedSplitBounds() {
    public StagedSplitBounds getStagedSplitBounds() {
        return mStagedSplitBounds;
    }

+0 −47
Original line number Diff line number Diff line
@@ -572,53 +572,6 @@ public class SystemUiProxy implements ISystemUiProxy,
        mPendingSplitScreenListener = null;
    }

    public void setSideStageVisibility(boolean visible) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.setSideStageVisibility(visible);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call setSideStageVisibility");
            }
        }
    }

    /**
     * To be called whenever the user exits out of split screen apps (either by launching another
     * app or by swiping home)
     * @param topTaskId The taskId of the new app that was launched. System will then move this task
     *                  to the front of what the user sees while removing all other split stages.
     *                  If swiping to home (or there is no task to put at the top), can pass in -1.
     */
    public void exitSplitScreen(int topTaskId) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.exitSplitScreen(topTaskId);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call exitSplitScreen");
            }
        }
    }

    public void exitSplitScreenOnHide(boolean exitSplitScreenOnHide) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.exitSplitScreenOnHide(exitSplitScreenOnHide);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call exitSplitScreen");
            }
        }
    }

    public void startTask(int taskId, int stage, int position, Bundle options) {
        if (mSplitScreen != null) {
            try {
                mSplitScreen.startTask(taskId, stage, position, options);
            } catch (RemoteException e) {
                Log.w(TAG, "Failed call startTask");
            }
        }
    }

    /** Start multiple tasks in split-screen simultaneously. */
    public void startTasks(int mainTaskId, Bundle mainOptions, int sideTaskId, Bundle sideOptions,
            @SplitConfigurationOptions.StagePosition int sidePosition,
Loading