OSDN Git Service

Fixing issue where we were not removing items from LauncherModel and only the add...
authorWinson Chung <winsonc@google.com>
Fri, 31 Aug 2012 00:16:53 +0000 (17:16 -0700)
committerWinson Chung <winsonc@google.com>
Fri, 31 Aug 2012 00:18:59 +0000 (17:18 -0700)
Change-Id: I5660b447521646f820fb2497f327e965d99ac207

src/com/android/launcher2/LauncherModel.java
src/com/android/launcher2/Workspace.java

index 269a0fd..909cc79 100644 (file)
@@ -2168,6 +2168,24 @@ public class LauncherModel extends BroadcastReceiver {
     }
 
     /**
+     * Returns the set of workspace ShortcutInfos with the specified intent.
+     */
+    static ArrayList<ItemInfo> getWorkspaceShortcutItemInfosWithIntent(Intent intent) {
+        ArrayList<ItemInfo> items = new ArrayList<ItemInfo>();
+        synchronized (sBgLock) {
+            for (ItemInfo info : sBgWorkspaceItems) {
+                if (info instanceof ShortcutInfo) {
+                    ShortcutInfo shortcut = (ShortcutInfo) info;
+                    if (shortcut.intent.toUri(0).equals(intent.toUri(0))) {
+                        items.add(shortcut);
+                    }
+                }
+            }
+        }
+        return items;
+    }
+
+    /**
      * Make an ShortcutInfo object for a shortcut that isn't an application.
      */
     private ShortcutInfo getShortcutInfo(Cursor c, Context context,
index 504f9dc..897e95a 100644 (file)
@@ -3697,6 +3697,8 @@ public class Workspace extends SmoothPagedView
         }
 
         // Clean up new-apps animation list
+        final LauncherModel model = mLauncher.getModel();
+        final Context context = getContext();
         post(new Runnable() {
             @Override
             public void run() {
@@ -3717,6 +3719,14 @@ public class Workspace extends SmoothPagedView
                                 if (packageNames.contains(pn)) {
                                     iter.remove();
                                 }
+
+                                // It is possible that we've queued an item to be loaded, yet it has
+                                // not been added to the workspace, so remove those items as well.
+                                ArrayList<ItemInfo> shortcuts =
+                                        model.getWorkspaceShortcutItemInfosWithIntent(intent);
+                                for (ItemInfo info : shortcuts) {
+                                    model.deleteItemFromDatabase(context, info);
+                                }
                             } catch (URISyntaxException e) {}
                         }
                     }