diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCard.java b/src/com/android/settings/homepage/contextualcards/ContextualCard.java index ca5555b855d..4673ad15eef 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCard.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCard.java @@ -64,6 +64,7 @@ public class ContextualCard { private final int mCardAction; private final long mExpireTimeMS; private final boolean mIsHalfWidth; + private final boolean mIsLargeCard; private final Drawable mIconDrawable; public String getName() { @@ -142,6 +143,10 @@ public class ContextualCard { return mIsHalfWidth; } + public boolean isLargeCard() { + return mIsLargeCard; + } + boolean isCustomCard() { return TextUtils.isEmpty(mSliceUri); } @@ -170,6 +175,7 @@ public class ContextualCard { mExpireTimeMS = builder.mExpireTimeMS; mIconDrawable = builder.mIconDrawable; mIsHalfWidth = builder.mIsHalfWidth; + mIsLargeCard = builder.mIsLargeCard; } ContextualCard(Cursor c) { @@ -212,6 +218,8 @@ public class ContextualCard { mIsHalfWidth = (c.getInt( c.getColumnIndex(CardDatabaseHelper.CardColumns.SUPPORT_HALF_WIDTH)) == 1); mBuilder.setIsHalfWidth(mIsHalfWidth); + mIsLargeCard = false; + mBuilder.setIsLargeCard(mIsLargeCard); mIconDrawable = null; mBuilder.setIconDrawable(mIconDrawable); } @@ -256,6 +264,7 @@ public class ContextualCard { private long mExpireTimeMS; private Drawable mIconDrawable; private boolean mIsHalfWidth; + private boolean mIsLargeCard; public Builder setName(String name) { mName = name; @@ -347,6 +356,11 @@ public class ContextualCard { return this; } + public Builder setIsLargeCard(boolean isLargeCard) { + mIsLargeCard = isLargeCard; + return this; + } + public ContextualCard build() { return new ContextualCard(this); } diff --git a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java index e631d22e216..f32be26e433 100644 --- a/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java +++ b/src/com/android/settings/homepage/contextualcards/ContextualCardLoader.java @@ -97,6 +97,8 @@ public class ContextualCardLoader extends AsyncLoaderCompat final ContextualCard card = new ContextualCard(cursor); if (card.isCustomCard()) { //TODO(b/114688391): Load and generate custom card,then add into list + } else if (isLargeCard(card)) { + result.add(card.mutate().setIsLargeCard(true).build()); } else { result.add(card); } @@ -195,12 +197,16 @@ public class ContextualCardLoader extends AsyncLoaderCompat private int getNumberOfLargeCard(List cards) { return (int) cards.stream() - .filter(card -> card.getSliceUri().equals(WIFI_SLICE_URI) - || card.getSliceUri().equals(BLUETOOTH_DEVICES_SLICE_URI)) + .filter(card -> isLargeCard(card)) .count(); } + private boolean isLargeCard(ContextualCard card) { + return card.getSliceUri().equals(WIFI_SLICE_URI) + || card.getSliceUri().equals(BLUETOOTH_DEVICES_SLICE_URI); + } + public interface CardContentLoaderListener { void onFinishCardLoading(List contextualCards); } -} \ No newline at end of file +} diff --git a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java index be03c281e9a..172c3b27845 100644 --- a/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java +++ b/src/com/android/settings/homepage/contextualcards/slices/SliceContextualCardRenderer.java @@ -131,6 +131,12 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, // Set this listener so we can log the interaction users make on the slice cardHolder.sliceView.setOnSliceActionListener(this); + // Customize slice view for Settings + if (card.isLargeCard()) { + cardHolder.sliceView.showHeaderDivider(true); + cardHolder.sliceView.showActionDividers(true); + } + initDismissalActions(cardHolder, card); }