summaryrefslogtreecommitdiffstats
path: root/src/com/android
diff options
context:
space:
mode:
authorTony Wickham <twickham@google.com>2017-01-26 09:54:48 -0800
committerTony Wickham <twickham@google.com>2017-01-26 11:28:43 -0800
commit2efcdd0c783e6ef9a52a25bec1a2508040760bb6 (patch)
tree598a5bb08ad35ffe87bc14b46be6912b3a5d6951 /src/com/android
parent9438ed414fdabadb4cd09da184867b1c44b91095 (diff)
downloadandroid_packages_apps_Trebuchet-2efcdd0c783e6ef9a52a25bec1a2508040760bb6.tar.gz
android_packages_apps_Trebuchet-2efcdd0c783e6ef9a52a25bec1a2508040760bb6.tar.bz2
android_packages_apps_Trebuchet-2efcdd0c783e6ef9a52a25bec1a2508040760bb6.zip
Store notification keys in a List instead of a Set.
This will preserve the order when iterating over the notifications to populate the popup container. Bug: 34735689 Change-Id: Ic390ffef140e454566ffc6ab1763950349df25ce
Diffstat (limited to 'src/com/android')
-rw-r--r--src/com/android/launcher3/badge/BadgeInfo.java15
-rw-r--r--src/com/android/launcher3/notification/NotificationFooterLayout.java3
-rw-r--r--src/com/android/launcher3/notification/NotificationItemView.java10
-rw-r--r--src/com/android/launcher3/popup/PopupDataProvider.java9
4 files changed, 20 insertions, 17 deletions
diff --git a/src/com/android/launcher3/badge/BadgeInfo.java b/src/com/android/launcher3/badge/BadgeInfo.java
index 673c297dc..77355c75e 100644
--- a/src/com/android/launcher3/badge/BadgeInfo.java
+++ b/src/com/android/launcher3/badge/BadgeInfo.java
@@ -19,8 +19,8 @@ package com.android.launcher3.badge;
import com.android.launcher3.notification.NotificationInfo;
import com.android.launcher3.util.PackageUserKey;
-import java.util.HashSet;
-import java.util.Set;
+import java.util.ArrayList;
+import java.util.List;
/**
* Contains data to be used in an icon badge.
@@ -33,17 +33,20 @@ public class BadgeInfo {
* The keys of the notifications that this badge represents. These keys can later be
* used to retrieve {@link NotificationInfo}'s.
*/
- private Set<String> mNotificationKeys;
+ private List<String> mNotificationKeys;
public BadgeInfo(PackageUserKey packageUserKey) {
mPackageUserKey = packageUserKey;
- mNotificationKeys = new HashSet<>();
+ mNotificationKeys = new ArrayList<>();
}
/**
* Returns whether the notification was added (false if it already existed).
*/
- public boolean addNotificationKey(String notificationKey) {
+ public boolean addNotificationKeyIfNotExists(String notificationKey) {
+ if (mNotificationKeys.contains(notificationKey)) {
+ return false;
+ }
return mNotificationKeys.add(notificationKey);
}
@@ -54,7 +57,7 @@ public class BadgeInfo {
return mNotificationKeys.remove(notificationKey);
}
- public Set<String> getNotificationKeys() {
+ public List<String> getNotificationKeys() {
return mNotificationKeys;
}
diff --git a/src/com/android/launcher3/notification/NotificationFooterLayout.java b/src/com/android/launcher3/notification/NotificationFooterLayout.java
index 2965e4a63..eef1d6194 100644
--- a/src/com/android/launcher3/notification/NotificationFooterLayout.java
+++ b/src/com/android/launcher3/notification/NotificationFooterLayout.java
@@ -40,7 +40,6 @@ import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* A {@link LinearLayout} that contains icons of notifications. If there is only one icon,
@@ -191,7 +190,7 @@ public class NotificationFooterLayout extends LinearLayout {
animation.start();
}
- public void trimNotifications(Set<String> notifications) {
+ public void trimNotifications(List<String> notifications) {
if (!isAttachedToWindow() || mIconRow.getChildCount() == 0) {
return;
}
diff --git a/src/com/android/launcher3/notification/NotificationItemView.java b/src/com/android/launcher3/notification/NotificationItemView.java
index f38838261..b74cd4e1e 100644
--- a/src/com/android/launcher3/notification/NotificationItemView.java
+++ b/src/com/android/launcher3/notification/NotificationItemView.java
@@ -34,9 +34,8 @@ import com.android.launcher3.R;
import com.android.launcher3.graphics.IconPalette;
import com.android.launcher3.popup.PopupItemView;
-import java.util.HashSet;
+import java.util.ArrayList;
import java.util.List;
-import java.util.Set;
import static com.android.launcher3.LauncherAnimUtils.animateViewHeight;
@@ -122,7 +121,7 @@ public class NotificationItemView extends PopupItemView {
mFooter.applyColors(iconPalette);
}
- public void trimNotifications(final Set<String> notificationKeys) {
+ public void trimNotifications(final List<String> notificationKeys) {
boolean dismissedMainNotification = !notificationKeys.contains(
mMainView.getNotificationInfo().notificationKey);
if (dismissedMainNotification && !mAnimatingNextIcon) {
@@ -137,7 +136,10 @@ public class NotificationItemView extends PopupItemView {
public void onIconAnimationEnd(NotificationInfo newMainNotification) {
if (newMainNotification != null) {
mMainView.applyNotificationInfo(newMainNotification, mIconView, mIconPalette);
- Set<String> footerNotificationKeys = new HashSet<>(notificationKeys);
+ // Remove the animated notification from the footer by calling trim
+ // TODO: Remove the notification in NotificationFooterLayout directly
+ // instead of relying on this hack.
+ List<String> footerNotificationKeys = new ArrayList<>(notificationKeys);
footerNotificationKeys.remove(newMainNotification.notificationKey);
mFooter.trimNotifications(footerNotificationKeys);
mMainView.setVisibility(VISIBLE);
diff --git a/src/com/android/launcher3/popup/PopupDataProvider.java b/src/com/android/launcher3/popup/PopupDataProvider.java
index f6fdb767f..c773079fe 100644
--- a/src/com/android/launcher3/popup/PopupDataProvider.java
+++ b/src/com/android/launcher3/popup/PopupDataProvider.java
@@ -33,7 +33,6 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import java.util.Set;
/**
* Provides data for the popup menu that appears after long-clicking on apps.
@@ -59,10 +58,10 @@ public class PopupDataProvider implements NotificationListener.NotificationsChan
BadgeInfo oldBadgeInfo = mPackageUserToBadgeInfos.get(postedPackageUserKey);
if (oldBadgeInfo == null) {
BadgeInfo newBadgeInfo = new BadgeInfo(postedPackageUserKey);
- newBadgeInfo.addNotificationKey(notificationKey);
+ newBadgeInfo.addNotificationKeyIfNotExists(notificationKey);
mPackageUserToBadgeInfos.put(postedPackageUserKey, newBadgeInfo);
mLauncher.updateIconBadges(Collections.singleton(postedPackageUserKey));
- } else if (oldBadgeInfo.addNotificationKey(notificationKey)) {
+ } else if (oldBadgeInfo.addNotificationKeyIfNotExists(notificationKey)) {
mLauncher.updateIconBadges(Collections.singleton(postedPackageUserKey));
}
}
@@ -96,7 +95,7 @@ public class PopupDataProvider implements NotificationListener.NotificationsChan
badgeInfo = new BadgeInfo(packageUserKey);
mPackageUserToBadgeInfos.put(packageUserKey, badgeInfo);
}
- badgeInfo.addNotificationKey(notification.getKey());
+ badgeInfo.addNotificationKeyIfNotExists(notification.getKey());
}
// Add and remove from updatedBadges so it contains the PackageUserKeys of updated badges.
@@ -151,7 +150,7 @@ public class PopupDataProvider implements NotificationListener.NotificationsChan
public String[] getNotificationKeysForItem(ItemInfo info) {
BadgeInfo badgeInfo = mPackageUserToBadgeInfos.get(PackageUserKey.fromItemInfo(info));
if (badgeInfo == null) { return new String[0]; }
- Set<String> notificationKeys = badgeInfo.getNotificationKeys();
+ List<String> notificationKeys = badgeInfo.getNotificationKeys();
return notificationKeys.toArray(new String[notificationKeys.size()]);
}