package org.tyszecki.rozkladpkp.widgets;
import java.util.Calendar;
import org.tyszecki.rozkladpkp.R;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.text.format.DateFormat;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.CheckBox;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;
public class ExtendedTimePicker extends AlertDialog implements
OnTimeChangedListener, OnClickListener {
public interface OnExtendedTimeChanged{
void onTimeSet(TimePicker view, int hourOfDay, int minute, boolean arrival);
};
private static final String HOUR = "hour";
private static final String MINUTE = "minute";
private static final String IS_ARRIVAL = "isArrival";
private final TimePicker picker;
private final CheckBox checkbox;
private final OnExtendedTimeChanged callback;
private final Calendar calendar;
private final java.text.DateFormat dateFormat;
int initialHourOfDay;
int initialMinute;
boolean arrival;
protected ExtendedTimePicker(Context context, OnExtendedTimeChanged callBack, int hourOfDay, int minute, boolean arrival) {
super(context,R.style.AboutDialog);
callback = callBack;
initialHourOfDay = hourOfDay;
initialMinute = minute;
dateFormat = DateFormat.getTimeFormat(context);
calendar = Calendar.getInstance();
updateTitle(initialHourOfDay, initialMinute);
setButton("Ustaw", this);
setButton2("Anuluj", (OnClickListener) null);
View view = View.inflate(new ContextThemeWrapper(context, R.style.AboutDialog),R.layout.extended_time_picker_dialog, null );
setView(view);
picker = (TimePicker)view.findViewById(R.id.timePicker);
checkbox = (CheckBox)view.findViewById(R.id.arrivalCheckbox);
checkbox.setChecked(arrival);
picker.setCurrentHour(initialHourOfDay);
picker.setCurrentMinute(initialMinute);
picker.setIs24HourView(true);
picker.setOnTimeChangedListener(this);
}
@Override
public void onClick(DialogInterface dialog, int which) {
if (callback != null) {
picker.clearFocus();
callback.onTimeSet(picker, picker.getCurrentHour(),
picker.getCurrentMinute(),checkbox.isChecked());
}
}
@Override
public void onTimeChanged(TimePicker arg0, int hourOfDay, int minute) {
updateTitle(hourOfDay, minute);
}
public void updateTime(int hourOfDay, int minutOfHour) {
picker.setCurrentHour(hourOfDay);
picker.setCurrentMinute(minutOfHour);
}
private void updateTitle(int hour, int minute) {
calendar.set(Calendar.HOUR_OF_DAY, hour);
calendar.set(Calendar.MINUTE, minute);
setTitle(dateFormat.format(calendar.getTime()));
}
@Override
public Bundle onSaveInstanceState() {
Bundle state = super.onSaveInstanceState();
state.putInt(HOUR, picker.getCurrentHour());
state.putInt(MINUTE, picker.getCurrentMinute());
state.putBoolean(IS_ARRIVAL, checkbox.isChecked());
return state;
}
@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
int hour = savedInstanceState.getInt(HOUR);
int minute = savedInstanceState.getInt(MINUTE);
picker.setCurrentHour(hour);
picker.setCurrentMinute(minute);
picker.setIs24HourView(true);
picker.setOnTimeChangedListener(this);
checkbox.setChecked(savedInstanceState.getBoolean(IS_ARRIVAL));
updateTitle(hour, minute);
}
}