/*
* Copyright (c) 2012 Ngewi Fet <ngewif@gmail.com>
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.gnucash.android.ui.util.dialog;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Fragment for displaying a date picker dialog
* @author Ngewi Fet <ngewif@gmail.com>
*
*/
public class DatePickerDialogFragment extends DialogFragment {
/**
* Listener to notify of events in the dialog
*/
private OnDateSetListener mDateSetListener;
/**
* Date selected in the dialog or to which the dialog is initialized
*/
private Calendar mDate;
/**
* Default Constructor
* Is required for when the device is rotated while the dialog is open.
* If this constructor is not present, the app will crash
*/
public DatePickerDialogFragment() {
//nothing to see here, move along
}
/**
* Overloaded constructor
* @param callback Listener to notify when the date is set and the dialog is closed
* @param dateMillis Time in milliseconds to which to initialize the dialog
*/
public static DatePickerDialogFragment newInstance(OnDateSetListener callback, long dateMillis) {
DatePickerDialogFragment datePickerDialogFragment = new DatePickerDialogFragment();
datePickerDialogFragment.mDateSetListener = callback;
if (dateMillis > 0){
datePickerDialogFragment.mDate = new GregorianCalendar();
datePickerDialogFragment.mDate.setTimeInMillis(dateMillis);
}
return datePickerDialogFragment;
}
/**
* Creates and returns an Android {@link DatePickerDialog}
*/
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
Calendar cal = mDate == null ? Calendar.getInstance() : mDate;
return new DatePickerDialog(getActivity(),
mDateSetListener, cal.get(Calendar.YEAR),
cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
}
}