1d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal/* 2d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * Copyright (C) 2016 The Android Open Source Project 3d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * 4d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * Licensed under the Apache License, Version 2.0 (the "License"); 5d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * you may not use this file except in compliance with the License. 6d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * You may obtain a copy of the License at 7d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * 8d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * http://www.apache.org/licenses/LICENSE-2.0 9d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * 10d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * Unless required by applicable law or agreed to in writing, software 11d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * distributed under the License is distributed on an "AS IS" BASIS, 12d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * See the License for the specific language governing permissions and 14d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * limitations under the License. 15d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal */ 16d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 17d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalpackage com.android.launcher3.util; 18d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 19d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalimport android.content.ComponentName; 20d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 21d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalimport com.android.launcher3.ItemInfo; 22d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalimport com.android.launcher3.LauncherSettings.Favorites; 23fc02c1b446ee54561ac7351fb6ff0f8294785f0eTony Wickhamimport com.android.launcher3.ShortcutInfo; 24d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalimport com.android.launcher3.compat.UserHandleCompat; 25d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalimport com.android.launcher3.shortcuts.ShortcutKey; 26d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 27d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalimport java.util.HashSet; 28d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 29d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal/** 30d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal * A utility class to check for {@link ItemInfo} 31d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal */ 32d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyalpublic abstract class ItemInfoMatcher { 33d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 34d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal public abstract boolean matches(ItemInfo info, ComponentName cn); 35d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 36d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal public static ItemInfoMatcher ofComponents( 37d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal final HashSet<ComponentName> components, final UserHandleCompat user) { 38d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal return new ItemInfoMatcher() { 39d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal @Override 40d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal public boolean matches(ItemInfo info, ComponentName cn) { 41d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal return components.contains(cn) && info.user.equals(user); 42d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal } 43d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal }; 44d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal } 45d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 46d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal public static ItemInfoMatcher ofPackages( 47d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal final HashSet<String> packageNames, final UserHandleCompat user) { 48d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal return new ItemInfoMatcher() { 49d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal @Override 50d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal public boolean matches(ItemInfo info, ComponentName cn) { 51d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal return packageNames.contains(cn.getPackageName()) && info.user.equals(user); 52d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal } 53d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal }; 54d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal } 55d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal 56d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal public static ItemInfoMatcher ofShortcutKeys(final HashSet<ShortcutKey> keys) { 57d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal return new ItemInfoMatcher() { 58d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal @Override 59d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal public boolean matches(ItemInfo info, ComponentName cn) { 60d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal return info.itemType == Favorites.ITEM_TYPE_DEEP_SHORTCUT && 61fc02c1b446ee54561ac7351fb6ff0f8294785f0eTony Wickham keys.contains(ShortcutKey.fromShortcutInfo((ShortcutInfo) info)); 62d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal } 63d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal }; 64d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal } 65d3b87ef1963fb96177ca85bcd6a25879e27e419cSunny Goyal} 66