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

Commit 87fcce2b authored by Mady Mellor's avatar Mady Mellor Committed by Automerger Merge Worker
Browse files

Merge "Revert "Atomic updates, icon cleanup for overflow"" into rvc-dev am: 64b2a0aa

Change-Id: I06457a368a2c214f90fc415cf92ab878ea6173fb
parents 777c35be 64b2a0aa
Loading
Loading
Loading
Loading
+9 −7
Original line number Diff line number Diff line
@@ -175,7 +175,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
    private INotificationManager mINotificationManager;

    // Callback that updates BubbleOverflowActivity on data change.
    @Nullable private BubbleData.Listener mOverflowListener = null;
    @Nullable private Runnable mOverflowCallback = null;

    private final NotificationInterruptStateProvider mNotificationInterruptStateProvider;
    private IStatusBarService mBarService;
@@ -571,8 +571,8 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
        mInflateSynchronously = inflateSynchronously;
    }

    void setOverflowListener(BubbleData.Listener listener) {
        mOverflowListener = listener;
    void setOverflowCallback(Runnable updateOverflow) {
        mOverflowCallback = updateOverflow;
    }

    /**
@@ -986,8 +986,8 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
        @Override
        public void applyUpdate(BubbleData.Update update) {
            // Update bubbles in overflow.
            if (mOverflowListener != null) {
                mOverflowListener.applyUpdate(update);
            if (mOverflowCallback != null) {
                mOverflowCallback.run();
            }

            // Collapsing? Do this first before remaining steps.
@@ -1015,8 +1015,7 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
                    if (!mBubbleData.hasOverflowBubbleWithKey(bubble.getKey())
                        && (!bubble.showInShade()
                            || reason == DISMISS_NOTIF_CANCEL
                            || reason == DISMISS_GROUP_CANCELLED
                            || reason == DISMISS_OVERFLOW_MAX_REACHED)) {
                            || reason == DISMISS_GROUP_CANCELLED)) {
                        // The bubble is now gone & the notification is hidden from the shade, so
                        // time to actually remove it
                        for (NotifCallback cb : mCallbacks) {
@@ -1087,6 +1086,9 @@ public class BubbleController implements ConfigurationController.ConfigurationLi
                    Log.d(TAG, BubbleDebugConfig.formatBubblesString(mStackView.getBubblesOnScreen(),
                            mStackView.getExpandedBubble()));
                }
                Log.d(TAG, "\n[BubbleData] overflow:");
                Log.d(TAG, BubbleDebugConfig.formatBubblesString(mBubbleData.getOverflowBubbles(),
                        null) + "\n");
            }
        }
    };
+3 −11
Original line number Diff line number Diff line
@@ -74,8 +74,6 @@ public class BubbleData {
        @Nullable Bubble selectedBubble;
        @Nullable Bubble addedBubble;
        @Nullable Bubble updatedBubble;
        @Nullable Bubble addedOverflowBubble;
        @Nullable Bubble removedOverflowBubble;
        // Pair with Bubble and @DismissReason Integer
        final List<Pair<Bubble, Integer>> removedBubbles = new ArrayList<>();

@@ -94,8 +92,6 @@ public class BubbleData {
                    || addedBubble != null
                    || updatedBubble != null
                    || !removedBubbles.isEmpty()
                    || addedOverflowBubble != null
                    || removedOverflowBubble != null
                    || orderChanged;
        }

@@ -237,7 +233,6 @@ public class BubbleData {

    private void moveOverflowBubbleToPending(Bubble b) {
        mOverflowBubbles.remove(b);
        mStateChange.removedOverflowBubble = b;
        mPendingBubbles.add(b);
    }

@@ -445,9 +440,8 @@ public class BubbleData {
                if (DEBUG_BUBBLE_DATA) {
                    Log.d(TAG, "Cancel overflow bubble: " + b);
                }
                mOverflowBubbles.remove(b);
                mStateChange.bubbleRemoved(b, reason);
                mStateChange.removedOverflowBubble = b;
                mOverflowBubbles.remove(b);
            }
            return;
        }
@@ -489,7 +483,6 @@ public class BubbleData {
            Log.d(TAG, "Overflowing: " + bubble);
        }
        mOverflowBubbles.add(0, bubble);
        mStateChange.addedOverflowBubble = bubble;
        bubble.stopInflation();
        if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
            // Remove oldest bubble.
@@ -497,9 +490,8 @@ public class BubbleData {
            if (DEBUG_BUBBLE_DATA) {
                Log.d(TAG, "Overflow full. Remove: " + oldest);
            }
            mOverflowBubbles.remove(oldest);
            mStateChange.removedOverflowBubble = oldest;
            mStateChange.bubbleRemoved(oldest, BubbleController.DISMISS_OVERFLOW_MAX_REACHED);
            mOverflowBubbles.remove(oldest);
        }
    }

+18 −45
Original line number Diff line number Diff line
@@ -108,12 +108,11 @@ public class BubbleOverflowActivity extends Activity {
        mAdapter = new BubbleOverflowAdapter(getApplicationContext(), mOverflowBubbles,
                mBubbleController::promoteBubbleFromOverflow, viewWidth, viewHeight);
        mRecyclerView.setAdapter(mAdapter);

        mOverflowBubbles.addAll(mBubbleController.getOverflowBubbles());
        mAdapter.notifyDataSetChanged();
        setEmptyStateVisibility();

        mBubbleController.setOverflowListener(mDataListener);
        onDataChanged(mBubbleController.getOverflowBubbles());
        mBubbleController.setOverflowCallback(() -> {
            onDataChanged(mBubbleController.getOverflowBubbles());
        });
        onThemeChanged();
    }

    /**
@@ -140,14 +139,6 @@ public class BubbleOverflowActivity extends Activity {
        }
    }

    void setEmptyStateVisibility() {
        if (mOverflowBubbles.isEmpty()) {
            mEmptyState.setVisibility(View.VISIBLE);
        } else {
            mEmptyState.setVisibility(View.GONE);
        }
    }

    void setBackgroundColor() {
        final TypedArray ta = getApplicationContext().obtainStyledAttributes(
                new int[]{android.R.attr.colorBackgroundFloating});
@@ -156,40 +147,22 @@ public class BubbleOverflowActivity extends Activity {
        findViewById(android.R.id.content).setBackgroundColor(bgColor);
    }

    private final BubbleData.Listener mDataListener = new BubbleData.Listener() {

        @Override
        public void applyUpdate(BubbleData.Update update) {

            Bubble toRemove = update.removedOverflowBubble;
            if (toRemove != null) {
                if (DEBUG_OVERFLOW) {
                    Log.d(TAG, "remove: " + toRemove);
                }
                toRemove.cleanupViews();
                int i = mOverflowBubbles.indexOf(toRemove);
                mOverflowBubbles.remove(toRemove);
                mAdapter.notifyItemRemoved(i);
            }
    void onDataChanged(List<Bubble> bubbles) {
        mOverflowBubbles.clear();
        mOverflowBubbles.addAll(bubbles);
        mAdapter.notifyDataSetChanged();

            Bubble toAdd = update.addedOverflowBubble;
            if (toAdd != null) {
                if (DEBUG_OVERFLOW) {
                    Log.d(TAG, "add: " + toAdd);
                }
                mOverflowBubbles.add(0, toAdd);
                mAdapter.notifyItemInserted(0);
        if (mOverflowBubbles.isEmpty()) {
            mEmptyState.setVisibility(View.VISIBLE);
        } else {
            mEmptyState.setVisibility(View.GONE);
        }

            setEmptyStateVisibility();

        if (DEBUG_OVERFLOW) {
                Log.d(TAG, BubbleDebugConfig.formatBubblesString(
                        mBubbleController.getOverflowBubbles(),
                        null));
            Log.d(TAG, "Updated overflow bubbles:\n" + BubbleDebugConfig.formatBubblesString(
                    mOverflowBubbles, /*selected*/ null));
        }
    }
    };

    @Override
    public void onStart() {