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

Commit 4e32fde2 authored by Sihua Ma's avatar Sihua Ma
Browse files

Add config value for enabling forced themed icon

Config value name: enable_forced_themed_icon
Default to false

Test: Manual
Flag: com.android.launcher3.force_monochrome_app_icons
Bug: 398039548
Change-Id: Ia9a480689306a19d150e2362658ba91f61301a4b
parent 2c0ce439
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -27,4 +27,7 @@
    <string name="calendar_component_name" translatable="false"></string>
    <string name="clock_component_name" translatable="false"></string>

    <!-- Configures whether to enable forced theme icon, disabled by default -->
    <bool name="enable_forced_themed_icon">false</bool>

</resources>
 No newline at end of file
+12 −0
Original line number Diff line number Diff line
@@ -102,6 +102,8 @@ public class BaseIconFactory implements AutoCloseable {

    private static int PLACEHOLDER_BACKGROUND_COLOR = Color.rgb(245, 245, 245);

    private final boolean mShouldForceThemeIcon;

    protected BaseIconFactory(Context context, int fullResIconDpi, int iconBitmapSize,
            boolean unused) {
        this(context, fullResIconDpi, iconBitmapSize);
@@ -118,6 +120,9 @@ public class BaseIconFactory implements AutoCloseable {
        mCanvas = new Canvas();
        mCanvas.setDrawFilter(new PaintFlagsDrawFilter(DITHER_FLAG, FILTER_BITMAP_FLAG));
        clear();

        mShouldForceThemeIcon = mContext.getResources().getBoolean(
                R.bool.enable_forced_themed_icon);
    }

    protected void clear() {
@@ -263,6 +268,13 @@ public class BaseIconFactory implements AutoCloseable {
        return op;
    }

    /**
     * @return True if forced theme icon is enabled
     */
    public boolean shouldForceThemeIcon() {
        return mShouldForceThemeIcon;
    }

    @NonNull
    protected UserIconInfo getUserInfo(@NonNull UserHandle user) {
        int key = user.hashCode();
+3 −1
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@ class MonoIconThemeController(
                factory.getShapePath(icon, Rect(0, 0, info.icon.width, info.icon.height)),
                factory.iconScale,
                sourceHint?.isFileDrawable ?: false,
                factory.shouldForceThemeIcon(),
            )
        if (mono != null) {
            return MonoThemedBitmap(
@@ -85,12 +86,13 @@ class MonoIconThemeController(
        shapePath: Path,
        iconScale: Float,
        isFileDrawable: Boolean,
        shouldForceThemeIcon: Boolean,
    ): Drawable? {
        val mono = base.monochrome
        if (mono != null) {
            return ClippedMonoDrawable(mono, shapePath, iconScale)
        }
        if (Flags.forceMonochromeAppIcons() && !isFileDrawable) {
        if (Flags.forceMonochromeAppIcons() && shouldForceThemeIcon && !isFileDrawable) {
            return MonochromeIconFactory(info.icon.width).wrap(base, shapePath, iconScale)
        }
        return null