blob: 3fb240117b36757638d8f8eabd2fca198c4ca1c8 [file] [log] [blame]
Tony Wickham010d2552017-01-20 08:15:28 -08001package com.android.launcher3.util;
2
3import android.os.UserHandle;
4import android.service.notification.StatusBarNotification;
5
6import com.android.launcher3.ItemInfo;
Tony Wickham18a1b5d2017-02-02 13:58:33 -08007import com.android.launcher3.shortcuts.DeepShortcutManager;
Tony Wickham010d2552017-01-20 08:15:28 -08008
9import java.util.Arrays;
10
11/** Creates a hash key based on package name and user. */
12public class PackageUserKey {
13
14 private String mPackageName;
15 private UserHandle mUser;
16 private int mHashCode;
17
18 public static PackageUserKey fromItemInfo(ItemInfo info) {
19 return new PackageUserKey(info.getTargetComponent().getPackageName(), info.user);
20 }
21
22 public static PackageUserKey fromNotification(StatusBarNotification notification) {
23 return new PackageUserKey(notification.getPackageName(), notification.getUser());
24 }
25
26 public PackageUserKey(String packageName, UserHandle user) {
27 update(packageName, user);
28 }
29
30 private void update(String packageName, UserHandle user) {
31 mPackageName = packageName;
32 mUser = user;
33 mHashCode = Arrays.hashCode(new Object[] {packageName, user});
34 }
35
Tony Wickham18a1b5d2017-02-02 13:58:33 -080036 /**
37 * This should only be called to avoid new object creations in a loop.
38 * @return Whether this PackageUserKey was successfully updated - it shouldn't be used if not.
39 */
40 public boolean updateFromItemInfo(ItemInfo info) {
41 if (DeepShortcutManager.supportsShortcuts(info)) {
42 update(info.getTargetComponent().getPackageName(), info.user);
43 return true;
44 }
45 return false;
Tony Wickham010d2552017-01-20 08:15:28 -080046 }
47
48 @Override
49 public int hashCode() {
50 return mHashCode;
51 }
52
53 @Override
54 public boolean equals(Object obj) {
55 if (!(obj instanceof PackageUserKey)) return false;
56 PackageUserKey otherKey = (PackageUserKey) obj;
57 return mPackageName.equals(otherKey.mPackageName) && mUser.equals(otherKey.mUser);
58 }
59}