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

Commit c7709aeb authored by Lucas Silva's avatar Lucas Silva
Browse files

Add dream descriptions to dream settings UI.

The dream descriptions will now be shown underneath the title, if the
dream has provided one.

We also cleaned up the icon view, instead merging it with the title view
to ensure proper alignment between the icon and title.

Bug: 221078654
Test: locally on device
Test: atest DreamPickerControllerTest
Change-Id: I00fd69c294f1a5fbcbc5392eba342f2896f6d9ed
parent ad1a789a
Loading
Loading
Loading
Loading
+20 −18
Original line number Diff line number Diff line
@@ -64,36 +64,38 @@
            app:layout_constraintStart_toStartOf="@+id/preview"
            app:layout_constraintEnd_toEndOf="@+id/preview"/>

        <ImageView
            android:id="@+id/icon"
            android:layout_width="@dimen/dream_item_icon_size"
            android:layout_height="0dp"
            android:layout_marginTop="@dimen/dream_item_title_margin_top"
            android:layout_marginStart="@dimen/dream_item_icon_margin_start"
            android:layout_marginBottom="@dimen/dream_item_title_margin_bottom"
            android:gravity="center_vertical"
            android:importantForAccessibility="no"
            app:layout_constraintDimensionRatio="1:1"
            app:layout_constraintHorizontal_chainStyle="packed"
            app:layout_constraintTop_toBottomOf="@+id/preview"
            app_layout_constraintEnd_toStartOf="@+id/title_text"
            app:layout_constraintStart_toStartOf="parent"/>

        <TextView
            android:id="@+id/title_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginTop="@dimen/dream_item_title_margin_top"
            android:layout_marginStart="@dimen/dream_item_title_margin_start"
            android:layout_marginHorizontal="@dimen/dream_item_title_margin_horizontal"
            android:layout_marginBottom="@dimen/dream_item_title_margin_bottom"
            android:gravity="center_vertical"
            android:maxLines="1"
            android:ellipsize="end"
            android:textSize="16sp"
            android:textSize="@dimen/dream_item_title_text_size"
            android:textColor="@color/dream_card_text_color_state_list"
            android:drawablePadding="@dimen/dream_item_icon_padding"
            app:layout_constraintTop_toBottomOf="@+id/preview"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@+id/icon"/>
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toTopOf="@id/summary_text"/>

        <TextView
            android:id="@+id/summary_text"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginHorizontal="@dimen/dream_item_title_margin_horizontal"
            android:layout_marginBottom="@dimen/dream_item_title_margin_bottom"
            android:maxLines="2"
            android:ellipsize="end"
            android:textSize="@dimen/dream_item_summary_text_size"
            android:textColor="@color/dream_card_text_color_state_list"
            app:layout_constraintTop_toBottomOf="@+id/title_text"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

    </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
+5 −3
Original line number Diff line number Diff line
@@ -445,10 +445,12 @@
    <dimen name="dream_item_corner_radius">28dp</dimen>
    <dimen name="dream_item_content_padding">8dp</dimen>
    <dimen name="dream_item_icon_size">20dp</dimen>
    <dimen name="dream_item_title_margin_top">18dp</dimen>
    <dimen name="dream_item_summary_text_size">14sp</dimen>
    <dimen name="dream_item_title_margin_top">16dp</dimen>
    <dimen name="dream_item_title_margin_bottom">8dp</dimen>
    <dimen name="dream_item_title_margin_start">18dp</dimen>
    <dimen name="dream_item_icon_margin_start">10dp</dimen>
    <dimen name="dream_item_title_text_size">16sp</dimen>
    <dimen name="dream_item_icon_padding">18dp</dimen>
    <dimen name="dream_item_title_margin_horizontal">8dp</dimen>
    <dimen name="dream_preference_card_padding">16dp</dimen>
    <dimen name="dream_preference_margin_bottom">20dp</dimen>
    <dimen name="dream_picker_margin_horizontal">48dp</dimen>
+15 −3
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.settings.dream;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.VectorDrawable;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -45,8 +46,8 @@ public class DreamAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
     * View holder for each {@link IDreamItem}.
     */
    private class DreamViewHolder extends RecyclerView.ViewHolder {
        private final ImageView mIconView;
        private final TextView mTitleView;
        private final TextView mSummaryView;
        private final ImageView mPreviewView;
        private final ImageView mPreviewPlaceholderView;
        private final Button mCustomizeButton;
@@ -57,8 +58,8 @@ public class DreamAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
            mContext = context;
            mPreviewView = view.findViewById(R.id.preview);
            mPreviewPlaceholderView = view.findViewById(R.id.preview_placeholder);
            mIconView = view.findViewById(R.id.icon);
            mTitleView = view.findViewById(R.id.title_text);
            mSummaryView = view.findViewById(R.id.summary_text);
            mCustomizeButton = view.findViewById(R.id.customize_button);
        }

@@ -68,6 +69,14 @@ public class DreamAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        public void bindView(IDreamItem item, int position) {
            mTitleView.setText(item.getTitle());

            final CharSequence summary = item.getSummary();
            if (TextUtils.isEmpty(summary)) {
                mSummaryView.setVisibility(View.GONE);
            } else {
                mSummaryView.setText(summary);
                mSummaryView.setVisibility(View.VISIBLE);
            }

            final Drawable previewImage = item.getPreviewImage();
            if (previewImage != null) {
                mPreviewView.setImageDrawable(previewImage);
@@ -82,7 +91,10 @@ public class DreamAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                icon.setTint(Utils.getColorAttrDefaultColor(mContext,
                        com.android.internal.R.attr.colorAccentPrimaryVariant));
            }
            mIconView.setImageDrawable(icon);
            final int iconSize = mContext.getResources().getDimensionPixelSize(
                    R.dimen.dream_item_icon_size);
            icon.setBounds(0, 0, iconSize, iconSize);
            mTitleView.setCompoundDrawablesRelative(icon, null, null, null);

            if (item.isActive()) {
                mLastSelectedPos = position;
+5 −0
Original line number Diff line number Diff line
@@ -111,6 +111,11 @@ public class DreamPickerController extends BasePreferenceController {
            return mDreamInfo.caption;
        }

        @Override
        public CharSequence getSummary() {
            return mDreamInfo.description;
        }

        @Override
        public Drawable getIcon() {
            return mDreamInfo.icon;
+29 −0
Original line number Diff line number Diff line
@@ -18,23 +18,52 @@ package com.android.settings.dream;

import android.graphics.drawable.Drawable;

import androidx.annotation.Nullable;

/**
 * Interface representing a dream item to be displayed.
 */
public interface IDreamItem {
    /**
     * Gets the title of this dream.
     */
    CharSequence getTitle();

    /**
     * Gets the summary of this dream, or null if the dream doesn't provide one.
     */
    @Nullable
    CharSequence getSummary();

    /**
     * Gets the icon for the dream.
     */
    Drawable getIcon();

    /**
     * Callback which can be implemented to handle clicks on this dream.
     */
    void onItemClicked();

    /**
     * Callback which can be implemented to handle the customization of this dream.
     */
    default void onCustomizeClicked() {
    }

    /**
     * Gets the preview image of this dream.
     */
    Drawable getPreviewImage();

    /**
     * Returns whether or not this dream is currently active.
     */
    boolean isActive();

    /**
     * Returns whether to allow customization of this dream or not.
     */
    default boolean allowCustomization() {
        return false;
    }