summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--res/values/attrs.xml5
-rw-r--r--res/xml/development_prefs.xml3
-rw-r--r--src/com/android/settings/DevelopmentSettings.java32
-rw-r--r--src/com/android/settings/DropDownPreference.java13
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) {