diff options
Diffstat (limited to 'src/com/android/launcher3/util/ItemInfoMatcher.java')
-rw-r--r-- | src/com/android/launcher3/util/ItemInfoMatcher.java | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/src/com/android/launcher3/util/ItemInfoMatcher.java b/src/com/android/launcher3/util/ItemInfoMatcher.java index 46e9184b4..8f985c344 100644 --- a/src/com/android/launcher3/util/ItemInfoMatcher.java +++ b/src/com/android/launcher3/util/ItemInfoMatcher.java @@ -18,7 +18,9 @@ package com.android.launcher3.util; import android.content.ComponentName; +import com.android.launcher3.FolderInfo; import com.android.launcher3.ItemInfo; +import com.android.launcher3.LauncherAppWidgetInfo; import com.android.launcher3.LauncherSettings.Favorites; import com.android.launcher3.ShortcutInfo; import com.android.launcher3.compat.UserHandleCompat; @@ -33,6 +35,46 @@ public abstract class ItemInfoMatcher { public abstract boolean matches(ItemInfo info, ComponentName cn); + /** + * Filters {@param infos} to those satisfying the {@link #matches(ItemInfo, ComponentName)}. + */ + public final HashSet<ItemInfo> filterItemInfos(Iterable<ItemInfo> infos) { + HashSet<ItemInfo> filtered = new HashSet<>(); + for (ItemInfo i : infos) { + if (i instanceof ShortcutInfo) { + ShortcutInfo info = (ShortcutInfo) i; + ComponentName cn = info.getTargetComponent(); + if (cn != null && matches(info, cn)) { + filtered.add(info); + } + } else if (i instanceof FolderInfo) { + FolderInfo info = (FolderInfo) i; + for (ShortcutInfo s : info.contents) { + ComponentName cn = s.getTargetComponent(); + if (cn != null && matches(s, cn)) { + filtered.add(s); + } + } + } else if (i instanceof LauncherAppWidgetInfo) { + LauncherAppWidgetInfo info = (LauncherAppWidgetInfo) i; + ComponentName cn = info.providerName; + if (cn != null && matches(info, cn)) { + filtered.add(info); + } + } + } + return filtered; + } + + public static ItemInfoMatcher ofUser(final UserHandleCompat user) { + return new ItemInfoMatcher() { + @Override + public boolean matches(ItemInfo info, ComponentName cn) { + return info.user.equals(user); + } + }; + } + public static ItemInfoMatcher ofComponents( final HashSet<ComponentName> components, final UserHandleCompat user) { return new ItemInfoMatcher() { |