package com.ianhanniballake.contractiontimer.ui;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.DialogFragment;
import android.support.v4.content.LocalBroadcastManager;
import android.util.Log;
import android.widget.DatePicker;
import com.ianhanniballake.contractiontimer.BuildConfig;
import java.util.Calendar;
/**
* Provides a DialogFragment for selecting a date
*/
public class DatePickerDialogFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
/**
* Argument key for storing/retrieving the callback action
*/
public final static String CALLBACK_ACTION = "com.ianhanniballake.contractiontimer.CALLBACK_ACTION_ARGUMENT";
/**
* Argument key for storing/retrieving the date associated with this dialog
*/
public final static String DATE_ARGUMENT = "com.ianhanniballake.contractiontimer.Date";
/**
* Extra corresponding with the day of the month that was set
*/
public final static String DAY_OF_MONTH_EXTRA = "com.ianhanniballake.contractionTimer.DAY_OF_MONTH_EXTRA";
/**
* Extra corresponding with the month of the year that was set
*/
public final static String MONTH_OF_YEAR_EXTRA = "com.ianhanniballake.contractionTimer.MONTH_OF_YEAR_EXTRA";
/**
* Extra corresponding with the year that was set
*/
public final static String YEAR_EXTRA = "com.ianhanniballake.contractionTimer.YEAR_EXTRA";
private final static String TAG = DatePickerDialogFragment.class.getSimpleName();
@Override
@NonNull
public Dialog onCreateDialog(final Bundle savedInstanceState) {
final Calendar date = (Calendar) getArguments().getSerializable(DatePickerDialogFragment.DATE_ARGUMENT);
final DatePickerDialog dialog = new DatePickerDialog(getActivity(), this, date.get(Calendar.YEAR),
date.get(Calendar.MONTH), date.get(Calendar.DAY_OF_MONTH));
dialog.setOnDismissListener(this);
return dialog;
}
@Override
public void onDateSet(final DatePicker view, final int year, final int monthOfYear, final int dayOfMonth) {
final String action = getArguments().getString(DatePickerDialogFragment.CALLBACK_ACTION);
if (BuildConfig.DEBUG)
Log.d(TAG, "onDateSet: " + action);
final Intent broadcast = new Intent(action);
broadcast.putExtra(DatePickerDialogFragment.YEAR_EXTRA, year);
broadcast.putExtra(DatePickerDialogFragment.MONTH_OF_YEAR_EXTRA, monthOfYear);
broadcast.putExtra(DatePickerDialogFragment.DAY_OF_MONTH_EXTRA, dayOfMonth);
final LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(getActivity());
localBroadcastManager.sendBroadcast(broadcast);
}
}