diff options
author | Vadim Tryshev <vadimt@google.com> | 2018-10-19 18:49:24 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2018-10-19 18:49:24 +0000 |
commit | 3f007ce28612df18d13f4ef19adc2609750c20cc (patch) | |
tree | c7b8cd3e9a9b7eb5ed891e78fc48c39255f39733 | |
parent | 30dfe8add3f114a0bfff8d1bbb5d88410f5436dd (diff) | |
parent | 0ca6c30bf022fda776abf913e0cf61c464c44601 (diff) | |
download | android_packages_apps_Trebuchet-3f007ce28612df18d13f4ef19adc2609750c20cc.tar.gz android_packages_apps_Trebuchet-3f007ce28612df18d13f4ef19adc2609750c20cc.tar.bz2 android_packages_apps_Trebuchet-3f007ce28612df18d13f4ef19adc2609750c20cc.zip |
Merge "Enabling creating additional shortcuts by any launcher" into ub-launcher3-master
4 files changed, 61 insertions, 21 deletions
diff --git a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java index 72895167f..59a937f4c 100644 --- a/quickstep/src/com/android/quickstep/TaskOverlayFactory.java +++ b/quickstep/src/com/android/quickstep/TaskOverlayFactory.java @@ -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) { @@ -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; + } } } diff --git a/quickstep/src/com/android/quickstep/views/TaskMenuView.java b/quickstep/src/com/android/quickstep/views/TaskMenuView.java index c4afad7c9..667165bf2 100644 --- a/quickstep/src/com/android/quickstep/views/TaskMenuView.java +++ b/quickstep/src/com/android/quickstep/views/TaskMenuView.java @@ -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. */ @@ -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) { @@ -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)); } } diff --git a/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java b/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java index 7223f97f4..ce65de1e0 100644 --- a/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java +++ b/quickstep/src/com/android/quickstep/views/TaskThumbnailView.java @@ -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); diff --git a/quickstep/src/com/android/quickstep/views/TaskView.java b/quickstep/src/com/android/quickstep/views/TaskView.java index c1424c475..56074f0f5 100644 --- a/quickstep/src/com/android/quickstep/views/TaskView.java +++ b/quickstep/src/com/android/quickstep/views/TaskView.java @@ -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; @@ -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; /** @@ -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) { @@ -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)); @@ -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); |