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

Commit d698186a authored by Lyn Han's avatar Lyn Han
Browse files

Dismiss bubbles into overflow

Fixes: 149716471
Test: manual -> dismiss single bubble -> bubble in overflow
Test: manual -> dismiss stack -> create bubble -> expand stack ->
previous bubbles in stack now in overflow

Change-Id: I6897a369f734af18029872c65b6f104eb701b202
parent e80f306f
Loading
Loading
Loading
Loading
+19 −15
Original line number Diff line number Diff line
@@ -443,11 +443,26 @@ public class BubbleData {
            mStateChange.orderChanged |= repackAll();
        }

        if (reason == BubbleController.DISMISS_AGED) {
        overflowBubble(reason, bubbleToRemove);

        // Note: If mBubbles.isEmpty(), then mSelectedBubble is now null.
        if (Objects.equals(mSelectedBubble, bubbleToRemove)) {
            // Move selection to the new bubble at the same position.
            int newIndex = Math.min(indexToRemove, mBubbles.size() - 1);
            Bubble newSelected = mBubbles.get(newIndex);
            setSelectedBubbleInternal(newSelected);
        }
        maybeSendDeleteIntent(reason, bubbleToRemove.getEntry());
    }

    void overflowBubble(@DismissReason int reason, Bubble bubble) {
        if (reason == BubbleController.DISMISS_AGED
                || reason == BubbleController.DISMISS_USER_GESTURE) {
            if (DEBUG_BUBBLE_DATA) {
                Log.d(TAG, "overflowing bubble: " + bubbleToRemove);
                Log.d(TAG, "overflowing bubble: " + bubble);
            }
            mOverflowBubbles.add(0, bubbleToRemove);
            mOverflowBubbles.add(0, bubble);

            if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
                // Remove oldest bubble.
                if (DEBUG_BUBBLE_DATA) {
@@ -457,15 +472,6 @@ public class BubbleData {
                mOverflowBubbles.remove(mOverflowBubbles.size() - 1);
            }
        }

        // Note: If mBubbles.isEmpty(), then mSelectedBubble is now null.
        if (Objects.equals(mSelectedBubble, bubbleToRemove)) {
            // Move selection to the new bubble at the same position.
            int newIndex = Math.min(indexToRemove, mBubbles.size() - 1);
            Bubble newSelected = mBubbles.get(newIndex);
            setSelectedBubbleInternal(newSelected);
        }
        maybeSendDeleteIntent(reason, bubbleToRemove.getEntry());
    }

    public void dismissAll(@DismissReason int reason) {
@@ -478,9 +484,7 @@ public class BubbleData {
        setExpandedInternal(false);
        setSelectedBubbleInternal(null);
        while (!mBubbles.isEmpty()) {
            Bubble bubble = mBubbles.remove(0);
            maybeSendDeleteIntent(reason, bubble.getEntry());
            mStateChange.bubbleRemoved(bubble, reason);
            doRemove(mBubbles.get(0).getKey(), reason);
        }
        dispatchPendingChanges();
    }
+1 −7
Original line number Diff line number Diff line
@@ -54,7 +54,6 @@ public class BubbleOverflowActivity extends Activity {
    private BubbleOverflowAdapter mAdapter;
    private RecyclerView mRecyclerView;
    private List<Bubble> mOverflowBubbles = new ArrayList<>();
    private int mMaxBubbles;

    @Inject
    public BubbleOverflowActivity(BubbleController controller) {
@@ -67,7 +66,6 @@ public class BubbleOverflowActivity extends Activity {
        setContentView(R.layout.bubble_overflow_activity);
        setBackgroundColor();

        mMaxBubbles = getResources().getInteger(R.integer.bubbles_max_rendered);
        mEmptyState = findViewById(R.id.bubble_overflow_empty_state);
        mRecyclerView = findViewById(R.id.bubble_overflow_recycler);
        mRecyclerView.setLayoutManager(
@@ -94,11 +92,7 @@ public class BubbleOverflowActivity extends Activity {

    void onDataChanged(List<Bubble> bubbles) {
        mOverflowBubbles.clear();
        if (bubbles.size() > mMaxBubbles) {
            mOverflowBubbles.addAll(bubbles.subList(mMaxBubbles, bubbles.size()));
        } else {
        mOverflowBubbles.addAll(bubbles);
        }
        mAdapter.notifyDataSetChanged();

        if (mOverflowBubbles.isEmpty()) {