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

Commit 681a4ace authored by Winson Chung's avatar Winson Chung Committed by Android (Google) Code Review
Browse files

Merge "Updating folder icons when the shortcut is updated. (Bug 10803060)" into jb-ub-now-jetsonic

parents 6d00d54e 8c903311
Loading
Loading
Loading
Loading
+35 −19
Original line number Diff line number Diff line
@@ -4381,29 +4381,45 @@ public class Workspace extends SmoothPagedView
        stripEmptyScreens();
    }

    private void updateShortcut(HashMap<ComponentName, AppInfo> appsMap, ItemInfo info,
                                View child) {
        ComponentName cn = info.getIntent().getComponent();
        if (cn != null) {
            AppInfo appInfo = appsMap.get(info.getIntent().getComponent());
            if ((appInfo != null) && LauncherModel.isShortcutInfoUpdateable(info)) {
                ShortcutInfo shortcutInfo = (ShortcutInfo) info;
                BubbleTextView shortcut = (BubbleTextView) child;
                shortcutInfo.updateIcon(mIconCache);
                shortcutInfo.title = appInfo.title.toString();
                shortcut.applyFromShortcutInfo(shortcutInfo, mIconCache);
            }
        }
    }

    void updateShortcuts(ArrayList<AppInfo> apps) {
        // Create a map of the apps to test against
        final HashMap<ComponentName, AppInfo> appsMap = new HashMap<ComponentName, AppInfo>();
        for (AppInfo ai : apps) {
            appsMap.put(ai.componentName, ai);
        }

        ArrayList<ShortcutAndWidgetContainer> childrenLayouts = getAllShortcutAndWidgetContainers();
        for (ShortcutAndWidgetContainer layout: childrenLayouts) {
            int childCount = layout.getChildCount();
            for (int j = 0; j < childCount; j++) {
                final View view = layout.getChildAt(j);
                Object tag = view.getTag();

                if (LauncherModel.isShortcutInfoUpdateable((ItemInfo) tag)) {
                    ShortcutInfo info = (ShortcutInfo) tag;

                    final Intent intent = info.intent;
                    final ComponentName name = intent.getComponent();
                    final int appCount = apps.size();
                    for (int k = 0; k < appCount; k++) {
                        AppInfo app = apps.get(k);
                        if (app.componentName.equals(name)) {
                            BubbleTextView shortcut = (BubbleTextView) view;
                            info.updateIcon(mIconCache);
                            info.title = app.title.toString();
                            shortcut.applyFromShortcutInfo(info, mIconCache);
                        }
                    }
            // Update all the children shortcuts
            final HashMap<ItemInfo, View> children = new HashMap<ItemInfo, View>();
            for (int j = 0; j < layout.getChildCount(); j++) {
                View v = layout.getChildAt(j);
                ItemInfo info = (ItemInfo) v.getTag();
                if (info instanceof FolderInfo && v instanceof FolderIcon) {
                    FolderIcon folder = (FolderIcon) v;
                    ArrayList<View> folderChildren = folder.getFolder().getItemsInReadingOrder();
                    for (View fv : folderChildren) {
                        info = (ItemInfo) fv.getTag();
                        updateShortcut(appsMap, info, fv);
                    }
                    folder.invalidate();
                } else if (info instanceof ShortcutInfo) {
                    updateShortcut(appsMap, info, v);
                }
            }
        }