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

Commit 732fb425 authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Updating icon badging logic

Bug: 201682172
Test: Manual
Change-Id: Id19f1bdabbfa0c203052f63245f0f4ede462429a
parent e46f056d
Loading
Loading
Loading
Loading
+2 −3
Original line number Diff line number Diff line
@@ -95,9 +95,8 @@ class BubbleOverflow(

        // Update bitmap
        val fg = InsetDrawable(overflowBtn?.drawable, overflowIconInset)
        bitmap = iconFactory.createBadgedIconBitmap(AdaptiveIconDrawable(
                ColorDrawable(colorAccent), fg),
            null /* user */, true /* shrinkNonAdaptiveIcons */).icon
        bitmap = iconFactory.createBadgedIconBitmap(
                AdaptiveIconDrawable(ColorDrawable(colorAccent), fg)).icon

        // Update dot path
        dotPath = PathParser.createPathFromPathData(
+1 −3
Original line number Diff line number Diff line
@@ -189,9 +189,7 @@ public class BubbleViewInfoTask extends AsyncTask<Void, Void, BubbleViewInfoTask
            BitmapInfo badgeBitmapInfo = iconFactory.getBadgeBitmap(badgedIcon,
                    b.isImportantConversation());
            info.badgeBitmap = badgeBitmapInfo.icon;
            info.bubbleBitmap = iconFactory.createBadgedIconBitmap(bubbleDrawable,
                    null /* user */,
                    true /* shrinkNonAdaptiveIcons */).icon;
            info.bubbleBitmap = iconFactory.createBadgedIconBitmap(bubbleDrawable).icon;

            // Dot color & placement
            Path iconPath = PathParser.createPathFromPathData(
+1 −2
Original line number Diff line number Diff line
@@ -390,8 +390,7 @@ public class SplashscreenContentDrawer {
                    final ShapeIconFactory factory = new ShapeIconFactory(
                            SplashscreenContentDrawer.this.mContext,
                            scaledIconDpi, mFinalIconSize);
                    final Bitmap bitmap = factory.createScaledBitmapWithoutShadow(
                            iconDrawable, true /* shrinkNonAdaptiveIcons */);
                    final Bitmap bitmap = factory.createScaledBitmapWithoutShadow(iconDrawable);
                    Trace.traceEnd(TRACE_TAG_WINDOW_MANAGER);
                    createIconDrawable(new BitmapDrawable(bitmap), true);
                }
+4 −4
Original line number Diff line number Diff line
@@ -19,7 +19,6 @@ import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.location.LocationManager;
import android.media.AudioManager;
@@ -44,6 +43,7 @@ import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;

import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.util.UserIcons;
import com.android.launcher3.icons.BaseIconFactory.IconOptions;
import com.android.launcher3.icons.IconFactory;
import com.android.settingslib.drawable.UserIconDrawable;
import com.android.settingslib.fuelgauge.BatteryStatus;
@@ -525,9 +525,9 @@ public class Utils {
    /** Get the corresponding adaptive icon drawable. */
    public static Drawable getBadgedIcon(Context context, Drawable icon, UserHandle user) {
        try (IconFactory iconFactory = IconFactory.obtain(context)) {
            final Bitmap iconBmp = iconFactory.createBadgedIconBitmap(icon, user,
                    true /* shrinkNonAdaptiveIcons */).icon;
            return new BitmapDrawable(context.getResources(), iconBmp);
            return iconFactory
                    .createBadgedIconBitmap(icon, new IconOptions().setUser(user))
                    .newIcon(context);
        }
    }

+8 −18
Original line number Diff line number Diff line
@@ -33,6 +33,7 @@ import static android.appwidget.AppWidgetManager.OPTION_APPWIDGET_SIZES;
import static android.util.TypedValue.COMPLEX_UNIT_DIP;
import static android.util.TypedValue.COMPLEX_UNIT_PX;

import static com.android.launcher3.icons.FastBitmapDrawable.getDisabledColorFilter;
import static com.android.systemui.people.PeopleSpaceUtils.STARRED_CONTACT;
import static com.android.systemui.people.PeopleSpaceUtils.VALID_CONTACT;
import static com.android.systemui.people.PeopleSpaceUtils.convertDrawableToBitmap;
@@ -45,8 +46,6 @@ import android.app.people.PeopleSpaceTile;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.ColorMatrix;
import android.graphics.ColorMatrixColorFilter;
import android.graphics.ImageDecoder;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.Icon;
@@ -75,7 +74,6 @@ import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
import androidx.core.math.MathUtils;

import com.android.internal.annotations.VisibleForTesting;
import com.android.launcher3.icons.FastBitmapDrawable;
import com.android.systemui.R;
import com.android.systemui.people.widget.LaunchConversationActivity;
import com.android.systemui.people.widget.PeopleSpaceWidgetProvider;
@@ -339,8 +337,9 @@ public class PeopleTileViewHelper {
            views = new RemoteViews(mContext.getPackageName(),
                    R.layout.people_tile_suppressed_layout);
        }
        Drawable appIcon = mContext.getDrawable(R.drawable.ic_conversation_icon);
        Bitmap disabledBitmap = convertDrawableToDisabledBitmap(appIcon);
        Drawable appIcon = mContext.getDrawable(R.drawable.ic_conversation_icon).mutate();
        appIcon.setColorFilter(getDisabledColorFilter());
        Bitmap disabledBitmap = convertDrawableToBitmap(appIcon);
        views.setImageViewBitmap(R.id.icon, disabledBitmap);
        return views;
    }
@@ -1262,8 +1261,9 @@ public class PeopleTileViewHelper {
            Context context, PeopleSpaceTile tile, int maxAvatarSize, boolean hasNewStory) {
        Icon icon = tile.getUserIcon();
        if (icon == null) {
            Drawable placeholder = context.getDrawable(R.drawable.ic_avatar_with_badge);
            return convertDrawableToDisabledBitmap(placeholder);
            Drawable placeholder = context.getDrawable(R.drawable.ic_avatar_with_badge).mutate();
            placeholder.setColorFilter(getDisabledColorFilter());
            return convertDrawableToBitmap(placeholder);
        }
        PeopleStoryIconFactory storyIcon = new PeopleStoryIconFactory(context,
                context.getPackageManager(),
@@ -1276,10 +1276,7 @@ public class PeopleTileViewHelper {
                hasNewStory);

        if (isDndBlockingTileData(tile)) {
            // If DND is blocking the conversation, then display the icon in grayscale.
            ColorMatrix colorMatrix = new ColorMatrix();
            colorMatrix.setSaturation(0);
            personDrawable.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
            personDrawable.setColorFilter(getDisabledColorFilter());
        }

        return convertDrawableToBitmap(personDrawable);
@@ -1375,11 +1372,4 @@ public class PeopleTileViewHelper {
            mAvatarSize = avatarSize;
        }
    }

    private static Bitmap convertDrawableToDisabledBitmap(Drawable icon) {
        Bitmap appIconAsBitmap = convertDrawableToBitmap(icon);
        FastBitmapDrawable drawable = new FastBitmapDrawable(appIconAsBitmap);
        drawable.setIsDisabled(true);
        return convertDrawableToBitmap(drawable);
    }
}
Loading