diff options
author | Winson Chung <winsonc@google.com> | 2012-05-03 11:20:19 -0700 |
---|---|---|
committer | Winson Chung <winsonc@google.com> | 2012-05-04 10:20:05 -0700 |
commit | f561bdf68dd304e1d7c3f7796621a4cc39ca15f2 (patch) | |
tree | 2e1285c2dcafe9a00474082884e49a0b0ea9622d /src/com/android/launcher2/UninstallShortcutReceiver.java | |
parent | 2ceccf83f479d4e161a5f87ee51b21230600abef (diff) | |
download | android_packages_apps_Trebuchet-f561bdf68dd304e1d7c3f7796621a4cc39ca15f2.tar.gz android_packages_apps_Trebuchet-f561bdf68dd304e1d7c3f7796621a4cc39ca15f2.tar.bz2 android_packages_apps_Trebuchet-f561bdf68dd304e1d7c3f7796621a4cc39ca15f2.zip |
Initial change to queue up install/uninstall operations while dragging (Bug 6276881)
Change-Id: I68ad881e38711d8d9a8903ab18d30ef4385833d7
Diffstat (limited to 'src/com/android/launcher2/UninstallShortcutReceiver.java')
-rw-r--r-- | src/com/android/launcher2/UninstallShortcutReceiver.java | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/src/com/android/launcher2/UninstallShortcutReceiver.java b/src/com/android/launcher2/UninstallShortcutReceiver.java index 3f6de7c5a..84b1ad50e 100644 --- a/src/com/android/launcher2/UninstallShortcutReceiver.java +++ b/src/com/android/launcher2/UninstallShortcutReceiver.java @@ -17,38 +17,83 @@ package com.android.launcher2; import android.content.BroadcastReceiver; +import android.content.ContentResolver; import android.content.Context; import android.content.Intent; -import android.content.ContentResolver; import android.content.SharedPreferences; import android.database.Cursor; import android.net.Uri; import android.widget.Toast; +import com.android.launcher.R; + import java.net.URISyntaxException; +import java.util.ArrayList; import java.util.HashSet; +import java.util.Iterator; import java.util.Set; -import com.android.launcher.R; - public class UninstallShortcutReceiver extends BroadcastReceiver { private static final String ACTION_UNINSTALL_SHORTCUT = "com.android.launcher.action.UNINSTALL_SHORTCUT"; + // The set of shortcuts that are pending uninstall + private static ArrayList<PendingUninstallShortcutInfo> mUninstallQueue = + new ArrayList<PendingUninstallShortcutInfo>(); + + // Determines whether to defer uninstalling shortcuts immediately until + // disableAndFlushUninstallQueue() is called. + private static boolean mUseUninstallQueue = false; + + private static class PendingUninstallShortcutInfo { + Intent data; + + public PendingUninstallShortcutInfo(Intent rawData) { + data = rawData; + } + } + public void onReceive(Context context, Intent data) { if (!ACTION_UNINSTALL_SHORTCUT.equals(data.getAction())) { return; } + + PendingUninstallShortcutInfo info = new PendingUninstallShortcutInfo(data); + if (mUseUninstallQueue) { + mUninstallQueue.add(info); + } else { + processUninstallShortcut(context, info); + } + } + + static void enableUninstallQueue() { + mUseUninstallQueue = true; + } + + static void disableAndFlushUninstallQueue(Context context) { + mUseUninstallQueue = false; + Iterator<PendingUninstallShortcutInfo> iter = mUninstallQueue.iterator(); + while (iter.hasNext()) { + processUninstallShortcut(context, iter.next()); + iter.remove(); + } + } + + private static void processUninstallShortcut(Context context, + PendingUninstallShortcutInfo pendingInfo) { String spKey = LauncherApplication.getSharedPreferencesKey(); SharedPreferences sharedPrefs = context.getSharedPreferences(spKey, Context.MODE_PRIVATE); + final Intent data = pendingInfo.data; + LauncherApplication app = (LauncherApplication) context.getApplicationContext(); synchronized (app) { removeShortcut(context, data, sharedPrefs); } } - private void removeShortcut(Context context, Intent data, final SharedPreferences sharedPrefs) { + private static void removeShortcut(Context context, Intent data, + final SharedPreferences sharedPrefs) { Intent intent = data.getParcelableExtra(Intent.EXTRA_SHORTCUT_INTENT); String name = data.getStringExtra(Intent.EXTRA_SHORTCUT_NAME); boolean duplicate = data.getBooleanExtra(Launcher.EXTRA_SHORTCUT_DUPLICATE, true); |