package com.jdroid.android.date;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v7.app.AlertDialog;
import android.text.format.DateFormat;
import android.view.View;
import android.widget.TimePicker;
import com.jdroid.android.R;
import com.jdroid.android.dialog.AbstractDialogFragment;
import com.jdroid.java.date.DateUtils;
import java.util.Date;
public class TimePickerDialogFragment extends AbstractDialogFragment {
private static final String DEFAULT_TIME_EXTRA = "defaultTime";
public static void show(Fragment targetFragment, Date defaultTime) {
TimePickerDialogFragment.show(targetFragment, defaultTime, 1);
}
public static void show(Fragment targetFragment, Date defaultTime, int requestCode) {
FragmentManager fm = targetFragment.getActivity().getSupportFragmentManager();
TimePickerDialogFragment fragment = new TimePickerDialogFragment();
Bundle bundle = new Bundle();
bundle.putSerializable(DEFAULT_TIME_EXTRA, defaultTime);
fragment.setArguments(bundle);
fragment.setTargetFragment(targetFragment, requestCode);
fragment.show(fm, TimePickerDialogFragment.class.getSimpleName());
}
private Date defaultTime;
public interface OnTimeSetListener {
public void onTimeSet(Date time, int requestCode);
}
/**
* @see com.jdroid.android.dialog.AbstractDialogFragment#onCreate(android.os.Bundle)
*/
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
defaultTime = getArgument(DEFAULT_TIME_EXTRA);
}
@NonNull
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(getActivity());
View view = inflate(R.layout.jdroid_time_picker_dialog_fragment);
dialogBuilder.setView(view);
final TimePicker timePicker = (TimePicker)view.findViewById(R.id.timePicker);
timePicker.setIs24HourView(DateFormat.is24HourFormat(getActivity()));
timePicker.setCurrentHour(DateUtils.getHour(defaultTime, true));
timePicker.setCurrentMinute(DateUtils.getMinute(defaultTime));
dialogBuilder.setPositiveButton(getString(R.string.jdroid_ok), new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int whichButton) {
Date time = DateUtils.getTime(timePicker.getCurrentHour(), timePicker.getCurrentMinute());
int requestCode = getTargetRequestCode();
((OnTimeSetListener)getTargetFragment()).onTimeSet(time, requestCode);
}
});
dialogBuilder.setNegativeButton(getString(R.string.jdroid_cancel), null);
return dialogBuilder.create();
}
}