EventFieldEditorView.java revision 2591436971bad3050c85929c8e0c5a8d48111f88
1392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann/* 2392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * Copyright (C) 2010 The Android Open Source Project 3392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * 4392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * Licensed under the Apache License, Version 2.0 (the "License"); 5392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * you may not use this file except in compliance with the License. 6392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * You may obtain a copy of the License at 7392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * 8392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * http://www.apache.org/licenses/LICENSE-2.0 9392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * 10392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * Unless required by applicable law or agreed to in writing, software 11392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * distributed under the License is distributed on an "AS IS" BASIS, 12392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * See the License for the specific language governing permissions and 14392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * limitations under the License. 15392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann */ 16392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 1718ffaa2561cc7dd2e3ef81737e6537931c0a9a11Dmitri Plotnikovpackage com.android.contacts.editor; 18392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 19392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.R; 20392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.datepicker.DatePicker; 21392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.datepicker.DatePickerDialog; 22392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.datepicker.DatePickerDialog.OnDateSetListener; 234597c92d655d45447780b32c7572acef110b6ed1Dmitri Plotnikovimport com.android.contacts.model.AccountType.EditField; 244597c92d655d45447780b32c7572acef110b6ed1Dmitri Plotnikovimport com.android.contacts.model.AccountType.EventEditType; 25405671a7b42d97ebf7ae7c0eeb4721f881139673Daisuke Miyakawaimport com.android.contacts.model.DataKind; 26392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.model.EntityDelta; 27392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.model.EntityDelta.ValuesDelta; 28392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport com.android.contacts.util.DateUtils; 29392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 30392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.app.Dialog; 31392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.content.Context; 32392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.os.Bundle; 33392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.text.TextUtils; 34392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.util.AttributeSet; 35392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport android.view.View; 36135b44c8604e375699e22594e65f0daec14f5bbeDmitri Plotnikovimport android.widget.Button; 37392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 38392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport java.text.ParsePosition; 39392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport java.util.Calendar; 40392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannimport java.util.Date; 414b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmannimport java.util.Locale; 42392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 43392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann/** 44392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * Editor that allows editing Events using a {@link DatePickerDialog} 45392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann */ 46392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmannpublic class EventFieldEditorView extends LabeledEditorView { 47392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann /** 48392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * Exchange requires 8:00 for birthdays 49392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann */ 50392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann private final int DEFAULT_HOUR = 8; 51392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 52135b44c8604e375699e22594e65f0daec14f5bbeDmitri Plotnikov private Button mDateView; 53392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 54392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public EventFieldEditorView(Context context) { 55392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann super(context); 56392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 57392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 58392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public EventFieldEditorView(Context context, AttributeSet attrs) { 59392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann super(context, attrs); 60392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 61392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 62392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public EventFieldEditorView(Context context, AttributeSet attrs, int defStyle) { 63392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann super(context, attrs, defStyle); 64392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 65392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 6663ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan /** {@inheritDoc} */ 67392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 6863ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan protected void onFinishInflate() { 6963ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan super.onFinishInflate(); 7063ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan 7163ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan mDateView = (Button) findViewById(R.id.date_view); 7263ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan mDateView.setOnClickListener(new OnClickListener() { 7363ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan @Override 7463ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan public void onClick(View v) { 7563ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan showDialog(R.id.dialog_event_date_picker); 7663ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan } 7763ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan }); 78392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 79392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 80392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 81392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann protected void requestFocusForFirstEditField() { 8263ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan mDateView.requestFocus(); 83392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 84392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 85392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 86392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public void setEnabled(boolean enabled) { 87392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann super.setEnabled(enabled); 88392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 8963ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan mDateView.setEnabled(!isReadOnly() && enabled); 90392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 91392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 92392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 93392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public void setValues(DataKind kind, ValuesDelta entry, EntityDelta state, boolean readOnly, 94392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann ViewIdGenerator vig) { 95392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (kind.fieldList.size() != 1) throw new IllegalStateException("kind must have 1 field"); 96392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann super.setValues(kind, entry, state, readOnly, vig); 97392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 9863ffb90935d8aec295e4a8f62af6c77dafe1899fKatherine Kuan mDateView.setEnabled(isEnabled() && !readOnly); 99392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 100392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann rebuildDateView(); 101392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 102392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 103392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann private void rebuildDateView() { 104392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final EditField editField = getKind().fieldList.get(0); 105392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String column = editField.column; 106135b44c8604e375699e22594e65f0daec14f5bbeDmitri Plotnikov String data = DateUtils.formatDate(getContext(), getEntry().getAsString(column)); 107135b44c8604e375699e22594e65f0daec14f5bbeDmitri Plotnikov if (TextUtils.isEmpty(data)) { 108135b44c8604e375699e22594e65f0daec14f5bbeDmitri Plotnikov data = " "; 109135b44c8604e375699e22594e65f0daec14f5bbeDmitri Plotnikov } 110392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann mDateView.setText(data); 111392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 112392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 1132591436971bad3050c85929c8e0c5a8d48111f88Katherine Kuan @Override 1142591436971bad3050c85929c8e0c5a8d48111f88Katherine Kuan public boolean isEmpty() { 1151b22073590c1801c3e6c7bde2f4636632a049f6cKatherine Kuan return TextUtils.isEmpty(mDateView.getText()); 1161b22073590c1801c3e6c7bde2f4636632a049f6cKatherine Kuan } 1171b22073590c1801c3e6c7bde2f4636632a049f6cKatherine Kuan 118392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 119392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public Dialog createDialog(Bundle bundle) { 120392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (bundle == null) throw new IllegalArgumentException("bundle must not be null"); 121392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann int dialogId = bundle.getInt(DIALOG_ID_KEY); 122392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann switch (dialogId) { 123392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann case R.id.dialog_event_date_picker: 124392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return createDatePickerDialog(); 125392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann default: 126392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return super.createDialog(bundle); 127392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 128392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 129392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 130392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 131392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann protected EventEditType getType() { 132392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return (EventEditType) super.getType(); 133392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 134392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 135392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 136392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann protected void onLabelRebuilt() { 137392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // if we changed to a type that requires a year, ensure that it is actually set 138392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String column = getKind().fieldList.get(0).column; 139392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String oldValue = getEntry().getAsString(column); 140392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final DataKind kind = getKind(); 141392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 1424b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann final Calendar calendar = Calendar.getInstance(DateUtils.UTC_TIMEZONE, Locale.US); 143392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final int defaultYear = calendar.get(Calendar.YEAR); 144392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 145392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Check whether the year is optional 146392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final boolean isYearOptional = getType().isYearOptional(); 147392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 14817e6f9d6c0dab8bb02f4f7e2f9f43f8b8449f55aDmitri Plotnikov if (!isYearOptional && !TextUtils.isEmpty(oldValue)) { 149392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final ParsePosition position = new ParsePosition(0); 150392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final Date date2 = kind.dateFormatWithoutYear.parse(oldValue, position); 151392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 152392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Don't understand the date, lets not change it 153392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (date2 == null) return; 154392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 155392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // This value is missing the year. Add it now 156392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.setTime(date2); 157392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.set(defaultYear, calendar.get(Calendar.MONTH), 158392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.get(Calendar.DAY_OF_MONTH), DEFAULT_HOUR, 0, 0); 159392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 160392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann onFieldChanged(column, kind.dateFormatWithYear.format(calendar.getTime())); 161392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann rebuildDateView(); 162392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 163392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 164392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 165392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann /** 166392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * Prepare dialog for entering a date 167392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann */ 168392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann private Dialog createDatePickerDialog() { 169392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String column = getKind().fieldList.get(0).column; 170392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String oldValue = getEntry().getAsString(column); 171392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final DataKind kind = getKind(); 172392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 1734b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann final Calendar calendar = Calendar.getInstance(DateUtils.UTC_TIMEZONE, Locale.US); 174392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final int defaultYear = calendar.get(Calendar.YEAR); 175392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 176392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Check whether the year is optional 177392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final boolean isYearOptional = getType().isYearOptional(); 178392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 179392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final int oldYear, oldMonth, oldDay; 180392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (TextUtils.isEmpty(oldValue)) { 181392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Default to January first, 30 years ago 182392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear = defaultYear; 183392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldMonth = 0; 184392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldDay = 1; 185392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } else { 186392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final ParsePosition position = new ParsePosition(0); 187392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Try parsing with year 1882b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov Date date1 = kind.dateFormatWithYear.parse(oldValue, position); 1892b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov if (date1 == null) { 1902b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov // If that format does not fit, try guessing the right format 1912b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov date1 = DateUtils.parseDate(oldValue); 1922b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov } 193392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (date1 != null) { 194392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.setTime(date1); 195392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear = calendar.get(Calendar.YEAR); 196392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldMonth = calendar.get(Calendar.MONTH); 197392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldDay = calendar.get(Calendar.DAY_OF_MONTH); 198392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } else { 199392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final Date date2 = kind.dateFormatWithoutYear.parse(oldValue, position); 200392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Don't understand the date, lets not change it 201392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (date2 == null) return null; 202392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.setTime(date2); 203392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear = isYearOptional ? 0 : defaultYear; 204392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldMonth = calendar.get(Calendar.MONTH); 205392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldDay = calendar.get(Calendar.DAY_OF_MONTH); 206392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 207392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 208392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final OnDateSetListener callBack = new OnDateSetListener() { 209392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 210392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 211392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (year == 0 && !isYearOptional) throw new IllegalStateException(); 2124b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann final Calendar outCalendar = 2134b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann Calendar.getInstance(DateUtils.UTC_TIMEZONE, Locale.US); 214392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 215392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // If no year specified, set it to 1900. The format string will ignore that year 216392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // For formats other than Exchange, the time of the day is ignored 217392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann outCalendar.clear(); 218392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann outCalendar.set(year == 0 ? 1900 : year, monthOfYear, dayOfMonth, 219392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann DEFAULT_HOUR, 0, 0); 220392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 221392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String resultString; 222392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (year == 0) { 223392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann resultString = kind.dateFormatWithoutYear.format(outCalendar.getTime()); 224392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } else { 225392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann resultString = kind.dateFormatWithYear.format(outCalendar.getTime()); 226392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 227392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann onFieldChanged(column, resultString); 228392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann rebuildDateView(); 229392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 230392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann }; 231392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final DatePickerDialog resultDialog = new DatePickerDialog(getContext(), callBack, 232392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear, oldMonth, oldDay, isYearOptional); 233392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return resultDialog; 234392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 235392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann} 236