package com.realtrackandroid.views.dialogs;
import java.util.Calendar;
import java.util.Date;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.widget.DatePicker;
public class PickDateDialog extends DialogFragment implements DatePickerDialog.OnDateSetListener {
PickDateDialogListener callingActivity;
public PickDateDialog() {
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
callingActivity = (PickDateDialogListener) activity;
}
catch (ClassCastException e) {
throw (new ClassCastException("ERROR: " + activity.toString()
+ " MUST implement the PickDateDialogListener interface!!!"));
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// Use the current date as the default date in the picker
// get the start date
final Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
if (getArguments().containsKey("displaydate")) {
Long displayDate = getArguments().getLong("displaydate");
c.setTime(new Date(displayDate));
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
}
if (getArguments().containsKey("mindate")) {
Long minDate = getArguments().getLong("mindate");
datePickerDialog.getDatePicker().setMinDate(minDate);
}
if (getArguments().containsKey("maxdate")) {
Long maxDate = getArguments().getLong("maxdate");
datePickerDialog.getDatePicker().setMaxDate(maxDate);
}
datePickerDialog.getDatePicker().setCalendarViewShown(false); // Unpredictable Android crap
// again. Workaround for
// CalendarView bug that causes
// NPE:
// http://stackoverflow.com/a/18700331
return datePickerDialog;
}
@Override
public void onDateSet(DatePicker view, int year, int month, int day) {
callingActivity.setDate(String.format("%02d/%02d/%4d", (month + 1), day, year));
}
}