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

Commit 59c4ae4d authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Move update popup header out of BubbleTextView" into ub-launcher3-dorval

parents d570c040 2fe09f24
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -49,7 +49,6 @@ import com.android.launcher3.graphics.HolographicOutlineHelper;
import com.android.launcher3.graphics.IconPalette;
import com.android.launcher3.graphics.PreloadIconDrawable;
import com.android.launcher3.model.PackageItemInfo;
import com.android.launcher3.popup.PopupContainerWithArrow;

import java.text.NumberFormat;

@@ -573,18 +572,11 @@ public class BubbleTextView extends TextView implements ItemInfoUpdateReceiver {

    public void applyBadgeState(ItemInfo itemInfo, boolean animate) {
        if (mIcon instanceof FastBitmapDrawable) {
            BadgeInfo badgeInfo = mLauncher.getPopupDataProvider().getBadgeInfoForItem(itemInfo);
            BadgeRenderer badgeRenderer = mLauncher.getDeviceProfile().mBadgeRenderer;
            PopupContainerWithArrow popup = PopupContainerWithArrow.getOpen(mLauncher);
            if (popup != null) {
                popup.updateNotificationHeader(badgeInfo, itemInfo);
            }

            boolean wasBadged = mBadgeInfo != null;
            boolean isBadged = badgeInfo != null;
            mBadgeInfo = mLauncher.getPopupDataProvider().getBadgeInfoForItem(itemInfo);
            boolean isBadged = mBadgeInfo != null;
            float newBadgeScale = isBadged ? 1f : 0;
            mBadgeInfo = badgeInfo;
            mBadgeRenderer = badgeRenderer;
            mBadgeRenderer = mLauncher.getDeviceProfile().mBadgeRenderer;
            if (wasBadged || isBadged) {
                mIconPalette = ((FastBitmapDrawable) mIcon).getIconPalette();
                // Animate when a badge is first added or when it is removed.
+5 −0
Original line number Diff line number Diff line
@@ -1576,6 +1576,11 @@ public class Launcher extends BaseActivity
            public void run() {
                mWorkspace.updateIconBadges(updatedBadges);
                mAppsView.updateIconBadges(updatedBadges);

                PopupContainerWithArrow popup = PopupContainerWithArrow.getOpen(Launcher.this);
                if (popup != null) {
                    popup.updateNotificationHeader(updatedBadges);
                }
            }
        };
        if (!waitUntilResume(r)) {
+15 −14
Original line number Diff line number Diff line
@@ -77,6 +77,7 @@ import com.android.launcher3.util.PackageUserKey;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.Set;

import static com.android.launcher3.userevent.nano.LauncherLogProto.ContainerType;
import static com.android.launcher3.userevent.nano.LauncherLogProto.ItemType;
@@ -172,6 +173,8 @@ public class PopupContainerWithArrow extends AbstractFloatingView implements Dra
        final int arrowVerticalOffset = resources.getDimensionPixelSize(
                R.dimen.popup_arrow_vertical_offset);

        mOriginalIcon = originalIcon;

        // Add dummy views first, and populate with real info when ready.
        PopupPopulator.Item[] itemsToPopulate = PopupPopulator
                .getItemsToPopulate(shortcutIds, notificationKeys, systemShortcuts);
@@ -200,9 +203,7 @@ public class PopupContainerWithArrow extends AbstractFloatingView implements Dra
                ? Collections.EMPTY_LIST
                : mShortcutsItemView.getSystemShortcutViews(reverseOrder);
        if (mNotificationItemView != null) {
            BadgeInfo badgeInfo = mLauncher.getPopupDataProvider()
                    .getBadgeInfoForItem(originalItemInfo);
            updateNotificationHeader(badgeInfo, originalIcon);
            updateNotificationHeader();
        }

        // Add the arrow.
@@ -212,7 +213,6 @@ public class PopupContainerWithArrow extends AbstractFloatingView implements Dra

        animateOpen();

        mOriginalIcon = originalIcon;
        mLauncher.getDragController().addDragListener(this);
        mOriginalIcon.forceHideBadge(true);

@@ -551,21 +551,22 @@ public class PopupContainerWithArrow extends AbstractFloatingView implements Dra
    }

    /**
     * Updates the notification header to reflect the badge info. Since this can be called
     * for any badge info (not necessarily the one associated with this app), we first
     * check that the ItemInfo matches the one of this popup.
     * Updates the notification header if the original icon's badge updated.
     */
    public void updateNotificationHeader(BadgeInfo badgeInfo, ItemInfo originalItemInfo) {
        if (originalItemInfo != mOriginalIcon.getTag()) {
            return;
    public void updateNotificationHeader(Set<PackageUserKey> updatedBadges) {
        ItemInfo itemInfo = (ItemInfo) mOriginalIcon.getTag();
        PackageUserKey packageUser = PackageUserKey.fromItemInfo(itemInfo);
        if (updatedBadges.contains(packageUser)) {
            updateNotificationHeader();
        }
        updateNotificationHeader(badgeInfo, mOriginalIcon);
    }

    private void updateNotificationHeader(BadgeInfo badgeInfo, BubbleTextView originalIcon) {
    private void updateNotificationHeader() {
        ItemInfo itemInfo = (ItemInfo) mOriginalIcon.getTag();
        BadgeInfo badgeInfo = mLauncher.getPopupDataProvider().getBadgeInfoForItem(itemInfo);
        if (mNotificationItemView != null && badgeInfo != null) {
            IconPalette palette = originalIcon.getIcon() instanceof FastBitmapDrawable
                    ? ((FastBitmapDrawable) originalIcon.getIcon()).getIconPalette()
            IconPalette palette = mOriginalIcon.getIcon() instanceof FastBitmapDrawable
                    ? ((FastBitmapDrawable) mOriginalIcon.getIcon()).getIconPalette()
                    : null;
            mNotificationItemView.updateHeader(badgeInfo.getNotificationCount(), palette);
        }