Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c0c55118 authored by Jason Chiu's avatar Jason Chiu
Browse files

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
parent 2602e42b
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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);
        }
+9 −3
Original line number Diff line number Diff line
@@ -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,11 +197,15 @@ 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);
    }
+6 −0
Original line number Diff line number Diff line
@@ -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);
    }