summaryrefslogtreecommitdiffstats
path: root/src/com/android/launcher3/util/ItemInfoMatcher.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/launcher3/util/ItemInfoMatcher.java')
-rw-r--r--src/com/android/launcher3/util/ItemInfoMatcher.java42
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() {