summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--go/src/com/android/launcher3/shortcuts/DeepShortcutManager.java6
-rw-r--r--src/com/android/launcher3/popup/PopupDataProvider.java11
-rw-r--r--src_shortcuts_overrides/com/android/launcher3/shortcuts/DeepShortcutManager.java45
3 files changed, 54 insertions, 8 deletions
diff --git a/go/src/com/android/launcher3/shortcuts/DeepShortcutManager.java b/go/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
index 1e449108d..73adaa14f 100644
--- a/go/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
+++ b/go/src/com/android/launcher3/shortcuts/DeepShortcutManager.java
@@ -25,6 +25,7 @@ import android.os.Bundle;
import android.os.UserHandle;
import com.android.launcher3.ItemInfo;
+import com.android.launcher3.notification.NotificationKeyData;
import java.util.Collections;
import java.util.List;
@@ -52,6 +53,11 @@ public class DeepShortcutManager {
return false;
}
+ public static boolean supportsNotificationDots(
+ ItemInfo info, List<NotificationKeyData> notifications) {
+ return false;
+ }
+
public boolean wasLastCallSuccess() {
return false;
}
diff --git a/src/com/android/launcher3/popup/PopupDataProvider.java b/src/com/android/launcher3/popup/PopupDataProvider.java
index 2d301ac00..dd496b02b 100644
--- a/src/com/android/launcher3/popup/PopupDataProvider.java
+++ b/src/com/android/launcher3/popup/PopupDataProvider.java
@@ -40,6 +40,7 @@ import java.util.Map;
import java.util.function.Predicate;
import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
/**
* Provides data for the popup menu that appears after long-clicking on apps.
@@ -167,12 +168,14 @@ public class PopupDataProvider implements NotificationListener.NotificationsChan
return count == null ? 0 : count;
}
- public DotInfo getDotInfoForItem(ItemInfo info) {
- if (!DeepShortcutManager.supportsShortcuts(info)) {
+ public @Nullable DotInfo getDotInfoForItem(@NonNull ItemInfo info) {
+ DotInfo dotInfo = mPackageUserToDotInfos.get(PackageUserKey.fromItemInfo(info));
+ List<NotificationKeyData> notifications =
+ dotInfo == null ? Collections.EMPTY_LIST : dotInfo.getNotificationKeys();
+ if (!DeepShortcutManager.supportsNotificationDots(info, notifications)) {
return null;
}
-
- return mPackageUserToDotInfos.get(PackageUserKey.fromItemInfo(info));
+ return dotInfo;
}
public @NonNull List<NotificationKeyData> getNotificationKeysForItem(ItemInfo info) {
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.