package com.lean56.andplug.fragment;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.v4.app.DialogFragment;
import android.text.TextUtils;
import android.widget.DatePicker;
import com.lean56.andplug.R;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Locale;
/**
* Date Picker Fragment
* offers date pick dialog
*
* @author chaochen@coding
* @author Charles
*/
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
public static final String PARAM_MAX_TODAY = "PARAM_MAX_TODAY";
public static final String PARAM_DATA = "PARAM_DATA";
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.CHINA);
// fuck XIAOMI : onDataSet will be called no matter which clicked in MIUI
private DateSet mDateSet;
@Override
public void onAttach(Activity activity) {
if (activity instanceof DateSet) {
mDateSet = (DateSet) activity;
}
super.onAttach(activity);
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
// get date amd max today from param
String dateString = getArguments().getString(PARAM_DATA);
if (TextUtils.isEmpty(dateString)) {
dateString = sdf.format(Calendar.getInstance().getTimeInMillis());
}
boolean maxToday = getArguments().getBoolean(PARAM_MAX_TODAY, false);
String[] date = dateString.split("-");
int year = Integer.valueOf(date[0]);
int month = Integer.valueOf(date[1]) - 1;
int day = Integer.valueOf(date[2]);
// init date pick dialog
final DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), this, year, month, day);
if (maxToday) {
datePickerDialog.getDatePicker().setMaxDate(Calendar.getInstance().getTimeInMillis());
}
if (getArguments().getBoolean("clear", false)) {
datePickerDialog.setButton(DialogInterface.BUTTON_NEUTRAL, getString(R.string.clear), new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
mDateSet.dateSetResult("", true);
dialog.cancel();
}
});
}
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(R.string.cancel), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.cancel();
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(R.string.confirm), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
DatePicker datePicker = datePickerDialog.getDatePicker();
dateSet(datePicker.getYear(), datePicker.getMonth(), datePicker.getDayOfMonth());
dialog.cancel();
}
});
return datePickerDialog;
}
// replace of onDateSet
private void dateSet(int year, int monthOfYear, int dayOfMonth) {
Calendar c = Calendar.getInstance();
c.set(year, monthOfYear, dayOfMonth);
if (mDateSet != null) {
mDateSet.dateSetResult(sdf.format(c.getTimeInMillis()), false);
}
}
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
// fuck XIAOMI again
}
public interface DateSet {
void dateSetResult(String date, boolean clear);
}
}