Index: content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java |
diff --git a/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java b/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java |
index 11189c5ac8fff0fe37807e8fef8ed3fd549e438b..030b7881969e059bf32e032646be3ba5219f373b 100644 |
--- a/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java |
+++ b/content/public/android/java/src/org/chromium/content/browser/input/InputDialogContainer.java |
@@ -20,6 +20,7 @@ import android.widget.TimePicker; |
import org.chromium.content.browser.input.DateTimePickerDialog.OnDateTimeSetListener; |
import org.chromium.content.browser.input.MonthPickerDialog.OnMonthSetListener; |
+import org.chromium.content.browser.input.WeekPickerDialog.OnWeekSetListener; |
import org.chromium.content.R; |
import java.text.ParseException; |
@@ -32,7 +33,7 @@ public class InputDialogContainer { |
interface InputActionDelegate { |
void cancelDateTimeDialog(); |
void replaceDateTime(int dialogType, |
- int year, int month, int day, int hour, int minute, int second); |
+ int year, int month, int day, int hour, int minute, int second, int week); |
} |
// Default values used in Time representations of selected date/time before formatting. |
@@ -42,6 +43,7 @@ public class InputDialogContainer { |
private static final int MONTHDAY_DEFAULT = 1; |
private static final int HOUR_DEFAULT = 0; |
private static final int MINUTE_DEFAULT = 0; |
+ private static final int WEEK_DEFAULT = 0; |
// Date formats as accepted by Time.format. |
private static final String HTML_DATE_FORMAT = "%Y-%m-%d"; |
@@ -51,12 +53,14 @@ public class InputDialogContainer { |
private static final String HTML_DATE_TIME_FORMAT = "%Y-%m-%dT%H:%MZ"; |
private static final String HTML_DATE_TIME_LOCAL_FORMAT = "%Y-%m-%dT%H:%M"; |
private static final String HTML_MONTH_FORMAT = "%Y-%m"; |
+ private static final String HTML_WEEK_FORMAT = "%Y-%w"; |
private static int sTextInputTypeDate; |
private static int sTextInputTypeDateTime; |
private static int sTextInputTypeDateTimeLocal; |
private static int sTextInputTypeMonth; |
private static int sTextInputTypeTime; |
+ private static int sTextInputTypeWeek; |
private Context mContext; |
@@ -66,19 +70,22 @@ public class InputDialogContainer { |
private AlertDialog mDialog; |
private InputActionDelegate mInputActionDelegate; |
- static void initializeInputTypes(int textInputTypeDate, int textInputTypeDateTime, |
- int textInputTypeDateTimeLocal, int textInputTypeMonth, int textInputTypeTime) { |
+ static void initializeInputTypes(int textInputTypeDate, |
+ int textInputTypeDateTime, int textInputTypeDateTimeLocal, |
+ int textInputTypeMonth, int textInputTypeTime, |
+ int textInputTypeWeek) { |
sTextInputTypeDate = textInputTypeDate; |
sTextInputTypeDateTime = textInputTypeDateTime; |
sTextInputTypeDateTimeLocal = textInputTypeDateTimeLocal; |
sTextInputTypeMonth = textInputTypeMonth; |
sTextInputTypeTime = textInputTypeTime; |
+ sTextInputTypeWeek = textInputTypeWeek; |
} |
static boolean isDialogInputType(int type) { |
return type == sTextInputTypeDate || type == sTextInputTypeTime |
|| type == sTextInputTypeDateTime || type == sTextInputTypeDateTimeLocal |
- || type == sTextInputTypeMonth; |
+ || type == sTextInputTypeMonth || type == sTextInputTypeWeek; |
} |
InputDialogContainer(Context context, InputActionDelegate inputActionDelegate) { |
@@ -102,26 +109,36 @@ public class InputDialogContainer { |
} |
void showDialog(final int dialogType, int year, int month, int monthDay, |
- int hour, int minute, int second) { |
+ int hour, int minute, int second, int week) { |
if (isDialogShowing()) mDialog.dismiss(); |
- Time time = normalizeTime(year, month, monthDay, hour, minute, second); |
- if (dialogType == sTextInputTypeDate) { |
- mDialog = new DatePickerDialog(mContext, new DateListener(dialogType), |
- time.year, time.month, time.monthDay); |
- mDialog.setTitle(mContext.getText(R.string.date_picker_dialog_title)); |
- } else if (dialogType == sTextInputTypeTime) { |
- mDialog = new TimePickerDialog(mContext, new TimeListener(dialogType), |
- time.hour, time.minute, DateFormat.is24HourFormat(mContext)); |
- } else if (dialogType == sTextInputTypeDateTime || |
- dialogType == sTextInputTypeDateTimeLocal) { |
- mDialog = new DateTimePickerDialog(mContext, |
- new DateTimeListener(dialogType), |
- time.year, time.month, time.monthDay, |
- time.hour, time.minute, DateFormat.is24HourFormat(mContext)); |
- } else if (dialogType == sTextInputTypeMonth) { |
- mDialog = new MonthPickerDialog(mContext, new MonthListener(dialogType), |
- time.year, time.month); |
+ if (dialogType == sTextInputTypeWeek) { |
+ if (week == 0) { |
+ Calendar cal = Calendar.getInstance(); |
+ year = WeekPicker.getISOWeekYearForDate(cal); |
+ week = WeekPicker.getWeekForDate(cal); |
+ } |
+ mDialog = new WeekPickerDialog(mContext, new WeekListener(dialogType), |
+ year, week); |
+ } else { |
+ Time time = normalizeTime(year, month, monthDay, hour, minute, second); |
+ if (dialogType == sTextInputTypeDate) { |
+ mDialog = new DatePickerDialog(mContext, new DateListener(dialogType), |
+ time.year, time.month, time.monthDay); |
+ mDialog.setTitle(mContext.getText(R.string.date_picker_dialog_title)); |
+ } else if (dialogType == sTextInputTypeTime) { |
+ mDialog = new TimePickerDialog(mContext, new TimeListener(dialogType), |
+ time.hour, time.minute, DateFormat.is24HourFormat(mContext)); |
+ } else if (dialogType == sTextInputTypeDateTime || |
+ dialogType == sTextInputTypeDateTimeLocal) { |
+ mDialog = new DateTimePickerDialog(mContext, |
+ new DateTimeListener(dialogType), |
+ time.year, time.month, time.monthDay, |
+ time.hour, time.minute, DateFormat.is24HourFormat(mContext)); |
+ } else if (dialogType == sTextInputTypeMonth) { |
+ mDialog = new MonthPickerDialog(mContext, new MonthListener(dialogType), |
+ time.year, time.month); |
+ } |
} |
mDialog.setButton(DialogInterface.BUTTON_POSITIVE, |
@@ -144,7 +161,7 @@ public class InputDialogContainer { |
@Override |
public void onClick(DialogInterface dialog, int which) { |
mDialogAlreadyDismissed = true; |
- mInputActionDelegate.replaceDateTime(dialogType, 0, 0, 0, 0, 0, 0); |
+ mInputActionDelegate.replaceDateTime(dialogType, 0, 0, 0, 0, 0, 0, 0); |
} |
}); |
@@ -171,7 +188,8 @@ public class InputDialogContainer { |
public void onDateSet(DatePicker view, int year, int month, int monthDay) { |
if (!mDialogAlreadyDismissed) { |
setFieldDateTimeValue(mDialogType, |
- year, month, monthDay, HOUR_DEFAULT, MINUTE_DEFAULT, |
+ year, month, monthDay, |
+ HOUR_DEFAULT, MINUTE_DEFAULT, WEEK_DEFAULT, |
HTML_DATE_FORMAT); |
} |
} |
@@ -189,7 +207,7 @@ public class InputDialogContainer { |
if (!mDialogAlreadyDismissed) { |
setFieldDateTimeValue(mDialogType, |
YEAR_DEFAULT, MONTH_DEFAULT, MONTHDAY_DEFAULT, |
- hourOfDay, minute, HTML_TIME_FORMAT); |
+ hourOfDay, minute, WEEK_DEFAULT, HTML_TIME_FORMAT); |
} |
} |
} |
@@ -208,7 +226,8 @@ public class InputDialogContainer { |
int year, int month, int monthDay, |
int hourOfDay, int minute) { |
if (!mDialogAlreadyDismissed) { |
- setFieldDateTimeValue(mDialogType, year, month, monthDay, hourOfDay, minute, |
+ setFieldDateTimeValue(mDialogType, year, month, monthDay, |
+ hourOfDay, minute, WEEK_DEFAULT, |
mLocal ? HTML_DATE_TIME_LOCAL_FORMAT : HTML_DATE_TIME_FORMAT); |
} |
} |
@@ -225,19 +244,36 @@ public class InputDialogContainer { |
public void onMonthSet(MonthPicker view, int year, int month) { |
if (!mDialogAlreadyDismissed) { |
setFieldDateTimeValue(mDialogType, year, month, MONTHDAY_DEFAULT, |
- HOUR_DEFAULT, MINUTE_DEFAULT, HTML_MONTH_FORMAT); |
+ HOUR_DEFAULT, MINUTE_DEFAULT, WEEK_DEFAULT, |
+ HTML_MONTH_FORMAT); |
+ } |
+ } |
+ } |
+ |
+ private class WeekListener implements OnWeekSetListener { |
+ private final int mDialogType; |
+ |
+ WeekListener(int dialogType) { |
+ mDialogType = dialogType; |
+ } |
+ |
+ @Override |
+ public void onWeekSet(WeekPicker view, int year, int week) { |
+ if (!mDialogAlreadyDismissed) { |
+ setFieldDateTimeValue(mDialogType, YEAR_DEFAULT, MONTH_DEFAULT, MONTHDAY_DEFAULT, |
+ HOUR_DEFAULT, MINUTE_DEFAULT, week, HTML_WEEK_FORMAT); |
} |
} |
} |
private void setFieldDateTimeValue(int dialogType, |
int year, int month, int monthDay, int hourOfDay, |
- int minute, String dateFormat) { |
+ int minute, int week, String dateFormat) { |
// Prevents more than one callback being sent to the native |
// side when the dialog triggers multiple events. |
mDialogAlreadyDismissed = true; |
mInputActionDelegate.replaceDateTime(dialogType, |
- year, month, monthDay, hourOfDay, minute, 0 /* second */); |
+ year, month, monthDay, hourOfDay, minute, 0 /* second */, week); |
} |
} |