Add vertical and horizontal dividers for large cards of homepage
- Add a new field in ContextualCard to store whether this card is a large one - Set dividers for large cards in renderer Fixes: 119528161 Fixes: 119641839 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=com.android.settings.homepage Change-Id: I5cb95214789f44ccfd8d9ce2177ca2b84835b7a4
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
@@ -97,6 +97,8 @@ public class ContextualCardLoader extends AsyncLoaderCompat<List<ContextualCard>
|
||||
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<List<ContextualCard>
|
||||
|
||||
private int getNumberOfLargeCard(List<ContextualCard> 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<ContextualCard> contextualCards);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@@ -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);
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user