aboutsummaryrefslogtreecommitdiffstats
path: root/src/main/java/de/pixart/messenger/utils/ThemeHelper.java
diff options
context:
space:
mode:
authorChristian Schneppe <christian@pix-art.de>2019-09-11 20:27:07 +0200
committerChristian Schneppe <christian@pix-art.de>2019-09-11 20:27:07 +0200
commitbc272651e28bf374056d3ca51ba03fb31514d6e3 (patch)
treef6c2b511ed3b7fcf3f8710150ccb5bd6cb6ebc37 /src/main/java/de/pixart/messenger/utils/ThemeHelper.java
parent911b537f34eca7da671aa6da6409e03dcd514201 (diff)
introduce automatic theme based on the systems theme
Diffstat (limited to 'src/main/java/de/pixart/messenger/utils/ThemeHelper.java')
-rw-r--r--src/main/java/de/pixart/messenger/utils/ThemeHelper.java24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/main/java/de/pixart/messenger/utils/ThemeHelper.java b/src/main/java/de/pixart/messenger/utils/ThemeHelper.java
index d12a5c1d3..b83631623 100644
--- a/src/main/java/de/pixart/messenger/utils/ThemeHelper.java
+++ b/src/main/java/de/pixart/messenger/utils/ThemeHelper.java
@@ -31,6 +31,7 @@ package de.pixart.messenger.utils;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.preference.PreferenceManager;
@@ -48,7 +49,13 @@ public class ThemeHelper {
public static int find(Context context) {
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
final Resources resources = context.getResources();
- final boolean dark = sharedPreferences.getString(SettingsActivity.THEME, resources.getString(R.string.theme)).equals("dark");
+ final boolean auto = sharedPreferences.getString(SettingsActivity.THEME, resources.getString(R.string.theme)).equals("auto");
+ boolean dark;
+ if (auto) {
+ dark = nightMode(context);
+ } else {
+ dark = sharedPreferences.getString(SettingsActivity.THEME, resources.getString(R.string.theme)).equals("dark");
+ }
final String fontSize = sharedPreferences.getString("font_size", resources.getString(R.string.default_font_size));
switch (fontSize) {
case "medium":
@@ -60,6 +67,19 @@ public class ThemeHelper {
}
}
+ private static boolean nightMode(Context context) {
+ int nightModeFlags = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ switch (nightModeFlags) {
+ case Configuration.UI_MODE_NIGHT_YES:
+ return true;
+ case Configuration.UI_MODE_NIGHT_NO:
+ return false;
+ case Configuration.UI_MODE_NIGHT_UNDEFINED:
+ return false;
+ }
+ return false;
+ }
+
public static int findDialog(Context context) {
final SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
final Resources resources = context.getResources();
@@ -71,7 +91,7 @@ public class ThemeHelper {
case "large":
return dark ? R.style.ConversationsTheme_Dark_Dialog_Large : R.style.ConversationsTheme_Dialog_Large;
default:
- return dark ? R.style.ConversationsTheme_Dark_Dialog: R.style.ConversationsTheme_Dialog;
+ return dark ? R.style.ConversationsTheme_Dark_Dialog : R.style.ConversationsTheme_Dialog;
}
}