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

Commit 32d3648b authored by Sunny Goyal's avatar Sunny Goyal
Browse files

Generalize userproperties to support for more user types in iconCache

Bug: 305062259
Flag: None
Test: Presubmit
Change-Id: I6e03b4ebb55921a8fec73f2cf1d0213896c39476
parent 50847e32
Loading
Loading
Loading
Loading
+16 −5
Original line number Diff line number Diff line
@@ -54,6 +54,7 @@ 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.launcher3.util.UserIconInfo;
import com.android.settingslib.drawable.UserIconDrawable;
import com.android.settingslib.fuelgauge.BatteryStatus;
import com.android.settingslib.utils.BuildCompatUtils;
@@ -597,15 +598,25 @@ public class Utils {

    /** Get the corresponding adaptive icon drawable. */
    public static Drawable getBadgedIcon(Context context, Drawable icon, UserHandle user) {
        UserManager um = context.getSystemService(UserManager.class);
        boolean isClone = um.getProfiles(user.getIdentifier()).stream()
                .anyMatch(profile ->
                        profile.isCloneProfile() && profile.id == user.getIdentifier());
        int userType = UserIconInfo.TYPE_MAIN;
        try {
            UserInfo ui = context.getSystemService(UserManager.class).getUserInfo(
                    user.getIdentifier());
            if (ui != null) {
                if (ui.isCloneProfile()) {
                    userType = UserIconInfo.TYPE_CLONED;
                } else if (ui.isManagedProfile()) {
                    userType = UserIconInfo.TYPE_WORK;
                }
            }
        } catch (Exception e) {
            // Ignore
        }
        try (IconFactory iconFactory = IconFactory.obtain(context)) {
            return iconFactory
                    .createBadgedIconBitmap(
                            icon,
                            new IconOptions().setUser(user).setIsCloneProfile(isClone))
                            new IconOptions().setUser(new UserIconInfo(user, userType)))
                    .newIcon(context);
        }
    }