Merge "Enable dismissal feature on legacy suggestions."

am: ee39335edc

Change-Id: Ibce2403de032bd3d7fce750f6cd80191a8b14441
This commit is contained in:
Yi-Ling Chuang
2019-09-22 20:03:21 -07:00
committed by android-build-merger
8 changed files with 159 additions and 10 deletions

View File

@@ -17,16 +17,19 @@
package com.android.settings.homepage.contextualcards.legacysuggestion;
import android.app.PendingIntent;
import android.service.settings.suggestions.Suggestion;
import com.android.settings.homepage.contextualcards.ContextualCard;
public class LegacySuggestionContextualCard extends ContextualCard {
private final PendingIntent mPendingIntent;
private final Suggestion mSuggestion;
public LegacySuggestionContextualCard(Builder builder) {
super(builder);
mPendingIntent = builder.mPendingIntent;
mSuggestion = builder.mSuggestion;
}
@Override
@@ -38,15 +41,25 @@ public class LegacySuggestionContextualCard extends ContextualCard {
return mPendingIntent;
}
public Suggestion getSuggestion() {
return mSuggestion;
}
public static class Builder extends ContextualCard.Builder {
private PendingIntent mPendingIntent;
private Suggestion mSuggestion;
public Builder setPendingIntent(PendingIntent pendingIntent) {
mPendingIntent = pendingIntent;
return this;
}
public Builder setSuggestion(Suggestion suggestion) {
mSuggestion = suggestion;
return this;
}
@Override
public Builder setCardType(int cardType) {
throw new IllegalArgumentException(

View File

@@ -46,6 +46,9 @@ public class LegacySuggestionContextualCardController implements ContextualCardC
private static final String TAG = "LegacySuggestCardCtrl";
@VisibleForTesting
final List<ContextualCard> mSuggestions;
@VisibleForTesting
SuggestionController mSuggestionController;
@@ -55,6 +58,7 @@ public class LegacySuggestionContextualCardController implements ContextualCardC
public LegacySuggestionContextualCardController(Context context) {
mContext = context;
mSuggestions = new ArrayList<>();
if (!mContext.getResources().getBoolean(R.bool.config_use_legacy_suggestion)) {
Log.w(TAG, "Legacy suggestion contextual card disabled, skipping.");
return;
@@ -88,7 +92,10 @@ public class LegacySuggestionContextualCardController implements ContextualCardC
@Override
public void onDismissed(ContextualCard card) {
mSuggestionController
.dismissSuggestions(((LegacySuggestionContextualCard)card).getSuggestion());
mSuggestions.remove(card);
updateAdapter();
}
@Override
@@ -144,6 +151,7 @@ public class LegacySuggestionContextualCardController implements ContextualCardC
}
cardBuilder
.setPendingIntent(suggestion.getPendingIntent())
.setSuggestion(suggestion)
.setName(suggestion.getId())
.setTitleText(suggestion.getTitle().toString())
.setSummaryText(suggestion.getSummary().toString())
@@ -153,12 +161,16 @@ public class LegacySuggestionContextualCardController implements ContextualCardC
}
}
// Update adapter
final Map<Integer, List<ContextualCard>> suggestionCards = new ArrayMap<>();
suggestionCards.put(ContextualCard.CardType.LEGACY_SUGGESTION, cards);
ThreadUtils.postOnMainThread(
() -> mCardUpdateListener.onContextualCardUpdated(suggestionCards));
mSuggestions.clear();
mSuggestions.addAll(cards);
updateAdapter();
});
}
private void updateAdapter() {
final Map<Integer, List<ContextualCard>> suggestionCards = new ArrayMap<>();
suggestionCards.put(ContextualCard.CardType.LEGACY_SUGGESTION, mSuggestions);
ThreadUtils.postOnMainThread(
() -> mCardUpdateListener.onContextualCardUpdated(suggestionCards));
}
}

View File

@@ -26,6 +26,7 @@ import androidx.recyclerview.widget.RecyclerView;
import com.android.settings.R;
import com.android.settings.homepage.contextualcards.ContextualCard;
import com.android.settings.homepage.contextualcards.ContextualCardController;
import com.android.settings.homepage.contextualcards.ContextualCardRenderer;
import com.android.settings.homepage.contextualcards.ControllerRendererPool;
@@ -51,12 +52,13 @@ public class LegacySuggestionContextualCardRenderer implements ContextualCardRen
@Override
public void bindView(RecyclerView.ViewHolder holder, ContextualCard card) {
final LegacySuggestionViewHolder vh = (LegacySuggestionViewHolder) holder;
final ContextualCardController controller = mControllerRendererPool
.getController(mContext, card.getCardType());
vh.icon.setImageDrawable(card.getIconDrawable());
vh.title.setText(card.getTitleText());
vh.summary.setText(card.getSummaryText());
vh.itemView.setOnClickListener(v ->
mControllerRendererPool.getController(mContext,
card.getCardType()).onPrimaryClick(card));
vh.itemView.setOnClickListener(v -> controller.onPrimaryClick(card));
vh.closeButton.setOnClickListener(v -> controller.onDismissed(card));
}
private static class LegacySuggestionViewHolder extends RecyclerView.ViewHolder {
@@ -64,12 +66,14 @@ public class LegacySuggestionContextualCardRenderer implements ContextualCardRen
public final ImageView icon;
public final TextView title;
public final TextView summary;
public final View closeButton;
public LegacySuggestionViewHolder(View itemView) {
super(itemView);
icon = itemView.findViewById(android.R.id.icon);
title = itemView.findViewById(android.R.id.title);
summary = itemView.findViewById(android.R.id.summary);
closeButton = itemView.findViewById(R.id.close_button);
}
}
}