From 1841966775586ce9e98d14b3843d7d06deb51ab8 Mon Sep 17 00:00:00 2001 From: Winson Chung Date: Wed, 16 Oct 2013 17:51:49 -0700 Subject: Updating folder icons when the shortcut is updated. (Bug 10803060) Change-Id: Idee158b3458213e441c01890e0db341a3bcce1f7 --- src/com/android/launcher3/Workspace.java | 54 +++++++++++++++++++++----------- 1 file changed, 35 insertions(+), 19 deletions(-) (limited to 'src') diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index 58b03e37d..4eddcd3b6 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -4513,29 +4513,45 @@ public class Workspace extends SmoothPagedView stripEmptyScreens(); } + private void updateShortcut(HashMap 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 apps) { + // Create a map of the apps to test against + final HashMap appsMap = new HashMap(); + for (AppInfo ai : apps) { + appsMap.put(ai.componentName, ai); + } + ArrayList 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 children = new HashMap(); + 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 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); } } } -- cgit v1.2.3