summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java99
2 files changed, 71 insertions, 32 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 89abd35ab92e..93effed5958e 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -356,8 +356,10 @@ public class BubbleController implements BubbleExpandedView.OnBubbleBlockedListe
ensureStackViewCreated();
mStackView.addBubble(notif);
}
+ Bubble bubble = mBubbleData.getBubble(notif.key);
if (shouldAutoExpand(notif)) {
- mStackView.setExpandedBubble(notif);
+ mStackView.setSelectedBubble(bubble);
+ mStackView.setExpanded(true);
}
updateVisibility();
}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
index 53e65e662fb8..1f1a3e43c0a2 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
@@ -441,40 +441,15 @@ public class BubbleStackView extends FrameLayout {
* Sets the bubble that should be expanded and expands if needed.
*
* @param key the {@link NotificationEntry#key} associated with the bubble to expand.
+ * @deprecated replaced by setSelectedBubble(Bubble) + setExpanded(true)
*/
+ @Deprecated
void setExpandedBubble(String key) {
Bubble bubbleToExpand = mBubbleData.getBubble(key);
- if (mIsExpanded && !bubbleToExpand.equals(mExpandedBubble)) {
- // Previously expanded, notify that this bubble is no longer expanded
- notifyExpansionChanged(mExpandedBubble.entry, false /* expanded */);
- }
- Bubble prevBubble = mExpandedBubble;
- mExpandedBubble = bubbleToExpand;
- if (!mIsExpanded) {
- // If we weren't previously expanded we should animate open.
- animateExpansion(true /* expand */);
- logBubbleEvent(mExpandedBubble, StatsLog.BUBBLE_UICHANGED__ACTION__EXPANDED);
- mExpandedBubble.entry.setShowInShadeWhenBubble(false);
- notifyExpansionChanged(mExpandedBubble.entry, true /* expanded */);
- } else {
- // Make the container of the expanded view transparent before removing the expanded view
- // from it. Otherwise a punch hole created by {@link android.view.SurfaceView} in the
- // expanded view becomes visible on the screen. See b/126856255
- mExpandedViewContainer.setAlpha(0.0f);
-
- mSurfaceSynchronizer.syncSurfaceAndRun(new Runnable() {
- @Override
- public void run() {
- updateExpandedBubble();
- updatePointerPosition();
- requestUpdate();
- logBubbleEvent(prevBubble, StatsLog.BUBBLE_UICHANGED__ACTION__COLLAPSED);
- logBubbleEvent(mExpandedBubble,
- StatsLog.BUBBLE_UICHANGED__ACTION__EXPANDED);
- mExpandedBubble.entry.setShowInShadeWhenBubble(false);
- notifyExpansionChanged(mExpandedBubble.entry, true /* expanded */);
- }
- });
+ if (bubbleToExpand != null) {
+ setSelectedBubble(bubbleToExpand);
+ bubbleToExpand.entry.setShowInShadeWhenBubble(false);
+ setExpanded(true);
}
}
@@ -492,6 +467,57 @@ public class BubbleStackView extends FrameLayout {
}
/**
+ * Changes the currently selected bubble. If the stack is already expanded, the newly selected
+ * bubble will be shown immediately. This does not change the expanded state or change the
+ * position of any bubble.
+ */
+ public void setSelectedBubble(Bubble bubbleToSelect) {
+ if (mExpandedBubble != null && mExpandedBubble.equals(bubbleToSelect)) {
+ return;
+ }
+ final Bubble previouslySelected = mExpandedBubble;
+ mExpandedBubble = bubbleToSelect;
+ if (mIsExpanded) {
+ // Make the container of the expanded view transparent before removing the expanded view
+ // from it. Otherwise a punch hole created by {@link android.view.SurfaceView} in the
+ // expanded view becomes visible on the screen. See b/126856255
+ mExpandedViewContainer.setAlpha(0.0f);
+ mSurfaceSynchronizer.syncSurfaceAndRun(() -> {
+ updateExpandedBubble();
+ updatePointerPosition();
+ requestUpdate();
+ logBubbleEvent(previouslySelected, StatsLog.BUBBLE_UICHANGED__ACTION__COLLAPSED);
+ logBubbleEvent(bubbleToSelect, StatsLog.BUBBLE_UICHANGED__ACTION__EXPANDED);
+ notifyExpansionChanged(previouslySelected.entry, false /* expanded */);
+ notifyExpansionChanged(bubbleToSelect.entry, true /* expanded */);
+ });
+ }
+ }
+
+ /**
+ * Changes the expanded state of the stack.
+ *
+ * @param expanded whether the bubble stack should appear expanded
+ */
+ public void setExpanded(boolean expanded) {
+ if (expanded == mIsExpanded) {
+ return;
+ }
+ if (mIsExpanded) {
+ // Collapse the stack
+ animateExpansion(false /* expand */);
+ logBubbleEvent(mExpandedBubble, StatsLog.BUBBLE_UICHANGED__ACTION__COLLAPSED);
+ } else {
+ // Expand the stack
+ animateExpansion(true /* expand */);
+ // TODO: move next line to BubbleData
+ logBubbleEvent(mExpandedBubble, StatsLog.BUBBLE_UICHANGED__ACTION__EXPANDED);
+ logBubbleEvent(mExpandedBubble, StatsLog.BUBBLE_UICHANGED__ACTION__STACK_EXPANDED);
+ }
+ notifyExpansionChanged(mExpandedBubble.entry, mIsExpanded);
+ }
+
+ /**
* Adds a bubble to the top of the stack.
*
* @param entry the notification to add to the stack of bubbles.
@@ -652,7 +678,10 @@ public class BubbleStackView extends FrameLayout {
* Collapses the stack of bubbles.
* <p>
* Must be called from the main thread.
+ *
+ * @deprecated use {@link #setExpanded(boolean)} and {@link #setSelectedBubble(Bubble)}
*/
+ @Deprecated
@MainThread
public void collapseStack() {
if (mIsExpanded) {
@@ -663,6 +692,11 @@ public class BubbleStackView extends FrameLayout {
}
}
+ /**
+ * @deprecated use {@link #setExpanded(boolean)} and {@link #setSelectedBubble(Bubble)}
+ */
+ @Deprecated
+ @MainThread
void collapseStack(Runnable endRunnable) {
collapseStack();
// TODO - use the runnable at end of animation
@@ -673,7 +707,10 @@ public class BubbleStackView extends FrameLayout {
* Expands the stack of bubbles.
* <p>
* Must be called from the main thread.
+ *
+ * @deprecated use {@link #setExpanded(boolean)} and {@link #setSelectedBubble(Bubble)}
*/
+ @Deprecated
@MainThread
public void expandStack() {
if (!mIsExpanded) {