diff options
-rw-r--r-- | res/values/attrs.xml | 5 | ||||
-rw-r--r-- | res/xml/development_prefs.xml | 3 | ||||
-rw-r--r-- | src/com/android/settings/DevelopmentSettings.java | 32 | ||||
-rw-r--r-- | src/com/android/settings/DropDownPreference.java | 13 |
4 files changed, 36 insertions, 17 deletions
diff --git a/res/values/attrs.xml b/res/values/attrs.xml index 248cf92..4b607be 100644 --- a/res/values/attrs.xml +++ b/res/values/attrs.xml @@ -113,4 +113,9 @@ <!-- Confirm device credentials screen --> <attr name="confirmDeviceCredentialsSideMargin" format="dimension" /> <attr name="confirmDeviceCredentialsTopMargin" format="dimension" /> + + <declare-styleable name="DropDownPreference"> + <attr name="android:entries" /> + <attr name="android:entryValues" /> + </declare-styleable> </resources> diff --git a/res/xml/development_prefs.xml b/res/xml/development_prefs.xml index a24da21..fef2623 100644 --- a/res/xml/development_prefs.xml +++ b/res/xml/development_prefs.xml @@ -65,11 +65,10 @@ android:persistent="false" android:title="@string/system_ui_settings" /> - <ListPreference + <com.android.settings.DropDownPreference android:key="night_mode" android:title="@string/night_mode_title" android:summary="@string/night_mode_summary" - android:persistent="false" android:entries="@array/night_mode_entries" android:entryValues="@array/night_mode_values" /> diff --git a/src/com/android/settings/DevelopmentSettings.java b/src/com/android/settings/DevelopmentSettings.java index 4e9089d..0c527fa 100644 --- a/src/com/android/settings/DevelopmentSettings.java +++ b/src/com/android/settings/DevelopmentSettings.java @@ -265,7 +265,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment private SwitchPreference mShowAllANRs; - private ListPreference mNightModePreference; + private DropDownPreference mNightModePreference; private final ArrayList<Preference> mAllPrefs = new ArrayList<Preference>(); @@ -427,12 +427,26 @@ public class DevelopmentSettings extends SettingsPreferenceFragment removePreferenceForProduction(hdcpChecking); } - mNightModePreference = (ListPreference) findPreference(KEY_NIGHT_MODE); + mNightModePreference = (DropDownPreference) findPreference(KEY_NIGHT_MODE); final UiModeManager uiManager = (UiModeManager) getSystemService( Context.UI_MODE_SERVICE); final int currentNightMode = uiManager.getNightMode(); - mNightModePreference.setValue(String.valueOf(currentNightMode)); - mNightModePreference.setOnPreferenceChangeListener(this); + mNightModePreference.setSelectedValue(String.valueOf(currentNightMode)); + mNightModePreference.setCallback(new DropDownPreference.Callback() { + @Override + public boolean onItemSelected(int pos, Object newValue) { + try { + final int value = Integer.parseInt((String) newValue); + final UiModeManager uiManager = (UiModeManager) getSystemService( + Context.UI_MODE_SERVICE); + uiManager.setNightMode(value); + return true; + } catch (NumberFormatException e) { + Log.e(TAG, "could not persist night mode setting", e); + return false; + } + } + }); } private ListPreference addListPreference(String prefKey) { @@ -1808,16 +1822,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment } else if (preference == mTunerUiPref) { writeTweakUi(newValue); return true; - } else if (preference == mNightModePreference) { - try { - final int value = Integer.parseInt((String) newValue); - final UiModeManager uiManager = (UiModeManager) getSystemService( - Context.UI_MODE_SERVICE); - uiManager.setNightMode(value); - } catch (NumberFormatException e) { - Log.e(TAG, "could not persist night mode setting", e); - } - return true; } return false; } diff --git a/src/com/android/settings/DropDownPreference.java b/src/com/android/settings/DropDownPreference.java index 8f8ec78..89e67a5 100644 --- a/src/com/android/settings/DropDownPreference.java +++ b/src/com/android/settings/DropDownPreference.java @@ -17,14 +17,15 @@ package com.android.settings; import android.content.Context; +import android.content.res.TypedArray; import android.preference.Preference; import android.util.AttributeSet; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; -import android.widget.AdapterView.OnItemSelectedListener; import java.util.ArrayList; @@ -69,6 +70,16 @@ public class DropDownPreference extends Preference { return true; } }); + + // Support XML specification like ListPreferences do. + TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DropDownPreference); + CharSequence[] entries = a.getTextArray(R.styleable.DropDownPreference_android_entries); + CharSequence[] values = a.getTextArray(R.styleable.DropDownPreference_android_entryValues); + if (entries != null && values != null) { + for (int i= 0; i < entries.length; i++) { + addItem(entries[i].toString(), values[i]); + } + } } public void setDropDownWidth(int dimenResId) { |