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

Commit ff37505c authored by Svetoslav Ganov's avatar Svetoslav Ganov
Browse files

Adding getter/setter for all public attributes in CalendarView.

bug:6094713

Change-Id: Iff4a1d903d597ae8a3d74a4e4734376acca417f3
parent d0f4e09c
Loading
Loading
Loading
Loading
+19 −0
Original line number Diff line number Diff line
@@ -26093,17 +26093,36 @@ package android.widget {
    ctor public CalendarView(android.content.Context, android.util.AttributeSet);
    ctor public CalendarView(android.content.Context, android.util.AttributeSet, int);
    method public long getDate();
    method public int getDateTextAppearance();
    method public int getFirstDayOfWeek();
    method public int getFocusedMonthDateColor();
    method public long getMaxDate();
    method public long getMinDate();
    method public android.graphics.drawable.Drawable getSelectedDateVerticalBar();
    method public int getSelectedWeekBackgroundColor();
    method public boolean getShowWeekNumber();
    method public int getShownWeekCount();
    method public int getUnfocusedMonthDateColor();
    method public int getWeekDayTextAppearance();
    method public int getWeekNumberColor();
    method public int getWeekSeparatorLineColor();
    method public void setDate(long);
    method public void setDate(long, boolean, boolean);
    method public void setDateTextAppearance(int);
    method public void setFirstDayOfWeek(int);
    method public void setFocusedMonthDateColor(int);
    method public void setMaxDate(long);
    method public void setMinDate(long);
    method public void setOnDateChangeListener(android.widget.CalendarView.OnDateChangeListener);
    method public void setSelectedDateVerticalBar(int);
    method public void setSelectedDateVerticalBar(android.graphics.drawable.Drawable);
    method public void setSelectedWeekBackgroundColor(int);
    method public void setShowWeekNumber(boolean);
    method public void setShownWeekCount(int);
    method public void setUnfocusedMonthDateColor(int);
    method public void setWeekDayTextAppearance(int);
    method public void setWeekNumberColor(int);
    method public void setWeekSeparatorLineColor(int);
  }
  public static abstract interface CalendarView.OnDateChangeListener {
+287 −32
Original line number Diff line number Diff line
@@ -154,21 +154,25 @@ public class CalendarView extends FrameLayout {

    private final int mWeekSeperatorLineWidth;

    private final int mDateTextSize;
    private int mDateTextSize;

    private final Drawable mSelectedDateVerticalBar;
    private Drawable mSelectedDateVerticalBar;

    private final int mSelectedDateVerticalBarWidth;

    private final int mSelectedWeekBackgroundColor;
    private int mSelectedWeekBackgroundColor;

    private final int mFocusedMonthDateColor;
    private int mFocusedMonthDateColor;

    private final int mUnfocusedMonthDateColor;
    private int mUnfocusedMonthDateColor;

    private final int mWeekSeparatorLineColor;
    private int mWeekSeparatorLineColor;

    private final int mWeekNumberColor;
    private int mWeekNumberColor;

    private int mWeekDayTextAppearanceResId;

    private int mDateTextAppearanceResId;

    /**
     * The top offset of the weeks list.
@@ -366,15 +370,11 @@ public class CalendarView extends FrameLayout {
        mSelectedDateVerticalBar = attributesArray.getDrawable(
                R.styleable.CalendarView_selectedDateVerticalBar);

        int dateTextAppearanceResId= attributesArray.getResourceId(
        mDateTextAppearanceResId = attributesArray.getResourceId(
                R.styleable.CalendarView_dateTextAppearance, R.style.TextAppearance_Small);
        TypedArray dateTextAppearance = context.obtainStyledAttributes(dateTextAppearanceResId,
                com.android.internal.R.styleable.TextAppearance);
        mDateTextSize = dateTextAppearance.getDimensionPixelSize(
                R.styleable.TextAppearance_textSize, DEFAULT_DATE_TEXT_SIZE);
        dateTextAppearance.recycle();
        updateDateTextSize();

        int weekDayTextAppearanceResId = attributesArray.getResourceId(
        mWeekDayTextAppearanceResId = attributesArray.getResourceId(
                R.styleable.CalendarView_weekDayTextAppearance,
                DEFAULT_WEEK_DAY_TEXT_APPEARANCE_RES_ID);
        attributesArray.recycle();
@@ -400,7 +400,7 @@ public class CalendarView extends FrameLayout {
        mDayNamesHeader = (ViewGroup) content.findViewById(com.android.internal.R.id.day_names);
        mMonthName = (TextView) content.findViewById(com.android.internal.R.id.month_name);

        setUpHeader(weekDayTextAppearanceResId);
        setUpHeader();
        setUpListView();
        setUpAdapter();

@@ -417,6 +417,235 @@ public class CalendarView extends FrameLayout {
        invalidate();
    }

    /**
     * Sets the number of weeks to be shown.
     *
     * @param count The shown week count.
     */
    public void setShownWeekCount(int count) {
        if (mShownWeekCount != count) {
            mShownWeekCount = count;
            invalidate();
        }
    }

    /**
     * Gets the number of weeks to be shown.
     *
     * @return The shown week count.
     */
    public int getShownWeekCount() {
        return mShownWeekCount;
    }

    /**
     * Sets the background color for the selected week.
     *
     * @param color The week background color.
     */
    public void setSelectedWeekBackgroundColor(int color) {
        if (mSelectedWeekBackgroundColor != color) {
            mSelectedWeekBackgroundColor = color;
            final int childCount = mListView.getChildCount();
            for (int i = 0; i < childCount; i++) {
                WeekView weekView = (WeekView) mListView.getChildAt(i);
                if (weekView.mHasSelectedDay) {
                    weekView.invalidate();
                }
            }
        }
    }

    /**
     * Gets the background color for the selected week.
     *
     * @return The week background color.
     */
    public int getSelectedWeekBackgroundColor() {
        return mSelectedWeekBackgroundColor;
    }

    /**
     * Sets the color for the dates of the focused month.
     *
     * @param color The focused month date color.
     */
    public void setFocusedMonthDateColor(int color) {
        if (mFocusedMonthDateColor != color) {
            mFocusedMonthDateColor = color;
            final int childCount = mListView.getChildCount();
            for (int i = 0; i < childCount; i++) {
                WeekView weekView = (WeekView) mListView.getChildAt(i);
                if (weekView.mHasFocusedDay) {
                    weekView.invalidate();
                }
            }
        }
    }

    /**
     * Gets the color for the dates in the focused month.
     *
     * @return The focused month date color.
     */
    public int getFocusedMonthDateColor() {
        return mFocusedMonthDateColor;
    }

    /**
     * Sets the color for the dates of a not focused month.
     *
     * @param color A not focused month date color.
     */
    public void setUnfocusedMonthDateColor(int color) {
        if (mUnfocusedMonthDateColor != color) {
            mUnfocusedMonthDateColor = color;
            final int childCount = mListView.getChildCount();
            for (int i = 0; i < childCount; i++) {
                WeekView weekView = (WeekView) mListView.getChildAt(i);
                if (weekView.mHasUnfocusedDay) {
                    weekView.invalidate();
                }
            }
        }
    }

    /**
     * Gets the color for the dates in a not focused month.
     *
     * @return A not focused month date color.
     */
    public int getUnfocusedMonthDateColor() {
        return mFocusedMonthDateColor;
    }

    /**
     * Sets the color for the week numbers.
     *
     * @param color The week number color.
     */
    public void setWeekNumberColor(int color) {
        if (mWeekNumberColor != color) {
            mWeekNumberColor = color;
            if (mShowWeekNumber) {
                invalidateAllWeekViews();
            }
        }
    }

    /**
     * Gets the color for the week numbers.
     *
     * @return The week number color.
     */
    public int getWeekNumberColor() {
        return mWeekNumberColor;
    }

    /**
     * Sets the color for the separator line between weeks.
     *
     * @param color The week separator color.
     */
    public void setWeekSeparatorLineColor(int color) {
        if (mWeekSeparatorLineColor != color) {
            mWeekSeparatorLineColor = color;
            invalidateAllWeekViews();
        }
    }

    /**
     * Gets the color for the separator line between weeks.
     *
     * @return The week separator color.
     */
    public int getWeekSeparatorLineColor() {
        return mWeekSeparatorLineColor;
    }

    /**
     * Sets the drawable for the vertical bar shown at the beginning and at
     * the end of the selected date.
     *
     * @param resourceId The vertical bar drawable resource id.
     */
    public void setSelectedDateVerticalBar(int resourceId) {
        Drawable drawable = getResources().getDrawable(resourceId);
        setSelectedDateVerticalBar(drawable);
    }

    /**
     * Sets the drawable for the vertical bar shown at the beginning and at
     * the end of the selected date.
     *
     * @param drawable The vertical bar drawable.
     */
    public void setSelectedDateVerticalBar(Drawable drawable) {
        if (mSelectedDateVerticalBar != drawable) {
            mSelectedDateVerticalBar = drawable;
            final int childCount = mListView.getChildCount();
            for (int i = 0; i < childCount; i++) {
                WeekView weekView = (WeekView) mListView.getChildAt(i);
                if (weekView.mHasSelectedDay) {
                    weekView.invalidate();
                }
            }
        }
    }

    /**
     * Gets the drawable for the vertical bar shown at the beginning and at
     * the end of the selected date.
     *
     * @return The vertical bar drawable.
     */
    public Drawable getSelectedDateVerticalBar() {
        return mSelectedDateVerticalBar;
    }

    /**
     * Sets the text appearance for the week day abbreviation of the calendar header.
     *
     * @param resourceId The text appearance resource id.
     */
    public void setWeekDayTextAppearance(int resourceId) {
        if (mWeekDayTextAppearanceResId != resourceId) {
            mWeekDayTextAppearanceResId = resourceId;
            setUpHeader();
        }
    }

    /**
     * Gets the text appearance for the week day abbreviation of the calendar header.
     *
     * @return The text appearance resource id.
     */
    public int getWeekDayTextAppearance() {
        return mWeekDayTextAppearanceResId;
    }

    /**
     * Sets the text appearance for the calendar dates.
     *
     * @param resourceId The text appearance resource id.
     */
    public void setDateTextAppearance(int resourceId) {
        if (mDateTextAppearanceResId != resourceId) {
            mDateTextAppearanceResId = resourceId;
            updateDateTextSize();
            invalidateAllWeekViews();
        }
    }

    /**
     * Gets the text appearance for the calendar dates.
     *
     * @return The text appearance resource id.
     */
    public int getDateTextAppearance() {
        return mDateTextAppearanceResId;
    }

    @Override
    public void setEnabled(boolean enabled) {
        mListView.setEnabled(enabled);
@@ -545,7 +774,7 @@ public class CalendarView extends FrameLayout {
        }
        mShowWeekNumber = showWeekNumber;
        mAdapter.notifyDataSetChanged();
        setUpHeader(DEFAULT_WEEK_DAY_TEXT_APPEARANCE_RES_ID);
        setUpHeader();
    }

    /**
@@ -594,7 +823,7 @@ public class CalendarView extends FrameLayout {
        mFirstDayOfWeek = firstDayOfWeek;
        mAdapter.init();
        mAdapter.notifyDataSetChanged();
        setUpHeader(DEFAULT_WEEK_DAY_TEXT_APPEARANCE_RES_ID);
        setUpHeader();
    }

    /**
@@ -655,6 +884,25 @@ public class CalendarView extends FrameLayout {
        goTo(mTempDate, animate, true, center);
    }

    private void updateDateTextSize() {
        TypedArray dateTextAppearance = getContext().obtainStyledAttributes(
                mDateTextAppearanceResId, R.styleable.TextAppearance);
        mDateTextSize = dateTextAppearance.getDimensionPixelSize(
                R.styleable.TextAppearance_textSize, DEFAULT_DATE_TEXT_SIZE);
        dateTextAppearance.recycle();
    }

    /**
     * Invalidates all week views.
     */
    private void invalidateAllWeekViews() {
        final int childCount = mListView.getChildCount();
        for (int i = 0; i < childCount; i++) {
            View view = mListView.getChildAt(i);
            view.invalidate();
        }
    }

    /**
     * Sets the current locale.
     *
@@ -727,7 +975,7 @@ public class CalendarView extends FrameLayout {
    /**
     * Sets up the strings to be used by the header.
     */
    private void setUpHeader(int weekDayTextAppearanceResId) {
    private void setUpHeader() {
        mDayLabels = new String[mDaysPerWeek];
        for (int i = mFirstDayOfWeek, count = mFirstDayOfWeek + mDaysPerWeek; i < count; i++) {
            int calendarDay = (i > Calendar.SATURDAY) ? i - Calendar.SATURDAY : i;
@@ -743,8 +991,8 @@ public class CalendarView extends FrameLayout {
        }
        for (int i = 1, count = mDayNamesHeader.getChildCount(); i < count; i++) {
            label = (TextView) mDayNamesHeader.getChildAt(i);
            if (weekDayTextAppearanceResId > -1) {
                label.setTextAppearance(mContext, weekDayTextAppearanceResId);
            if (mWeekDayTextAppearanceResId > -1) {
                label.setTextAppearance(mContext, mWeekDayTextAppearanceResId);
            }
            if (i < mDaysPerWeek + 1) {
                label.setText(mDayLabels[i - 1]);
@@ -1198,6 +1446,12 @@ public class CalendarView extends FrameLayout {
        // Quick lookup for checking which days are in the focus month
        private boolean[] mFocusDay;

        // Whether this view has a focused day.
        private boolean mHasFocusedDay;

        // Whether this view has only focused days.
        private boolean mHasUnfocusedDay;

        // The first day displayed by this item
        private Calendar mFirstDay;

@@ -1235,11 +1489,8 @@ public class CalendarView extends FrameLayout {
        public WeekView(Context context) {
            super(context);

            mHeight = (mListView.getHeight() - mListView.getPaddingTop() - mListView
                    .getPaddingBottom()) / mShownWeekCount;

            // Sets up any standard paints that will be used
            setPaintProperties();
            initilaizePaints();
        }

        /**
@@ -1281,8 +1532,12 @@ public class CalendarView extends FrameLayout {
            mFirstDay = (Calendar) mTempDate.clone();
            mMonthOfFirstWeekDay = mTempDate.get(Calendar.MONTH);

            mHasUnfocusedDay = true;
            for (; i < mNumCells; i++) {
                mFocusDay[i] = (mTempDate.get(Calendar.MONTH) == focusedMonth);
                final boolean isFocusedDay = (mTempDate.get(Calendar.MONTH) == focusedMonth);
                mFocusDay[i] = isFocusedDay;
                mHasFocusedDay |= isFocusedDay;
                mHasUnfocusedDay &= !isFocusedDay;
                // do not draw dates outside the valid range to avoid user confusion
                if (mTempDate.before(mMinDate) || mTempDate.after(mMaxDate)) {
                    mDayNumbers[i] = "";
@@ -1302,18 +1557,15 @@ public class CalendarView extends FrameLayout {
        }

        /**
         * Sets up the text and style properties for painting.
         * Initialize the paint isntances.
         */
        private void setPaintProperties() {
        private void initilaizePaints() {
            mDrawPaint.setFakeBoldText(false);
            mDrawPaint.setAntiAlias(true);
            mDrawPaint.setTextSize(mDateTextSize);
            mDrawPaint.setStyle(Style.FILL);

            mMonthNumDrawPaint.setFakeBoldText(true);
            mMonthNumDrawPaint.setAntiAlias(true);
            mMonthNumDrawPaint.setTextSize(mDateTextSize);
            mMonthNumDrawPaint.setColor(mFocusedMonthDateColor);
            mMonthNumDrawPaint.setStyle(Style.FILL);
            mMonthNumDrawPaint.setTextAlign(Align.CENTER);
        }
@@ -1369,7 +1621,7 @@ public class CalendarView extends FrameLayout {
        @Override
        protected void onDraw(Canvas canvas) {
            drawBackground(canvas);
            drawWeekNumbers(canvas);
            drawWeekNumbersAndDates(canvas);
            drawWeekSeparators(canvas);
            drawSelectedDateVerticalBars(canvas);
        }
@@ -1401,12 +1653,13 @@ public class CalendarView extends FrameLayout {
         *
         * @param canvas The canvas to draw on
         */
        private void drawWeekNumbers(Canvas canvas) {
        private void drawWeekNumbersAndDates(Canvas canvas) {
            float textHeight = mDrawPaint.getTextSize();
            int y = (int) ((mHeight + textHeight) / 2) - mWeekSeperatorLineWidth;
            int nDays = mNumCells;

            mDrawPaint.setTextAlign(Align.CENTER);
            mDrawPaint.setTextSize(mDateTextSize);
            int i = 0;
            int divisor = 2 * nDays;
            if (mShowWeekNumber) {
@@ -1487,6 +1740,8 @@ public class CalendarView extends FrameLayout {

        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            mHeight = (mListView.getHeight() - mListView.getPaddingTop() - mListView
                    .getPaddingBottom()) / mShownWeekCount;
            setMeasuredDimension(MeasureSpec.getSize(widthMeasureSpec), mHeight);
        }
    }
+3 −3
Original line number Diff line number Diff line
@@ -3593,15 +3593,15 @@
        <attr name="shownWeekCount" format="integer"/>
        <!-- The background color for the selected week. -->
        <attr name="selectedWeekBackgroundColor" format="color|reference" />
        <!-- The color for the dates of the selected month. -->
        <!-- The color for the dates of the focused month. -->
        <attr name="focusedMonthDateColor" format="color|reference" />
        <!-- The color for the dates of an unfocused month. -->
        <attr name="unfocusedMonthDateColor" format="color|reference" />
        <!-- The color for the week numbers. -->
        <attr name="weekNumberColor" format="color|reference" />
        <!-- The color for the sepatator line between weeks. -->
        <!-- The color for the separator line between weeks. -->
        <attr name="weekSeparatorLineColor" format="color|reference" />
        <!-- Drawable for the vertical bar shown at the beggining and at the end of a selected date. -->
        <!-- Drawable for the vertical bar shown at the beginning and at the end of the selected date. -->
        <attr name="selectedDateVerticalBar" format="reference" />
        <!-- The text appearance for the week day abbreviation of the calendar header. -->
        <attr name="weekDayTextAppearance" format="reference" />