Loading quickstep/src/com/android/quickstep/TaskOverlayFactory.java +31 −4 Original line number Diff line number Diff line Loading @@ -20,21 +20,34 @@ import android.content.Context; import android.graphics.Matrix; import android.view.View; import androidx.annotation.AnyThread; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.R; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.ResourceBasedOverride; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import androidx.annotation.AnyThread; import java.util.ArrayList; import java.util.List; /** * Factory class to create and add an overlays on the TaskView */ public class TaskOverlayFactory implements ResourceBasedOverride { private static TaskOverlayFactory sInstance; /** Note that these will be shown in order from top to bottom, if available for the task. */ private static final TaskSystemShortcut[] MENU_OPTIONS = new TaskSystemShortcut[]{ new TaskSystemShortcut.AppInfo(), new TaskSystemShortcut.SplitScreen(), new TaskSystemShortcut.Pin(), new TaskSystemShortcut.Install(), }; public static TaskOverlayFactory get(Context context) { Preconditions.assertUIThread(); if (sInstance == null) { Loading @@ -55,9 +68,23 @@ public class TaskOverlayFactory implements ResourceBasedOverride { public static class TaskOverlay { public void setTaskInfo(Task task, ThumbnailData thumbnail, Matrix matrix) { } public void setTaskInfo(Task task, ThumbnailData thumbnail, Matrix matrix) { } public void reset() { } public void reset() { } public List<TaskSystemShortcut> getEnabledShortcuts(TaskView taskView) { final ArrayList<TaskSystemShortcut> shortcuts = new ArrayList<>(); final BaseDraggingActivity activity = BaseActivity.fromContext(taskView.getContext()); for (TaskSystemShortcut menuOption : MENU_OPTIONS) { View.OnClickListener onClickListener = menuOption.getOnClickListener(activity, taskView); if (onClickListener != null) { shortcuts.add(menuOption); } } return shortcuts; } } } quickstep/src/com/android/quickstep/views/TaskMenuView.java +9 −13 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ import com.android.quickstep.TaskSystemShortcut; import com.android.quickstep.TaskUtils; import com.android.quickstep.views.IconView.OnScaleUpdateListener; import java.util.List; /** * Contains options for a recent task when long-pressing its icon. */ Loading @@ -50,14 +52,6 @@ public class TaskMenuView extends AbstractFloatingView { private static final Rect sTempRect = new Rect(); /** Note that these will be shown in order from top to bottom, if available for the task. */ public static final TaskSystemShortcut[] MENU_OPTIONS = new TaskSystemShortcut[] { new TaskSystemShortcut.AppInfo(), new TaskSystemShortcut.SplitScreen(), new TaskSystemShortcut.Pin(), new TaskSystemShortcut.Install(), }; private final OnScaleUpdateListener mTaskViewIconScaleListener = new OnScaleUpdateListener() { @Override public void onScaleUpdate(float scale) { Loading Loading @@ -197,11 +191,13 @@ public class TaskMenuView extends AbstractFloatingView { params.topMargin = (int) -mThumbnailTopMargin; mTaskIcon.setLayoutParams(params); for (TaskSystemShortcut menuOption : MENU_OPTIONS) { OnClickListener onClickListener = menuOption.getOnClickListener(mActivity, taskView); if (onClickListener != null) { addMenuOption(menuOption, onClickListener); } final BaseDraggingActivity activity = BaseDraggingActivity.fromContext(getContext()); final List<TaskSystemShortcut> shortcuts = taskView.getTaskOverlay().getEnabledShortcuts(taskView); final int count = shortcuts.size(); for (int i = 0; i < count; ++i) { final TaskSystemShortcut menuOption = shortcuts.get(i); addMenuOption(menuOption, menuOption.getOnClickListener(activity, taskView)); } } Loading quickstep/src/com/android/quickstep/views/TaskThumbnailView.java +4 −0 Original line number Diff line number Diff line Loading @@ -173,6 +173,10 @@ public class TaskThumbnailView extends View { return 0; } public TaskOverlay getTaskOverlay() { return mOverlay; } @Override protected void onDraw(Canvas canvas) { drawOnCanvas(canvas, 0, 0, getMeasuredWidth(), getMeasuredHeight(), mCornerRadius); Loading quickstep/src/com/android/quickstep/views/TaskView.java +17 −4 Original line number Diff line number Diff line Loading @@ -42,12 +42,12 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.Toast; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.quickstep.TaskOverlayFactory; import com.android.quickstep.TaskSystemShortcut; import com.android.quickstep.TaskUtils; import com.android.quickstep.views.RecentsView.PageCallbacks; Loading @@ -56,8 +56,9 @@ import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskCallbacks; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityOptionsCompat; import java.util.List; import java.util.function.Consumer; /** Loading Loading @@ -190,6 +191,10 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback return mIconView; } public TaskOverlayFactory.TaskOverlay getTaskOverlay() { return mSnapshotView.getTaskOverlay(); } public void launchTask(boolean animate) { launchTask(animate, (result) -> { if (!result) { Loading Loading @@ -384,7 +389,11 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback final Context context = getContext(); final BaseDraggingActivity activity = fromContext(context); for (TaskSystemShortcut menuOption : TaskMenuView.MENU_OPTIONS) { final List<TaskSystemShortcut> shortcuts = mSnapshotView.getTaskOverlay().getEnabledShortcuts(this); final int count = shortcuts.size(); for (int i = 0; i < count; ++i) { final TaskSystemShortcut menuOption = shortcuts.get(i); OnClickListener onClickListener = menuOption.getOnClickListener(activity, this); if (onClickListener != null) { info.addAction(menuOption.createAccessibilityAction(context)); Loading @@ -407,7 +416,11 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback return true; } for (TaskSystemShortcut menuOption : TaskMenuView.MENU_OPTIONS) { final List<TaskSystemShortcut> shortcuts = mSnapshotView.getTaskOverlay().getEnabledShortcuts(this); final int count = shortcuts.size(); for (int i = 0; i < count; ++i) { final TaskSystemShortcut menuOption = shortcuts.get(i); if (menuOption.hasHandlerForAction(action)) { OnClickListener onClickListener = menuOption.getOnClickListener( fromContext(getContext()), this); Loading Loading
quickstep/src/com/android/quickstep/TaskOverlayFactory.java +31 −4 Original line number Diff line number Diff line Loading @@ -20,21 +20,34 @@ import android.content.Context; import android.graphics.Matrix; import android.view.View; import androidx.annotation.AnyThread; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.R; import com.android.launcher3.util.Preconditions; import com.android.launcher3.util.ResourceBasedOverride; import com.android.quickstep.views.TaskView; import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.ThumbnailData; import androidx.annotation.AnyThread; import java.util.ArrayList; import java.util.List; /** * Factory class to create and add an overlays on the TaskView */ public class TaskOverlayFactory implements ResourceBasedOverride { private static TaskOverlayFactory sInstance; /** Note that these will be shown in order from top to bottom, if available for the task. */ private static final TaskSystemShortcut[] MENU_OPTIONS = new TaskSystemShortcut[]{ new TaskSystemShortcut.AppInfo(), new TaskSystemShortcut.SplitScreen(), new TaskSystemShortcut.Pin(), new TaskSystemShortcut.Install(), }; public static TaskOverlayFactory get(Context context) { Preconditions.assertUIThread(); if (sInstance == null) { Loading @@ -55,9 +68,23 @@ public class TaskOverlayFactory implements ResourceBasedOverride { public static class TaskOverlay { public void setTaskInfo(Task task, ThumbnailData thumbnail, Matrix matrix) { } public void setTaskInfo(Task task, ThumbnailData thumbnail, Matrix matrix) { } public void reset() { } public void reset() { } public List<TaskSystemShortcut> getEnabledShortcuts(TaskView taskView) { final ArrayList<TaskSystemShortcut> shortcuts = new ArrayList<>(); final BaseDraggingActivity activity = BaseActivity.fromContext(taskView.getContext()); for (TaskSystemShortcut menuOption : MENU_OPTIONS) { View.OnClickListener onClickListener = menuOption.getOnClickListener(activity, taskView); if (onClickListener != null) { shortcuts.add(menuOption); } } return shortcuts; } } }
quickstep/src/com/android/quickstep/views/TaskMenuView.java +9 −13 Original line number Diff line number Diff line Loading @@ -43,6 +43,8 @@ import com.android.quickstep.TaskSystemShortcut; import com.android.quickstep.TaskUtils; import com.android.quickstep.views.IconView.OnScaleUpdateListener; import java.util.List; /** * Contains options for a recent task when long-pressing its icon. */ Loading @@ -50,14 +52,6 @@ public class TaskMenuView extends AbstractFloatingView { private static final Rect sTempRect = new Rect(); /** Note that these will be shown in order from top to bottom, if available for the task. */ public static final TaskSystemShortcut[] MENU_OPTIONS = new TaskSystemShortcut[] { new TaskSystemShortcut.AppInfo(), new TaskSystemShortcut.SplitScreen(), new TaskSystemShortcut.Pin(), new TaskSystemShortcut.Install(), }; private final OnScaleUpdateListener mTaskViewIconScaleListener = new OnScaleUpdateListener() { @Override public void onScaleUpdate(float scale) { Loading Loading @@ -197,11 +191,13 @@ public class TaskMenuView extends AbstractFloatingView { params.topMargin = (int) -mThumbnailTopMargin; mTaskIcon.setLayoutParams(params); for (TaskSystemShortcut menuOption : MENU_OPTIONS) { OnClickListener onClickListener = menuOption.getOnClickListener(mActivity, taskView); if (onClickListener != null) { addMenuOption(menuOption, onClickListener); } final BaseDraggingActivity activity = BaseDraggingActivity.fromContext(getContext()); final List<TaskSystemShortcut> shortcuts = taskView.getTaskOverlay().getEnabledShortcuts(taskView); final int count = shortcuts.size(); for (int i = 0; i < count; ++i) { final TaskSystemShortcut menuOption = shortcuts.get(i); addMenuOption(menuOption, menuOption.getOnClickListener(activity, taskView)); } } Loading
quickstep/src/com/android/quickstep/views/TaskThumbnailView.java +4 −0 Original line number Diff line number Diff line Loading @@ -173,6 +173,10 @@ public class TaskThumbnailView extends View { return 0; } public TaskOverlay getTaskOverlay() { return mOverlay; } @Override protected void onDraw(Canvas canvas) { drawOnCanvas(canvas, 0, 0, getMeasuredWidth(), getMeasuredHeight(), mCornerRadius); Loading
quickstep/src/com/android/quickstep/views/TaskView.java +17 −4 Original line number Diff line number Diff line Loading @@ -42,12 +42,12 @@ import android.view.accessibility.AccessibilityNodeInfo; import android.widget.FrameLayout; import android.widget.Toast; import com.android.launcher3.BaseActivity; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.R; import com.android.launcher3.Utilities; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Direction; import com.android.launcher3.userevent.nano.LauncherLogProto.Action.Touch; import com.android.quickstep.TaskOverlayFactory; import com.android.quickstep.TaskSystemShortcut; import com.android.quickstep.TaskUtils; import com.android.quickstep.views.RecentsView.PageCallbacks; Loading @@ -56,8 +56,9 @@ import com.android.systemui.shared.recents.model.Task; import com.android.systemui.shared.recents.model.Task.TaskCallbacks; import com.android.systemui.shared.recents.model.ThumbnailData; import com.android.systemui.shared.system.ActivityManagerWrapper; import com.android.systemui.shared.system.ActivityOptionsCompat; import java.util.List; import java.util.function.Consumer; /** Loading Loading @@ -190,6 +191,10 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback return mIconView; } public TaskOverlayFactory.TaskOverlay getTaskOverlay() { return mSnapshotView.getTaskOverlay(); } public void launchTask(boolean animate) { launchTask(animate, (result) -> { if (!result) { Loading Loading @@ -384,7 +389,11 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback final Context context = getContext(); final BaseDraggingActivity activity = fromContext(context); for (TaskSystemShortcut menuOption : TaskMenuView.MENU_OPTIONS) { final List<TaskSystemShortcut> shortcuts = mSnapshotView.getTaskOverlay().getEnabledShortcuts(this); final int count = shortcuts.size(); for (int i = 0; i < count; ++i) { final TaskSystemShortcut menuOption = shortcuts.get(i); OnClickListener onClickListener = menuOption.getOnClickListener(activity, this); if (onClickListener != null) { info.addAction(menuOption.createAccessibilityAction(context)); Loading @@ -407,7 +416,11 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback return true; } for (TaskSystemShortcut menuOption : TaskMenuView.MENU_OPTIONS) { final List<TaskSystemShortcut> shortcuts = mSnapshotView.getTaskOverlay().getEnabledShortcuts(this); final int count = shortcuts.size(); for (int i = 0; i < count; ++i) { final TaskSystemShortcut menuOption = shortcuts.get(i); if (menuOption.hasHandlerForAction(action)) { OnClickListener onClickListener = menuOption.getOnClickListener( fromContext(getContext()), this); Loading