Remove mIsHalfWidth field from ContextualCard
mIsHalfWidth in ContextualCard is too generic to identify its responsibility, it is used to hold the value of is_support_half from database and used to decide the card width. Also, it limits the relationship of CardType-to-Renderer not to be extended to one-to-many. To deal with this, we replaced mIsHalfWidth with mViewType to implement one-to-many relationship of CardType-to-Renderer, and removed all related logic of mIsHalfWidth. Bug: 121303357 Test: robotests, visual Change-Id: I03e14392272194424f317d11bf9d0d794a6133f4
This commit is contained in:
@@ -22,6 +22,10 @@ import android.graphics.drawable.Drawable;
|
||||
import android.net.Uri;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer;
|
||||
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.RetentionPolicy;
|
||||
|
||||
@@ -63,9 +67,10 @@ public class ContextualCard {
|
||||
private final int mIconResId;
|
||||
private final int mCardAction;
|
||||
private final long mExpireTimeMS;
|
||||
private final boolean mIsHalfWidth;
|
||||
private final boolean mIsLargeCard;
|
||||
private final Drawable mIconDrawable;
|
||||
@LayoutRes
|
||||
private final int mViewType;
|
||||
|
||||
public String getName() {
|
||||
return mName;
|
||||
@@ -139,10 +144,6 @@ public class ContextualCard {
|
||||
return mIconDrawable;
|
||||
}
|
||||
|
||||
public boolean isHalfWidth() {
|
||||
return mIsHalfWidth;
|
||||
}
|
||||
|
||||
public boolean isLargeCard() {
|
||||
return mIsLargeCard;
|
||||
}
|
||||
@@ -151,6 +152,10 @@ public class ContextualCard {
|
||||
return TextUtils.isEmpty(mSliceUri);
|
||||
}
|
||||
|
||||
public int getViewType() {
|
||||
return mViewType;
|
||||
}
|
||||
|
||||
public Builder mutate() {
|
||||
return mBuilder;
|
||||
}
|
||||
@@ -174,8 +179,8 @@ public class ContextualCard {
|
||||
mCardAction = builder.mCardAction;
|
||||
mExpireTimeMS = builder.mExpireTimeMS;
|
||||
mIconDrawable = builder.mIconDrawable;
|
||||
mIsHalfWidth = builder.mIsHalfWidth;
|
||||
mIsLargeCard = builder.mIsLargeCard;
|
||||
mViewType = builder.mViewType;
|
||||
}
|
||||
|
||||
ContextualCard(Cursor c) {
|
||||
@@ -215,13 +220,12 @@ public class ContextualCard {
|
||||
mBuilder.setCardAction(mCardAction);
|
||||
mExpireTimeMS = c.getLong(c.getColumnIndex(CardDatabaseHelper.CardColumns.EXPIRE_TIME_MS));
|
||||
mBuilder.setExpireTimeMS(mExpireTimeMS);
|
||||
mIsHalfWidth = (c.getInt(
|
||||
c.getColumnIndex(CardDatabaseHelper.CardColumns.SUPPORT_HALF_WIDTH)) == 1);
|
||||
mBuilder.setIsHalfWidth(mIsHalfWidth);
|
||||
mIsLargeCard = false;
|
||||
mBuilder.setIsLargeCard(mIsLargeCard);
|
||||
mIconDrawable = null;
|
||||
mBuilder.setIconDrawable(mIconDrawable);
|
||||
mViewType = getViewTypeByCardType(mCardType);
|
||||
mBuilder.setViewType(mViewType);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -245,6 +249,13 @@ public class ContextualCard {
|
||||
return TextUtils.equals(mName, that.mName);
|
||||
}
|
||||
|
||||
private int getViewTypeByCardType(int cardType) {
|
||||
if (cardType == CardType.SLICE) {
|
||||
return SliceContextualCardRenderer.VIEW_TYPE_FULL_WIDTH;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public static class Builder {
|
||||
private String mName;
|
||||
private int mCardType;
|
||||
@@ -263,8 +274,9 @@ public class ContextualCard {
|
||||
private int mCardAction;
|
||||
private long mExpireTimeMS;
|
||||
private Drawable mIconDrawable;
|
||||
private boolean mIsHalfWidth;
|
||||
private boolean mIsLargeCard;
|
||||
@LayoutRes
|
||||
private int mViewType;
|
||||
|
||||
public Builder setName(String name) {
|
||||
mName = name;
|
||||
@@ -351,13 +363,13 @@ public class ContextualCard {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setIsHalfWidth(boolean isHalfWidth) {
|
||||
mIsHalfWidth = isHalfWidth;
|
||||
public Builder setIsLargeCard(boolean isLargeCard) {
|
||||
mIsLargeCard = isLargeCard;
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setIsLargeCard(boolean isLargeCard) {
|
||||
mIsLargeCard = isLargeCard;
|
||||
public Builder setViewType(@LayoutRes int viewType) {
|
||||
mViewType = viewType;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -24,14 +24,10 @@ import androidx.annotation.VisibleForTesting;
|
||||
import com.android.settings.homepage.contextualcards.ContextualCard.CardType;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional
|
||||
.ConditionHeaderContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion
|
||||
.LegacySuggestionContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion
|
||||
.LegacySuggestionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional
|
||||
.ConditionFooterContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionFooterContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionHeaderContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion.LegacySuggestionContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion.LegacySuggestionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer;
|
||||
|
||||
@@ -72,11 +68,11 @@ public class ContextualCardLookupTable {
|
||||
static final Set<ControllerRendererMapping> LOOKUP_TABLE =
|
||||
new TreeSet<ControllerRendererMapping>() {{
|
||||
add(new ControllerRendererMapping(CardType.CONDITIONAL,
|
||||
ConditionContextualCardRenderer.HALF_WIDTH_VIEW_TYPE,
|
||||
ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH,
|
||||
ConditionContextualCardController.class,
|
||||
ConditionContextualCardRenderer.class));
|
||||
add(new ControllerRendererMapping(CardType.CONDITIONAL,
|
||||
ConditionContextualCardRenderer.FULL_WIDTH_VIEW_TYPE,
|
||||
ConditionContextualCardRenderer.VIEW_TYPE_FULL_WIDTH,
|
||||
ConditionContextualCardController.class,
|
||||
ConditionContextualCardRenderer.class));
|
||||
add(new ControllerRendererMapping(CardType.LEGACY_SUGGESTION,
|
||||
@@ -111,15 +107,6 @@ public class ContextualCardLookupTable {
|
||||
return null;
|
||||
}
|
||||
|
||||
public static Class<? extends ContextualCardRenderer> getCardRendererClassByCardType(
|
||||
@CardType int cardType) {
|
||||
return LOOKUP_TABLE.stream()
|
||||
.filter(m -> m.mCardType == cardType)
|
||||
.findFirst()
|
||||
.map(mapping -> mapping.mRendererClass)
|
||||
.orElse(null);
|
||||
}
|
||||
|
||||
public static Class<? extends ContextualCardRenderer> getCardRendererClassByViewType(
|
||||
int viewType) throws IllegalStateException {
|
||||
List<ControllerRendererMapping> validMappings = LOOKUP_TABLE.stream()
|
||||
|
||||
@@ -33,6 +33,7 @@ import androidx.annotation.VisibleForTesting;
|
||||
import androidx.loader.app.LoaderManager;
|
||||
import androidx.loader.content.Loader;
|
||||
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer;
|
||||
import com.android.settings.overlay.FeatureFactory;
|
||||
import com.android.settingslib.core.lifecycle.Lifecycle;
|
||||
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||
@@ -236,8 +237,10 @@ public class ContextualCardManager implements ContextualCardLoader.CardContentLo
|
||||
final ContextualCard current = result.get(index);
|
||||
if (current.getCategory() == SUGGESTION_VALUE
|
||||
&& previous.getCategory() == SUGGESTION_VALUE) {
|
||||
result.set(index - 1, previous.mutate().setIsHalfWidth(true).build());
|
||||
result.set(index, current.mutate().setIsHalfWidth(true).build());
|
||||
result.set(index - 1, previous.mutate().setViewType(
|
||||
SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH).build());
|
||||
result.set(index, current.mutate().setViewType(
|
||||
SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH).build());
|
||||
index++;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,18 +26,12 @@ import androidx.recyclerview.widget.RecyclerView;
|
||||
*/
|
||||
public interface ContextualCardRenderer {
|
||||
|
||||
/**
|
||||
* The layout type of the renderer.
|
||||
*/
|
||||
@LayoutRes
|
||||
int getViewType(boolean isHalfWidth);
|
||||
|
||||
/**
|
||||
* When {@link ContextualCardsAdapter} calls {@link ContextualCardsAdapter#onCreateViewHolder},
|
||||
* this method will be called to retrieve the corresponding
|
||||
* {@link androidx.recyclerview.widget.RecyclerView.ViewHolder}.
|
||||
*/
|
||||
RecyclerView.ViewHolder createViewHolder(View view);
|
||||
RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType);
|
||||
|
||||
/**
|
||||
* When {@link ContextualCardsAdapter} calls {@link ContextualCardsAdapter#onBindViewHolder},
|
||||
|
||||
@@ -21,11 +21,15 @@ import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.lifecycle.LifecycleOwner;
|
||||
import androidx.recyclerview.widget.DiffUtil;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
@@ -62,24 +66,22 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
||||
@Override
|
||||
public int getItemViewType(int position) {
|
||||
final ContextualCard card = mContextualCards.get(position);
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByCardType(
|
||||
mContext, mLifecycleOwner, card.getCardType());
|
||||
return renderer.getViewType(card.isHalfWidth());
|
||||
return card.getViewType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, @LayoutRes int viewType) {
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByViewType(
|
||||
mContext, mLifecycleOwner, viewType);
|
||||
final View view = LayoutInflater.from(parent.getContext()).inflate(viewType, parent, false);
|
||||
return renderer.createViewHolder(view);
|
||||
return renderer.createViewHolder(view, viewType);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
|
||||
final ContextualCard card = mContextualCards.get(position);
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByCardType(
|
||||
mContext, mLifecycleOwner, card.getCardType());
|
||||
final ContextualCardRenderer renderer = mControllerRendererPool.getRendererByViewType(
|
||||
mContext, mLifecycleOwner, card.getViewType());
|
||||
renderer.bindView(holder, card);
|
||||
}
|
||||
|
||||
@@ -98,11 +100,14 @@ public class ContextualCardsAdapter extends RecyclerView.Adapter<RecyclerView.Vi
|
||||
gridLayoutManager.setSpanSizeLookup(new GridLayoutManager.SpanSizeLookup() {
|
||||
@Override
|
||||
public int getSpanSize(int position) {
|
||||
final ContextualCard card = mContextualCards.get(position);
|
||||
if (card.isHalfWidth()) {
|
||||
return HALF_WIDTH;
|
||||
final int viewType = mContextualCards.get(position).getViewType();
|
||||
switch (viewType) {
|
||||
case ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH:
|
||||
case SliceContextualCardRenderer.VIEW_TYPE_HALF_WIDTH:
|
||||
return HALF_WIDTH;
|
||||
default:
|
||||
return FULL_WIDTH;
|
||||
}
|
||||
return FULL_WIDTH;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -26,14 +26,10 @@ import androidx.lifecycle.LifecycleOwner;
|
||||
import com.android.internal.annotations.VisibleForTesting;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional
|
||||
.ConditionHeaderContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion
|
||||
.LegacySuggestionContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion
|
||||
.LegacySuggestionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional
|
||||
.ConditionFooterContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionFooterContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.conditional.ConditionHeaderContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion.LegacySuggestionContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.legacysuggestion.LegacySuggestionContextualCardRenderer;
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardController;
|
||||
import com.android.settings.homepage.contextualcards.slices.SliceContextualCardRenderer;
|
||||
|
||||
@@ -90,13 +86,6 @@ public class ControllerRendererPool {
|
||||
return getRenderer(context, lifecycleOwner, clz);
|
||||
}
|
||||
|
||||
public ContextualCardRenderer getRendererByCardType(Context context,
|
||||
LifecycleOwner lifecycleOwner, @ContextualCard.CardType int cardType) {
|
||||
final Class<? extends ContextualCardRenderer> clz =
|
||||
ContextualCardLookupTable.getCardRendererClassByCardType(cardType);
|
||||
return getRenderer(context, lifecycleOwner, clz);
|
||||
}
|
||||
|
||||
private ContextualCardRenderer getRenderer(Context context, LifecycleOwner lifecycleOwner,
|
||||
@NonNull Class<? extends ContextualCardRenderer> clz) {
|
||||
for (ContextualCardRenderer renderer : mRenderers) {
|
||||
|
||||
@@ -79,7 +79,7 @@ public class AirplaneModeConditionController implements ConditionalCardControlle
|
||||
.setTitleText(mAppContext.getText(R.string.condition_airplane_title).toString())
|
||||
.setSummaryText(mAppContext.getText(R.string.condition_airplane_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_airplanemode_active))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -73,7 +73,7 @@ public class BackgroundDataConditionController implements ConditionalCardControl
|
||||
.setTitleText(mAppContext.getText(R.string.condition_bg_data_title).toString())
|
||||
.setSummaryText(mAppContext.getText(R.string.condition_bg_data_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_data_saver))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ public class BatterySaverConditionController implements ConditionalCardControlle
|
||||
.setTitleText(mAppContext.getText(R.string.condition_battery_title).toString())
|
||||
.setSummaryText(mAppContext.getText(R.string.condition_battery_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_battery_saver_accent_24dp))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ public class CellularDataConditionController implements ConditionalCardControlle
|
||||
.setTitleText(mAppContext.getText(R.string.condition_cellular_title).toString())
|
||||
.setSummaryText(mAppContext.getText(R.string.condition_cellular_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_cellular_off))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -168,7 +168,8 @@ public class ConditionContextualCardController implements ContextualCardControll
|
||||
final int lastIndex = expandedCards.size() - 1;
|
||||
final ConditionalContextualCard card =
|
||||
(ConditionalContextualCard) expandedCards.get(lastIndex);
|
||||
expandedCards.set(lastIndex, card.mutate().setIsHalfWidth(false).build());
|
||||
expandedCards.set(lastIndex, card.mutate().setViewType(
|
||||
ConditionContextualCardRenderer.VIEW_TYPE_FULL_WIDTH).build());
|
||||
}
|
||||
return expandedCards;
|
||||
}
|
||||
@@ -180,6 +181,7 @@ public class ConditionContextualCardController implements ContextualCardControll
|
||||
footerCards.add(new ConditionFooterContextualCard.Builder()
|
||||
.setName(CONDITION_FOOTER)
|
||||
.setRankingScore(UNSUPPORTED_RANKING)
|
||||
.setViewType(ConditionFooterContextualCardRenderer.VIEW_TYPE)
|
||||
.build());
|
||||
return footerCards;
|
||||
}
|
||||
@@ -194,6 +196,7 @@ public class ConditionContextualCardController implements ContextualCardControll
|
||||
.setConditionalCards(conditionCards)
|
||||
.setName(CONDITION_HEADER)
|
||||
.setRankingScore(UNSUPPORTED_RANKING)
|
||||
.setViewType(ConditionHeaderContextualCardRenderer.VIEW_TYPE)
|
||||
.build());
|
||||
return headerCards;
|
||||
}
|
||||
|
||||
@@ -39,9 +39,9 @@ import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
|
||||
*/
|
||||
public class ConditionContextualCardRenderer implements ContextualCardRenderer {
|
||||
@LayoutRes
|
||||
public static final int HALF_WIDTH_VIEW_TYPE = R.layout.homepage_condition_half_tile;
|
||||
public static final int VIEW_TYPE_HALF_WIDTH = R.layout.homepage_condition_half_tile;
|
||||
@LayoutRes
|
||||
public static final int FULL_WIDTH_VIEW_TYPE = R.layout.homepage_condition_full_tile;
|
||||
public static final int VIEW_TYPE_FULL_WIDTH = R.layout.homepage_condition_full_tile;
|
||||
|
||||
private final Context mContext;
|
||||
private final ControllerRendererPool mControllerRendererPool;
|
||||
@@ -53,16 +53,7 @@ public class ConditionContextualCardRenderer implements ContextualCardRenderer {
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewType(boolean isHalfWidth) {
|
||||
if (isHalfWidth) {
|
||||
return HALF_WIDTH_VIEW_TYPE;
|
||||
} else {
|
||||
return FULL_WIDTH_VIEW_TYPE;
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder createViewHolder(View view) {
|
||||
public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) {
|
||||
return new ConditionalCardHolder(view);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import android.app.settings.SettingsEnums;
|
||||
import android.content.Context;
|
||||
import android.view.View;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
@@ -44,12 +45,7 @@ public class ConditionFooterContextualCardRenderer implements ContextualCardRend
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewType(boolean isHalfWidth) {
|
||||
return VIEW_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder createViewHolder(View view) {
|
||||
public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) {
|
||||
return new ConditionFooterCardHolder(view);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@ import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.LinearLayout;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import com.android.internal.logging.nano.MetricsProto;
|
||||
@@ -47,12 +48,7 @@ public class ConditionHeaderContextualCardRenderer implements ContextualCardRend
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewType(boolean isHalfWidth) {
|
||||
return VIEW_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder createViewHolder(View view) {
|
||||
public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) {
|
||||
return new ConditionHeaderCardHolder(view);
|
||||
}
|
||||
|
||||
|
||||
@@ -22,7 +22,6 @@ import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.IntentFilter;
|
||||
import android.provider.Settings;
|
||||
import android.service.notification.ZenModeConfig;
|
||||
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
|
||||
@@ -100,7 +99,7 @@ public class DndConditionCardController implements ConditionalCardController {
|
||||
.setTitleText(mAppContext.getText(R.string.condition_zen_title).toString())
|
||||
.setSummaryText(mAppContext.getText(R.string.condition_zen_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_do_not_disturb_on_24dp))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -99,7 +99,7 @@ public class HotspotConditionController implements ConditionalCardController {
|
||||
.setTitleText(mAppContext.getText(R.string.condition_hotspot_title).toString())
|
||||
.setSummaryText(getSummary().toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_hotspot))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -78,7 +78,7 @@ public class NightDisplayConditionController implements ConditionalCardControlle
|
||||
.setSummaryText(
|
||||
mAppContext.getText(R.string.condition_night_display_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_settings_night_display))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -58,7 +58,7 @@ public class RingerMutedConditionController extends AbnormalRingerConditionContr
|
||||
.setSummaryText(
|
||||
mAppContext.getText(R.string.condition_device_muted_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_notifications_off_24dp))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -60,7 +60,7 @@ public class RingerVibrateConditionController extends AbnormalRingerConditionCon
|
||||
.setSummaryText(
|
||||
mAppContext.getText(R.string.condition_device_vibrate_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_volume_ringer_vibrate))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ public class WorkModeConditionController implements ConditionalCardController {
|
||||
.setTitleText(mAppContext.getText(R.string.condition_work_title).toString())
|
||||
.setSummaryText(mAppContext.getText(R.string.condition_work_summary).toString())
|
||||
.setIconDrawable(mAppContext.getDrawable(R.drawable.ic_signal_workmode_enable))
|
||||
.setIsHalfWidth(true)
|
||||
.setViewType(ConditionContextualCardRenderer.VIEW_TYPE_HALF_WIDTH)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,8 @@ public class LegacySuggestionContextualCardController implements ContextualCardC
|
||||
.setPendingIntent(suggestion.getPendingIntent())
|
||||
.setName(suggestion.getId())
|
||||
.setTitleText(suggestion.getTitle().toString())
|
||||
.setSummaryText(suggestion.getSummary().toString());
|
||||
.setSummaryText(suggestion.getSummary().toString())
|
||||
.setViewType(LegacySuggestionContextualCardRenderer.VIEW_TYPE);
|
||||
|
||||
cards.add(cardBuilder.build());
|
||||
}
|
||||
|
||||
@@ -44,12 +44,7 @@ public class LegacySuggestionContextualCardRenderer implements ContextualCardRen
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewType(boolean isHalfWidth) {
|
||||
return VIEW_TYPE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder createViewHolder(View view) {
|
||||
public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) {
|
||||
return new LegacySuggestionViewHolder(view);
|
||||
}
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@ import android.view.View;
|
||||
import android.widget.Button;
|
||||
import android.widget.ViewFlipper;
|
||||
|
||||
import androidx.annotation.LayoutRes;
|
||||
import androidx.annotation.VisibleForTesting;
|
||||
import androidx.lifecycle.Lifecycle;
|
||||
import androidx.lifecycle.LifecycleObserver;
|
||||
@@ -66,9 +67,6 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
|
||||
private final SliceFullCardRendererHelper mFullCardHelper;
|
||||
private final SliceHalfCardRendererHelper mHalfCardHelper;
|
||||
|
||||
//TODO(b/121303357): Remove isHalfWidth field from SliceContextualCardRenderer class.
|
||||
private boolean mIsHalfWidth;
|
||||
|
||||
public SliceContextualCardRenderer(Context context, LifecycleOwner lifecycleOwner,
|
||||
ControllerRendererPool controllerRendererPool) {
|
||||
mContext = context;
|
||||
@@ -83,17 +81,13 @@ public class SliceContextualCardRenderer implements ContextualCardRenderer, Life
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getViewType(boolean isHalfWidth) {
|
||||
mIsHalfWidth = isHalfWidth;
|
||||
return isHalfWidth? VIEW_TYPE_HALF_WIDTH : VIEW_TYPE_FULL_WIDTH;
|
||||
}
|
||||
|
||||
@Override
|
||||
public RecyclerView.ViewHolder createViewHolder(View view) {
|
||||
if (mIsHalfWidth) {
|
||||
return mHalfCardHelper.createViewHolder(view);
|
||||
public RecyclerView.ViewHolder createViewHolder(View view, @LayoutRes int viewType) {
|
||||
switch (viewType) {
|
||||
case VIEW_TYPE_HALF_WIDTH:
|
||||
return mHalfCardHelper.createViewHolder(view);
|
||||
default:
|
||||
return mFullCardHelper.createViewHolder(view);
|
||||
}
|
||||
return mFullCardHelper.createViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user