diff options
Diffstat (limited to 'src/com/android/launcher3/util/PackageUserKey.java')
-rw-r--r-- | src/com/android/launcher3/util/PackageUserKey.java | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/src/com/android/launcher3/util/PackageUserKey.java b/src/com/android/launcher3/util/PackageUserKey.java new file mode 100644 index 000000000..d08b0e931 --- /dev/null +++ b/src/com/android/launcher3/util/PackageUserKey.java @@ -0,0 +1,51 @@ +package com.android.launcher3.util; + +import android.os.UserHandle; +import android.service.notification.StatusBarNotification; + +import com.android.launcher3.ItemInfo; + +import java.util.Arrays; + +/** Creates a hash key based on package name and user. */ +public class PackageUserKey { + + private String mPackageName; + private UserHandle mUser; + private int mHashCode; + + public static PackageUserKey fromItemInfo(ItemInfo info) { + return new PackageUserKey(info.getTargetComponent().getPackageName(), info.user); + } + + public static PackageUserKey fromNotification(StatusBarNotification notification) { + return new PackageUserKey(notification.getPackageName(), notification.getUser()); + } + + public PackageUserKey(String packageName, UserHandle user) { + update(packageName, user); + } + + private void update(String packageName, UserHandle user) { + mPackageName = packageName; + mUser = user; + 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); + } + + @Override + public int hashCode() { + return mHashCode; + } + + @Override + public boolean equals(Object obj) { + if (!(obj instanceof PackageUserKey)) return false; + PackageUserKey otherKey = (PackageUserKey) obj; + return mPackageName.equals(otherKey.mPackageName) && mUser.equals(otherKey.mUser); + } +} |