Inflate bubble promoted from overflow

BubbleData#promoteBubbleFromOverflow
- inflate bubble; when done, go through notificationEntryUpdated (doAdd)

Fixes: 148247568
Fixes: 148878180
Bug: 148878788
Test: atest SystemUITests
Test: manual - tap bubble to promote it from overflow -> bubble shows up
left of row, gone from overflow; oldest bubble in row overflows when
count > 5, shows up left of first row in overflow
Change-Id: If33a0e0f5d9a5e4e042ad965f2b55a44e8b508dd
This commit is contained in:
Lyn Han
2020-02-05 19:10:58 -08:00
parent 207454b9fa
commit 1e19d7fe74
4 changed files with 22 additions and 7 deletions

View File

@@ -226,6 +226,10 @@ class Bubble {
mIconView.update(this);
}
void setInflated(boolean inflated) {
mInflated = inflated;
}
/**
* Set visibility of bubble in the expanded state.
*

View File

@@ -749,7 +749,8 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
}
void promoteBubbleFromOverflow(Bubble bubble) {
mBubbleData.promoteBubbleFromOverflow(bubble);
bubble.setInflateSynchronously(mInflateSynchronously);
mBubbleData.promoteBubbleFromOverflow(bubble, mStackView, mBubbleIconFactory);
}
/**

View File

@@ -199,16 +199,21 @@ public class BubbleData {
dispatchPendingChanges();
}
public void promoteBubbleFromOverflow(Bubble bubble) {
public void promoteBubbleFromOverflow(Bubble bubble, BubbleStackView stack,
BubbleIconFactory factory) {
if (DEBUG_BUBBLE_DATA) {
Log.d(TAG, "promoteBubbleFromOverflow: " + bubble);
}
mOverflowBubbles.remove(bubble);
doAdd(bubble);
setSelectedBubbleInternal(bubble);
// Preserve new order for next repack, which sorts by last updated time.
bubble.markUpdatedAt(mTimeSource.currentTimeMillis());
trim();
setSelectedBubbleInternal(bubble);
mOverflowBubbles.remove(bubble);
bubble.inflate(
b -> notificationEntryUpdated(bubble, /* suppressFlyout */
false, /* showInShade */ true),
mContext, stack, factory);
dispatchPendingChanges();
}
@@ -445,6 +450,10 @@ public class BubbleData {
mOverflowBubbles.add(0, bubbleToRemove);
if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
// Remove oldest bubble.
if (DEBUG_BUBBLE_DATA) {
Log.d(TAG, "Overflow full. Remove bubble: " + mOverflowBubbles.get(
mOverflowBubbles.size() - 1));
}
mOverflowBubbles.remove(mOverflowBubbles.size() - 1);
}
}
@@ -511,7 +520,7 @@ public class BubbleData {
if (Objects.equals(bubble, mSelectedBubble)) {
return;
}
if (bubble != null && !mBubbles.contains(bubble)) {
if (bubble != null && !mBubbles.contains(bubble) && !mOverflowBubbles.contains(bubble)) {
Log.e(TAG, "Cannot select bubble which doesn't exist!"
+ " (" + bubble + ") bubbles=" + mBubbles);
return;

View File

@@ -795,6 +795,7 @@ public class BubbleStackView extends FrameLayout {
if (removedIndex >= 0) {
mBubbleContainer.removeViewAt(removedIndex);
bubble.cleanupExpandedState();
bubble.setInflated(false);
logBubbleEvent(bubble, SysUiStatsLog.BUBBLE_UICHANGED__ACTION__DISMISSED);
} else {
Log.d(TAG, "was asked to remove Bubble, but didn't find the view! " + bubble);