From f37d70b58ebcffdc3d6e1e36eebeb84cbd87e32f Mon Sep 17 00:00:00 2001 From: Tim Balsfulland Date: Mon, 20 Apr 2020 15:29:41 +0200 Subject: [PATCH] automatically adapt to system theme added two new theme options: SYSTEM: dynamically switches between light and dark SYSTEM_AMOLED: dynamically switches between light and amoled reversed workaround for amoled themed preferences launch screen now always follows the system theme --- .../com/beemdevelopment/aegis/Preferences.java | 2 +- .../java/com/beemdevelopment/aegis/Theme.java | 4 +++- .../beemdevelopment/aegis/ui/AegisActivity.java | 13 +++++++++++++ .../aegis/ui/PreferencesActivity.java | 17 ----------------- app/src/main/res/values-v29/strings.xml | 5 +++++ app/src/main/res/values/arrays.xml | 2 ++ app/src/main/res/values/strings.xml | 2 ++ app/src/main/res/values/styles.xml | 6 +----- 8 files changed, 27 insertions(+), 24 deletions(-) create mode 100644 app/src/main/res/values-v29/strings.xml diff --git a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java index 79826273..217d66f9 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Preferences.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Preferences.java @@ -90,7 +90,7 @@ public class Preferences { } public Theme getCurrentTheme() { - return Theme.fromInteger(_prefs.getInt("pref_current_theme", 0)); + return Theme.fromInteger(_prefs.getInt("pref_current_theme", Theme.SYSTEM.ordinal())); } public void setCurrentTheme(Theme theme) { diff --git a/app/src/main/java/com/beemdevelopment/aegis/Theme.java b/app/src/main/java/com/beemdevelopment/aegis/Theme.java index 04dbe044..b5e5975d 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/Theme.java +++ b/app/src/main/java/com/beemdevelopment/aegis/Theme.java @@ -3,7 +3,9 @@ package com.beemdevelopment.aegis; public enum Theme { LIGHT, DARK, - AMOLED; + AMOLED, + SYSTEM, + SYSTEM_AMOLED; private static Theme[] _values; diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java index 2de3d3de..bc86ef18 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/AegisActivity.java @@ -89,6 +89,19 @@ public abstract class AegisActivity extends AppCompatActivity implements AegisAp } protected void setPreferredTheme(Theme theme) { + if (theme == Theme.SYSTEM || theme == Theme.SYSTEM_AMOLED) { + // set the theme based on the system theme + int currentNightMode = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK; + switch (currentNightMode) { + case Configuration.UI_MODE_NIGHT_NO: + theme = Theme.LIGHT; + break; + case Configuration.UI_MODE_NIGHT_YES: + theme = theme == Theme.SYSTEM_AMOLED ? Theme.AMOLED : Theme.DARK; + break; + } + } + _currentTheme = theme; switch (theme) { diff --git a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java index ffe6376c..94a29a86 100644 --- a/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java +++ b/app/src/main/java/com/beemdevelopment/aegis/ui/PreferencesActivity.java @@ -39,21 +39,4 @@ public class PreferencesActivity extends AegisActivity { outState.putParcelable("result", _fragment.getResult()); super.onSaveInstanceState(outState); } - - @Override - protected void setPreferredTheme(Theme theme) { - switch (theme) { - case LIGHT: - setTheme(R.style.AppTheme); - break; - - case DARK: - setTheme(R.style.AppTheme_Dark); - break; - - case AMOLED: - setTheme(R.style.AppTheme_TrueBlack_Preferences); - break; - } - } } diff --git a/app/src/main/res/values-v29/strings.xml b/app/src/main/res/values-v29/strings.xml new file mode 100644 index 00000000..b1c78db4 --- /dev/null +++ b/app/src/main/res/values-v29/strings.xml @@ -0,0 +1,5 @@ + + + System default + System default (AMOLED) + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml index 0530e7d6..ad91482c 100644 --- a/app/src/main/res/values/arrays.xml +++ b/app/src/main/res/values/arrays.xml @@ -22,6 +22,8 @@ @string/light_theme_title @string/dark_theme_title @string/amoled_theme_title + @string/system_theme_title + @string/system_amoled_theme_title diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 698da70f..55d6392d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -189,6 +189,8 @@ Dark theme Light theme AMOLED theme + Set by Battery Saver + Set by Battery Saver (AMOLED) Normal Compact Small diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index f44ca5cc..d094a5f0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -70,9 +70,7 @@ @android:color/white - @@ -123,9 +121,7 @@ @color/background_true_dark false - -