Merge "Card showing mechanism change in homepage"
This commit is contained in:
@@ -258,7 +258,7 @@ public class DashboardFeatureProviderImpl implements DashboardFeatureProvider {
|
||||
preference.setSummary(summary);
|
||||
} else if (tile.getMetaData() != null
|
||||
&& tile.getMetaData().containsKey(META_DATA_PREFERENCE_SUMMARY_URI)) {
|
||||
// Set a placeholder summary before starting to fetch real summary, this is necessary
|
||||
// Set a placeholder summary before starting to fetch real summary, this is necessary
|
||||
// to avoid preference height change.
|
||||
preference.setSummary(R.string.summary_placeholder);
|
||||
|
||||
|
@@ -16,6 +16,7 @@
|
||||
|
||||
package com.android.settings.homepage.contextualcards;
|
||||
|
||||
import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.STICKY_VALUE;
|
||||
import static com.android.settings.slices.CustomSliceRegistry.BLUETOOTH_DEVICES_SLICE_URI;
|
||||
import static com.android.settings.slices.CustomSliceRegistry.CONTEXTUAL_NOTIFICATION_CHANNEL_SLICE_URI;
|
||||
import static com.android.settings.slices.CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI;
|
||||
@@ -127,18 +128,34 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
@VisibleForTesting
|
||||
List<ContextualCard> getDisplayableCards(List<ContextualCard> candidates) {
|
||||
final List<ContextualCard> eligibleCards = filterEligibleCards(candidates);
|
||||
final List<ContextualCard> stickyCards = new ArrayList<>();
|
||||
final List<ContextualCard> visibleCards = new ArrayList<>();
|
||||
final List<ContextualCard> hiddenCards = new ArrayList<>();
|
||||
|
||||
final int size = eligibleCards.size();
|
||||
final int cardCount = getCardCount();
|
||||
for (int i = 0; i < size; i++) {
|
||||
if (i < cardCount) {
|
||||
visibleCards.add(eligibleCards.get(i));
|
||||
} else {
|
||||
hiddenCards.add(eligibleCards.get(i));
|
||||
final int maxCardCount = getCardCount();
|
||||
eligibleCards.forEach(card -> {
|
||||
if (card.getCategory() != STICKY_VALUE) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (stickyCards.size() < maxCardCount) {
|
||||
stickyCards.add(card);
|
||||
} else {
|
||||
hiddenCards.add(card);
|
||||
}
|
||||
});
|
||||
|
||||
final int nonStickyCardCount = maxCardCount - stickyCards.size();
|
||||
eligibleCards.forEach(card -> {
|
||||
if (card.getCategory() == STICKY_VALUE) {
|
||||
return;
|
||||
}
|
||||
if (visibleCards.size() < nonStickyCardCount) {
|
||||
visibleCards.add(card);
|
||||
} else {
|
||||
hiddenCards.add(card);
|
||||
}
|
||||
});
|
||||
visibleCards.addAll(stickyCards);
|
||||
|
||||
if (!CardContentProvider.DELETE_CARD_URI.equals(mNotifyUri)) {
|
||||
final MetricsFeatureProvider metricsFeatureProvider =
|
||||
|
@@ -17,6 +17,7 @@
|
||||
package com.android.settings.homepage.contextualcards;
|
||||
|
||||
import static com.android.settings.homepage.contextualcards.ContextualCardLoader.CARD_CONTENT_LOADER_ID;
|
||||
import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.STICKY_VALUE;
|
||||
import static com.android.settings.intelligence.ContextualCardProto.ContextualCard.Category.SUGGESTION_VALUE;
|
||||
import static com.android.settings.slices.CustomSliceRegistry.BLUETOOTH_DEVICES_SLICE_URI;
|
||||
import static com.android.settings.slices.CustomSliceRegistry.CONTEXTUAL_WIFI_SLICE_URI;
|
||||
@@ -346,16 +347,23 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
|
||||
return result;
|
||||
}
|
||||
|
||||
// TODO(b/143055685):use category to determine whether they are sticky.
|
||||
private List<ContextualCard> getCardsWithStickyViewType(List<ContextualCard> cards) {
|
||||
final List<ContextualCard> result = new ArrayList<>(cards);
|
||||
int replaceCount = 0;
|
||||
for (int index = 0; index < result.size(); index++) {
|
||||
final ContextualCard card = cards.get(index);
|
||||
if (FeatureFlagUtils.isEnabled(mContext, FeatureFlags.CONTEXTUAL_HOME2)) {
|
||||
if (card.getCategory() == STICKY_VALUE) {
|
||||
result.set(index, card.mutate().setViewType(
|
||||
SliceContextualCardRenderer.VIEW_TYPE_STICKY).build());
|
||||
}
|
||||
continue;
|
||||
}
|
||||
|
||||
if (replaceCount > STICKY_CARDS.size() - 1) {
|
||||
break;
|
||||
}
|
||||
|
||||
final ContextualCard card = cards.get(index);
|
||||
if (card.getCardType() != ContextualCard.CardType.SLICE) {
|
||||
continue;
|
||||
}
|
||||
|
Reference in New Issue
Block a user