From 70a7c9b70003ae87e2b2968bc6ceded0fe0f0e8b Mon Sep 17 00:00:00 2001 From: Sunny Goyal Date: Thu, 28 Jul 2016 10:07:32 -0700 Subject: Showing the shortcuts in the disabled state and removing ti from the menu when its disabled Bug: 30315906 Change-Id: Ice747e7be955d8bb2dd65191f7613e2afd4abc1c --- res/values/strings.xml | 2 ++ src/com/android/launcher3/Launcher.java | 2 ++ src/com/android/launcher3/LauncherModel.java | 8 +++++--- src/com/android/launcher3/ShortcutInfo.java | 19 +++++++++++++++---- .../launcher3/shortcuts/ShortcutInfoCompat.java | 4 ++++ 5 files changed, 28 insertions(+), 7 deletions(-) diff --git a/res/values/strings.xml b/res/values/strings.xml index 9f3075287..2bc0cae0e 100644 --- a/res/values/strings.xml +++ b/res/values/strings.xml @@ -35,6 +35,8 @@ Downloaded app disabled in Safe mode Widgets disabled in Safe mode + + Shortcut isn\'t available diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index d668d2a74..fe84eb39b 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2655,6 +2655,8 @@ public class Launcher extends Activity int error = R.string.activity_not_available; if ((shortcut.isDisabled & ShortcutInfo.FLAG_DISABLED_SAFEMODE) != 0) { error = R.string.safemode_shortcut_error; + } else if ((shortcut.isDisabled & ShortcutInfo.FLAG_DISABLED_BY_PUBLISHER) != 0) { + error = R.string.shortcut_not_available; } Toast.makeText(this, error, Toast.LENGTH_SHORT).show(); return; diff --git a/src/com/android/launcher3/LauncherModel.java b/src/com/android/launcher3/LauncherModel.java index 17c39faa2..3d240a96d 100644 --- a/src/com/android/launcher3/LauncherModel.java +++ b/src/com/android/launcher3/LauncherModel.java @@ -2821,9 +2821,11 @@ public class LauncherModel extends BroadcastReceiver // Now add the new shortcuts to the map. for (ShortcutInfoCompat shortcut : shortcuts) { - ComponentKey targetComponent - = new ComponentKey(shortcut.getActivity(), shortcut.getUserHandle()); - mBgDeepShortcutMap.addToList(targetComponent, shortcut.getId()); + if (shortcut.isEnabled()) { + ComponentKey targetComponent + = new ComponentKey(shortcut.getActivity(), shortcut.getUserHandle()); + mBgDeepShortcutMap.addToList(targetComponent, shortcut.getId()); + } } } diff --git a/src/com/android/launcher3/ShortcutInfo.java b/src/com/android/launcher3/ShortcutInfo.java index c87bc08c9..00ac9bda4 100644 --- a/src/com/android/launcher3/ShortcutInfo.java +++ b/src/com/android/launcher3/ShortcutInfo.java @@ -100,22 +100,28 @@ public class ShortcutInfo extends ItemInfo { /** * Indicates that the icon is disabled due to safe mode restrictions. */ - public static final int FLAG_DISABLED_SAFEMODE = 1; + public static final int FLAG_DISABLED_SAFEMODE = 1 << 0; /** * Indicates that the icon is disabled as the app is not available. */ - public static final int FLAG_DISABLED_NOT_AVAILABLE = 2; + public static final int FLAG_DISABLED_NOT_AVAILABLE = 1 << 1; /** * Indicates that the icon is disabled as the app is suspended */ - public static final int FLAG_DISABLED_SUSPENDED = 4; + public static final int FLAG_DISABLED_SUSPENDED = 1 << 2; /** * Indicates that the icon is disabled as the user is in quiet mode. */ - public static final int FLAG_DISABLED_QUIET_USER = 8; + public static final int FLAG_DISABLED_QUIET_USER = 1 << 3; + + + /** + * Indicates that the icon is disabled as the publisher has disabled the actual shortcut. + */ + public static final int FLAG_DISABLED_BY_PUBLISHER = 1 << 4; /** * Could be disabled, if the the app is installed but unavailable (eg. in safe mode or when @@ -293,6 +299,11 @@ public class ShortcutInfo extends ItemInfo { } contentDescription = UserManagerCompat.getInstance(context) .getBadgedLabelForUser(label, user); + if (shortcutInfo.isEnabled()) { + isDisabled &= ~FLAG_DISABLED_BY_PUBLISHER; + } else { + isDisabled |= FLAG_DISABLED_BY_PUBLISHER; + } LauncherAppState launcherAppState = LauncherAppState.getInstance(); Drawable unbadgedIcon = launcherAppState.getShortcutManager() diff --git a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java index 00553dfbd..9e7add56c 100644 --- a/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java +++ b/src/com/android/launcher3/shortcuts/ShortcutInfoCompat.java @@ -101,6 +101,10 @@ public class ShortcutInfoCompat { return mShortcutInfo.isDeclaredInManifest(); } + public boolean isEnabled() { + return mShortcutInfo.isEnabled(); + } + public int getRank() { return mShortcutInfo.getRank(); } -- cgit v1.2.3