Merge "Gracefully ignore items that don't support notifications" into ub-launcher3-master

This commit is contained in:
Tony Wickham
2017-02-03 18:24:14 +00:00
committed by Android (Google) Code Review
3 changed files with 14 additions and 7 deletions

View File

@@ -3987,8 +3987,8 @@ public class Workspace extends PagedView
mapOverItems(MAP_RECURSE, new ItemOperator() {
@Override
public boolean evaluate(ItemInfo info, View v) {
if (info instanceof ShortcutInfo && v instanceof BubbleTextView) {
packageUserKey.updateFromItemInfo(info);
if (info instanceof ShortcutInfo && v instanceof BubbleTextView
&& packageUserKey.updateFromItemInfo(info)) {
if (updatedBadges.contains(packageUserKey)) {
((BubbleTextView) v).applyBadgeState(info);
}

View File

@@ -478,8 +478,7 @@ public class AllAppsContainerView extends BaseContainerView implements DragSourc
public void updateIconBadges(Set<PackageUserKey> updatedBadges) {
final PackageUserKey packageUserKey = new PackageUserKey(null, null);
for (AlphabeticalAppsList.AdapterItem app : mApps.getAdapterItems()) {
if (app.appInfo != null) {
packageUserKey.updateFromItemInfo(app.appInfo);
if (app.appInfo != null && packageUserKey.updateFromItemInfo(app.appInfo)) {
if (updatedBadges.contains(packageUserKey)) {
mAdapter.notifyItemChanged(app.position);
}

View File

@@ -4,6 +4,7 @@ import android.os.UserHandle;
import android.service.notification.StatusBarNotification;
import com.android.launcher3.ItemInfo;
import com.android.launcher3.shortcuts.DeepShortcutManager;
import java.util.Arrays;
@@ -32,9 +33,16 @@ public class PackageUserKey {
mHashCode = Arrays.hashCode(new Object[] {packageName, user});
}
/** This should only be called to avoid new object creations in a loop. */
public void updateFromItemInfo(ItemInfo info) {
update(info.getTargetComponent().getPackageName(), info.user);
/**
* This should only be called to avoid new object creations in a loop.
* @return Whether this PackageUserKey was successfully updated - it shouldn't be used if not.
*/
public boolean updateFromItemInfo(ItemInfo info) {
if (DeepShortcutManager.supportsShortcuts(info)) {
update(info.getTargetComponent().getPackageName(), info.user);
return true;
}
return false;
}
@Override