Merge "Clean up date picker"
This commit is contained in:
committed by
Android (Google) Code Review
commit
167fa2fdb7
@@ -348,9 +348,13 @@ public class DatePicker extends FrameLayout {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether the {@link CalendarView} is shown.
|
||||
* Returns whether the {@link CalendarView} is shown.
|
||||
* <p>
|
||||
* <strong>Note:</strong> This method returns {@code false} when the
|
||||
* {@link android.R.styleable#DatePicker_datePickerMode} attribute is set
|
||||
* to {@code calendar}.
|
||||
*
|
||||
* @return True if the calendar view is shown.
|
||||
* @return {@code true} if the calendar view is shown
|
||||
* @see #getCalendarView()
|
||||
*/
|
||||
public boolean getCalendarViewShown() {
|
||||
@@ -358,13 +362,13 @@ public class DatePicker extends FrameLayout {
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the {@link CalendarView}.
|
||||
* Returns the {@link CalendarView} used by this picker.
|
||||
* <p>
|
||||
* This method returns {@code null} when the
|
||||
* <strong>Note:</strong> This method returns {@code null} when the
|
||||
* {@link android.R.styleable#DatePicker_datePickerMode} attribute is set
|
||||
* to {@code calendar}.
|
||||
*
|
||||
* @return The calendar view.
|
||||
* @return the calendar view
|
||||
* @see #getCalendarViewShown()
|
||||
*/
|
||||
public CalendarView getCalendarView() {
|
||||
@@ -374,20 +378,25 @@ public class DatePicker extends FrameLayout {
|
||||
/**
|
||||
* Sets whether the {@link CalendarView} is shown.
|
||||
* <p>
|
||||
* Calling this method has no effect when the
|
||||
* <strong>Note:</strong> Calling this method has no effect when the
|
||||
* {@link android.R.styleable#DatePicker_datePickerMode} attribute is set
|
||||
* to {@code calendar}.
|
||||
*
|
||||
* @param shown True if the calendar view is to be shown.
|
||||
* @param shown {@code true} to show the calendar view, {@code false} to
|
||||
* hide it
|
||||
*/
|
||||
public void setCalendarViewShown(boolean shown) {
|
||||
mDelegate.setCalendarViewShown(shown);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets whether the spinners are shown.
|
||||
* Returns whether the spinners are shown.
|
||||
* <p>
|
||||
* T<strong>Note:</strong> his method returns {@code false} when the
|
||||
* {@link android.R.styleable#DatePicker_datePickerMode} attribute is set
|
||||
* to {@code calendar}.
|
||||
*
|
||||
* @return True if the spinners are shown.
|
||||
* @return {@code true} if the spinners are shown
|
||||
*/
|
||||
public boolean getSpinnersShown() {
|
||||
return mDelegate.getSpinnersShown();
|
||||
@@ -395,8 +404,13 @@ public class DatePicker extends FrameLayout {
|
||||
|
||||
/**
|
||||
* Sets whether the spinners are shown.
|
||||
* <p>
|
||||
* Calling this method has no effect when the
|
||||
* {@link android.R.styleable#DatePicker_datePickerMode} attribute is set
|
||||
* to {@code calendar}.
|
||||
*
|
||||
* @param shown True if the spinners are to be shown.
|
||||
* @param shown {@code true} to show the spinners, {@code false} to hide
|
||||
* them
|
||||
*/
|
||||
public void setSpinnersShown(boolean shown) {
|
||||
mDelegate.setSpinnersShown(shown);
|
||||
|
||||
@@ -61,10 +61,6 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
|
||||
|
||||
private static final int ANIMATION_DURATION = 300;
|
||||
|
||||
private static final int MONTH_INDEX = 0;
|
||||
private static final int DAY_INDEX = 1;
|
||||
private static final int YEAR_INDEX = 2;
|
||||
|
||||
public static final int[] ATTRS_TEXT_COLOR = new int[]{com.android.internal.R.attr.textColor};
|
||||
|
||||
public static final int[] ATTRS_DISABLED_ALPHA = new int[]{
|
||||
@@ -93,10 +89,10 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
|
||||
|
||||
private int mCurrentView = UNINITIALIZED;
|
||||
|
||||
private Calendar mCurrentDate;
|
||||
private Calendar mTempDate;
|
||||
private Calendar mMinDate;
|
||||
private Calendar mMaxDate;
|
||||
private final Calendar mCurrentDate;
|
||||
private final Calendar mTempDate;
|
||||
private final Calendar mMinDate;
|
||||
private final Calendar mMaxDate;
|
||||
|
||||
private int mFirstDayOfWeek = USE_LOCALE;
|
||||
|
||||
@@ -105,10 +101,10 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
|
||||
super(delegator, context);
|
||||
|
||||
final Locale locale = mCurrentLocale;
|
||||
mMinDate = getCalendarForLocale(mMinDate, locale);
|
||||
mMaxDate = getCalendarForLocale(mMaxDate, locale);
|
||||
mTempDate = getCalendarForLocale(mMaxDate, locale);
|
||||
mCurrentDate = getCalendarForLocale(mCurrentDate, locale);
|
||||
mCurrentDate = Calendar.getInstance(locale);
|
||||
mTempDate = Calendar.getInstance(locale);
|
||||
mMinDate = Calendar.getInstance(locale);
|
||||
mMaxDate = Calendar.getInstance(locale);
|
||||
|
||||
mMinDate.set(DEFAULT_START_YEAR, Calendar.JANUARY, 1);
|
||||
mMaxDate.set(DEFAULT_END_YEAR, Calendar.DECEMBER, 31);
|
||||
@@ -315,61 +311,6 @@ class DatePickerCalendarDelegate extends DatePicker.AbstractDatePickerDelegate {
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets a calendar for locale bootstrapped with the value of a given calendar.
|
||||
*
|
||||
* @param oldCalendar The old calendar.
|
||||
* @param locale The locale.
|
||||
*/
|
||||
private Calendar getCalendarForLocale(Calendar oldCalendar, Locale locale) {
|
||||
if (oldCalendar == null) {
|
||||
return Calendar.getInstance(locale);
|
||||
} else {
|
||||
final long currentTimeMillis = oldCalendar.getTimeInMillis();
|
||||
Calendar newCalendar = Calendar.getInstance(locale);
|
||||
newCalendar.setTimeInMillis(currentTimeMillis);
|
||||
return newCalendar;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Compute the array representing the order of Month / Day / Year views in their layout.
|
||||
* Will be used for I18N purpose as the order of them depends on the Locale.
|
||||
*/
|
||||
private int[] getMonthDayYearIndexes(String pattern) {
|
||||
int[] result = new int[3];
|
||||
|
||||
final String filteredPattern = pattern.replaceAll("'.*?'", "");
|
||||
|
||||
final int dayIndex = filteredPattern.indexOf('d');
|
||||
final int monthMIndex = filteredPattern.indexOf("M");
|
||||
final int monthIndex = (monthMIndex != -1) ? monthMIndex : filteredPattern.indexOf("L");
|
||||
final int yearIndex = filteredPattern.indexOf("y");
|
||||
|
||||
if (yearIndex < monthIndex) {
|
||||
result[YEAR_INDEX] = 0;
|
||||
|
||||
if (monthIndex < dayIndex) {
|
||||
result[MONTH_INDEX] = 1;
|
||||
result[DAY_INDEX] = 2;
|
||||
} else {
|
||||
result[MONTH_INDEX] = 2;
|
||||
result[DAY_INDEX] = 1;
|
||||
}
|
||||
} else {
|
||||
result[YEAR_INDEX] = 2;
|
||||
|
||||
if (monthIndex < dayIndex) {
|
||||
result[MONTH_INDEX] = 0;
|
||||
result[DAY_INDEX] = 1;
|
||||
} else {
|
||||
result[MONTH_INDEX] = 1;
|
||||
result[DAY_INDEX] = 0;
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void onLocaleChanged(Locale locale) {
|
||||
final TextView headerYear = mHeaderYear;
|
||||
|
||||
Reference in New Issue
Block a user