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

Commit f02d4e36 authored by Svetoslav Ganov's avatar Svetoslav Ganov Committed by Android (Google) Code Review
Browse files

Merge "Updating the light Date picker theme. Some UI fixes."

parents e2975f17 99b539f6
Loading
Loading
Loading
Loading
+87 −73
Original line number Diff line number Diff line
@@ -1091,34 +1091,23 @@ public class DayPicker extends FrameLayout {
         */
        public static final String VIEW_PARAMS_SHOW_WK_NUM = "show_wk_num";

        protected int mDefaultHeight = 32;

        protected int mMinHeight = 10;

        protected static final int DEFAULT_SELECTED_DAY = -1;

        protected static final int DEFAULT_WEEK_START = Calendar.SUNDAY;

        protected static final int DEFAULT_NUM_DAYS = 7;

        protected static final int DEFAULT_SHOW_WK_NUM = 0;

        protected static final int DEFAULT_FOCUS_MONTH = -1;
        protected final int mWeekSeperatorWidth;

        protected static final int DAY_SEPARATOR_WIDTH = 1;
        protected final int mNumberTextSize;

        protected int mNumberTextSize = 14;

        // affects the padding on the sides of this view
        protected int mPadding = 0;
        protected final int mWeekDayPadding;

        protected final Rect mTempRect = new Rect();

        protected final Paint mDrawPaint = new Paint();

        protected Paint mMonthNumDrawPaint = new Paint();
        protected final Paint mMonthNumDrawPaint = new Paint();

        protected final Drawable mSelectedDayLine;

        protected Drawable mSelectedDayLine;
        protected final int mSelectedDayLineWidth;

        protected final int mSelectionBackgroundColor;

@@ -1130,6 +1119,8 @@ public class DayPicker extends FrameLayout {

        protected final int mWeekNumberColor;

        protected final int mFirstDayOfweek;

        // Cache the number strings so we don't have to recompute them each time
        protected String[] mDayNumbers;

@@ -1153,22 +1144,19 @@ public class DayPicker extends FrameLayout {
        protected int mWidth;

        // The height this view should draw at in pixels, set by height param
        protected int mHeight = mDefaultHeight;

        // Whether the week number should be shown
        protected boolean mShowWeekNum = false;
        protected int mHeight;

        // If this view contains the selected day
        protected boolean mHasSelectedDay = false;

        // Which day is selected [0-6] or -1 if no day is selected
        protected int mSelectedDay = DEFAULT_SELECTED_DAY;
        protected int mSelectedDay = -1;

        // How many days to display
        protected int mNumDays = DEFAULT_NUM_DAYS;
        protected int mWeekDayCount;

        // The number of days + a spot for week number if it is displayed
        protected int mNumCells = mNumDays;
        protected int mNumCells;

        // The left edge of the selected day
        protected int mSelectedLeft = -1;
@@ -1183,7 +1171,20 @@ public class DayPicker extends FrameLayout {
            context.getTheme().resolveAttribute(R.attr.dayPickerWeekViewStyle, outTypedValue, true);
            TypedArray attributesArray = context.obtainStyledAttributes(outTypedValue.resourceId,
                    R.styleable.DayPickerWeekView);

            mHeight = attributesArray.getDimensionPixelSize(R.styleable.DayPickerWeekView_height,
                    26);
            mNumberTextSize = attributesArray.getDimensionPixelSize(
                    R.styleable.DayPickerWeekView_textSize, 14);
            mFirstDayOfweek = attributesArray.getInt(R.styleable.DayPickerWeekView_weekStartDay,
                    Calendar.SUNDAY);
            mNumCells = mWeekDayCount = attributesArray.getInt(
                    R.styleable.DayPickerWeekView_weekDayCount, 7);
            mShowWeekNumber = attributesArray.getBoolean(R.styleable.DayPickerWeekView_weekDayCount,
                    true);
            mWeekSeperatorWidth = attributesArray.getDimensionPixelSize(
                    R.styleable.DayPickerWeekView_weekSeperatorWidth, 1);
            mWeekDayPadding = attributesArray.getDimensionPixelSize(
                    R.styleable.DayPickerWeekView_weekDayPadding, 0);
            mSelectionBackgroundColor = attributesArray.getColor(
                    R.styleable.DayPickerWeekView_selectionBackgroundColor, 0);
            mFocusedMonthDateColor = attributesArray.getColor(
@@ -1196,17 +1197,10 @@ public class DayPicker extends FrameLayout {
                    R.styleable.DayPickerWeekView_weekNumberColor, 0);
            mSelectedDayLine = attributesArray
                    .getDrawable(R.styleable.DayPickerWeekView_selectedDayLine);
            mSelectedDayLineWidth = attributesArray.getDimensionPixelSize(
                    R.styleable.DayPickerWeekView_selectedDayLineWidth, 6);
            attributesArray.recycle();

            if (sScale == 0) {
                sScale = context.getResources().getDisplayMetrics().density;
                if (sScale != 1) {
                    mDefaultHeight *= sScale;
                    mMinHeight *= sScale;
                    mNumberTextSize *= sScale;
                }
            }

            // Sets up any standard paints that will be used
            setPaintProperties();
        }
@@ -1231,26 +1225,23 @@ public class DayPicker extends FrameLayout {
            // We keep the current value for any params not present
            if (params.containsKey(VIEW_PARAMS_HEIGHT)) {
                mHeight = ((int[]) params.get(VIEW_PARAMS_HEIGHT))[0];
                if (mHeight < mMinHeight) {
                    mHeight = mMinHeight;
                }
            }
            if (params.containsKey(VIEW_PARAMS_SELECTED_DAY)) {
                mSelectedDay = ((int[]) params.get(VIEW_PARAMS_SELECTED_DAY))[0];
            }
            mHasSelectedDay = mSelectedDay != -1;
            if (params.containsKey(VIEW_PARAMS_NUM_DAYS)) {
                mNumDays = ((int[]) params.get(VIEW_PARAMS_NUM_DAYS))[0];
                mWeekDayCount = ((int[]) params.get(VIEW_PARAMS_NUM_DAYS))[0];
            }
            if (params.containsKey(VIEW_PARAMS_SHOW_WK_NUM)) {
                if (((int[]) params.get(VIEW_PARAMS_SHOW_WK_NUM))[0] != 0) {
                    mNumCells = mNumDays + 1;
                    mShowWeekNum = true;
                    mNumCells = mWeekDayCount + 1;
                    mShowWeekNumber = true;
                } else {
                    mShowWeekNum = false;
                    mShowWeekNumber = false;
                }
            } else {
                mNumCells = mShowWeekNum ? mNumDays + 1 : mNumDays;
                mNumCells = mShowWeekNumber ? mWeekDayCount + 1 : mWeekDayCount;
            }
            mWeek = ((int[]) params.get(VIEW_PARAMS_WEEK))[0];
            mTempCalendar.clear();
@@ -1259,7 +1250,7 @@ public class DayPicker extends FrameLayout {
            if (params.containsKey(VIEW_PARAMS_WEEK_START)) {
                mTempCalendar.setFirstDayOfWeek(((int[]) params.get(VIEW_PARAMS_WEEK_START))[0]);
            } else {
                mTempCalendar.setFirstDayOfWeek(DEFAULT_WEEK_START);
                mTempCalendar.setFirstDayOfWeek(Calendar.SUNDAY);
            }

            // Allocate space for caching the day numbers and focus values
@@ -1268,7 +1259,7 @@ public class DayPicker extends FrameLayout {

            // If we're showing the week number calculate it based on Monday
            int i = 0;
            if (mShowWeekNum) {
            if (mShowWeekNumber) {
                mDayNumbers[0] = Integer.toString(mTempCalendar.get(Calendar.WEEK_OF_YEAR));
                i++;
            }
@@ -1282,7 +1273,7 @@ public class DayPicker extends FrameLayout {
            mMonthOfFirstWeekDay = mTempCalendar.get(Calendar.MONTH);

            int focusMonth = params.containsKey(VIEW_PARAMS_FOCUS_MONTH) ? ((int[]) params
                    .get(VIEW_PARAMS_FOCUS_MONTH))[0] : DEFAULT_FOCUS_MONTH;
                    .get(VIEW_PARAMS_FOCUS_MONTH))[0] : -1;

            for (; i < mNumCells; i++) {
                mFocusDay[i] = (mTempCalendar.get(Calendar.MONTH) == focusMonth);
@@ -1348,7 +1339,7 @@ public class DayPicker extends FrameLayout {
         * Returns the number of days this view will display.
         */
        public int getNumDays() {
            return mNumDays;
            return mWeekDayCount;
        }

        /**
@@ -1358,13 +1349,15 @@ public class DayPicker extends FrameLayout {
         * @param x The x position of the touch eventy
         */
        public void getDayFromLocation(float x, Calendar outCalendar) {
            int dayStart = mShowWeekNum ? (mWidth - mPadding * 2) / mNumCells + mPadding : mPadding;
            if (x < dayStart || x > mWidth - mPadding) {
            int dayStart = mShowWeekNumber ? (mWidth - mWeekDayPadding * 2) / mNumCells
                    + mWeekDayPadding : mWeekDayPadding;
            if (x < dayStart || x > mWidth - mWeekDayPadding) {
                outCalendar.set(0, 0, 0, 0, 0, 0);
                return;
            }
            // Selection is (x - start) / (pixels/day) == (x -s) * day / pixels
            int dayPosition = (int) ((x - dayStart) * mNumDays / (mWidth - dayStart - mPadding));
            int dayPosition = (int) ((x - dayStart) * mWeekDayCount
                    / (mWidth - dayStart - mWeekDayPadding));
            outCalendar.setTimeZone(mFirstDay.getTimeZone());
            outCalendar.setTimeInMillis(mFirstDay.getTimeInMillis());
            outCalendar.add(Calendar.DAY_OF_MONTH, dayPosition);
@@ -1375,6 +1368,7 @@ public class DayPicker extends FrameLayout {
            drawBackground(canvas);
            drawWeekNums(canvas);
            drawDaySeparators(canvas);
            drawSelectedDayLines(canvas);
        }

        /**
@@ -1390,15 +1384,15 @@ public class DayPicker extends FrameLayout {
            }
            mDrawPaint.setColor(mSelectionBackgroundColor);

            mTempRect.top = DAY_SEPARATOR_WIDTH;
            mTempRect.top = mWeekSeperatorWidth;
            mTempRect.bottom = mHeight;
            mTempRect.left = mShowWeekNum ? mPadding + (mWidth - mPadding * 2) / mNumCells
                    : mPadding;
            mTempRect.left = mShowWeekNumber ? mWeekDayPadding + (mWidth - mWeekDayPadding * 2)
                    / mNumCells : mWeekDayPadding;
            mTempRect.right = mSelectedLeft - 2;
            canvas.drawRect(mTempRect, mDrawPaint);

            mTempRect.left = mSelectedRight + 3;
            mTempRect.right = mWidth - mPadding;
            mTempRect.right = mWidth - mWeekDayPadding;
            canvas.drawRect(mTempRect, mDrawPaint);
        }

@@ -1410,22 +1404,22 @@ public class DayPicker extends FrameLayout {
         */
        protected void drawWeekNums(Canvas canvas) {
            float textHeight = mDrawPaint.getTextSize();
            int y = (int) ((mHeight + textHeight) / 2) - DAY_SEPARATOR_WIDTH;
            int y = (int) ((mHeight + textHeight) / 2) - mWeekSeperatorWidth;
            int nDays = mNumCells;

            mDrawPaint.setTextAlign(Align.CENTER);
            int i = 0;
            int divisor = 2 * nDays;
            if (mShowWeekNum) {
            if (mShowWeekNumber) {
                mDrawPaint.setColor(mWeekNumberColor);
                int x = (mWidth - mPadding * 2) / divisor + mPadding;
                int x = (mWidth - mWeekDayPadding * 2) / divisor + mWeekDayPadding;
                canvas.drawText(mDayNumbers[0], x, y, mDrawPaint);
                i++;
            }
            for (; i < nDays; i++) {
                mMonthNumDrawPaint.setColor(mFocusDay[i] ? mFocusedMonthDateColor
                        : mOtherMonthDateColor);
                int x = (2 * i + 1) * (mWidth - mPadding * 2) / divisor + mPadding;
                int x = (2 * i + 1) * (mWidth - mWeekDayPadding * 2) / divisor + mWeekDayPadding;
                canvas.drawText(mDayNumbers[i], x, y, mMonthNumDrawPaint);
            }
        }
@@ -1434,23 +1428,42 @@ public class DayPicker extends FrameLayout {
         * Draws a horizontal line for separating the weeks. Override this
         * method if you want custom separators.
         *
         * @param canvas The canvas to draw on
         * @param canvas The canvas to draw on.
         */
        protected void drawDaySeparators(Canvas canvas) {
            // If it is the topmost fully visible child do not draw separator line
            int firstFullyVisiblePosition = mListView.getFirstVisiblePosition();
            if (mListView.getChildAt(0).getTop() < 0) {
                firstFullyVisiblePosition++;
            }
            if (firstFullyVisiblePosition == mWeek) {
                return;
            }
            mDrawPaint.setColor(mGridLinesColor);
            mDrawPaint.setStrokeWidth(DAY_SEPARATOR_WIDTH);
            float x = mShowWeekNum ? mPadding + (mWidth - mPadding * 2) / mNumCells : mPadding;
            canvas.drawLine(x, 0, mWidth - mPadding, 0, mDrawPaint);
            mDrawPaint.setStrokeWidth(mWeekSeperatorWidth);
            float x = mShowWeekNumber ? mWeekDayPadding + (mWidth - mWeekDayPadding * 2) / mNumCells
                    : mWeekDayPadding;
            canvas.drawLine(x, 0, mWidth - mWeekDayPadding, 0, mDrawPaint);
        }

            if (mHasSelectedDay) {
                mSelectedDayLine.setBounds(mSelectedLeft - 2, DAY_SEPARATOR_WIDTH,
                        mSelectedLeft + 4, mHeight + 1);
        /**
         * Draws the selected day lines if this week has a selected day.
         *
         * @param canvas The canvas to draw on
         */
        protected void drawSelectedDayLines(Canvas canvas) {
            if (!mHasSelectedDay) {
                return;
            }
            mSelectedDayLine.setBounds(mSelectedLeft - mSelectedDayLineWidth / 2,
                    mWeekSeperatorWidth,
                    mSelectedLeft + mSelectedDayLineWidth / 2, mHeight);
            mSelectedDayLine.draw(canvas);
                mSelectedDayLine.setBounds(mSelectedRight - 3, DAY_SEPARATOR_WIDTH,
                        mSelectedRight + 3, mHeight + 1);
            mSelectedDayLine.setBounds(mSelectedRight - mSelectedDayLineWidth / 2,
                    mWeekSeperatorWidth,
                    mSelectedRight + mSelectedDayLineWidth / 2, mHeight);
            mSelectedDayLine.draw(canvas);
        }
        }

        @Override
        protected void onSizeChanged(int w, int h, int oldw, int oldh) {
@@ -1467,12 +1480,13 @@ public class DayPicker extends FrameLayout {
                if (selectedPosition < 0) {
                    selectedPosition += 7;
                }
                if (mShowWeekNum) {
                if (mShowWeekNumber) {
                    selectedPosition++;
                }
                mSelectedLeft = selectedPosition * (mWidth - mPadding * 2) / mNumCells + mPadding;
                mSelectedRight = (selectedPosition + 1) * (mWidth - mPadding * 2) / mNumCells
                        + mPadding;
                mSelectedLeft = selectedPosition * (mWidth - mWeekDayPadding * 2) / mNumCells
                        + mWeekDayPadding;
                mSelectedRight = (selectedPosition + 1) * (mWidth - mWeekDayPadding * 2) / mNumCells
                        + mWeekDayPadding;
            }
        }

+2 −6
Original line number Diff line number Diff line
@@ -1188,16 +1188,12 @@ public class NumberPicker extends LinearLayout {

    /**
     * @return The wrapped index <code>selectorIndex</code> value.
     *         <p>
     *         Note: The absolute value of the argument is never larger than
     *         mEnd - mStart.
     *         </p>
     */
    private int getWrappedSelectorIndex(int selectorIndex) {
        if (selectorIndex > mEnd) {
            return mStart + selectorIndex - mEnd - 1;
            return mStart + (selectorIndex - mEnd) % (mEnd - mStart);
        } else if (selectorIndex < mStart) {
            return mEnd + selectorIndex - mStart + 1;
            return mEnd - (mStart - selectorIndex) % (mEnd - mStart);
        }
        return selectorIndex;
    }
+261 B
Loading image diff...
+261 B
Loading image diff...
+226 B
Loading image diff...
Loading