Loading res/layout/legacy_suggestion_tile.xml +17 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,23 @@ android:layout_marginTop="16dp" android:layout_marginBottom="6dp"/> <FrameLayout android:id="@+id/close_button" android:layout_width="48dp" android:layout_height="48dp" android:layout_alignParentEnd="true" android:paddingTop="8dp" android:paddingEnd="8dp" android:orientation="horizontal" android:contentDescription="@string/suggestion_button_close"> <ImageView android:layout_width="18dp" android:layout_height="18dp" android:layout_gravity="end|top" android:alpha="0.54" android:src="@drawable/ic_suggestion_close_button"/> </FrameLayout> </RelativeLayout> <TextView Loading res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -8700,6 +8700,9 @@ <!-- Generic label for suggestion card's ok button [CHAR LIMIT=20] --> <string name="suggestion_button_text">Ok</string> <!-- Strings for suggestion card's close button [CHAR LIMIT=20] --> <string name="suggestion_button_close">Close</string> <!-- [CHAR LIMIT=35] Feedback on the device --> <string name="device_feedback">Send feedback about this device</string> src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCard.java +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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( Loading src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardController.java +19 −7 Original line number Diff line number Diff line Loading @@ -46,6 +46,9 @@ public class LegacySuggestionContextualCardController implements ContextualCardC private static final String TAG = "LegacySuggestCardCtrl"; @VisibleForTesting final List<ContextualCard> mSuggestions; @VisibleForTesting SuggestionController mSuggestionController; Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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()) Loading @@ -153,12 +161,16 @@ public class LegacySuggestionContextualCardController implements ContextualCardC } } // Update adapter mSuggestions.clear(); mSuggestions.addAll(cards); updateAdapter(); }); } private void updateAdapter() { final Map<Integer, List<ContextualCard>> suggestionCards = new ArrayMap<>(); suggestionCards.put(ContextualCard.CardType.LEGACY_SUGGESTION, cards); suggestionCards.put(ContextualCard.CardType.LEGACY_SUGGESTION, mSuggestions); ThreadUtils.postOnMainThread( () -> mCardUpdateListener.onContextualCardUpdated(suggestionCards)); }); } } src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRenderer.java +7 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading @@ -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); } } } Loading Loading
res/layout/legacy_suggestion_tile.xml +17 −0 Original line number Diff line number Diff line Loading @@ -42,6 +42,23 @@ android:layout_marginTop="16dp" android:layout_marginBottom="6dp"/> <FrameLayout android:id="@+id/close_button" android:layout_width="48dp" android:layout_height="48dp" android:layout_alignParentEnd="true" android:paddingTop="8dp" android:paddingEnd="8dp" android:orientation="horizontal" android:contentDescription="@string/suggestion_button_close"> <ImageView android:layout_width="18dp" android:layout_height="18dp" android:layout_gravity="end|top" android:alpha="0.54" android:src="@drawable/ic_suggestion_close_button"/> </FrameLayout> </RelativeLayout> <TextView Loading
res/values/strings.xml +3 −0 Original line number Diff line number Diff line Loading @@ -8700,6 +8700,9 @@ <!-- Generic label for suggestion card's ok button [CHAR LIMIT=20] --> <string name="suggestion_button_text">Ok</string> <!-- Strings for suggestion card's close button [CHAR LIMIT=20] --> <string name="suggestion_button_close">Close</string> <!-- [CHAR LIMIT=35] Feedback on the device --> <string name="device_feedback">Send feedback about this device</string>
src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCard.java +13 −0 Original line number Diff line number Diff line Loading @@ -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 Loading @@ -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( Loading
src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardController.java +19 −7 Original line number Diff line number Diff line Loading @@ -46,6 +46,9 @@ public class LegacySuggestionContextualCardController implements ContextualCardC private static final String TAG = "LegacySuggestCardCtrl"; @VisibleForTesting final List<ContextualCard> mSuggestions; @VisibleForTesting SuggestionController mSuggestionController; Loading @@ -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; Loading Loading @@ -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 Loading Loading @@ -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()) Loading @@ -153,12 +161,16 @@ public class LegacySuggestionContextualCardController implements ContextualCardC } } // Update adapter mSuggestions.clear(); mSuggestions.addAll(cards); updateAdapter(); }); } private void updateAdapter() { final Map<Integer, List<ContextualCard>> suggestionCards = new ArrayMap<>(); suggestionCards.put(ContextualCard.CardType.LEGACY_SUGGESTION, cards); suggestionCards.put(ContextualCard.CardType.LEGACY_SUGGESTION, mSuggestions); ThreadUtils.postOnMainThread( () -> mCardUpdateListener.onContextualCardUpdated(suggestionCards)); }); } }
src/com/android/settings/homepage/contextualcards/legacysuggestion/LegacySuggestionContextualCardRenderer.java +7 −3 Original line number Diff line number Diff line Loading @@ -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; Loading @@ -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 { Loading @@ -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); } } } Loading