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

Commit ee39335e authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

Merge "Enable dismissal feature on legacy suggestions."

parents b3f8696c 83ac0efd
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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>
+13 −0
Original line number Diff line number Diff line
@@ -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(
+19 −7
Original line number Diff line number Diff line
@@ -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
            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));

        });
    }
}
+7 −3
Original line number Diff line number Diff line
@@ -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);
        }
    }
}
Loading