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

Commit acefecbf authored by Sunny Goyal's avatar Sunny Goyal Committed by Android (Google) Code Review
Browse files

Merge "Updating promise icon's bitmap and label when onBadgingChanged is...

Merge "Updating promise icon's bitmap and label when onBadgingChanged is received" into ub-now-porkchop
parents 7e053f87 a22666f6
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -29,6 +29,7 @@ import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.text.TextUtils;
import android.util.Log;
@@ -382,12 +383,15 @@ public class IconCache {
     */
    public void cachePackageInstallInfo(String packageName, UserHandleCompat user,
            Bitmap icon, CharSequence title) {
        remove(packageName, user);

        CacheEntry entry = getEntryForPackage(packageName, user);
        if (!TextUtils.isEmpty(title)) {
            entry.title = title;
        }
        if (icon != null) {
            entry.icon = Utilities.createIconBitmap(icon, mContext);
            entry.icon = Utilities.createIconBitmap(
                    new BitmapDrawable(mContext.getResources(), icon), mContext);
        }
    }

+12 −0
Original line number Diff line number Diff line
@@ -4711,6 +4711,18 @@ public class Launcher extends Activity
        }
    }

    /**
     * Update the label and icon of all the icons in a package
     *
     * Implementation of the method from LauncherModel.Callbacks.
     */
    @Override
    public void updatePackageBadge(String packageName) {
        if (mWorkspace != null) {
            mWorkspace.updatePackageBadge(packageName, UserHandleCompat.myUserHandle());
        }
    }

    /**
     * A package was uninstalled.  We take both the super set of packageNames
     * in addition to specific applications to remove, the reason being that
+7 −0
Original line number Diff line number Diff line
@@ -260,4 +260,11 @@ public class LauncherAppState implements DeviceProfile.DeviceProfileCallbacks {
    public void setPackageState(ArrayList<PackageInstallInfo> installInfo) {
        mModel.setPackageState(installInfo);
    }

    /**
     * Updates the icons and label of all icons for the provided package name.
     */
    public void updatePackageBadge(String packageName) {
        mModel.updatePackageBadge(packageName);
    }
}
+14 −0
Original line number Diff line number Diff line
@@ -199,6 +199,7 @@ public class LauncherModel extends BroadcastReceiver
                                  ArrayList<AppInfo> addedApps);
        public void bindAppsUpdated(ArrayList<AppInfo> apps);
        public void updatePackageState(ArrayList<PackageInstallInfo> installInfo);
        public void updatePackageBadge(String packageName);
        public void bindComponentsRemoved(ArrayList<String> packageNames,
                        ArrayList<AppInfo> appInfos, UserHandleCompat user);
        public void bindPackagesUpdated(ArrayList<Object> widgetsAndShortcuts);
@@ -348,6 +349,19 @@ public class LauncherModel extends BroadcastReceiver
        mHandler.post(r);
    }

    public void updatePackageBadge(final String packageName) {
        // Process the updated package badge
        Runnable r = new Runnable() {
            public void run() {
                Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null;
                if (callbacks != null) {
                    callbacks.updatePackageBadge(packageName);
                }
            }
        };
        mHandler.post(r);
    }

    public void addAppsToAllApps(final Context ctx, final ArrayList<AppInfo> allAppsApps) {
        final Callbacks callbacks = mCallbacks != null ? mCallbacks.get() : null;

+32 −0
Original line number Diff line number Diff line
@@ -4921,6 +4921,38 @@ public class Workspace extends SmoothPagedView
        removeItemsByPackageName(packages, user);
    }

    public void updatePackageBadge(final String packageName, final UserHandleCompat user) {
        mapOverItems(MAP_RECURSE, new ItemOperator() {
            @Override
            public boolean evaluate(ItemInfo info, View v, View parent) {
                if (info instanceof ShortcutInfo && v instanceof BubbleTextView) {
                    ShortcutInfo shortcutInfo = (ShortcutInfo) info;
                    ComponentName cn = shortcutInfo.getTargetComponent();
                    if (user.equals(shortcutInfo.user) && cn != null
                            && shortcutInfo.isPromise()
                            && packageName.equals(cn.getPackageName())) {
                        if (shortcutInfo.hasStatusFlag(ShortcutInfo.FLAG_AUTOINTALL_ICON)) {
                            // For auto install apps update the icon as well as label.
                            mIconCache.getTitleAndIcon(shortcutInfo,
                                    shortcutInfo.promisedIntent, user, true);
                        } else {
                            // Only update the icon for restored apps.
                            shortcutInfo.updateIcon(mIconCache);
                        }
                        BubbleTextView shortcut = (BubbleTextView) v;
                        shortcut.applyFromShortcutInfo(shortcutInfo, mIconCache, true, false);

                        if (parent != null) {
                            parent.invalidate();
                        }
                    }
                }
                // process all the shortcuts
                return false;
            }
        });
    }

    public void updatePackageState(ArrayList<PackageInstallInfo> installInfos) {
        HashSet<String> completedPackages = new HashSet<String>();

Loading