diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2014-10-02 15:58:31 -0700 |
---|---|---|
committer | Danesh M <daneshm90@gmail.com> | 2015-09-27 15:44:28 -0700 |
commit | bedfa5e3c344273d8c45a603ba3456acbac801e9 (patch) | |
tree | 40caee9294fc229a80aeaef821381713e172f213 /src/com/android/launcher3/Workspace.java | |
parent | 6d5f97506bc6b93471d7e29bd2cbd996895cc0d7 (diff) | |
download | android_packages_apps_Trebuchet-bedfa5e3c344273d8c45a603ba3456acbac801e9.tar.gz android_packages_apps_Trebuchet-bedfa5e3c344273d8c45a603ba3456acbac801e9.tar.bz2 android_packages_apps_Trebuchet-bedfa5e3c344273d8c45a603ba3456acbac801e9.zip |
Keeping icons in disabled state when SD-card is unmounted
> changing shortcutInfo.isDisabled to be a flag based variable
> on received OnPackageUnavailable, icons are disabled from desktop
instead of being removed. Icons in all apps are removed
Bug: 15852084
Bug: 16238283
Change-Id: I126d23c709682a917d4bbb84de71032593dce8f9
Diffstat (limited to 'src/com/android/launcher3/Workspace.java')
-rw-r--r-- | src/com/android/launcher3/Workspace.java | 37 |
1 files changed, 35 insertions, 2 deletions
diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index e34edf32a..db997db2b 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -4831,6 +4831,34 @@ public class Workspace extends SmoothPagedView }); } + public void disableShortcutsByPackageName(final ArrayList<String> packages, + final UserHandleCompat user, final int reason) { + final HashSet<String> packageNames = new HashSet<String>(); + packageNames.addAll(packages); + + 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 + && packageNames.contains(cn.getPackageName())) { + shortcutInfo.isDisabled |= reason; + BubbleTextView shortcut = (BubbleTextView) v; + shortcut.applyFromShortcutInfo(shortcutInfo, mIconCache, true, false); + + if (parent != null) { + parent.invalidate(); + } + } + } + // process all the shortcuts + return false; + } + }); + } + // Removes ALL items that match a given package name, this is usually called when a package // has been removed and we want to remove all components (widgets, shortcuts, apps) that // belong to that package. @@ -5061,7 +5089,6 @@ public class Workspace extends SmoothPagedView ComponentName cn = shortcutInfo.getTargetComponent(); AppInfo appInfo = appsMap.get(cn); if (user.equals(shortcutInfo.user) && cn != null - && LauncherModel.isShortcutInfoUpdateable(info) && pkgNames.contains(cn.getPackageName())) { boolean promiseStateChanged = false; boolean infoUpdated = false; @@ -5106,8 +5133,14 @@ public class Workspace extends SmoothPagedView LauncherModel.updateItemInDatabase(getContext(), shortcutInfo); } + if ((shortcutInfo.isDisabled & ShortcutInfo.FLAG_DISABLED_NOT_AVAILABLE) != 0) { + // Since package was just updated, the target must be available now. + shortcutInfo.isDisabled &= ~ShortcutInfo.FLAG_DISABLED_NOT_AVAILABLE; + infoUpdated = true; + } - if (appInfo != null) { + // Only update the icon and labels if the shortcuts points to an app target + if ((appInfo != null) && LauncherModel.isShortcutAppTarget(shortcutInfo)) { shortcutInfo.updateIcon(mIconCache); shortcutInfo.title = appInfo.title.toString(); shortcutInfo.contentDescription = appInfo.contentDescription; |