Loading go/quickstep/src/com/android/quickstep/TaskActionController.java +15 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static com.android.quickstep.TaskAdapter.TASKS_START_POSITION; import android.app.ActivityOptions; import android.view.View; import androidx.annotation.NonNull; import com.android.quickstep.views.TaskItemView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.ActivityManagerWrapper; Loading @@ -39,11 +41,11 @@ public final class TaskActionController { } /** * Launch the task associated with the task holder, animating into the app. * Launch the task associated with the task holder, animating into the app from the task view. * * @param viewHolder the task view holder to launch */ public void launchTask(TaskHolder viewHolder) { public void launchTaskFromView(@NonNull TaskHolder viewHolder) { if (!viewHolder.getTask().isPresent()) { return; } Loading @@ -60,6 +62,17 @@ public final class TaskActionController { null /* resultCallbackHandler */); } /** * Launch the task directly with a basic animation. * * @param task the task to launch */ public void launchTask(@NonNull Task task) { ActivityOptions opts = ActivityOptions.makeBasic(); ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(task.key, opts, null /* resultCallback */, null /* resultCallbackHandler */); } /** * Removes the task holder and the task, updating the model and the view. * Loading go/quickstep/src/com/android/quickstep/TaskAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -83,7 +83,8 @@ public final class TaskAdapter extends Adapter<ViewHolder> { TaskItemView itemView = (TaskItemView) LayoutInflater.from(parent.getContext()) .inflate(R.layout.task_item_view, parent, false); TaskHolder taskHolder = new TaskHolder(itemView); itemView.setOnClickListener(view -> mTaskActionController.launchTask(taskHolder)); itemView.setOnClickListener( view -> mTaskActionController.launchTaskFromView(taskHolder)); return taskHolder; case ITEM_TYPE_CLEAR_ALL: View clearView = LayoutInflater.from(parent.getContext()) Loading go/quickstep/src/com/android/quickstep/views/IconRecentsView.java +22 −10 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ import com.android.quickstep.TaskSwipeCallback; import com.android.systemui.shared.recents.model.Task; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; /** Loading Loading @@ -263,23 +265,33 @@ public final class IconRecentsView extends FrameLayout { * the app. In that case, we launch the next most recent. */ public void handleOverviewCommand() { // TODO(130735711): Need to address case where most recent task is off screen/unattached. ArrayList<TaskItemView> taskViews = getTaskViews(); int taskViewsSize = taskViews.size(); if (taskViewsSize <= 1) { List<Task> tasks = mTaskLoader.getCurrentTaskList(); int tasksSize = tasks.size(); if (tasksSize == 0) { // Do nothing return; } TaskHolder taskToLaunch; if (mTransitionedFromApp && taskViewsSize > 1) { Task taskToLaunch; if (mTransitionedFromApp && tasksSize > 1) { // Launch the next most recent app TaskItemView itemView = taskViews.get(1); taskToLaunch = (TaskHolder) mTaskRecyclerView.getChildViewHolder(itemView); taskToLaunch = tasks.get(1); } else { // Launch the most recent app TaskItemView itemView = taskViews.get(0); taskToLaunch = (TaskHolder) mTaskRecyclerView.getChildViewHolder(itemView); taskToLaunch = tasks.get(0); } // See if view for this task is attached, and if so, animate launch from that view. ArrayList<TaskItemView> itemViews = getTaskViews(); for (int i = 0, size = itemViews.size(); i < size; i++) { TaskItemView taskView = itemViews.get(i); TaskHolder holder = (TaskHolder) mTaskRecyclerView.getChildViewHolder(taskView); if (Objects.equals(holder.getTask(), Optional.of(taskToLaunch))) { mTaskActionController.launchTaskFromView(holder); return; } } // Otherwise, just use a basic launch animation. mTaskActionController.launchTask(taskToLaunch); } Loading Loading
go/quickstep/src/com/android/quickstep/TaskActionController.java +15 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,8 @@ import static com.android.quickstep.TaskAdapter.TASKS_START_POSITION; import android.app.ActivityOptions; import android.view.View; import androidx.annotation.NonNull; import com.android.quickstep.views.TaskItemView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.system.ActivityManagerWrapper; Loading @@ -39,11 +41,11 @@ public final class TaskActionController { } /** * Launch the task associated with the task holder, animating into the app. * Launch the task associated with the task holder, animating into the app from the task view. * * @param viewHolder the task view holder to launch */ public void launchTask(TaskHolder viewHolder) { public void launchTaskFromView(@NonNull TaskHolder viewHolder) { if (!viewHolder.getTask().isPresent()) { return; } Loading @@ -60,6 +62,17 @@ public final class TaskActionController { null /* resultCallbackHandler */); } /** * Launch the task directly with a basic animation. * * @param task the task to launch */ public void launchTask(@NonNull Task task) { ActivityOptions opts = ActivityOptions.makeBasic(); ActivityManagerWrapper.getInstance().startActivityFromRecentsAsync(task.key, opts, null /* resultCallback */, null /* resultCallbackHandler */); } /** * Removes the task holder and the task, updating the model and the view. * Loading
go/quickstep/src/com/android/quickstep/TaskAdapter.java +2 −1 Original line number Diff line number Diff line Loading @@ -83,7 +83,8 @@ public final class TaskAdapter extends Adapter<ViewHolder> { TaskItemView itemView = (TaskItemView) LayoutInflater.from(parent.getContext()) .inflate(R.layout.task_item_view, parent, false); TaskHolder taskHolder = new TaskHolder(itemView); itemView.setOnClickListener(view -> mTaskActionController.launchTask(taskHolder)); itemView.setOnClickListener( view -> mTaskActionController.launchTaskFromView(taskHolder)); return taskHolder; case ITEM_TYPE_CLEAR_ALL: View clearView = LayoutInflater.from(parent.getContext()) Loading
go/quickstep/src/com/android/quickstep/views/IconRecentsView.java +22 −10 Original line number Diff line number Diff line Loading @@ -59,6 +59,8 @@ import com.android.quickstep.TaskSwipeCallback; import com.android.systemui.shared.recents.model.Task; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.Optional; /** Loading Loading @@ -263,23 +265,33 @@ public final class IconRecentsView extends FrameLayout { * the app. In that case, we launch the next most recent. */ public void handleOverviewCommand() { // TODO(130735711): Need to address case where most recent task is off screen/unattached. ArrayList<TaskItemView> taskViews = getTaskViews(); int taskViewsSize = taskViews.size(); if (taskViewsSize <= 1) { List<Task> tasks = mTaskLoader.getCurrentTaskList(); int tasksSize = tasks.size(); if (tasksSize == 0) { // Do nothing return; } TaskHolder taskToLaunch; if (mTransitionedFromApp && taskViewsSize > 1) { Task taskToLaunch; if (mTransitionedFromApp && tasksSize > 1) { // Launch the next most recent app TaskItemView itemView = taskViews.get(1); taskToLaunch = (TaskHolder) mTaskRecyclerView.getChildViewHolder(itemView); taskToLaunch = tasks.get(1); } else { // Launch the most recent app TaskItemView itemView = taskViews.get(0); taskToLaunch = (TaskHolder) mTaskRecyclerView.getChildViewHolder(itemView); taskToLaunch = tasks.get(0); } // See if view for this task is attached, and if so, animate launch from that view. ArrayList<TaskItemView> itemViews = getTaskViews(); for (int i = 0, size = itemViews.size(); i < size; i++) { TaskItemView taskView = itemViews.get(i); TaskHolder holder = (TaskHolder) mTaskRecyclerView.getChildViewHolder(taskView); if (Objects.equals(holder.getTask(), Optional.of(taskToLaunch))) { mTaskActionController.launchTaskFromView(holder); return; } } // Otherwise, just use a basic launch animation. mTaskActionController.launchTask(taskToLaunch); } Loading