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

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

Issue 15057004: Week picker for android (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed week_year. Added BaseDatePicker. 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/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);
}
}

Powered by Google App Engine
This is Rietveld 408576698