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

Commit 5b3cc115 authored by Mady Mellor's avatar Mady Mellor
Browse files

Improve swiping to reveal gear for ongoing notifications with time check

Swiping to show the gear for ongoing notifications can be difficult, this
CL adds an additional check for the duration of the gesture, if the
gesture takes long enough on an non dismissable notification then it
considers it a gear reveal.

Bug: 30908400
Change-Id: Iec769bae2a70ef79acb43c69063cc9e2b6b1f56f
parent 8b47748b
Loading
Loading
Loading
Loading
+9 −8
Original line number Diff line number Diff line
@@ -3912,6 +3912,7 @@ public class NotificationStackScrollLayout extends ViewGroup
    private class NotificationSwipeHelper extends SwipeHelper {
        private static final long SHOW_GEAR_DELAY = 60;
        private static final long COVER_GEAR_DELAY = 4000;
        private static final long SWIPE_GEAR_TIMING = 200;
        private CheckForDrag mCheckForDrag;
        private Runnable mFalsingCheck;
        private Handler mHandler;
@@ -4028,6 +4029,9 @@ public class NotificationStackScrollLayout extends ViewGroup

            boolean gestureTowardsGear = isTowardsGear(velocity, mCurrIconRow.isIconOnLeft());
            boolean gestureFastEnough = Math.abs(velocity) > getEscapeVelocity();
            final double timeForGesture = ev.getEventTime() - ev.getDownTime();
            final boolean showGearForSlowOnGoing = !canChildBeDismissed(animView)
                && timeForGesture >= SWIPE_GEAR_TIMING;

            if (mGearSnappedTo && mCurrIconRow.isVisible()) {
                if (mGearSnappedOnLeft == mCurrIconRow.isIconOnLeft()) {
@@ -4052,7 +4056,8 @@ public class NotificationStackScrollLayout extends ViewGroup
                } else {
                    dismissOrSnapBack(animView, velocity, ev);
                }
            } else if ((!gestureFastEnough && swipedEnoughToShowGear(animView))
            } else if (((!gestureFastEnough || showGearForSlowOnGoing)
                    && swipedEnoughToShowGear(animView))
                    || gestureTowardsGear) {
                // Gear has not been snapped to previously and this is gear revealing gesture
                snapToGear(animView, velocity);
@@ -4104,13 +4109,9 @@ public class NotificationStackScrollLayout extends ViewGroup
            final float multiplier = canChildBeDismissed(animView) ? 0.4f : 0.2f;
            final float snapBackThreshold = getSpaceForGear(animView) * multiplier;
            final float translation = getTranslation(animView);
            final boolean fromLeft = translation > 0;
            final float absTrans = Math.abs(translation);
            final float notiThreshold = getSize(mTranslatingParentView) * 0.4f;

            return mCurrIconRow.isVisible() && (mCurrIconRow.isIconOnLeft()
                    ? (translation > snapBackThreshold && translation <= notiThreshold)
                    : (translation < -snapBackThreshold && translation >= -notiThreshold));
            return !swipedFarEnough() && mCurrIconRow.isVisible() && (mCurrIconRow.isIconOnLeft()
                    ? translation > snapBackThreshold
                    : translation < -snapBackThreshold);
        }

        @Override