diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java
index 3eaae290e5..391679a882 100644
--- a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java
+++ b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java
@@ -42,15 +42,16 @@ public class FragmentDialogTheme extends FragmentDialogBase {
private void eval() {
int checkedId = rgTheme.getCheckedRadioButtonId();
boolean grey = (checkedId == R.id.rbThemeGrey);
+ boolean bw = (checkedId == R.id.rbThemeBlackOrWhite);
boolean solarized = (checkedId == R.id.rbThemeSolarized);
boolean you = (checkedId == R.id.rbThemeYou);
- boolean colored = (grey || solarized || you ||
+ boolean colored = (grey || bw || solarized || you ||
checkedId == R.id.rbThemeBlueOrange ||
checkedId == R.id.rbThemeRedGreen ||
checkedId == R.id.rbThemeYellowPurple);
int optionId = rgThemeOptions.getCheckedRadioButtonId();
- swReverse.setEnabled(colored && !grey && !solarized);
+ swReverse.setEnabled(colored && !grey && !bw && !solarized);
rgThemeOptions.setEnabled(colored);
for (int i = 0; i < rgThemeOptions.getChildCount(); i++)
@@ -58,7 +59,7 @@ public class FragmentDialogTheme extends FragmentDialogBase {
tvSystem.setEnabled(colored && optionId == R.id.rbThemeSystem);
- swBlack.setEnabled(colored && !grey && !solarized && optionId != R.id.rbThemeLight);
+ swBlack.setEnabled(colored && !grey && !bw && !solarized && optionId != R.id.rbThemeLight);
swHtmlLight.setEnabled(!colored || optionId != R.id.rbThemeLight);
swComposerLight.setEnabled(!colored || optionId != R.id.rbThemeLight);
@@ -134,7 +135,7 @@ public class FragmentDialogTheme extends FragmentDialogBase {
theme.startsWith("orange_blue") ||
theme.startsWith("purple_yellow") ||
theme.startsWith("green_red"));
- boolean dark = theme.endsWith("dark");
+ boolean dark = (theme.endsWith("dark") || theme.equals("black"));
boolean system = (theme.endsWith("system") || theme.endsWith("system_black"));
boolean black = (!"black".equals(theme) && theme.endsWith("black"));
@@ -206,10 +207,9 @@ public class FragmentDialogTheme extends FragmentDialogBase {
break;
case "black":
- rgTheme.check(R.id.rbThemeBlack);
- break;
case "white":
- rgTheme.check(R.id.rbThemeWhite);
+ case "bw_system":
+ rgTheme.check(R.id.rbThemeBlackOrWhite);
break;
case "black_and_white":
rgTheme.check(R.id.rbThemeBlackAndWhite);
@@ -307,10 +307,11 @@ public class FragmentDialogTheme extends FragmentDialogBase {
else
editor.putString("theme",
"solarized" + (dark ? "_dark" : "_light")).apply();
- } else if (checkedRadioButtonId == R.id.rbThemeBlack) {
- editor.putString("theme", "black").apply();
- } else if (checkedRadioButtonId == R.id.rbThemeWhite) {
- editor.putString("theme", "white").apply();
+ } else if (checkedRadioButtonId == R.id.rbThemeBlackOrWhite) {
+ if (system)
+ editor.putString("theme", "bw_system").apply();
+ else
+ editor.putString("theme", (dark ? "black" : "white")).apply();
} else if (checkedRadioButtonId == R.id.rbThemeBlackAndWhite) {
editor.putString("theme", "black_and_white").apply();
} else if (checkedRadioButtonId == R.id.rbThemeYou) {
@@ -513,6 +514,9 @@ public class FragmentDialogTheme extends FragmentDialogBase {
case "solarized_system":
return (night
? R.style.AppThemeSolarizedDark : R.style.AppThemeSolarizedLight);
+ case "bw_system":
+ return (night
+ ? R.style.AppThemeBlack : R.style.AppThemeWhite);
case "you_light":
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S)
diff --git a/app/src/main/res/layout-v31/dialog_theme.xml b/app/src/main/res/layout-v31/dialog_theme.xml
index 7b98a18571..3dd60fd11c 100644
--- a/app/src/main/res/layout-v31/dialog_theme.xml
+++ b/app/src/main/res/layout-v31/dialog_theme.xml
@@ -74,19 +74,11 @@
android:textAppearance="@style/TextAppearance.AppCompat.Medium" />
-
-
-
-
#93a1a1
+
#222
#ffffffff
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index e1f5a6ade6..148103d37d 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -292,6 +292,7 @@
Solarized
Black
White
+ Black or white
Black and white
Material You
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 5ce070d071..05774926ca 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -410,29 +410,28 @@
- @color/black
-
+
+