Index: content/public/android/java/src/org/chromium/content/browser/input/DateTimePickerDialog.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/DateTimePickerDialog.java b/content/public/android/java/src/org/chromium/content/browser/input/DateTimePickerDialog.java |
index f8383199096e968f5fbfc7b8c76f98cc494501dd..4012b220deb96a1fe87f971bb30afebf0cb9101e 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/input/DateTimePickerDialog.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/input/DateTimePickerDialog.java |
@@ -9,6 +9,7 @@ import android.content.Context; |
import android.content.DialogInterface; |
import android.content.DialogInterface.OnClickListener; |
import android.os.Build; |
+import android.text.format.Time; |
import android.view.LayoutInflater; |
import android.view.View; |
import android.widget.DatePicker; |
@@ -32,6 +33,9 @@ class DateTimePickerDialog extends AlertDialog implements OnClickListener, |
private final TimePicker mTimePicker; |
private final OnDateTimeSetListener mCallBack; |
+ private final long mMinTimeMillis; |
+ private final long mMaxTimeMillis; |
+ |
/** |
* The callback used to indicate the user is done filling in the date. |
*/ |
@@ -63,9 +67,13 @@ class DateTimePickerDialog extends AlertDialog implements OnClickListener, |
int year, |
int monthOfYear, |
int dayOfMonth, |
- int hourOfDay, int minute, boolean is24HourView) { |
+ int hourOfDay, int minute, boolean is24HourView, |
+ long min, long max) { |
super(context, 0); |
+ mMinTimeMillis = min; |
+ mMaxTimeMillis = max; |
+ |
mCallBack = callBack; |
setButton(BUTTON_POSITIVE, context.getText( |
@@ -80,13 +88,16 @@ class DateTimePickerDialog extends AlertDialog implements OnClickListener, |
View view = inflater.inflate(R.layout.date_time_picker_dialog, null); |
setView(view); |
mDatePicker = (DatePicker) view.findViewById(R.id.date_picker); |
- mDatePicker.init(year, monthOfYear, dayOfMonth, this); |
+ DateDialogNormalizer.normalize(mDatePicker, this, |
+ year, monthOfYear, dayOfMonth, hourOfDay, minute, min, max); |
mTimePicker = (TimePicker) view.findViewById(R.id.time_picker); |
mTimePicker.setIs24HourView(is24HourView); |
mTimePicker.setCurrentHour(hourOfDay); |
mTimePicker.setCurrentMinute(minute); |
mTimePicker.setOnTimeChangedListener(this); |
+ onTimeChanged(mTimePicker, mTimePicker.getCurrentHour(), |
+ mTimePicker.getCurrentMinute()); |
} |
@Override |
@@ -118,30 +129,27 @@ class DateTimePickerDialog extends AlertDialog implements OnClickListener, |
@Override |
public void onDateChanged(DatePicker view, int year, |
int month, int day) { |
- mDatePicker.init(year, month, day, null); |
+ // Signal a time change so the max/min checks can be applied. |
+ if (mTimePicker != null) { |
+ onTimeChanged(mTimePicker, mTimePicker.getCurrentHour(), |
+ mTimePicker.getCurrentMinute()); |
+ } |
} |
@Override |
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) { |
- /* do nothing */ |
- } |
- |
- /** |
- * Gets the {@link DatePicker} contained in this dialog. |
- * |
- * @return The DatePicker view. |
- */ |
- public DatePicker getDatePicker() { |
- return mDatePicker; |
- } |
- |
- /** |
- * Gets the {@link TimePicker} contained in this dialog. |
- * |
- * @return The TimePicker view. |
- */ |
- public TimePicker getTimePicker() { |
- return mTimePicker; |
+ Time time = new Time(); |
+ time.set(0, mTimePicker.getCurrentMinute(), |
+ mTimePicker.getCurrentHour(), mDatePicker.getDayOfMonth(), |
+ mDatePicker.getMonth(), mDatePicker.getYear()); |
+ |
+ if (time.toMillis(true) < mMinTimeMillis) { |
+ time.set(mMinTimeMillis); |
+ } else if (time.toMillis(true) > mMaxTimeMillis) { |
+ time.set(mMaxTimeMillis); |
+ } |
+ mTimePicker.setCurrentHour(time.hour); |
+ mTimePicker.setCurrentMinute(time.minute); |
} |
/** |