summaryrefslogtreecommitdiffstats
path: root/src_shortcuts_overrides
diff options
context:
space:
mode:
authorPinyao Ting <pinyaoting@google.com>2019-07-25 20:26:54 -0700
committerPinyao Ting <pinyaoting@google.com>2019-07-30 19:39:10 +0000
commit4d1a0e2a7b859672a6aac52e9fd909d42a12b895 (patch)
tree7d7e8866f80fa05a47a2aab3c7058e4ec173dfc5 /src_shortcuts_overrides
parentc0974870e4a700e43a33e3a205f0dde46828f338 (diff)
downloadandroid_packages_apps_Trebuchet-4d1a0e2a7b859672a6aac52e9fd909d42a12b895.tar.gz
android_packages_apps_Trebuchet-4d1a0e2a7b859672a6aac52e9fd909d42a12b895.tar.bz2
android_packages_apps_Trebuchet-4d1a0e2a7b859672a6aac52e9fd909d42a12b895.zip
show dot on shortcut when incoming notification contains exactly the
same shortcut id Bug: 132336512 Change-Id: Iddf4cfe8ad60c12e8de8b171bed392f1bb0a6761 Merged-In: Iddf4cfe8ad60c12e8de8b171bed392f1bb0a6761
Diffstat (limited to 'src_shortcuts_overrides')
-rw-r--r--src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java45
1 files changed, 41 insertions, 4 deletions
diff --git a/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java b/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java
index 6b6f70d7b..f42bafe5e 100644
--- a/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java
+++ b/src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java
@@ -30,6 +30,7 @@ import android.util.Log;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.LauncherSettings;
import com.android.launcher3.WorkspaceItemInfo;
+import com.android.launcher3.notification.NotificationKeyData;
import java.util.ArrayList;
import java.util.Collections;
@@ -64,10 +65,40 @@ public class DeepShortcutManager {
}
public static boolean supportsShortcuts(ItemInfo info) {
- boolean isItemPromise = info instanceof WorkspaceItemInfo
- && ((WorkspaceItemInfo) info).hasPromiseIconUi();
- return info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION
- && !info.isDisabled() && !isItemPromise;
+ return isActive(info) && isApp(info);
+ }
+
+ public static boolean supportsNotificationDots(
+ ItemInfo info, List<NotificationKeyData> notifications) {
+ if (!isActive(info)) {
+ return false;
+ }
+ return isApp(info) || (isPinnedShortcut(info)
+ && shouldShowNotificationDotForPinnedShortcut(info, notifications));
+ }
+
+ private static boolean isApp(ItemInfo info) {
+ return info.itemType == LauncherSettings.Favorites.ITEM_TYPE_APPLICATION;
+ }
+
+ private static boolean isPinnedShortcut(ItemInfo info) {
+ return info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT
+ && info.container != ItemInfo.NO_ID
+ && info instanceof WorkspaceItemInfo;
+ }
+
+ private static boolean shouldShowNotificationDotForPinnedShortcut(
+ ItemInfo info, List<NotificationKeyData> notifications) {
+ String shortcutId = ((WorkspaceItemInfo) info).getDeepShortcutId();
+ if (shortcutId == null) {
+ return false;
+ }
+ for (NotificationKeyData notification : notifications) {
+ if (shortcutId.equals(notification.shortcutId)) {
+ return true;
+ }
+ }
+ return false;
}
public boolean wasLastCallSuccess() {
@@ -183,6 +214,12 @@ public class DeepShortcutManager {
return shortcutIds;
}
+ private static boolean isActive(ItemInfo info) {
+ boolean isLoading = info instanceof WorkspaceItemInfo
+ && ((WorkspaceItemInfo) info).hasPromiseIconUi();
+ return !isLoading && !info.isDisabled();
+ }
+
/**
* Query the system server for all the shortcuts matching the given parameters.
* If packageName == null, we query for all shortcuts with the passed flags, regardless of app.