diff options
author | Winson Chung <winsonc@google.com> | 2013-10-16 17:51:49 -0700 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2014-06-05 23:03:34 -0700 |
commit | 1841966775586ce9e98d14b3843d7d06deb51ab8 (patch) | |
tree | addb7523b906d1e3da52e3be6b22b2336f336c1e /src/com/android | |
parent | a59e5db2f5f0b2557aac30c6e68354ff35b41afd (diff) | |
download | android_packages_apps_Trebuchet-1841966775586ce9e98d14b3843d7d06deb51ab8.tar.gz android_packages_apps_Trebuchet-1841966775586ce9e98d14b3843d7d06deb51ab8.tar.bz2 android_packages_apps_Trebuchet-1841966775586ce9e98d14b3843d7d06deb51ab8.zip |
Updating folder icons when the shortcut is updated. (Bug 10803060)
Change-Id: Idee158b3458213e441c01890e0db341a3bcce1f7
Diffstat (limited to 'src/com/android')
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 54 |
1 files changed, 35 insertions, 19 deletions
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<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); } } } |