[1/2] OmniGears: move theme switch into styles
Change-Id: Ic8061b45bcb40111874ffec8b7922831524b6509
diff --git a/res/values/custom_arrays.xml b/res/values/custom_arrays.xml
index 8854837..c76ea80 100644
--- a/res/values/custom_arrays.xml
+++ b/res/values/custom_arrays.xml
@@ -304,4 +304,22 @@
<item>@string/daylight_header_provider</item>
<item>@string/static_header_provider</item>
</string-array>
+
+ <!-- Possible values for user theme in Display Settings.
+ Do not translate. -->
+ <string-array name="night_mode_entries" translatable="false">
+ <!-- Do not translate. -->
+ <item>@string/night_mode_no</item>
+ <!-- Do not translate. -->
+ <item>@string/night_mode_yes</item>
+ </string-array>
+
+ <!-- These values should match up with the MODE_NIGHT constants in UiModeManager.
+ Do not translate. -->
+ <string-array name="night_mode_values" translatable="false">
+ <!-- Do not translate. -->
+ <item>1</item>
+ <!-- Do not translate. -->
+ <item>2</item>
+ </string-array>
</resources>
diff --git a/res/values/custom_strings.xml b/res/values/custom_strings.xml
index b3e8742..7dfb371 100644
--- a/res/values/custom_strings.xml
+++ b/res/values/custom_strings.xml
@@ -423,4 +423,9 @@
<string name="lockscreen_hide_media_title">Disable media wallpaper</string>
<string name="lockscreen_hide_media_summary">Do not show media metadata as lock screen wallpaper</string>
+
+ <string name="night_mode_title">Theme</string>
+ <string name="night_mode_summary">%s</string>
+ <string name="night_mode_no">Light</string>
+ <string name="night_mode_yes">Dark</string>
</resources>
diff --git a/res/xml/style_settings.xml b/res/xml/style_settings.xml
index 5dde8ae..f1eab00 100644
--- a/res/xml/style_settings.xml
+++ b/res/xml/style_settings.xml
@@ -17,6 +17,14 @@
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:settings="http://schemas.android.com/apk/res/com.android.settings">
+ <ListPreference
+ android:key="night_mode"
+ android:title="@string/night_mode_title"
+ settings:keywords="@string/keywords_display_night_mode"
+ android:summary="@string/night_mode_summary"
+ android:entries="@array/night_mode_entries"
+ android:entryValues="@array/night_mode_values" />
+
<PreferenceCategory
android:key="category_statusbar"
android:title="@string/statusbar_title">
diff --git a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
index 6fa7b91..565d643 100644
--- a/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
+++ b/src/org/omnirom/omnigears/interfacesettings/StyleSettings.java
@@ -19,6 +19,7 @@
import android.app.Activity;
import android.app.AlertDialog;
+import android.app.UiModeManager;
import android.content.ContentResolver;
import android.content.Context;
import android.content.DialogInterface;
@@ -69,12 +70,14 @@
private static final String CUSTOM_HEADER_PROVIDER = "custom_header_provider";
private static final String CUSTOM_HEADER_BROWSE = "custom_header_browse";
private static final String STATUS_BAR_CUSTOM_HEADER = "status_bar_custom_header";
+ private static final String KEY_NIGHT_MODE = "night_mode";
private ListPreference mDaylightHeaderPack;
private SeekBarPreference mHeaderShadow;
private ListPreference mHeaderProvider;
private String mDaylightHeaderProvider;
private PreferenceScreen mHeaderBrowse;
+ private ListPreference mNightModePreference;
@Override
protected int getMetricsCategory() {
@@ -134,6 +137,15 @@
mHeaderBrowse = (PreferenceScreen) findPreference(CUSTOM_HEADER_BROWSE);
mHeaderBrowse.setEnabled(isBrowseHeaderAvailable());
+
+ mNightModePreference = (ListPreference) findPreference(KEY_NIGHT_MODE);
+ if (mNightModePreference != null) {
+ final UiModeManager uiManager = (UiModeManager) getSystemService(
+ Context.UI_MODE_SERVICE);
+ final int currentNightMode = uiManager.getNightMode();
+ mNightModePreference.setValue(String.valueOf(currentNightMode));
+ mNightModePreference.setOnPreferenceChangeListener(this);
+ }
}
@Override
@@ -156,6 +168,15 @@
int valueIndex = mHeaderProvider.findIndexOfValue(value);
mHeaderProvider.setSummary(mHeaderProvider.getEntries()[valueIndex]);
mDaylightHeaderPack.setEnabled(value.equals(mDaylightHeaderProvider));
+ } 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;
}