Final (?) touches to people/apps/sound circles
* Support comparing icon sets with a custom equivalence (needed because AppEntry doesn't implement equals(), and somewhat tricky because CircularIconPreference itself is not generic). * Use final icons for allowed sounds. * Use final appearance for +n icon. Test: atest com.android.settings.notification.modes Bug: 346551087 Flag: android.app.modes_ui Change-Id: Iceadf4a182e607111afb72ff36bca872a62ae040
This commit is contained in:
@@ -40,6 +40,7 @@ import com.android.settingslib.applications.ApplicationsState.AppEntry;
|
||||
import com.android.settingslib.notification.modes.ZenMode;
|
||||
import com.android.settingslib.notification.modes.ZenModesBackend;
|
||||
|
||||
import com.google.common.base.Equivalence;
|
||||
import com.google.common.collect.HashMultimap;
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Multimap;
|
||||
@@ -47,6 +48,7 @@ import com.google.common.collect.Multimap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* Preference with a link and summary about what apps can break through the mode
|
||||
@@ -137,7 +139,8 @@ class ZenModeAppsLinkPreferenceController extends AbstractZenModePreferenceContr
|
||||
mPreference.setSummary(mSummaryHelper.getAppsSummary(mZenMode, apps));
|
||||
|
||||
mPreference.displayIcons(new CircularIconSet<>(apps,
|
||||
app -> Utils.getBadgedIcon(mContext, app.info)));
|
||||
app -> Utils.getBadgedIcon(mContext, app.info)),
|
||||
APP_ENTRY_EQUIVALENCE);
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
@@ -158,6 +161,19 @@ class ZenModeAppsLinkPreferenceController extends AbstractZenModePreferenceContr
|
||||
.toList());
|
||||
}
|
||||
|
||||
private static final Equivalence<AppEntry> APP_ENTRY_EQUIVALENCE = new Equivalence<>() {
|
||||
@Override
|
||||
protected boolean doEquivalent(@NonNull AppEntry a, @NonNull AppEntry b) {
|
||||
return a.info.uid == b.info.uid
|
||||
&& Objects.equals(a.info.packageName, b.info.packageName);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int doHash(@NonNull AppEntry entry) {
|
||||
return Objects.hash(entry.info.uid, entry.info.packageName);
|
||||
}
|
||||
};
|
||||
|
||||
@VisibleForTesting
|
||||
final ApplicationsState.Callbacks mAppSessionCallbacks =
|
||||
new ApplicationsState.Callbacks() {
|
||||
|
Reference in New Issue
Block a user