package org.wikipedia.settings;
import android.annotation.TargetApi;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Build;
import android.support.v7.preference.EditTextPreference;
import android.util.AttributeSet;
import org.wikipedia.R;
public class EditTextAutoSummarizePreference extends EditTextPreference {
protected static final int DEFAULT_STYLE_ATTR = R.attr.editTextAutoSummarizePreferenceStyle;
private static final int[] DEFAULT_STYLEABLE = R.styleable.EditTextAutoSummarizePreference;
private static final int DEFAULT_STYLE = R.style.EditTextAutoSummarizePreference;
private static final boolean DEFAULT_AUTO_SUMMARIZE = true;
private boolean autoSummarize = DEFAULT_AUTO_SUMMARIZE;
public EditTextAutoSummarizePreference(Context context) {
this(context, null);
}
public EditTextAutoSummarizePreference(Context context, AttributeSet attrs) {
this(context, attrs, DEFAULT_STYLE_ATTR);
}
public EditTextAutoSummarizePreference(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(attrs, defStyleAttr, DEFAULT_STYLE);
}
@TargetApi(Build.VERSION_CODES.LOLLIPOP)
public EditTextAutoSummarizePreference(Context context, AttributeSet attrs, int defStyleAttr,
int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(attrs, defStyleAttr, defStyleRes);
}
public boolean isAutoSummarize() {
return autoSummarize;
}
public void setAutoSummarize(boolean summarize) {
autoSummarize = summarize;
updateAutoSummary();
}
@Override
public void onAttached() {
super.onAttached();
updateAutoSummary();
}
@Override
protected boolean persistString(String value) {
boolean persistent = super.persistString(value);
updateAutoSummary(value);
return persistent;
}
protected boolean isSet() {
return shouldPersist() && getSharedPreferences().contains(getKey());
}
protected String getString(int id, Object... formatArgs) {
return getContext().getString(id, formatArgs);
}
protected void updateAutoSummary() {
updateAutoSummary(getPersistedString(null));
}
protected void updateAutoSummary(String value) {
if (isAutoSummarize()) {
setSummary(isSet() ? value : getNoValueSummary());
}
}
protected String getNoValueSummary() {
return getString(R.string.preference_summary_no_value);
}
private void setAttributes(AttributeSet attrs, int defStyleAttr, int defStyleRes) {
TypedArray array = getContext().obtainStyledAttributes(attrs, DEFAULT_STYLEABLE,
defStyleAttr, defStyleRes);
autoSummarize = array.getBoolean(R.styleable.EditTextAutoSummarizePreference_autoSummarize,
DEFAULT_AUTO_SUMMARIZE);
array.recycle();
}
private void init(AttributeSet attrs, int defStyleAttr, int defStyleRes) {
setAttributes(attrs, defStyleAttr, defStyleRes);
}
}