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

Commit 0324f024 authored by Tony Wickham's avatar Tony Wickham Committed by Automerger Merge Worker
Browse files

Merge "Handle swipe down on taskbar to stash" into tm-qpr-dev am: 2b8b4795

parents 3336c8ef 2b8b4795
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -43,7 +43,7 @@
    <dimen name="transient_taskbar_icon_size">52dp</dimen>

    <!-- Taskbar swipe up thresholds -->
    <dimen name="taskbar_nav_threshold">30dp</dimen>
    <dimen name="taskbar_from_nav_threshold">30dp</dimen>
    <dimen name="taskbar_app_window_threshold">100dp</dimen>
    <dimen name="taskbar_home_overview_threshold">180dp</dimen>
    <dimen name="taskbar_catch_up_threshold">300dp</dimen>
+3 −1
Original line number Diff line number Diff line
@@ -305,10 +305,12 @@
    <!-- An additional touch slop to prevent x-axis movement during the swipe up to show taskbar -->
    <dimen name="transient_taskbar_clamped_offset_bound">16dp</dimen>
    <!-- Taskbar swipe up thresholds -->
    <dimen name="taskbar_nav_threshold">40dp</dimen>
    <dimen name="taskbar_from_nav_threshold">40dp</dimen>
    <dimen name="taskbar_app_window_threshold">88dp</dimen>
    <dimen name="taskbar_home_overview_threshold">156dp</dimen>
    <dimen name="taskbar_catch_up_threshold">264dp</dimen>
    <!-- Taskbar swipe down threshold -->
    <dimen name="taskbar_to_nav_threshold">24dp</dimen>

    <!--  Taskbar 3 button spacing  -->
    <dimen name="taskbar_button_space_inbetween">24dp</dimen>
+4 −0
Original line number Diff line number Diff line
@@ -69,6 +69,10 @@ public class StashedHandleView extends View {
     */
    public void updateSampledRegion(Rect stashedHandleBounds) {
        getLocationOnScreen(mTmpArr);
        // Translations are temporary due to animations, remove them for the purpose of determining
        // the final region we want sampled.
        mTmpArr[0] -= Math.round(getTranslationX());
        mTmpArr[1] -= Math.round(getTranslationY());
        mSampledRegion.set(stashedHandleBounds);
        mSampledRegion.offset(mTmpArr[0], mTmpArr[1]);
    }
+0 −16
Original line number Diff line number Diff line
@@ -116,22 +116,6 @@ public class TaskbarDragLayer extends BaseDragLayer<TaskbarActivityContext> {
        return true;
    }

    @Override
    public boolean onInterceptTouchEvent(MotionEvent ev) {
        if (mControllerCallbacks != null) {
            mControllerCallbacks.tryStashBasedOnMotionEvent(ev);
        }
        return super.onInterceptTouchEvent(ev);
    }

    @Override
    public boolean onTouchEvent(MotionEvent ev) {
        if (mControllerCallbacks != null) {
            mControllerCallbacks.tryStashBasedOnMotionEvent(ev);
        }
        return super.onTouchEvent(ev);
    }

    @Override
    public void onViewRemoved(View child) {
        super.onViewRemoved(child);
+8 −47
Original line number Diff line number Diff line
@@ -18,15 +18,12 @@ package com.android.launcher3.taskbar;
import android.content.res.Resources;
import android.graphics.Point;
import android.graphics.Rect;
import android.view.MotionEvent;
import android.view.ViewTreeObserver;

import com.android.launcher3.DeviceProfile;
import com.android.launcher3.R;
import com.android.launcher3.anim.AnimatedFloat;
import com.android.launcher3.testing.shared.ResourceUtils;
import com.android.launcher3.util.DimensionUtils;
import com.android.launcher3.util.DisplayController;
import com.android.launcher3.util.TouchController;

import java.io.PrintWriter;
@@ -40,7 +37,6 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
    private final TaskbarActivityContext mActivity;
    private final TaskbarDragLayer mTaskbarDragLayer;
    private final int mFolderMargin;
    private float mGestureHeightYThreshold;

    // Alpha properties for taskbar background.
    private final AnimatedFloat mBgTaskbar = new AnimatedFloat(this::updateBackgroundAlpha);
@@ -59,6 +55,7 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa

    // Initialized in init.
    private TaskbarControllers mControllers;
    private TaskbarStashViaTouchController mTaskbarStashViaTouchController;
    private AnimatedFloat mOnBackgroundNavButtonColorIntensity;

    private float mLastSetBackgroundAlpha;
@@ -69,11 +66,11 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
        mTaskbarDragLayer = taskbarDragLayer;
        final Resources resources = mTaskbarDragLayer.getResources();
        mFolderMargin = resources.getDimensionPixelSize(R.dimen.taskbar_folder_margin);
        updateGestureHeight();
    }

    public void init(TaskbarControllers controllers) {
        mControllers = controllers;
        mTaskbarStashViaTouchController = new TaskbarStashViaTouchController(mControllers);
        mTaskbarDragLayer.init(new TaskbarDragLayerCallbacks());

        mOnBackgroundNavButtonColorIntensity = mControllers.navbarButtonsViewController
@@ -130,17 +127,11 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
        return mBgOffset;
    }

    private void updateGestureHeight() {
        int gestureHeight = ResourceUtils.getNavbarSize(ResourceUtils.NAVBAR_BOTTOM_GESTURE_SIZE,
                mActivity.getResources());
        mGestureHeightYThreshold = mActivity.getDeviceProfile().heightPx - gestureHeight;
    }

    /**
     * Make updates when configuration changes.
     */
    public void onConfigurationChanged() {
        updateGestureHeight();
        mTaskbarStashViaTouchController.updateGestureHeight();
    }

    private void updateBackgroundAlpha() {
@@ -213,8 +204,6 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
     */
    public class TaskbarDragLayerCallbacks {

        private final int[] mTempOutLocation = new int[2];

        /**
         * Called to update the touchable insets.
         * @see ViewTreeObserver.InternalInsetsInfo#setTouchableInsets(int)
@@ -223,37 +212,6 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
            mControllers.taskbarInsetsController.updateInsetsTouchability(insetsInfo);
        }

        /**
         * Listens to TaskbarDragLayer touch events and responds accordingly.
         */
        public void tryStashBasedOnMotionEvent(MotionEvent ev) {
            if (!DisplayController.isTransientTaskbar(mActivity)) {
                return;
            }
            if (mControllers.taskbarStashController.isStashed()) {
                return;
            }

            boolean stashTaskbar = false;

            MotionEvent screenCoordinates = MotionEvent.obtain(ev);
            if (ev.getAction() == MotionEvent.ACTION_OUTSIDE) {
                stashTaskbar = true;
            } else if (ev.getAction() == MotionEvent.ACTION_DOWN) {
                mTaskbarDragLayer.getLocationOnScreen(mTempOutLocation);
                screenCoordinates.offsetLocation(mTempOutLocation[0], mTempOutLocation[1]);

                if (!mControllers.taskbarViewController.isEventOverAnyItem(screenCoordinates)
                        && screenCoordinates.getY() < mGestureHeightYThreshold) {
                    stashTaskbar = true;
                }
            }

            if (stashTaskbar) {
                mControllers.taskbarStashController.updateAndAnimateTransientTaskbar(true);
            }
        }

        /**
         * Called when a child is removed from TaskbarDragLayer.
         */
@@ -283,9 +241,12 @@ public class TaskbarDragLayerController implements TaskbarControllers.LoggableTa
         * Returns touch controllers.
         */
        public TouchController[] getTouchControllers() {
            return new TouchController[]{mActivity.getDragController(),
            return new TouchController[] {
                    mActivity.getDragController(),
                    mControllers.taskbarForceVisibleImmersiveController,
                    mControllers.navbarButtonsViewController.getTouchController()};
                    mControllers.navbarButtonsViewController.getTouchController(),
                    mTaskbarStashViaTouchController,
            };
        }
    }
}
Loading