Skip to content

Commit

Permalink
Address deprecation warnings in DateTimePickerDialog.
Browse files Browse the repository at this point in the history
BUG=537037

Review URL: https://codereview.chromium.org/1397033002

Cr-Commit-Position: refs/heads/master@{#353649}
  • Loading branch information
newt authored and Commit bot committed Oct 13, 2015
1 parent 9248cc7 commit 2c650cd
Showing 1 changed file with 37 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,8 +22,10 @@
import java.util.GregorianCalendar;
import java.util.TimeZone;

// TODO(tkent): fix deprecation warnings crbug.com/537037
@SuppressWarnings("deprecation")
/**
* A dialog that allows the user to choose a date and time. Shown for HTML form input elements
* with type "datetime" or "datetime-local".
*/
public class DateTimePickerDialog extends AlertDialog implements OnClickListener,
OnDateChangedListener, OnTimeChangedListener {
private final DatePicker mDatePicker;
Expand Down Expand Up @@ -90,11 +92,10 @@ public DateTimePickerDialog(Context context,

mTimePicker = (TimePicker) view.findViewById(R.id.time_picker);
mTimePicker.setIs24HourView(is24HourView);
mTimePicker.setCurrentHour(hourOfDay);
mTimePicker.setCurrentMinute(minute);
setHour(mTimePicker, hourOfDay);
setMinute(mTimePicker, minute);
mTimePicker.setOnTimeChangedListener(this);
onTimeChanged(mTimePicker, mTimePicker.getCurrentHour(),
mTimePicker.getCurrentMinute());
onTimeChanged(mTimePicker, getHour(mTimePicker), getMinute(mTimePicker));
}

@Override
Expand All @@ -108,7 +109,7 @@ private void tryNotifyDateTimeSet() {
mTimePicker.clearFocus();
mCallBack.onDateTimeSet(mDatePicker, mTimePicker, mDatePicker.getYear(),
mDatePicker.getMonth(), mDatePicker.getDayOfMonth(),
mTimePicker.getCurrentHour(), mTimePicker.getCurrentMinute());
getHour(mTimePicker), getMinute(mTimePicker));
}
}

Expand All @@ -117,8 +118,7 @@ public void onDateChanged(DatePicker view, int year,
int month, int day) {
// Signal a time change so the max/min checks can be applied.
if (mTimePicker != null) {
onTimeChanged(mTimePicker, mTimePicker.getCurrentHour(),
mTimePicker.getCurrentMinute());
onTimeChanged(mTimePicker, getHour(mTimePicker), getMinute(mTimePicker));
}
}

Expand All @@ -127,22 +127,23 @@ public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
onTimeChangedInternal(mDatePicker.getYear(), mDatePicker.getMonth(),
mDatePicker.getDayOfMonth(), mTimePicker, mMinTimeMillis, mMaxTimeMillis);
}

@VisibleForTesting
public static void onTimeChangedInternal(int year, int month, int day, TimePicker picker,
long minTimeMillis, long maxTimeMillis) {
// Need to use a calendar object for UTC because we'd like to compare
// it with minimum/maximum values in UTC.
Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"));
calendar.clear();
calendar.set(year, month, day, picker.getCurrentHour(), picker.getCurrentMinute(), 0);
calendar.set(year, month, day, getHour(picker), getMinute(picker), 0);

if (calendar.getTimeInMillis() < minTimeMillis) {
calendar.setTimeInMillis(minTimeMillis);
} else if (calendar.getTimeInMillis() > maxTimeMillis) {
calendar.setTimeInMillis(maxTimeMillis);
}
picker.setCurrentHour(calendar.get(Calendar.HOUR_OF_DAY));
picker.setCurrentMinute(calendar.get(Calendar.MINUTE));
setHour(picker, calendar.get(Calendar.HOUR_OF_DAY));
setMinute(picker, calendar.get(Calendar.MINUTE));
}

/**
Expand All @@ -155,7 +156,29 @@ public static void onTimeChangedInternal(int year, int month, int day, TimePicke
public void updateDateTime(int year, int monthOfYear, int dayOfMonth,
int hourOfDay, int minutOfHour) {
mDatePicker.updateDate(year, monthOfYear, dayOfMonth);
mTimePicker.setCurrentHour(hourOfDay);
mTimePicker.setCurrentMinute(minutOfHour);
setHour(mTimePicker, hourOfDay);
setMinute(mTimePicker, minutOfHour);
}

// TODO(newt): delete these deprecated method calls once we support only API 23 and higher.

@SuppressWarnings("deprecation")
private static void setHour(TimePicker picker, int hour) {
picker.setCurrentHour(hour);
}

@SuppressWarnings("deprecation")
private static void setMinute(TimePicker picker, int minute) {
picker.setCurrentMinute(minute);
}

@SuppressWarnings("deprecation")
private static int getHour(TimePicker picker) {
return picker.getCurrentHour();
}

@SuppressWarnings("deprecation")
private static int getMinute(TimePicker picker) {
return picker.getCurrentMinute();
}
}

0 comments on commit 2c650cd

Please sign in to comment.