package com.ichi2.preferences;
import android.content.Context;
import android.preference.DialogPreference;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TimePicker;
public class TimePreference extends DialogPreference {
public static final String DEFAULT_VALUE = "00:00";
private TimePicker timePicker;
private int hours;
private int minutes;
public TimePreference(Context context, AttributeSet attrs) {
super(context, attrs);
setPositiveButtonText(android.R.string.ok);
setNegativeButtonText(android.R.string.cancel);
}
@Override
protected View onCreateDialogView() {
timePicker = new TimePicker(getContext());
timePicker.setIs24HourView(true);
return timePicker;
}
@Override
protected void onSetInitialValue(boolean restorePersistedValue, Object defaultValue) {
String time;
if (restorePersistedValue) {
if (null == defaultValue) {
time = getPersistedString(DEFAULT_VALUE);
} else {
time = getPersistedString(defaultValue.toString());
}
} else {
time = defaultValue.toString();
}
hours = parseHours(time);
minutes = parseMinutes(time);
}
@Override
protected void onBindDialogView(View view) {
super.onBindDialogView(view);
timePicker.setCurrentHour(hours);
timePicker.setCurrentMinute(minutes);
}
@Override
protected void onDialogClosed(boolean positiveResult) {
super.onDialogClosed(positiveResult);
if (positiveResult) {
hours = timePicker.getCurrentHour();
minutes = timePicker.getCurrentMinute();
final String time = String.format("%1$02d:%2$02d", hours, minutes);
if (callChangeListener(time)) {
persistString(time);
}
}
}
public static int parseHours(String time) {
return (Integer.parseInt(time.split(":")[0]));
}
public static int parseMinutes(String time) {
return (Integer.parseInt(time.split(":")[1]));
}
}