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

Commit 2203caa2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Tapping task icon in overview with scroll to it and open" into ub-launcher3-master

parents e7e6d4ac 90646a5d
Loading
Loading
Loading
Loading
+16 −9
Original line number Diff line number Diff line
@@ -87,6 +87,7 @@ public class TaskMenuView extends AbstractFloatingView {
    private static final int REVEAL_OPEN_DURATION = 150;
    private static final int REVEAL_CLOSE_DURATION = 100;

    private final float mThumbnailTopMargin;
    private BaseDraggingActivity mActivity;
    private TextView mTaskName;
    private IconView mTaskIcon;
@@ -103,6 +104,7 @@ public class TaskMenuView extends AbstractFloatingView {
        super(context, attrs, defStyleAttr);

        mActivity = BaseDraggingActivity.fromContext(context);
        mThumbnailTopMargin = getResources().getDimension(R.dimen.task_thumbnail_top_margin);
    }

    @Override
@@ -154,11 +156,16 @@ public class TaskMenuView extends AbstractFloatingView {
        return (type & TYPE_TASK_MENU) != 0;
    }

    public static boolean showForTask(TaskView taskView) {
    public void setPosition(float x, float y) {
        setX(x);
        setY(y + mThumbnailTopMargin);
    }

    public static TaskMenuView showForTask(TaskView taskView) {
        BaseDraggingActivity activity = BaseDraggingActivity.fromContext(taskView.getContext());
        final TaskMenuView taskMenuView = (TaskMenuView) activity.getLayoutInflater().inflate(
                        R.layout.task_menu, activity.getDragLayer(), false);
        return taskMenuView.populateAndShowForTask(taskView);
        return taskMenuView.populateAndShowForTask(taskView) ? taskMenuView : null;
    }

    private boolean populateAndShowForTask(TaskView taskView) {
@@ -188,7 +195,7 @@ public class TaskMenuView extends AbstractFloatingView {
        // Move the icon and text up half an icon size to lay over the TaskView
        LinearLayout.LayoutParams params =
                (LinearLayout.LayoutParams) mTaskIcon.getLayoutParams();
        params.topMargin = (int) -getResources().getDimension(R.dimen.task_thumbnail_top_margin);
        params.topMargin = (int) -mThumbnailTopMargin;
        mTaskIcon.setLayoutParams(params);

        for (TaskSystemShortcut menuOption : MENU_OPTIONS) {
@@ -213,12 +220,12 @@ public class TaskMenuView extends AbstractFloatingView {
        mActivity.getDragLayer().getDescendantRectRelativeToSelf(taskView, sTempRect);
        Rect insets = mActivity.getDragLayer().getInsets();
        BaseDragLayer.LayoutParams params = (BaseDragLayer.LayoutParams) getLayoutParams();
        params.width = sTempRect.width();
        params.gravity = Gravity.LEFT;
        params.width = taskView.getMeasuredWidth();
        params.gravity = Gravity.START;
        setLayoutParams(params);
        setX(Math.round(sTempRect.left - insets.left));
        setY(Math.round(sTempRect.top - insets.top
                + getResources().getDimension(R.dimen.task_thumbnail_top_margin)));
        setScaleX(taskView.getScaleX());
        setScaleY(taskView.getScaleY());
        setPosition(sTempRect.left - insets.left, sTempRect.top - insets.top);
    }

    private void animateOpen() {
@@ -232,7 +239,7 @@ public class TaskMenuView extends AbstractFloatingView {

    private void animateOpenOrClosed(boolean closing) {
        if (mOpenCloseAnimator != null && mOpenCloseAnimator.isRunning()) {
            return;
            mOpenCloseAnimator.end();
        }
        mOpenCloseAnimator = LauncherAnimUtils.createAnimatorSet();

+33 −2
Original line number Diff line number Diff line
@@ -110,8 +110,24 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
        }
    };

    private final OnAttachStateChangeListener mTaskMenuStateListener =
            new OnAttachStateChangeListener() {
                @Override
                public void onViewAttachedToWindow(View view) {
                }

                @Override
                public void onViewDetachedFromWindow(View view) {
                    if (mMenuView != null) {
                        mMenuView.removeOnAttachStateChangeListener(this);
                        mMenuView = null;
                    }
                }
            };

    private Task mTask;
    private TaskThumbnailView mSnapshotView;
    private TaskMenuView mMenuView;
    private IconView mIconView;
    private float mCurveScale;
    private float mZoomScale;
@@ -200,13 +216,22 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback
    public void onTaskDataLoaded(Task task, ThumbnailData thumbnailData) {
        mSnapshotView.setThumbnail(task, thumbnailData);
        mIconView.setDrawable(task.icon);
        mIconView.setOnClickListener(icon -> TaskMenuView.showForTask(this));
        mIconView.setOnClickListener(icon -> showTaskMenu());
        mIconView.setOnLongClickListener(icon -> {
            requestDisallowInterceptTouchEvent(true);
            return TaskMenuView.showForTask(this);
            return showTaskMenu();
        });
    }

    private boolean showTaskMenu() {
        getRecentsView().snapToPage(getRecentsView().indexOfChild(this));
        mMenuView = TaskMenuView.showForTask(this);
        if (mMenuView != null) {
            mMenuView.addOnAttachStateChangeListener(mTaskMenuStateListener);
        }
        return mMenuView != null;
    }

    @Override
    public void onTaskDataUnloaded() {
        mSnapshotView.setThumbnail(null, null);
@@ -266,6 +291,12 @@ public class TaskView extends FrameLayout implements TaskCallbacks, PageCallback

        mSnapshotView.setDimAlpha(curveInterpolation * MAX_PAGE_SCRIM_ALPHA);
        setCurveScale(getCurveScaleForCurveInterpolation(curveInterpolation));

        if (mMenuView != null) {
            mMenuView.setPosition(getX() - getRecentsView().getScrollX(), getY());
            mMenuView.setScaleX(getScaleX());
            mMenuView.setScaleY(getScaleY());
        }
    }

    @Override