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

Commit a8ccf095 authored by Tony's avatar Tony
Browse files

Use deep shortcuts' icons as a fallback when updating

We already do this when loading, but now we also do it when
getting callbacks that potentially change the shortcut icon.
These callbacks first check the pinned shortcut info, but if
there is no icon there we now fall back to the current icon
instead of the default icon.

Bug: 62814533
Change-Id: I777adedf4b7f93dbaddb98a993eda34d59dcc173
parent 2ed276eb
Loading
Loading
Loading
Loading
+13 −0
Original line number Diff line number Diff line
@@ -320,6 +320,19 @@ public class LauncherIcons {
        return createShortcutIcon(shortcutInfo, context, badged, null);
    }

    public static Bitmap createShortcutIcon(ShortcutInfoCompat shortcutInfo, Context context,
            final Bitmap fallbackIcon) {
        Provider<Bitmap> fallbackIconProvider = new Provider<Bitmap>() {
            @Override
            public Bitmap get() {
                // If the shortcut is pinned but no longer has an icon in the system,
                // keep the current icon instead of reverting to the default icon.
                return fallbackIcon;
            }
        };
        return createShortcutIcon(shortcutInfo, context, true, fallbackIconProvider);
    }

    public static Bitmap createShortcutIcon(ShortcutInfoCompat shortcutInfo, Context context,
            boolean badged, @Nullable Provider<Bitmap> fallbackIconProvider) {
        LauncherAppState app = LauncherAppState.getInstance(context);
+3 −3
Original line number Diff line number Diff line
@@ -85,10 +85,10 @@ public class ShortcutsChangedTask extends BaseModelUpdateTask {
                    removedShortcutInfos.addAll(shortcutInfos);
                    continue;
                }
                for (ShortcutInfo shortcutInfo : shortcutInfos) {
                for (final ShortcutInfo shortcutInfo : shortcutInfos) {
                    shortcutInfo.updateFromDeepShortcutInfo(fullDetails, context);
                    shortcutInfo.iconBitmap =
                            LauncherIcons.createShortcutIcon(fullDetails, context);
                    shortcutInfo.iconBitmap = LauncherIcons.createShortcutIcon(fullDetails, context,
                            shortcutInfo.iconBitmap);
                    updatedShortcutInfos.add(shortcutInfo);
                }
            }
+2 −1
Original line number Diff line number Diff line
@@ -85,7 +85,8 @@ public class UserLockStateChangedTask extends BaseModelUpdateTask {
                    }
                    si.isDisabled &= ~ShortcutInfo.FLAG_DISABLED_LOCKED_USER;
                    si.updateFromDeepShortcutInfo(shortcut, context);
                    si.iconBitmap = LauncherIcons.createShortcutIcon(shortcut, context);
                    si.iconBitmap = LauncherIcons.createShortcutIcon(shortcut, context,
                            si.iconBitmap);
                } else {
                    si.isDisabled |= ShortcutInfo.FLAG_DISABLED_LOCKED_USER;
                }