mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-20 03:08:19 +00:00
This reverts commit 1f69351310.
Reason for revert: Testing odd behavior between google app and pixel weather and duplicate items issue
Change-Id: If181aa3e86969e8821b7e1cc765c3801f04489d2
95 lines
3.1 KiB
Java
95 lines
3.1 KiB
Java
package com.android.launcher3.util;
|
|
|
|
import static com.android.launcher3.widget.WidgetSections.NO_CATEGORY;
|
|
|
|
import android.os.UserHandle;
|
|
import android.service.notification.StatusBarNotification;
|
|
import android.text.TextUtils;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
|
|
import com.android.launcher3.model.data.ItemInfo;
|
|
import com.android.launcher3.model.data.PackageItemInfo;
|
|
|
|
import java.util.Objects;
|
|
|
|
/** Creates a hash key based on package name, widget category, and user. */
|
|
public class PackageUserKey {
|
|
|
|
public String mPackageName;
|
|
public int mWidgetCategory;
|
|
public UserHandle mUser;
|
|
private int mHashCode;
|
|
|
|
@Nullable
|
|
public static PackageUserKey fromItemInfo(ItemInfo info) {
|
|
if (info.getTargetComponent() == null) return null;
|
|
return new PackageUserKey(info.getTargetComponent().getPackageName(), info.user);
|
|
}
|
|
|
|
public static PackageUserKey fromNotification(StatusBarNotification notification) {
|
|
return new PackageUserKey(notification.getPackageName(), notification.getUser());
|
|
}
|
|
|
|
/** Creates a {@link PackageUserKey} from {@link PackageItemInfo}. */
|
|
public static PackageUserKey fromPackageItemInfo(PackageItemInfo info) {
|
|
if (TextUtils.isEmpty(info.packageName) && info.widgetCategory != NO_CATEGORY) {
|
|
return new PackageUserKey(info.widgetCategory, info.user);
|
|
}
|
|
return new PackageUserKey(info.packageName, info.user);
|
|
}
|
|
|
|
public PackageUserKey(String packageName, UserHandle user) {
|
|
update(packageName, user);
|
|
}
|
|
|
|
public PackageUserKey(int widgetCategory, UserHandle user) {
|
|
update(/* packageName= */ "", widgetCategory, user);
|
|
}
|
|
|
|
public void update(String packageName, UserHandle user) {
|
|
update(packageName, NO_CATEGORY, user);
|
|
}
|
|
|
|
private void update(String packageName, int widgetCategory, UserHandle user) {
|
|
mPackageName = packageName;
|
|
mWidgetCategory = widgetCategory;
|
|
mUser = user;
|
|
mHashCode = Objects.hash(packageName, widgetCategory, user);
|
|
}
|
|
|
|
/**
|
|
* This should only be called to avoid new object creations in a loop.
|
|
* @return Whether this PackageUserKey was successfully updated - it shouldn't be used if not.
|
|
*/
|
|
public boolean updateFromItemInfo(ItemInfo info) {
|
|
if (info.getTargetComponent() == null) return false;
|
|
if (ShortcutUtil.supportsShortcuts(info)) {
|
|
update(info.getTargetComponent().getPackageName(), info.user);
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public int hashCode() {
|
|
return mHashCode;
|
|
}
|
|
|
|
@Override
|
|
public boolean equals(Object obj) {
|
|
if (!(obj instanceof PackageUserKey)) return false;
|
|
PackageUserKey otherKey = (PackageUserKey) obj;
|
|
return Objects.equals(mPackageName, otherKey.mPackageName)
|
|
&& mWidgetCategory == otherKey.mWidgetCategory
|
|
&& Objects.equals(mUser, otherKey.mUser);
|
|
}
|
|
|
|
@NonNull
|
|
@Override
|
|
public String toString() {
|
|
return mPackageName + "#" + mUser + ",category=" + mWidgetCategory;
|
|
}
|
|
}
|