Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +38 −2 Original line number Diff line number Diff line Loading @@ -1049,6 +1049,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 isBeingDragged whether the bubble is being dragged */ public void onBubbleDrag(String bubbleKey, boolean isBeingDragged) { if (mBubbleData.getSelectedBubble() != null && mBubbleData.getSelectedBubble().getKey().equals(bubbleKey)) { // Should collapse/expand only if equals to selected bubble. mBubbleBarViewCallback.expansionChanged(/* isExpanded = */ !isBeingDragged); } } @VisibleForTesting public boolean isBubbleNotificationSuppressedFromShade(String key, String groupKey) { boolean isSuppressedBubble = (mBubbleData.hasAnyBubbleWithKey(key) Loading Loading @@ -1434,6 +1448,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); Loading Loading @@ -2095,14 +2120,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 onBubbleDrag(String bubbleKey, boolean isBeingDragged) { mMainExecutor.execute(() -> mController.onBubbleDrag(bubbleKey, isBeingDragged)); } } private class BubblesImpl implements Bubbles { Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/IBubbles.aidl +6 −2 Original line number Diff line number Diff line Loading @@ -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 onBubbleDrag(in String key, in boolean isBeingDragged) = 7; } No newline at end of file libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelper.java +8 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java +6 −0 Original line number Diff line number Diff line Loading @@ -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); Loading Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/BubbleController.java +38 −2 Original line number Diff line number Diff line Loading @@ -1049,6 +1049,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 isBeingDragged whether the bubble is being dragged */ public void onBubbleDrag(String bubbleKey, boolean isBeingDragged) { if (mBubbleData.getSelectedBubble() != null && mBubbleData.getSelectedBubble().getKey().equals(bubbleKey)) { // Should collapse/expand only if equals to selected bubble. mBubbleBarViewCallback.expansionChanged(/* isExpanded = */ !isBeingDragged); } } @VisibleForTesting public boolean isBubbleNotificationSuppressedFromShade(String key, String groupKey) { boolean isSuppressedBubble = (mBubbleData.hasAnyBubbleWithKey(key) Loading Loading @@ -1434,6 +1448,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); Loading Loading @@ -2095,14 +2120,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 onBubbleDrag(String bubbleKey, boolean isBeingDragged) { mMainExecutor.execute(() -> mController.onBubbleDrag(bubbleKey, isBeingDragged)); } } private class BubblesImpl implements Bubbles { Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/IBubbles.aidl +6 −2 Original line number Diff line number Diff line Loading @@ -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 onBubbleDrag(in String key, in boolean isBeingDragged) = 7; } No newline at end of file
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarAnimationHelper.java +8 −0 Original line number Diff line number Diff line Loading @@ -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"); Loading
libs/WindowManager/Shell/src/com/android/wm/shell/bubbles/bar/BubbleBarLayerView.java +6 −0 Original line number Diff line number Diff line Loading @@ -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); Loading