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

Commit 3f007ce2 authored by Vadim Tryshev's avatar Vadim Tryshev Committed by Android (Google) Code Review
Browse files

Merge "Enabling creating additional shortcuts by any launcher" into ub-launcher3-master

parents 30dfe8ad 0ca6c30b
Loading
Loading
Loading
Loading
+31 −4
Original line number Diff line number Diff line
@@ -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;
        }
    }
}
+9 −13
Original line number Diff line number Diff line
@@ -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));
        }
    }

+4 −0
Original line number Diff line number Diff line
@@ -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);
+17 −4
Original line number Diff line number Diff line
@@ -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);