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

Commit 0ca9bdd1 authored by Ivan Tkachenko's avatar Ivan Tkachenko Committed by Automerger Merge Worker
Browse files

Merge "Bubble bar drag to dismiss" into udc-qpr-dev am: aa278351

parents 66928942 aa278351
Loading
Loading
Loading
Loading
+38 −2
Original line number Diff line number Diff line
@@ -1053,6 +1053,20 @@ public class BubbleController implements ConfigurationChangeListener,
        mBubbleData.setExpanded(false /* expanded */);
    }

    /**
     * Update expanded state when a single bubble is dragged in Launcher.
     * Will be called only when bubble bar is expanded.
     * @param bubbleKey key of the bubble to collapse/expand
     * @param collapse whether to collapse or expand
     */
    public void collapseWhileDragging(String bubbleKey, boolean collapse) {
        if (mBubbleData.getSelectedBubble() != null
                && mBubbleData.getSelectedBubble().getKey().equals(bubbleKey)) {
            // Should collapse/expand only if equals to selected bubble.
            mBubbleBarViewCallback.expansionChanged(/* isExpanded = */ !collapse);
        }
    }

    @VisibleForTesting
    public boolean isBubbleNotificationSuppressedFromShade(String key, String groupKey) {
        boolean isSuppressedBubble = (mBubbleData.hasAnyBubbleWithKey(key)
@@ -1438,6 +1452,17 @@ public class BubbleController implements ConfigurationChangeListener,
        }
    }

    /**
     * Removes all the bubbles.
     * <p>
     * Must be called from the main thread.
     */
    @VisibleForTesting
    @MainThread
    public void removeAllBubbles(@Bubbles.DismissReason int reason) {
        mBubbleData.dismissAll(reason);
    }

    private void onEntryAdded(BubbleEntry entry) {
        if (canLaunchInTaskView(mContext, entry)) {
            updateBubble(entry);
@@ -2099,14 +2124,25 @@ public class BubbleController implements ConfigurationChangeListener,
        }

        @Override
        public void removeBubble(String key, int reason) {
            // TODO (b/271466616) allow removals from launcher
        public void removeBubble(String key) {
            mMainExecutor.execute(
                    () -> mController.removeBubble(key, Bubbles.DISMISS_USER_GESTURE));
        }

        @Override
        public void removeAllBubbles() {
            mMainExecutor.execute(() -> mController.removeAllBubbles(Bubbles.DISMISS_USER_GESTURE));
        }

        @Override
        public void collapseBubbles() {
            mMainExecutor.execute(() -> mController.collapseStack());
        }

        @Override
        public void collapseWhileDragging(String bubbleKey, boolean collapse) {
            mMainExecutor.execute(() -> mController.collapseWhileDragging(bubbleKey, collapse));
        }
    }

    private class BubblesImpl implements Bubbles {
+6 −2
Original line number Diff line number Diff line
@@ -31,8 +31,12 @@ interface IBubbles {

    oneway void showBubble(in String key, in int bubbleBarOffsetX, in int bubbleBarOffsetY) = 3;

    oneway void removeBubble(in String key, in int reason) = 4;
    oneway void removeBubble(in String key) = 4;

    oneway void collapseBubbles() = 5;
    oneway void removeAllBubbles() = 5;

    oneway void collapseBubbles() = 6;

    oneway void collapseWhileDragging(in String key, in boolean collapse) = 7;

}
 No newline at end of file
+8 −0
Original line number Diff line number Diff line
@@ -215,6 +215,14 @@ public class BubbleBarAnimationHelper {
        mExpandedViewAlphaAnimator.reverse();
    }

    /**
     * Cancel current animations
     */
    public void cancelAnimations() {
        PhysicsAnimator.getInstance(mExpandedViewContainerMatrix).cancel();
        mExpandedViewAlphaAnimator.cancel();
    }

    private void updateExpandedView() {
        if (mExpandedBubble == null || mExpandedBubble.getBubbleBarExpandedView() == null) {
            Log.w(TAG, "Trying to update the expanded view without a bubble");
+6 −0
Original line number Diff line number Diff line
@@ -150,6 +150,12 @@ public class BubbleBarLayerView extends FrameLayout
            mExpandedView = null;
        }
        if (mExpandedView == null) {
            if (expandedView.getParent() != null) {
                // Expanded view might be animating collapse and is still attached
                // Cancel current animations and remove from parent
                mAnimationHelper.cancelAnimations();
                removeView(expandedView);
            }
            mExpandedBubble = b;
            mExpandedView = expandedView;
            boolean isOverflowExpanded = b.getKey().equals(BubbleOverflow.KEY);
+19 −0
Original line number Diff line number Diff line
@@ -78,6 +78,24 @@ abstract class RelativeTouchListener : View.OnTouchListener {
        velY: Float
    )

    /**
     * Called when an ACTION_CANCEL event is received for the given view. This signals that the
     * current gesture has been aborted.
     *
     * @param viewInitialX The view's translationX value when this touch gesture started.
     * @param viewInitialY The view's translationY value when this touch gesture started.
     * @param dx Horizontal distance covered since the initial ACTION_DOWN event, in pixels.
     * @param dy Vertical distance covered since the initial ACTION_DOWN event, in pixels.
     */
    open fun onCancel(
        v: View,
        ev: MotionEvent,
        viewInitialX: Float,
        viewInitialY: Float,
        dx: Float,
        dy: Float
    ) {}

    /** The raw coordinates of the last ACTION_DOWN event. */
    private val touchDown = PointF()

@@ -146,6 +164,7 @@ abstract class RelativeTouchListener : View.OnTouchListener {
            }

            MotionEvent.ACTION_CANCEL -> {
                onCancel(v, ev, viewPositionOnTouchDown.x, viewPositionOnTouchDown.y, dx, dy)
                v.handler.removeCallbacksAndMessages(null)
                velocityTracker.clear()
                movedEnough = false