package org.softeg.slartus.forpdaplus.controls;/* * Created by slinkin on 16.04.2014. */ import android.content.Context; import android.preference.ListPreference; import android.preference.Preference; import android.text.TextUtils; import android.util.AttributeSet; import org.softeg.slartus.forpdacommon.ExtPreferences; import org.softeg.slartus.forpdaplus.App; import org.softeg.slartus.forpdaplus.classes.common.ArrayUtils; import org.softeg.slartus.forpdaplus.common.AppLog; import java.lang.reflect.Field; public class SummaryValueListPreference extends ListPreference { public SummaryValueListPreference(Context context, AttributeSet attrs) { super(context, attrs); setCurrentSummary(); } @Override protected void onDialogClosed(boolean positiveResult) { super.onDialogClosed(positiveResult); setCurrentSummary(); } @Override public void setKey(java.lang.String key) { super.setKey(key); setCurrentSummary(); } private CharSequence getTextValue(String value) { int ind = ArrayUtils.indexOf(value, this.getEntryValues()); if (ind == -1) return ""; return this.getEntries()[ind]; } private String getDefaultValue() { try { Field defaultField = Preference.class.getDeclaredField("mDefaultValue"); if (defaultField == null) return ""; defaultField.setAccessible(true); Object defaultValue = defaultField.get(this); if (defaultValue != null) return defaultValue.toString(); } catch (NoSuchFieldException | IllegalAccessException e) { e.printStackTrace(); } return ""; } private void setCurrentSummary() { try { String value = App.getInstance().getPreferences().getString(getKey(), null); if (TextUtils.isEmpty(value)) { Object defValue = ExtPreferences.getPreferenceDefaultValue(this); if (defValue == null) defValue = ""; int ind = findIndexOfValue(value); if (ind != -1) setValueIndex(ind); setSummary(getTextValue(defValue.toString())); return; } setSummary(getTextValue(value)); int ind = findIndexOfValue(value); if (ind != -1) setValueIndex(ind); } catch (Throwable ex) { AppLog.toastE(getContext(), ex); } } }