diff options
author | d34d <clark@cyngn.com> | 2015-07-17 10:06:20 -0700 |
---|---|---|
committer | cretin45 <cretin45@gmail.com> | 2016-03-15 14:25:30 -0700 |
commit | 772f61de9ad6a86dcccbab308c7202e770975ce6 (patch) | |
tree | 4dc0f27c7e9d8a9cf461cf4aebedbab23d604df5 /src/com/android/launcher3/LauncherModel.java | |
parent | 1129f556e5097e777bd2071890cc622db6a14f5e (diff) | |
download | android_packages_apps_Trebuchet-772f61de9ad6a86dcccbab308c7202e770975ce6.tar.gz android_packages_apps_Trebuchet-772f61de9ad6a86dcccbab308c7202e770975ce6.tar.bz2 android_packages_apps_Trebuchet-772f61de9ad6a86dcccbab308c7202e770975ce6.zip |
Show apps as unavailable when on unmounted storage
This patch allows shortcuts to apps that are currently unavailable
due to being on unmounted external storage to remain on the workspace
and in folders. The icons will be disabled and grayed out until
the external storage is mounted.
Issue-id: CYNGNOS-1344
Change-Id: I971483806b27e3a75ef0d5bb89d8dfb86f97511e
Diffstat (limited to 'src/com/android/launcher3/LauncherModel.java')
-rw-r--r-- | src/com/android/launcher3/LauncherModel.java | 58 |
1 files changed, 50 insertions, 8 deletions
diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index e90ea1765..687e56563 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -211,8 +211,12 @@ public class LauncherModel extends BroadcastReceiver public void bindRestoreItemsChange(HashSet<ItemInfo> updates); public void bindComponentsRemoved(ArrayList<String> packageNames, ArrayList<AppInfo> appInfos, UserHandleCompat user, int reason); + public void bindPackagesUpdated(ArrayList<Object> widgetsAndShortcuts); public void bindAllPackages(WidgetsModel model); public void bindSearchProviderChanged(); + public void bindComponentsUnavailable(ArrayList<String> packageNames, + ArrayList<AppInfo> appInfos); + public void bindComponentsAvailable(ArrayList<ItemInfo> itemInfos); public boolean isAllAppsButtonRank(int rank); public void onPageBoundSynchronously(int page); public void dumpLogsToLocalData(); @@ -3290,6 +3294,7 @@ public class LauncherModel extends BroadcastReceiver final String[] packages = mPackages; final int N = packages.length; + final ArrayList<String> unavailable = new ArrayList<String>(); switch (mOp) { case OP_ADD: { for (int i=0; i<N; i++) { @@ -3328,6 +3333,9 @@ public class LauncherModel extends BroadcastReceiver if (DEBUG_LOADERS) Log.d(TAG, "mAllAppsList.removePackage " + packages[i]); mBgAllAppsList.removePackage(packages[i], mUser); mApp.getWidgetCache().removePackage(packages[i], mUser); + if (mOp == OP_UNAVAILABLE) { + unavailable.add(packages[i]); + } } break; } @@ -3359,10 +3367,21 @@ public class LauncherModel extends BroadcastReceiver new HashMap<ComponentName, AppInfo>(); if (added != null) { + final ArrayList<ItemInfo> addedInfos = new ArrayList<ItemInfo>(added); addAppsToAllApps(context, added); for (AppInfo ai : added) { addedOrUpdatedApps.put(ai.componentName, ai); } + mHandler.post(new Runnable() { + public void run() { + Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; + if (callbacks == cb && cb != null) { + if (DEBUG_LOADERS) Log.d(TAG, "bindComponentsAvailable: " + + addedInfos.size()); + callbacks.bindComponentsAvailable(addedInfos); + } + } + }); } if (modified != null) { @@ -3536,6 +3555,17 @@ public class LauncherModel extends BroadcastReceiver final int removeReason; if (mOp == OP_UNAVAILABLE) { removeReason = ShortcutInfo.FLAG_DISABLED_NOT_AVAILABLE; + // Call the packages-unavailable callback + mHandler.post(new Runnable() { + public void run() { + Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; + if (callbacks == cb && cb != null) { + if (DEBUG_LOADERS) Log.d(TAG, "bindComponentsUnavailable: " + + removedApps.size()); + callbacks.bindComponentsUnavailable(unavailable, removedApps); + } + } + }); } else { // Remove all the components associated with this package for (String pn : removedPackageNames) { @@ -3551,16 +3581,28 @@ public class LauncherModel extends BroadcastReceiver // Remove any queued items from the install queue InstallShortcutReceiver.removeFromInstallQueue(context, removedPackageNames, mUser); - // Call the components-removed callback - mHandler.post(new Runnable() { - public void run() { - Callbacks cb = getCallback(); - if (callbacks == cb && cb != null) { - callbacks.bindComponentsRemoved( + if (mOp == OP_UNAVAILABLE) { + // Call the packages-unavailable callback + mHandler.post(new Runnable() { + public void run() { + Callbacks cb = mCallbacks != null ? mCallbacks.get() : null; + if (callbacks == cb && cb != null) { + callbacks.bindComponentsUnavailable(unavailable, removedApps); + } + } + }); + } else { + // Call the components-removed callback + mHandler.post(new Runnable() { + public void run() { + Callbacks cb = getCallback(); + if (callbacks == cb && cb != null) { + callbacks.bindComponentsRemoved( removedPackageNames, removedApps, mUser, removeReason); + } } - } - }); + }); + } } // Update widgets |