0
|
1 package de.robv.android.xposed.library.ui;
|
|
2
|
|
3 import android.content.Context;
|
|
4 import android.content.SharedPreferences;
|
|
5 import android.preference.ListPreference;
|
|
6 import android.util.AttributeSet;
|
|
7
|
|
8 public class IntegerListPreference extends ListPreference {
|
|
9 public IntegerListPreference(Context context) {
|
|
10 super(context);
|
|
11 }
|
|
12
|
|
13 public IntegerListPreference(Context context, AttributeSet attrs) {
|
|
14 super(context, attrs);
|
|
15 }
|
|
16
|
|
17 @Override
|
|
18 public void setValue(String value) {
|
|
19 super.setValue(value);
|
|
20 notifyChanged();
|
|
21 }
|
|
22
|
|
23 @Override
|
|
24 protected boolean persistString(String value) {
|
|
25 if (value == null)
|
|
26 return false;
|
|
27
|
|
28 return persistInt(getIntValue(value));
|
|
29 }
|
|
30
|
|
31 @Override
|
|
32 protected String getPersistedString(String defaultReturnValue) {
|
|
33 SharedPreferences pref = getPreferenceManager().getSharedPreferences();
|
|
34 String key = getKey();
|
|
35 if (!shouldPersist() || !pref.contains(key))
|
|
36 return defaultReturnValue;
|
|
37
|
|
38 return String.valueOf(pref.getInt(key, 0));
|
|
39 }
|
|
40
|
|
41 @Override
|
|
42 public int findIndexOfValue(String value) {
|
|
43 CharSequence[] entryValues = getEntryValues();
|
|
44 int intValue = getIntValue(value);
|
|
45 if (value != null && entryValues != null) {
|
|
46 for (int i = entryValues.length - 1; i >= 0; i--) {
|
|
47 if (getIntValue(entryValues[i].toString()) == intValue) {
|
|
48 return i;
|
|
49 }
|
|
50 }
|
|
51 }
|
|
52 return -1;
|
|
53 }
|
|
54
|
|
55 public static int getIntValue(String value) {
|
|
56 if (value == null)
|
|
57 return 0;
|
|
58
|
|
59 return (int)((value.startsWith("0x"))
|
|
60 ? Long.parseLong(value.substring(2), 16)
|
|
61 : Long.parseLong(value));
|
|
62 }
|
|
63 }
|