Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(102)

Unified Diff: content/public/android/java/src/org/chromium/content/browser/input/DateTimePickerDialog.java

Issue 15533003: [Android] Implement min/max on all supported date types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 7 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 29bca66d02d861fe0ebc9b5ea477d0296938650d..07351e4abfb04f1f79d3518d101c171eaaaee224 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
@@ -10,6 +10,7 @@ import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Build;
import android.os.Bundle;
+import android.text.format.Time;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.DatePicker;
@@ -33,6 +34,9 @@ class DateTimePickerDialog extends AlertDialog implements OnClickListener,
private final TimePicker mTimePicker;
private final OnDateTimeSetListener mCallBack;
+ private final Time mMinTime;
+ private final Time mMaxTime;
bulach 2013/05/21 17:26:35 these seem to be only ever used in the millis form
Miguel Garcia 2013/05/23 12:16:48 Done.
+
/**
* The callback used to indicate the user is done filling in the date.
*/
@@ -64,27 +68,14 @@ class DateTimePickerDialog extends AlertDialog implements OnClickListener,
int year,
int monthOfYear,
int dayOfMonth,
- int hourOfDay, int minute, boolean is24HourView) {
- this(context, 0, callBack, year, monthOfYear, dayOfMonth,
- hourOfDay, minute, is24HourView);
- }
+ int hourOfDay, int minute, boolean is24HourView,
+ long min, long max) {
+ super(context, 0);
- /**
- * @param context The context the dialog is to run in.
- * @param theme the theme to apply to this dialog
- * @param callBack How the parent is notified that the date is set.
- * @param year The initial year of the dialog.
- * @param monthOfYear The initial month of the dialog.
- * @param dayOfMonth The initial day of the dialog.
- */
- public DateTimePickerDialog(Context context,
- int theme,
- OnDateTimeSetListener callBack,
- int year,
- int monthOfYear,
- int dayOfMonth,
- int hourOfDay, int minute, boolean is24HourView) {
- super(context, theme);
+ mMinTime = new Time();
+ mMinTime.set(min);
+ mMaxTime = new Time();
+ mMaxTime.set(max);
mCallBack = callBack;
@@ -100,7 +91,10 @@ 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);
bulach 2013/05/21 17:26:35 init is being called twice..
Miguel Garcia 2013/05/30 10:06:31 True. Removed one call now.
+ DateDialogNormalizer.normalize(mDatePicker, this,
+ year, monthOfYear, dayOfMonth, min, max);
mTimePicker = (TimePicker) view.findViewById(R.id.time_picker);
mTimePicker.setIs24HourView(is24HourView);
@@ -138,30 +132,28 @@ 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(),
bulach 2013/05/21 17:26:35 should this use hourOfDay and minute params?
Miguel Garcia 2013/05/30 10:06:31 It seems more consistent to get everything from th
+ mTimePicker.getCurrentHour(), mDatePicker.getDayOfMonth(),
+ mDatePicker.getMonth(), mDatePicker.getYear());
+
+ if (time.toMillis(true) < mMinTime.toMillis(true)) {
+ time.set(mMinTime);
+ } else if (time.toMillis(true) > mMaxTime.toMillis(true)) {
+ time.set(mMaxTime);
+ }
+ mTimePicker.setCurrentHour(time.hour);
+ mTimePicker.setCurrentMinute(time.minute);
}
/**

Powered by Google App Engine
This is Rietveld 408576698