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

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

Issue 23623019: Support datalist for date/time input types on Android (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Used double to transfer value Created 7 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.content.browser.input; 5 package org.chromium.content.browser.input;
6 6
7 import android.app.AlertDialog; 7 import android.app.AlertDialog;
8 import android.app.DatePickerDialog; 8 import android.app.DatePickerDialog;
9 import android.app.TimePickerDialog; 9 import android.app.TimePickerDialog;
10 import android.app.DatePickerDialog.OnDateSetListener; 10 import android.app.DatePickerDialog.OnDateSetListener;
11 import android.app.TimePickerDialog.OnTimeSetListener; 11 import android.app.TimePickerDialog.OnTimeSetListener;
12 import android.content.Context; 12 import android.content.Context;
13 import android.content.DialogInterface; 13 import android.content.DialogInterface;
14 import android.content.DialogInterface.OnDismissListener; 14 import android.content.DialogInterface.OnDismissListener;
15 import android.text.TextUtils; 15 import android.text.TextUtils;
16 import android.text.format.DateFormat; 16 import android.text.format.DateFormat;
17 import android.text.format.Time; 17 import android.text.format.Time;
18 import android.view.View;
19 import android.widget.AdapterView;
18 import android.widget.DatePicker; 20 import android.widget.DatePicker;
21 import android.widget.ListView;
22 import android.widget.SimpleAdapter;
23 import android.widget.TextView;
19 import android.widget.TimePicker; 24 import android.widget.TimePicker;
20 25
21 import org.chromium.content.browser.input.DateTimePickerDialog.OnDateTimeSetList ener; 26 import org.chromium.content.browser.input.DateTimePickerDialog.OnDateTimeSetList ener;
22 import org.chromium.content.browser.input.MultiFieldTimePickerDialog.OnMultiFiel dTimeSetListener; 27 import org.chromium.content.browser.input.MultiFieldTimePickerDialog.OnMultiFiel dTimeSetListener;
23 import org.chromium.content.browser.input.TwoFieldDatePickerDialog; 28 import org.chromium.content.browser.input.TwoFieldDatePickerDialog;
24 import org.chromium.content.R; 29 import org.chromium.content.R;
25 30
31 import java.util.Arrays;
26 import java.text.ParseException; 32 import java.text.ParseException;
27 import java.text.SimpleDateFormat; 33 import java.text.SimpleDateFormat;
28 import java.util.Calendar; 34 import java.util.Calendar;
29 import java.util.Date; 35 import java.util.Date;
36 import java.util.List;
37 import java.util.Map;
38 import java.util.HashMap;
39 import java.util.TimeZone;
40 import java.util.ArrayList;
30 41
31 public class InputDialogContainer { 42 public class InputDialogContainer {
32 43
33 interface InputActionDelegate { 44 interface InputActionDelegate {
34 void cancelDateTimeDialog(); 45 void cancelDateTimeDialog();
35 void replaceDateTime(int dialogType, 46 void replaceDateTime(double value);
36 int year, int month, int day, int hour, int minute, int second, int milli, int week);
37 } 47 }
38 48
39 // Default values used in Time representations of selected date/time before formatting. 49 // Default values used in Time representations of selected date/time before formatting.
40 // They are never displayed to the user. 50 // They are never displayed to the user.
41 private static final int YEAR_DEFAULT = 1970; 51 private static final int YEAR_DEFAULT = 1970;
42 private static final int MONTH_DEFAULT = 0; 52 private static final int MONTH_DEFAULT = 0;
43 private static final int MONTHDAY_DEFAULT = 1; 53 private static final int MONTHDAY_DEFAULT = 1;
44 private static final int HOUR_DEFAULT = 0; 54 private static final int HOUR_DEFAULT = 0;
45 private static final int MINUTE_DEFAULT = 0; 55 private static final int MINUTE_DEFAULT = 0;
46 private static final int WEEK_DEFAULT = 0; 56 private static final int WEEK_DEFAULT = 0;
47 57
48 // Date formats as accepted by Time.format. 58 public static int sTextInputTypeDate;
49 private static final String HTML_DATE_FORMAT = "%Y-%m-%d"; 59 public static int sTextInputTypeDateTime;
50 private static final String HTML_TIME_FORMAT = "%H:%M"; 60 public static int sTextInputTypeDateTimeLocal;
51 // For datetime we always send selected time as UTC, as we have no timezone selector. 61 public static int sTextInputTypeMonth;
52 // This is consistent with other browsers. 62 public static int sTextInputTypeTime;
53 private static final String HTML_DATE_TIME_FORMAT = "%Y-%m-%dT%H:%MZ"; 63 public static int sTextInputTypeWeek;
54 private static final String HTML_DATE_TIME_LOCAL_FORMAT = "%Y-%m-%dT%H:%M";
55 private static final String HTML_MONTH_FORMAT = "%Y-%m";
56 private static final String HTML_WEEK_FORMAT = "%Y-%w";
57
58 private static int sTextInputTypeDate;
59 private static int sTextInputTypeDateTime;
60 private static int sTextInputTypeDateTimeLocal;
61 private static int sTextInputTypeMonth;
62 private static int sTextInputTypeTime;
63 private static int sTextInputTypeWeek;
64 64
65 private Context mContext; 65 private Context mContext;
66 66
67 // Prevents sending two notifications (from onClick and from onDismiss) 67 // Prevents sending two notifications (from onClick and from onDismiss)
68 private boolean mDialogAlreadyDismissed; 68 private boolean mDialogAlreadyDismissed;
69 69
70 private AlertDialog mDialog; 70 private AlertDialog mDialog;
71 private InputActionDelegate mInputActionDelegate; 71 private InputActionDelegate mInputActionDelegate;
72 72
73 static void initializeInputTypes(int textInputTypeDate, 73 static void initializeInputTypes(int textInputTypeDate,
(...skipping 12 matching lines...) Expand all
86 return type == sTextInputTypeDate || type == sTextInputTypeTime 86 return type == sTextInputTypeDate || type == sTextInputTypeTime
87 || type == sTextInputTypeDateTime || type == sTextInputTypeDateT imeLocal 87 || type == sTextInputTypeDateTime || type == sTextInputTypeDateT imeLocal
88 || type == sTextInputTypeMonth || type == sTextInputTypeWeek; 88 || type == sTextInputTypeMonth || type == sTextInputTypeWeek;
89 } 89 }
90 90
91 InputDialogContainer(Context context, InputActionDelegate inputActionDelegat e) { 91 InputDialogContainer(Context context, InputActionDelegate inputActionDelegat e) {
92 mContext = context; 92 mContext = context;
93 mInputActionDelegate = inputActionDelegate; 93 mInputActionDelegate = inputActionDelegate;
94 } 94 }
95 95
96 private Time normalizeTime(int year, int month, int monthDay, 96 private Time currentTime() {
97 int hour, int minute, int second) {
98 Time result = new Time(); 97 Time result = new Time();
99 if (year == 0 && month == 0 && monthDay == 0 && hour == 0 && 98 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
100 minute == 0 && second == 0) { 99 result.set(cal.get(Calendar.SECOND), cal.get(Calendar.MINUTE),
101 Calendar cal = Calendar.getInstance(); 100 cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.DATE),
102 result.set(cal.get(Calendar.SECOND), cal.get(Calendar.MINUTE), 101 cal.get(Calendar.MONTH), cal.get(Calendar.YEAR));
103 cal.get(Calendar.HOUR_OF_DAY), cal.get(Calendar.DATE),
104 cal.get(Calendar.MONTH), cal.get(Calendar.YEAR));
105 } else {
106 result.set(second, minute, hour, monthDay, month, year);
107 }
108 return result; 102 return result;
109 } 103 }
110 104
111 void showDialog(final int dialogType, int year, int month, int monthDay, 105 void showSuggestionDialog(final int dialogType,
112 int hour, int minute, int second, int milli, int week, 106 final double value,
113 double min, double max, double step) { 107 final double min, final double max, final double step,
114 if (isDialogShowing()) mDialog.dismiss(); 108 DateTimeSuggestion[] suggestions) {
109 ListView suggestionListView = new ListView(mContext);
110 final DateTimeSuggestionListAdapter adapter =
111 new DateTimeSuggestionListAdapter(mContext, Arrays.asList(suggestion s));
112 suggestionListView.setAdapter(adapter);
113 suggestionListView.setOnItemClickListener(new AdapterView.OnItemClickLis tener() {
114 @Override
115 public void onItemClick(AdapterView<?> parent, View view, int positi on, long id) {
116 if (position == adapter.getCount() - 1) {
117 dismissDialog();
118 showPickerDialog(dialogType, value, min, max, step);
119 } else {
120 double suggestionValue = adapter.getItem(position).value;
121 mInputActionDelegate.replaceDateTime(suggestionValue);
122 dismissDialog();
123 mDialogAlreadyDismissed = true;
124 }
125 }
126 });
115 127
128 int dialogTitleId = R.string.date_picker_dialog_title;
129 if (dialogType == sTextInputTypeTime) {
130 dialogTitleId = R.string.time_picker_dialog_title;
131 } else if (dialogType == sTextInputTypeDateTime ||
132 dialogType == sTextInputTypeDateTimeLocal) {
133 dialogTitleId = R.string.date_time_picker_dialog_title;
134 } else if (dialogType == sTextInputTypeMonth) {
135 dialogTitleId = R.string.month_picker_dialog_title;
136 } else if (dialogType == sTextInputTypeWeek) {
137 dialogTitleId = R.string.week_picker_dialog_title;
138 }
139
140 mDialog = new AlertDialog.Builder(mContext)
141 .setTitle(dialogTitleId)
142 .setView(suggestionListView)
143 .setOnDismissListener(new DialogInterface.OnDismissListener() {
144 @Override
145 public void onDismiss(DialogInterface dialog) {
146 if (mDialog == dialog && !mDialogAlreadyDismissed) {
147 mDialogAlreadyDismissed = true;
148 mInputActionDelegate.cancelDateTimeDialog();
149 }
150 }
151 })
152 .setNegativeButton(mContext.getText(android.R.string.cancel),
153 new DialogInterface.OnClickListener() {
154 @Override
155 public void onClick(DialogInterface dialog, int which) {
156 dismissDialog();
157 }
158 })
159 .create();
160
161 mDialogAlreadyDismissed = false;
162 mDialog.show();
163 }
164
165 void showDialog(final int type, final double value,
166 double min, double max, double step,
167 DateTimeSuggestion[] suggestions) {
168 // When the web page asks to show a dialog while there is one already op en,
169 // dismiss the old one.
170 dismissDialog();
171 if (suggestions == null) {
172 showPickerDialog(type, value, min, max, step);
173 } else {
174 showSuggestionDialog(type, value,
newt (away) 2013/11/04 17:35:55 can this fit on one line?
keishi 2013/11/05 07:23:42 Done.
175 min, max, step, suggestions);
176 }
177 }
178
179 void showPickerDialog(final int dialogType, final double value,
180 double min, double max, double step) {
116 // Java Date dialogs like longs but Blink prefers doubles.. 181 // Java Date dialogs like longs but Blink prefers doubles..
117 // Both parameters mean different things depending on the type 182 // Both parameters mean different things depending on the type
118 // For input type=month min and max come as number on months since 1970 183 // For input type=month min and max come as number on months since 1970
119 // For other types (including type=time) they are just milliseconds sinc e 1970 184 // For other types (including type=time) they are just milliseconds sinc e 1970
120 // In any case the cast here is safe given the above restrictions. 185 // In any case the cast here is safe given the above restrictions.
121 long minTime = (long) min; 186 long minTime = (long) min;
122 long maxTime = (long) max; 187 long maxTime = (long) max;
123 int stepTime = (int) step; 188 int stepTime = (int) step;
124 189
125 if (milli > 1000) { 190 Time time;
126 second += milli / 1000; 191 int milli = 0;
127 milli %= 1000; 192 if (Double.isNaN(value)) {
193 time = currentTime();
194 } else {
195 time = new Time();
196 time.set((long) value);
197 milli = (int) value % 1000;
newt (away) 2013/11/04 17:35:55 This should be: milli = ((long) value) % 1000
keishi 2013/11/05 07:23:42 Done.
128 } 198 }
129 Time time = normalizeTime(year, month, monthDay, hour, minute, second);
130 if (dialogType == sTextInputTypeDate) { 199 if (dialogType == sTextInputTypeDate) {
131 DatePickerDialog dialog = new DatePickerDialog(mContext, 200 DatePickerDialog dialog = new DatePickerDialog(mContext,
132 new DateListener(dialogType), time.year, time.month, time.mo nthDay); 201 new DateListener(dialogType), time.year, time.month, time.mo nthDay);
133 DateDialogNormalizer.normalize(dialog.getDatePicker(), dialog, 202 DateDialogNormalizer.normalize(dialog.getDatePicker(), dialog,
134 time.year, time.month, time.monthDay, 0, 0, minTime, maxTime ); 203 time.year, time.month, time.monthDay, 0, 0, minTime, maxTime );
135 204
136 dialog.setTitle(mContext.getText(R.string.date_picker_dialog_title)) ; 205 dialog.setTitle(mContext.getText(R.string.date_picker_dialog_title)) ;
137 mDialog = dialog; 206 mDialog = dialog;
138 } else if (dialogType == sTextInputTypeTime) { 207 } else if (dialogType == sTextInputTypeTime) {
139 mDialog = new MultiFieldTimePickerDialog( 208 mDialog = new MultiFieldTimePickerDialog(
140 mContext, 0 /* theme */ , 209 mContext, 0 /* theme */ ,
141 time.hour, time.minute, time.second, milli, 210 time.hour, time.minute, time.second, milli,
142 (int) minTime, (int) maxTime, stepTime, 211 (int) minTime, (int) maxTime, stepTime,
143 DateFormat.is24HourFormat(mContext), 212 DateFormat.is24HourFormat(mContext),
144 new FullTimeListener(dialogType)); 213 new FullTimeListener(dialogType));
145 } else if (dialogType == sTextInputTypeDateTime || 214 } else if (dialogType == sTextInputTypeDateTime ||
146 dialogType == sTextInputTypeDateTimeLocal) { 215 dialogType == sTextInputTypeDateTimeLocal) {
147 mDialog = new DateTimePickerDialog(mContext, 216 mDialog = new DateTimePickerDialog(mContext,
148 new DateTimeListener(dialogType), 217 new DateTimeListener(dialogType),
149 time.year, time.month, time.monthDay, 218 time.year, time.month, time.monthDay,
150 time.hour, time.minute, DateFormat.is24HourFormat(mContext), 219 time.hour, time.minute, DateFormat.is24HourFormat(mContext),
151 minTime, maxTime); 220 minTime, maxTime);
152 } else if (dialogType == sTextInputTypeMonth) { 221 } else if (dialogType == sTextInputTypeMonth) {
153 mDialog = new MonthPickerDialog(mContext, new MonthOrWeekListener(di alogType), 222 mDialog = new MonthPickerDialog(mContext, new MonthOrWeekListener(di alogType),
154 time.year, time.month, minTime, maxTime); 223 time.year, time.month, minTime, maxTime);
155 } else if (dialogType == sTextInputTypeWeek) { 224 } else if (dialogType == sTextInputTypeWeek) {
156 if (week == 0) { 225 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC"));
157 Calendar cal = Calendar.getInstance(); 226 if (value > 0) {
158 year = WeekPicker.getISOWeekYearForDate(cal); 227 cal.setTimeInMillis((long) value);
159 week = WeekPicker.getWeekForDate(cal);
160 } 228 }
229 int year = WeekPicker.getISOWeekYearForDate(cal);
230 int week = WeekPicker.getWeekForDate(cal);
161 mDialog = new WeekPickerDialog(mContext, new MonthOrWeekListener(dia logType), 231 mDialog = new WeekPickerDialog(mContext, new MonthOrWeekListener(dia logType),
162 year, week, minTime, maxTime); 232 year, week, minTime, maxTime);
163 } 233 }
164 234
165 mDialog.setButton(DialogInterface.BUTTON_POSITIVE, 235 mDialog.setButton(DialogInterface.BUTTON_POSITIVE,
166 mContext.getText(R.string.date_picker_dialog_set), 236 mContext.getText(R.string.date_picker_dialog_set),
167 (DialogInterface.OnClickListener) mDialog); 237 (DialogInterface.OnClickListener) mDialog);
168 238
169 mDialog.setButton(DialogInterface.BUTTON_NEGATIVE, 239 mDialog.setButton(DialogInterface.BUTTON_NEGATIVE,
170 mContext.getText(android.R.string.cancel), 240 mContext.getText(android.R.string.cancel),
171 (DialogInterface.OnClickListener) null); 241 (DialogInterface.OnClickListener) null);
172 242
173 mDialog.setButton(DialogInterface.BUTTON_NEUTRAL, 243 mDialog.setButton(DialogInterface.BUTTON_NEUTRAL,
174 mContext.getText(R.string.date_picker_dialog_clear), 244 mContext.getText(R.string.date_picker_dialog_clear),
175 new DialogInterface.OnClickListener() { 245 new DialogInterface.OnClickListener() {
176 @Override 246 @Override
177 public void onClick(DialogInterface dialog, int which) { 247 public void onClick(DialogInterface dialog, int which) {
178 mDialogAlreadyDismissed = true; 248 mDialogAlreadyDismissed = true;
179 mInputActionDelegate.replaceDateTime(dialogType, 0, 0, 0 , 0, 0, 0, 0, 0); 249 mInputActionDelegate.replaceDateTime(Double.NaN);
180 } 250 }
181 }); 251 });
182 252
183 mDialog.setOnDismissListener( 253 mDialog.setOnDismissListener(
184 new OnDismissListener() { 254 new OnDismissListener() {
185 public void onDismiss(final DialogInterface dialog) { 255 public void onDismiss(final DialogInterface dialog) {
186 if (!mDialogAlreadyDismissed) { 256 if (!mDialogAlreadyDismissed) {
187 mDialogAlreadyDismissed = true; 257 mDialogAlreadyDismissed = true;
188 mInputActionDelegate.cancelDateTimeDialog(); 258 mInputActionDelegate.cancelDateTimeDialog();
189 } 259 }
(...skipping 15 matching lines...) Expand all
205 private class DateListener implements OnDateSetListener { 275 private class DateListener implements OnDateSetListener {
206 private final int mDialogType; 276 private final int mDialogType;
207 277
208 DateListener(int dialogType) { 278 DateListener(int dialogType) {
209 mDialogType = dialogType; 279 mDialogType = dialogType;
210 } 280 }
211 281
212 @Override 282 @Override
213 public void onDateSet(DatePicker view, int year, int month, int monthDay ) { 283 public void onDateSet(DatePicker view, int year, int month, int monthDay ) {
214 if (!mDialogAlreadyDismissed) { 284 if (!mDialogAlreadyDismissed) {
215 setFieldDateTimeValue(mDialogType, 285 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")) ;
216 year, month, monthDay, 286 cal.clear();
217 HOUR_DEFAULT, MINUTE_DEFAULT, WEEK_DEFAULT, 287 cal.set(Calendar.YEAR, year);
218 HTML_DATE_FORMAT); 288 cal.set(Calendar.MONTH, month);
289 cal.set(Calendar.DAY_OF_MONTH, monthDay);
290 setFieldDateTimeValue((double) cal.getTimeInMillis());
219 } 291 }
220 } 292 }
221 } 293 }
222
223 private class TimeListener implements OnTimeSetListener {
224 private final int mDialogType;
225
226 TimeListener(int dialogType) {
227 mDialogType = dialogType;
228 }
229
230 @Override
231 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
232 if (!mDialogAlreadyDismissed) {
233 setFieldDateTimeValue(mDialogType,
234 YEAR_DEFAULT, MONTH_DEFAULT, MONTHDAY_DEFAULT,
235 hourOfDay, minute, WEEK_DEFAULT, HTML_TIME_FORMAT);
236 }
237 }
238 }
239 294
240 private class FullTimeListener implements OnMultiFieldTimeSetListener { 295 private class FullTimeListener implements OnMultiFieldTimeSetListener {
241 private final int mDialogType; 296 private final int mDialogType;
242 FullTimeListener(int dialogType) { 297 FullTimeListener(int dialogType) {
243 mDialogType = dialogType; 298 mDialogType = dialogType;
244 } 299 }
245 300
246 @Override 301 @Override
247 public void onTimeSet(int hourOfDay, int minute, int second, int milli) { 302 public void onTimeSet(int hourOfDay, int minute, int second, int milli) {
248 if (!mDialogAlreadyDismissed) { 303 if (!mDialogAlreadyDismissed) {
249 setFieldDateTimeValue(mDialogType, 304 setFieldDateTimeValue(
250 YEAR_DEFAULT, MONTH_DEFAULT, MONTHDAY_DEFAULT, 305 (double) ((hourOfDay * 60 + minute) * 60 + second) * 100 0 + milli);
251 hourOfDay, minute, second, milli, WEEK_DEFAULT, HTML_TIM E_FORMAT);
252 } 306 }
253 } 307 }
254 } 308 }
255 309
256 private class DateTimeListener implements OnDateTimeSetListener { 310 private class DateTimeListener implements OnDateTimeSetListener {
257 private final boolean mLocal; 311 private final boolean mLocal;
258 private final int mDialogType; 312 private final int mDialogType;
259 313
260 public DateTimeListener(int dialogType) { 314 public DateTimeListener(int dialogType) {
261 mLocal = dialogType == sTextInputTypeDateTimeLocal; 315 mLocal = dialogType == sTextInputTypeDateTimeLocal;
262 mDialogType = dialogType; 316 mDialogType = dialogType;
263 } 317 }
264 318
265 @Override 319 @Override
266 public void onDateTimeSet(DatePicker dateView, TimePicker timeView, 320 public void onDateTimeSet(DatePicker dateView, TimePicker timeView,
267 int year, int month, int monthDay, 321 int year, int month, int monthDay,
268 int hourOfDay, int minute) { 322 int hourOfDay, int minute) {
269 if (!mDialogAlreadyDismissed) { 323 if (!mDialogAlreadyDismissed) {
270 setFieldDateTimeValue(mDialogType, year, month, monthDay, 324 Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("UTC")) ;
271 hourOfDay, minute, WEEK_DEFAULT, 325 cal.clear();
272 mLocal ? HTML_DATE_TIME_LOCAL_FORMAT : HTML_DATE_TIME_FO RMAT); 326 cal.set(Calendar.YEAR, year);
327 cal.set(Calendar.MONTH, month);
328 cal.set(Calendar.DAY_OF_MONTH, monthDay);
329 cal.set(Calendar.HOUR_OF_DAY, hourOfDay);
330 cal.set(Calendar.MINUTE, minute);
331 setFieldDateTimeValue((double) cal.getTimeInMillis());
273 } 332 }
274 } 333 }
275 } 334 }
276 335
277 private class MonthOrWeekListener implements TwoFieldDatePickerDialog.OnValu eSetListener { 336 private class MonthOrWeekListener implements TwoFieldDatePickerDialog.OnValu eSetListener {
278 private final int mDialogType; 337 private final int mDialogType;
279 338
280 MonthOrWeekListener(int dialogType) { 339 MonthOrWeekListener(int dialogType) {
281 mDialogType = dialogType; 340 mDialogType = dialogType;
282 } 341 }
283 342
284 @Override 343 @Override
285 public void onValueSet(int year, int positionInYear) { 344 public void onValueSet(double value) {
286 if (!mDialogAlreadyDismissed) { 345 if (!mDialogAlreadyDismissed) {
287 if (mDialogType == sTextInputTypeMonth) { 346 setFieldDateTimeValue(value);
288 setFieldDateTimeValue(mDialogType, year, positionInYear, MON THDAY_DEFAULT,
289 HOUR_DEFAULT, MINUTE_DEFAULT, WEEK_DEFAULT,
290 HTML_MONTH_FORMAT);
291 } else {
292 setFieldDateTimeValue(mDialogType, year, MONTH_DEFAULT, MONT HDAY_DEFAULT,
293 HOUR_DEFAULT, MINUTE_DEFAULT, positionInYear, HTML_W EEK_FORMAT);
294 }
295 } 347 }
296 } 348 }
297 } 349 }
298 350
299 private void setFieldDateTimeValue(int dialogType, 351 private void setFieldDateTimeValue(double value) {
300 int year, int month, int monthDay, int hourOfDay,
301 int minute, int week, String dateFormat) {
302 // Prevents more than one callback being sent to the native 352 // Prevents more than one callback being sent to the native
303 // side when the dialog triggers multiple events. 353 // side when the dialog triggers multiple events.
304 mDialogAlreadyDismissed = true; 354 mDialogAlreadyDismissed = true;
305 355
306 mInputActionDelegate.replaceDateTime(dialogType, 356 mInputActionDelegate.replaceDateTime(value);
307 year, month, monthDay, hourOfDay, minute, 0 /* second */, 0 /* milli */, week);
308 }
309
310 private void setFieldDateTimeValue(int dialogType,
311 int year, int month, int monthDay, int hourOfDay,
312 int minute, int second, int milli, int week, String dateFormat) {
313 // Prevents more than one callback being sent to the native
314 // side when the dialog triggers multiple events.
315 mDialogAlreadyDismissed = true;
316
317 mInputActionDelegate.replaceDateTime(
318 dialogType, year, month, monthDay, hourOfDay, minute, second, milli, week);
319 } 357 }
320 } 358 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698