EventFieldEditorView.java revision 63ffb90935d8aec295e4a8f62af6c77dafe1899f
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 113392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 114392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public Dialog createDialog(Bundle bundle) { 115392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (bundle == null) throw new IllegalArgumentException("bundle must not be null"); 116392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann int dialogId = bundle.getInt(DIALOG_ID_KEY); 117392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann switch (dialogId) { 118392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann case R.id.dialog_event_date_picker: 119392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return createDatePickerDialog(); 120392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann default: 121392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return super.createDialog(bundle); 122392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 123392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 124392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 125392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 126392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann protected EventEditType getType() { 127392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return (EventEditType) super.getType(); 128392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 129392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 130392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 131392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann protected void onLabelRebuilt() { 132392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // if we changed to a type that requires a year, ensure that it is actually set 133392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String column = getKind().fieldList.get(0).column; 134392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String oldValue = getEntry().getAsString(column); 135392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final DataKind kind = getKind(); 136392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 1374b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann final Calendar calendar = Calendar.getInstance(DateUtils.UTC_TIMEZONE, Locale.US); 138392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final int defaultYear = calendar.get(Calendar.YEAR); 139392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 140392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Check whether the year is optional 141392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final boolean isYearOptional = getType().isYearOptional(); 142392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 14317e6f9d6c0dab8bb02f4f7e2f9f43f8b8449f55aDmitri Plotnikov if (!isYearOptional && !TextUtils.isEmpty(oldValue)) { 144392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final ParsePosition position = new ParsePosition(0); 145392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final Date date2 = kind.dateFormatWithoutYear.parse(oldValue, position); 146392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 147392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Don't understand the date, lets not change it 148392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (date2 == null) return; 149392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 150392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // This value is missing the year. Add it now 151392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.setTime(date2); 152392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.set(defaultYear, calendar.get(Calendar.MONTH), 153392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.get(Calendar.DAY_OF_MONTH), DEFAULT_HOUR, 0, 0); 154392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 155392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann onFieldChanged(column, kind.dateFormatWithYear.format(calendar.getTime())); 156392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann rebuildDateView(); 157392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 158392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 159392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 160392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann /** 161392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann * Prepare dialog for entering a date 162392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann */ 163392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann private Dialog createDatePickerDialog() { 164392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String column = getKind().fieldList.get(0).column; 165392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String oldValue = getEntry().getAsString(column); 166392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final DataKind kind = getKind(); 167392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 1684b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann final Calendar calendar = Calendar.getInstance(DateUtils.UTC_TIMEZONE, Locale.US); 169392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final int defaultYear = calendar.get(Calendar.YEAR); 170392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 171392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Check whether the year is optional 172392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final boolean isYearOptional = getType().isYearOptional(); 173392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 174392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final int oldYear, oldMonth, oldDay; 175392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (TextUtils.isEmpty(oldValue)) { 176392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Default to January first, 30 years ago 177392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear = defaultYear; 178392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldMonth = 0; 179392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldDay = 1; 180392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } else { 181392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final ParsePosition position = new ParsePosition(0); 182392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Try parsing with year 1832b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov Date date1 = kind.dateFormatWithYear.parse(oldValue, position); 1842b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov if (date1 == null) { 1852b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov // If that format does not fit, try guessing the right format 1862b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov date1 = DateUtils.parseDate(oldValue); 1872b3f95cc12b76523410782d4178562ce241410efDmitri Plotnikov } 188392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (date1 != null) { 189392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.setTime(date1); 190392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear = calendar.get(Calendar.YEAR); 191392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldMonth = calendar.get(Calendar.MONTH); 192392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldDay = calendar.get(Calendar.DAY_OF_MONTH); 193392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } else { 194392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final Date date2 = kind.dateFormatWithoutYear.parse(oldValue, position); 195392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // Don't understand the date, lets not change it 196392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (date2 == null) return null; 197392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann calendar.setTime(date2); 198392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear = isYearOptional ? 0 : defaultYear; 199392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldMonth = calendar.get(Calendar.MONTH); 200392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldDay = calendar.get(Calendar.DAY_OF_MONTH); 201392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 202392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 203392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final OnDateSetListener callBack = new OnDateSetListener() { 204392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann @Override 205392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { 206392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (year == 0 && !isYearOptional) throw new IllegalStateException(); 2074b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann final Calendar outCalendar = 2084b648485346462dc26c3a469caeae8589f5fbd58Daniel Lehmann Calendar.getInstance(DateUtils.UTC_TIMEZONE, Locale.US); 209392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 210392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // If no year specified, set it to 1900. The format string will ignore that year 211392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann // For formats other than Exchange, the time of the day is ignored 212392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann outCalendar.clear(); 213392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann outCalendar.set(year == 0 ? 1900 : year, monthOfYear, dayOfMonth, 214392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann DEFAULT_HOUR, 0, 0); 215392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann 216392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final String resultString; 217392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann if (year == 0) { 218392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann resultString = kind.dateFormatWithoutYear.format(outCalendar.getTime()); 219392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } else { 220392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann resultString = kind.dateFormatWithYear.format(outCalendar.getTime()); 221392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 222392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann onFieldChanged(column, resultString); 223392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann rebuildDateView(); 224392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 225392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann }; 226392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann final DatePickerDialog resultDialog = new DatePickerDialog(getContext(), callBack, 227392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann oldYear, oldMonth, oldDay, isYearOptional); 228392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann return resultDialog; 229392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann } 230392ccec3b56e8074a5a028af28106134b39f64bcDaniel Lehmann} 231