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

Commit 4e5168fa authored by Alan Viverette's avatar Alan Viverette
Browse files

Update year picker to use activation colors

Change-Id: I148b592538e1e4a928bd7ebb99a3083b760b839d
parent 1ea47aa0
Loading
Loading
Loading
Loading
+19 −13
Original line number Diff line number Diff line
@@ -145,8 +145,8 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate i

        // Use Theme attributes if possible
        final int dayOfWeekTextAppearanceResId = a.getResourceId(
                R.styleable.DatePicker_dayOfWeekTextAppearance, -1);
        if (dayOfWeekTextAppearanceResId != -1) {
                R.styleable.DatePicker_dayOfWeekTextAppearance, 0);
        if (dayOfWeekTextAppearanceResId != 0) {
            mDayOfWeekView.setTextAppearance(context, dayOfWeekTextAppearanceResId);
        }

@@ -157,8 +157,8 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate i
        final int headerSelectedTextColor = a.getColor(
                R.styleable.DatePicker_headerSelectedTextColor, defaultHighlightColor);
        final int monthTextAppearanceResId = a.getResourceId(
                R.styleable.DatePicker_headerMonthTextAppearance, -1);
        if (monthTextAppearanceResId != -1) {
                R.styleable.DatePicker_headerMonthTextAppearance, 0);
        if (monthTextAppearanceResId != 0) {
            mHeaderMonthTextView.setTextAppearance(context, monthTextAppearanceResId);
        }
        mHeaderMonthTextView.setTextColor(ColorStateList.addFirstIfMissing(
@@ -166,18 +166,18 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate i
                headerSelectedTextColor));

        final int dayOfMonthTextAppearanceResId = a.getResourceId(
                R.styleable.DatePicker_headerDayOfMonthTextAppearance, -1);
        if (dayOfMonthTextAppearanceResId != -1) {
                R.styleable.DatePicker_headerDayOfMonthTextAppearance, 0);
        if (dayOfMonthTextAppearanceResId != 0) {
            mHeaderDayOfMonthTextView.setTextAppearance(context, dayOfMonthTextAppearanceResId);
        }
        mHeaderDayOfMonthTextView.setTextColor(ColorStateList.addFirstIfMissing(
                mHeaderDayOfMonthTextView.getTextColors(), R.attr.state_selected,
                headerSelectedTextColor));

        final int yearTextAppearanceResId = a.getResourceId(
                R.styleable.DatePicker_headerYearTextAppearance, -1);
        if (yearTextAppearanceResId != -1) {
            mHeaderYearTextView.setTextAppearance(context, yearTextAppearanceResId);
        final int headerYearTextAppearanceResId = a.getResourceId(
                R.styleable.DatePicker_headerYearTextAppearance, 0);
        if (headerYearTextAppearanceResId != 0) {
            mHeaderYearTextView.setTextAppearance(context, headerYearTextAppearanceResId);
        }
        mHeaderYearTextView.setTextColor(ColorStateList.addFirstIfMissing(
                mHeaderYearTextView.getTextColors(), R.attr.state_selected,
@@ -193,9 +193,15 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate i
        mYearPickerView = new YearPickerView(mContext);
        mYearPickerView.init(this);

        final int yearSelectedCircleColor = a.getColor(R.styleable.DatePicker_yearListSelectorColor,
                defaultHighlightColor);
        mYearPickerView.setYearSelectedCircleColor(yearSelectedCircleColor);
        final ColorStateList yearBackgroundColor = a.getColorStateList(
                R.styleable.DatePicker_yearListSelectorColor);
        mYearPickerView.setYearBackgroundColor(yearBackgroundColor);

        final int yearTextAppearanceResId = a.getResourceId(
                R.styleable.DatePicker_yearListItemTextAppearance, 0);
        if (yearTextAppearanceResId != 0) {
            mYearPickerView.setYearTextAppearance(yearTextAppearanceResId);
        }

        final ColorStateList calendarTextColor = a.getColorStateList(
                R.styleable.DatePicker_calendarTextColor);
+9 −34
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@ package android.widget;

import android.content.Context;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Typeface;
@@ -27,14 +26,8 @@ import android.util.AttributeSet;
import com.android.internal.R;

class TextViewWithCircularIndicator extends TextView {

    private static final int SELECTED_CIRCLE_ALPHA = 60;

    private final Paint mCirclePaint = new Paint();

    private final String mItemIsSelectedText;
    private int mCircleColor;
    private boolean mDrawIndicator;

    public TextViewWithCircularIndicator(Context context) {
        this(context, null);
@@ -50,22 +43,11 @@ class TextViewWithCircularIndicator extends TextView {

    public TextViewWithCircularIndicator(Context context, AttributeSet attrs,
            int defStyleAttr, int defStyleRes) {
        super(context, attrs);


        // Use Theme attributes if possible
        final TypedArray a = mContext.obtainStyledAttributes(attrs,
                R.styleable.DatePicker, defStyleAttr, defStyleRes);
        final int resId = a.getResourceId(R.styleable.DatePicker_yearListItemTextAppearance, -1);
        if (resId != -1) {
            setTextAppearance(context, resId);
        }
        super(context, attrs, defStyleAttr, defStyleRes);

        final Resources res = context.getResources();
        mItemIsSelectedText = res.getString(R.string.item_is_selected);

        a.recycle();

        init();
    }

@@ -77,33 +59,26 @@ class TextViewWithCircularIndicator extends TextView {
    }

    public void setCircleColor(int color) {
        if (color != mCircleColor) {
            mCircleColor = color;
            mCirclePaint.setColor(mCircleColor);
            mCirclePaint.setAlpha(SELECTED_CIRCLE_ALPHA);
            requestLayout();
        }
    }

    public void setDrawIndicator(boolean drawIndicator) {
        mDrawIndicator = drawIndicator;
        mCirclePaint.setColor(color);
        invalidate();
    }

    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        if (mDrawIndicator) {
        if (isActivated()) {
            final int width = getWidth();
            final int height = getHeight();
            int radius = Math.min(width, height) / 2;
            final int radius = Math.min(width, height) / 2;
            canvas.drawCircle(width / 2, height / 2, radius, mCirclePaint);
        }

        super.onDraw(canvas);
    }

    @Override
    public CharSequence getContentDescription() {
        CharSequence itemText = getText();
        if (mDrawIndicator) {
        final CharSequence itemText = getText();
        if (isActivated()) {
            return String.format(mItemIsSelectedText, itemText);
        } else {
            return itemText;
+18 −22
Original line number Diff line number Diff line
@@ -17,8 +17,10 @@
package android.widget;

import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Resources;
import android.util.AttributeSet;
import android.util.StateSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
@@ -42,7 +44,7 @@ class YearPickerView extends ListView implements AdapterView.OnItemClickListener
    private DatePickerController mController;

    private int mSelectedPosition = -1;
    private int mYearSelectedCircleColor;
    private int mYearActivatedColor;

    public YearPickerView(Context context) {
        this(context, null);
@@ -97,15 +99,14 @@ class YearPickerView extends ListView implements AdapterView.OnItemClickListener
        onDateChanged();
    }

    public void setYearSelectedCircleColor(int color) {
        if (color != mYearSelectedCircleColor) {
            mYearSelectedCircleColor = color;
        }
        requestLayout();
    public void setYearBackgroundColor(ColorStateList yearBackgroundColor) {
        mYearActivatedColor = yearBackgroundColor.getColorForState(
                StateSet.get(StateSet.VIEW_STATE_ENABLED | StateSet.VIEW_STATE_ACTIVATED), 0);
        invalidate();
    }

    public int getYearSelectedCircleColor()  {
        return mYearSelectedCircleColor;
    public void setYearTextAppearance(int resId) {
        mAdapter.setItemTextAppearance(resId);
    }

    private void updateAdapterData() {
@@ -127,12 +128,8 @@ class YearPickerView extends ListView implements AdapterView.OnItemClickListener
        mController.onYearSelected(mAdapter.getItem(position));
    }

    void setItemTextAppearance(int resId) {
        mAdapter.setItemTextAppearance(resId);
    }

    private class YearAdapter extends ArrayAdapter<Integer> {
        int mItemTextAppearanceResId;
        private int mItemTextAppearanceResId;

        public YearAdapter(Context context, int resource) {
            super(context, resource);
@@ -140,16 +137,15 @@ class YearPickerView extends ListView implements AdapterView.OnItemClickListener

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            TextViewWithCircularIndicator v = (TextViewWithCircularIndicator)
            final TextViewWithCircularIndicator v = (TextViewWithCircularIndicator)
                    super.getView(position, convertView, parent);
            v.setTextAppearance(getContext(), mItemTextAppearanceResId);
            v.requestLayout();
            int year = getItem(position);
            boolean selected = mController.getSelectedDay().get(Calendar.YEAR) == year;
            v.setDrawIndicator(selected);
            if (selected) {
                v.setCircleColor(mYearSelectedCircleColor);
            }
            v.setTextAppearance(v.getContext(), mItemTextAppearanceResId);
            v.setCircleColor(mYearActivatedColor);

            final int year = getItem(position);
            final boolean selected = mController.getSelectedDay().get(Calendar.YEAR) == year;
            v.setActivated(selected);

            return v;
        }

+4 −4
Original line number Diff line number Diff line
@@ -395,24 +395,24 @@ please see styles_device_defaults.xml.

    <style name="TextAppearance.Material.DatePicker.MonthLabel" parent="TextAppearance.Material">
        <item name="includeFontPadding">false</item>
        <item name="textColor">?attr/textColorSecondaryInverse</item> <!-- selected should be accent -->
        <item name="textColor">?attr/textColorSecondaryInverse</item>
        <item name="textSize">@dimen/datepicker_selected_date_month_size</item>
    </style>

    <style name="TextAppearance.Material.DatePicker.DayOfMonthLabel" parent="TextAppearance.Material">
        <item name="includeFontPadding">false</item>
        <item name="textColor">?attr/textColorSecondaryInverse</item> <!-- selected should be accent -->
        <item name="textColor">?attr/textColorSecondaryInverse</item>
        <item name="textSize">@dimen/datepicker_selected_date_day_size</item>
    </style>

    <style name="TextAppearance.Material.DatePicker.YearLabel" parent="TextAppearance.Material">
        <item name="includeFontPadding">false</item>
        <item name="textColor">?attr/textColorSecondaryInverse</item> <!-- selected should be accent -->
        <item name="textColor">?attr/textColorSecondaryInverse</item>
        <item name="textSize">@dimen/datepicker_selected_date_year_size</item>
    </style>

    <style name="TextAppearance.Material.DatePicker.List.YearLabel" parent="TextAppearance.Material">
        <item name="textColor">?attr/textColorSecondary</item> <!-- selected should be accent -->
        <item name="textColor">?attr/textColorSecondaryActivated</item>
        <item name="textSize">@dimen/datepicker_year_label_text_size</item>
    </style>