Update summary in TimePreference change listener

Ensures the summary is updated even if we change the time preference
programatically; also allows other places to stop the summary from being
updated by setting a new listener.
This commit is contained in:
Sam Whited 2014-12-15 17:46:32 -05:00
parent e2f50ab855
commit f9c783085d

View File

@ -3,6 +3,7 @@ package eu.siacs.conversations.ui;
import android.content.Context; import android.content.Context;
import android.content.res.TypedArray; import android.content.res.TypedArray;
import android.preference.DialogPreference; import android.preference.DialogPreference;
import android.preference.Preference;
import android.util.AttributeSet; import android.util.AttributeSet;
import android.view.View; import android.view.View;
import android.widget.TimePicker; import android.widget.TimePicker;
@ -11,12 +12,13 @@ import java.text.DateFormat;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
public class TimePreference extends DialogPreference { public class TimePreference extends DialogPreference implements Preference.OnPreferenceChangeListener {
private TimePicker picker = null; private TimePicker picker = null;
public final static long DEFAULT_VALUE = 0; public final static long DEFAULT_VALUE = 0;
public TimePreference(final Context context, final AttributeSet attrs) { public TimePreference(final Context context, final AttributeSet attrs) {
super(context, attrs, 0); super(context, attrs, 0);
this.setOnPreferenceChangeListener(this);
} }
protected void setTime(final long time) { protected void setTime(final long time) {
@ -25,8 +27,7 @@ public class TimePreference extends DialogPreference {
notifyChanged(); notifyChanged();
} }
protected void updateSummary() { protected void updateSummary(final long time) {
final long time = getPersistedLong(DEFAULT_VALUE);
final DateFormat dateFormat = android.text.format.DateFormat.getTimeFormat(getContext()); final DateFormat dateFormat = android.text.format.DateFormat.getTimeFormat(getContext());
final Date date = new Date(time); final Date date = new Date(time);
setSummary(dateFormat.format(date.getTime())); setSummary(dateFormat.format(date.getTime()));
@ -71,7 +72,6 @@ public class TimePreference extends DialogPreference {
} }
setTime(c.getTimeInMillis()); setTime(c.getTimeInMillis());
updateSummary();
} }
} }
@ -94,6 +94,12 @@ public class TimePreference extends DialogPreference {
} }
setTime(time); setTime(time);
updateSummary(); updateSummary(time);
}
@Override
public boolean onPreferenceChange(final Preference preference, final Object newValue) {
((TimePreference) preference).updateSummary((Long)newValue);
return true;
} }
} }