Mercurial > gmapzoominvert
diff XposedLibrary/src/de/robv/android/xposed/library/ui/IntegerListPreference.java @ 0:3da8a7a621cd
Initial commit
author | Brad Greco <brad@bgreco.net> |
---|---|
date | Mon, 20 Jan 2014 22:56:13 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/XposedLibrary/src/de/robv/android/xposed/library/ui/IntegerListPreference.java Mon Jan 20 22:56:13 2014 -0600 @@ -0,0 +1,63 @@ +package de.robv.android.xposed.library.ui; + +import android.content.Context; +import android.content.SharedPreferences; +import android.preference.ListPreference; +import android.util.AttributeSet; + +public class IntegerListPreference extends ListPreference { + public IntegerListPreference(Context context) { + super(context); + } + + public IntegerListPreference(Context context, AttributeSet attrs) { + super(context, attrs); + } + + @Override + public void setValue(String value) { + super.setValue(value); + notifyChanged(); + } + + @Override + protected boolean persistString(String value) { + if (value == null) + return false; + + return persistInt(getIntValue(value)); + } + + @Override + protected String getPersistedString(String defaultReturnValue) { + SharedPreferences pref = getPreferenceManager().getSharedPreferences(); + String key = getKey(); + if (!shouldPersist() || !pref.contains(key)) + return defaultReturnValue; + + return String.valueOf(pref.getInt(key, 0)); + } + + @Override + public int findIndexOfValue(String value) { + CharSequence[] entryValues = getEntryValues(); + int intValue = getIntValue(value); + if (value != null && entryValues != null) { + for (int i = entryValues.length - 1; i >= 0; i--) { + if (getIntValue(entryValues[i].toString()) == intValue) { + return i; + } + } + } + return -1; + } + + public static int getIntValue(String value) { + if (value == null) + return 0; + + return (int)((value.startsWith("0x")) + ? Long.parseLong(value.substring(2), 16) + : Long.parseLong(value)); + } +}