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

Commit 72a7d87a authored by Fan Zhang's avatar Fan Zhang Committed by Android (Google) Code Review
Browse files

Merge "Rename a bunch of stuff."

parents cfa39d3b a7463814
Loading
Loading
Loading
Loading
+4 −4
Original line number Diff line number Diff line
@@ -32,7 +32,7 @@ public class CardContentLoader {
    private CardContentLoaderListener mListener;

    public interface CardContentLoaderListener {
        void onFinishCardLoading(List<HomepageCard> homepageCards);
        void onFinishCardLoading(List<ContextualCard> contextualCards);
    }

    public CardContentLoader() {
@@ -42,20 +42,20 @@ public class CardContentLoader {
        mListener = listener;
    }

    private static class CardLoader extends AsyncLoaderCompat<List<HomepageCard>> {
    private static class CardLoader extends AsyncLoaderCompat<List<ContextualCard>> {

        public CardLoader(Context context) {
            super(context);
        }

        @Override
        protected void onDiscardResult(List<HomepageCard> result) {
        protected void onDiscardResult(List<ContextualCard> result) {

        }

        @Nullable
        @Override
        public List<HomepageCard> loadInBackground() {
        public List<ContextualCard> loadInBackground() {
            return null;
        }
    }
+8 −8
Original line number Diff line number Diff line
@@ -25,12 +25,12 @@ import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;

/**
 * Data class representing a {@link HomepageCard}.
 * Data class representing a {@link ContextualCard}.
 */
public class HomepageCard {
public class ContextualCard {

    /**
     * Flags indicating the type of the HomepageCard.
     * Flags indicating the type of the ContextualCard.
     */
    @IntDef({CardType.INVALID, CardType.SLICE, CardType.SUGGESTION, CardType.CONDITIONAL})
    @Retention(RetentionPolicy.SOURCE)
@@ -137,7 +137,7 @@ public class HomepageCard {
        return mIsHalfWidth;
    }

    public HomepageCard(Builder builder) {
    public ContextualCard(Builder builder) {
        mName = builder.mName;
        mCardType = builder.mCardType;
        mRankingScore = builder.mRankingScore;
@@ -171,10 +171,10 @@ public class HomepageCard {
        if (this == obj) {
            return true;
        }
        if (!(obj instanceof HomepageCard)) {
        if (!(obj instanceof ContextualCard)) {
            return false;
        }
        final HomepageCard that = (HomepageCard) obj;
        final ContextualCard that = (ContextualCard) obj;

        return TextUtils.equals(mName, that.mName);
    }
@@ -289,8 +289,8 @@ public class HomepageCard {
            return this;
        }

        public HomepageCard build() {
            return new HomepageCard(this);
        public ContextualCard build() {
            return new ContextualCard(this);
        }
    }
}
+8 −8
Original line number Diff line number Diff line
@@ -19,22 +19,22 @@ package com.android.settings.homepage;
import java.util.List;

/**
 * Data controller for {@link HomepageCard}.
 * Data controller for {@link ContextualCard}.
 */
public interface HomepageCardController {
public interface ContextualCardController {

    @HomepageCard.CardType
    @ContextualCard.CardType
    int getCardType();

    /**
     * When data is updated or changed, the new data should be passed to HomepageManager for list
     * When data is updated or changed, the new data should be passed to ContextualCardManager for list
     * updating.
     */
    void onDataUpdated(List<HomepageCard> cardList);
    void onDataUpdated(List<ContextualCard> cardList);

    void onPrimaryClick(HomepageCard card);
    void onPrimaryClick(ContextualCard card);

    void onActionClick(HomepageCard card);
    void onActionClick(ContextualCard card);

    void setHomepageCardUpdateListener(HomepageCardUpdateListener listener);
    void setCardUpdateListener(ContextualCardUpdateListener listener);
}
+21 −19
Original line number Diff line number Diff line
@@ -16,43 +16,45 @@

package com.android.settings.homepage;

import com.android.settings.homepage.HomepageCard.CardType;
import com.android.settings.homepage.conditional.ConditionHomepageCardController;
import com.android.settings.homepage.conditional.ConditionHomepageCardRenderer;
import com.android.settings.homepage.ContextualCard.CardType;
import com.android.settings.homepage.conditional.ConditionContextualCardController;
import com.android.settings.homepage.conditional.ConditionContextualCardRenderer;

import java.util.Set;
import java.util.TreeSet;

public class HomepageCardLookupTable {
public class ContextualCardLookupTable {

    static class HomepageMapping implements Comparable<HomepageMapping> {
    static class ControllerRendererMapping implements Comparable<ControllerRendererMapping> {
        @CardType
        private final int mCardType;
        private final Class<? extends HomepageCardController> mControllerClass;
        private final Class<? extends HomepageCardRenderer> mRendererClass;
        private final Class<? extends ContextualCardController> mControllerClass;
        private final Class<? extends ContextualCardRenderer> mRendererClass;

        private HomepageMapping(@CardType int cardType,
                Class<? extends HomepageCardController> controllerClass,
                Class<? extends HomepageCardRenderer> rendererClass) {
        private ControllerRendererMapping(@CardType int cardType,
                Class<? extends ContextualCardController> controllerClass,
                Class<? extends ContextualCardRenderer> rendererClass) {
            mCardType = cardType;
            mControllerClass = controllerClass;
            mRendererClass = rendererClass;
        }

        @Override
        public int compareTo(HomepageMapping other) {
        public int compareTo(ControllerRendererMapping other) {
            return Integer.compare(this.mCardType, other.mCardType);
        }
    }

    private static final Set<HomepageMapping> LOOKUP_TABLE = new TreeSet<HomepageMapping>() {{
            add(new HomepageMapping(CardType.CONDITIONAL, ConditionHomepageCardController.class,
                    ConditionHomepageCardRenderer.class));
    private static final Set<ControllerRendererMapping> LOOKUP_TABLE =
            new TreeSet<ControllerRendererMapping>() {{
                add(new ControllerRendererMapping(CardType.CONDITIONAL,
                        ConditionContextualCardController.class,
                        ConditionContextualCardRenderer.class));
            }};

    public static Class<? extends HomepageCardController> getCardControllerClass(
    public static Class<? extends ContextualCardController> getCardControllerClass(
            @CardType int cardType) {
        for (HomepageMapping mapping : LOOKUP_TABLE) {
        for (ControllerRendererMapping mapping : LOOKUP_TABLE) {
            if (mapping.mCardType == cardType) {
                return mapping.mControllerClass;
            }
@@ -61,9 +63,9 @@ public class HomepageCardLookupTable {
    }

    //TODO(b/112578070): Implement multi renderer cases.
    public static Class<? extends HomepageCardRenderer> getCardRendererClasses(
    public static Class<? extends ContextualCardRenderer> getCardRendererClasses(
            @CardType int cardType) {
        for (HomepageMapping mapping : LOOKUP_TABLE) {
        for (ControllerRendererMapping mapping : LOOKUP_TABLE) {
            if (mapping.mCardType == cardType) {
                return mapping.mRendererClass;
            }
+31 −31
Original line number Diff line number Diff line
@@ -26,37 +26,37 @@ import java.util.ArrayList;
import java.util.List;

/**
 * This is a centralized manager of multiple {@link HomepageCardController}.
 * This is a centralized manager of multiple {@link ContextualCardController}.
 *
 * {@link HomepageManager} first loads data from {@link CardContentLoader} and gets back a list of
 * {@link HomepageCard}. All subclasses of {@link HomepageCardController} are loaded here, which
 * will then trigger the {@link HomepageCardController} to load its data and listen to
 * corresponding changes. When every single {@link HomepageCardController} updates its data, the
 * {@link ContextualCardManager} first loads data from {@link CardContentLoader} and gets back a list of
 * {@link ContextualCard}. All subclasses of {@link ContextualCardController} are loaded here, which
 * will then trigger the {@link ContextualCardController} to load its data and listen to
 * corresponding changes. When every single {@link ContextualCardController} updates its data, the
 * data will be passed here, then going through some sorting mechanisms. The
 * {@link HomepageCardController} will end up building a list of {@link HomepageCard} for {@link
 * HomepageAdapter} and {@link BaseAdapter#notifyDataSetChanged()} will be called to get the page
 * {@link ContextualCardController} will end up building a list of {@link ContextualCard} for {@link
 * ContextualCardsAdapter} and {@link BaseAdapter#notifyDataSetChanged()} will be called to get the page
 * refreshed.
 */
public class HomepageManager implements CardContentLoader.CardContentLoaderListener,
        HomepageCardUpdateListener {
public class ContextualCardManager implements CardContentLoader.CardContentLoaderListener,
        ContextualCardUpdateListener {

    private static final String TAG = "HomepageManager";
    private static final String TAG = "ContextualCardManager";
    //The list for Settings Custom Card
    @HomepageCard.CardType
    private static final int[] SETTINGS_CARDS = {HomepageCard.CardType.CONDITIONAL};
    @ContextualCard.CardType
    private static final int[] SETTINGS_CARDS = {ContextualCard.CardType.CONDITIONAL};

    private final Context mContext;
    private final ControllerRendererPool mControllerRendererPool;
    private final Lifecycle mLifecycle;

    private List<HomepageCard> mHomepageCards;
    private HomepageCardUpdateListener mListener;
    private List<ContextualCard> mContextualCards;
    private ContextualCardUpdateListener mListener;


    public HomepageManager(Context context, Lifecycle lifecycle) {
    public ContextualCardManager(Context context, Lifecycle lifecycle) {
        mContext = context;
        mLifecycle = lifecycle;
        mHomepageCards = new ArrayList<>();
        mContextualCards = new ArrayList<>();
        mControllerRendererPool = new ControllerRendererPool();
    }

@@ -66,8 +66,8 @@ public class HomepageManager implements CardContentLoader.CardContentLoaderListe
    }

    private void loadCardControllers() {
        if (mHomepageCards != null) {
            for (HomepageCard card : mHomepageCards) {
        if (mContextualCards != null) {
            for (ContextualCard card : mContextualCards) {
                setupController(card.getCardType());
            }
        }
@@ -79,10 +79,10 @@ public class HomepageManager implements CardContentLoader.CardContentLoaderListe
    }

    private void setupController(int cardType) {
        final HomepageCardController controller = mControllerRendererPool.getController(mContext,
        final ContextualCardController controller = mControllerRendererPool.getController(mContext,
                cardType);
        if (controller != null) {
            controller.setHomepageCardUpdateListener(this);
            controller.setCardUpdateListener(this);
            if (controller instanceof LifecycleObserver) {
                if (mLifecycle != null) {
                    mLifecycle.addObserver((LifecycleObserver) controller);
@@ -93,35 +93,35 @@ public class HomepageManager implements CardContentLoader.CardContentLoaderListe

    //TODO(b/111822376): implement sorting mechanism.
    private void sortCards() {
        //take mHomepageCards as the source and do the ranking based on the rule.
        //take mContextualCards as the source and do the ranking based on the rule.
    }

    @Override
    public void onHomepageCardUpdated(int cardType, List<HomepageCard> updateList) {
    public void onHomepageCardUpdated(int cardType, List<ContextualCard> updateList) {
        //TODO(b/112245748): Should implement a DiffCallback.
        //Keep the old list for comparison.
        final List<HomepageCard> prevCards = mHomepageCards;
        final List<ContextualCard> prevCards = mContextualCards;

        //Remove the existing data that matches the certain cardType so as to insert the new data.
        for (int i = mHomepageCards.size() - 1; i >= 0; i--) {
            if (mHomepageCards.get(i).getCardType() == cardType) {
                mHomepageCards.remove(i);
        for (int i = mContextualCards.size() - 1; i >= 0; i--) {
            if (mContextualCards.get(i).getCardType() == cardType) {
                mContextualCards.remove(i);
            }
        }

        //Append the new data
        mHomepageCards.addAll(updateList);
        mContextualCards.addAll(updateList);

        sortCards();

        if (mListener != null) {
            mListener.onHomepageCardUpdated(HomepageCard.CardType.INVALID, mHomepageCards);
            mListener.onHomepageCardUpdated(ContextualCard.CardType.INVALID, mContextualCards);
        }
    }

    @Override
    public void onFinishCardLoading(List<HomepageCard> homepageCards) {
        mHomepageCards = homepageCards;
    public void onFinishCardLoading(List<ContextualCard> contextualCards) {
        mContextualCards = contextualCards;

        //Force card sorting here in case CardControllers of custom view have nothing to update
        // for the first launch.
@@ -130,7 +130,7 @@ public class HomepageManager implements CardContentLoader.CardContentLoaderListe
        loadCardControllers();
    }

    void setListener(HomepageCardUpdateListener listener) {
    void setListener(ContextualCardUpdateListener listener) {
        mListener = listener;
    }

Loading