diff --git a/app/src/main/java/eu/faircode/email/ActivityBase.java b/app/src/main/java/eu/faircode/email/ActivityBase.java index 02e77b87b5..a9ceacde9e 100644 --- a/app/src/main/java/eu/faircode/email/ActivityBase.java +++ b/app/src/main/java/eu/faircode/email/ActivityBase.java @@ -83,27 +83,53 @@ abstract class ActivityBase extends AppCompatActivity implements SharedPreferenc if (!this.getClass().equals(ActivityMain.class)) { String theme = prefs.getString("theme", "light"); + int uiMode = getResources().getConfiguration().uiMode; + Log.i("UI mode=" + uiMode); - if ("dark".equals(theme)) - setTheme(R.style.AppThemeBlueOrangeDark); - else if ("black".equals(theme)) - setTheme(R.style.AppThemeBlack); - else if ("grey_light".equals(theme)) - setTheme(R.style.AppThemeGreySteelBlueLight); - else if ("grey_dark".equals(theme)) - setTheme(R.style.AppThemeGreySteelBlueDark); - else if ("system".equals(theme)) { - int uiMode = getResources().getConfiguration().uiMode; - Log.i("UI mode=" + uiMode); - if ((uiMode & Configuration.UI_MODE_NIGHT_YES) != 0) - setTheme(R.style.AppThemeBlack); - } else if ("grey_system".equals(theme)) { - int uiMode = getResources().getConfiguration().uiMode; - Log.i("UI mode=" + uiMode); - if ((uiMode & Configuration.UI_MODE_NIGHT_YES) != 0) - setTheme(R.style.AppThemeGreySteelBlueDark); - else + switch (theme) { + case "light": + case "blue_orange_light": + setTheme(R.style.AppThemeBlueOrangeLight); + break; + case "yellow_purple_light": + setTheme(R.style.AppThemeYellowPurpleLight); + break; + case "green_red_light": + setTheme(R.style.AppThemeGreenRedLight); + break; + case "grey_light": setTheme(R.style.AppThemeGreySteelBlueLight); + break; + + case "dark": + case "blue_orange_dark": + setTheme(R.style.AppThemeBlueOrangeDark); + break; + case "yellow_purple_dark": + setTheme(R.style.AppThemeYellowPurpleDark); + break; + case "green_red_dark": + setTheme(R.style.AppThemeGreenRedDark); + break; + case "grey_dark": + setTheme(R.style.AppThemeGreySteelBlueDark); + break; + + case "black": + setTheme(R.style.AppThemeBlack); + break; + case "system": + if ((uiMode & Configuration.UI_MODE_NIGHT_YES) != 0) + setTheme(R.style.AppThemeBlueOrangeDark); + else + setTheme(R.style.AppThemeBlueOrangeLight); + break; + case "grey_system": + if ((uiMode & Configuration.UI_MODE_NIGHT_YES) != 0) + setTheme(R.style.AppThemeGreySteelBlueDark); + else + setTheme(R.style.AppThemeGreySteelBlueLight); + break; } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java index e82eaaff48..928c089a95 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsDisplay.java @@ -667,26 +667,43 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer String theme = prefs.getString("theme", "light"); switch (theme) { - case "dark": - rgTheme.check(R.id.rbThemeDark); + case "light": + case "blue_orange_light": + rgTheme.check(R.id.rbThemeBlueOrangeLight); break; - case "black": - rgTheme.check(R.id.rbThemeBlack); + case "yellow_purple_light": + rgTheme.check(R.id.rbThemeYellowPurpleLight); + break; + case "green_red_light": + rgTheme.check(R.id.rbThemeGreenRedLight); break; case "grey_light": rgTheme.check(R.id.rbThemeGreyLight); break; + + case "dark": + case "blue_orange_dark": + rgTheme.check(R.id.rbThemeBlueOrangeDark); + break; + case "yellow_purple_dark": + rgTheme.check(R.id.rbThemeYellowPurpleDark); + break; + case "green_red_dark": + rgTheme.check(R.id.rbThemeGreenRedDark); + break; case "grey_dark": rgTheme.check(R.id.rbThemeGreyDark); break; + + case "black": + rgTheme.check(R.id.rbThemeBlack); + break; case "system": rgTheme.check(R.id.rbThemeSystem); break; case "grey_system": rgTheme.check(R.id.rbThemeGreySystem); break; - default: - rgTheme.check(R.id.rbThemeLight); } rgTheme.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @@ -697,21 +714,35 @@ public class FragmentOptionsDisplay extends FragmentBase implements SharedPrefer ContactInfo.clearCache(); switch (checkedId) { - case R.id.rbThemeLight: - prefs.edit().putString("theme", "light").apply(); + case R.id.rbThemeBlueOrangeLight: + prefs.edit().putString("theme", "blue_orange_light").apply(); break; - case R.id.rbThemeDark: - prefs.edit().putString("theme", "dark").apply(); + case R.id.rbThemeYellowPurpleLight: + prefs.edit().putString("theme", "yellow_purple_light").apply(); break; - case R.id.rbThemeBlack: - prefs.edit().putString("theme", "black").apply(); + case R.id.rbThemeGreenRedLight: + prefs.edit().putString("theme", "green_red_light").apply(); break; case R.id.rbThemeGreyLight: prefs.edit().putString("theme", "grey_light").apply(); break; + + case R.id.rbThemeBlueOrangeDark: + prefs.edit().putString("theme", "blue_orange_dark").apply(); + break; + case R.id.rbThemeYellowPurpleDark: + prefs.edit().putString("theme", "yellow_purple_dark").apply(); + break; + case R.id.rbThemeGreenRedDark: + prefs.edit().putString("theme", "green_red_dark").apply(); + break; case R.id.rbThemeGreyDark: prefs.edit().putString("theme", "grey_dark").apply(); break; + + case R.id.rbThemeBlack: + prefs.edit().putString("theme", "black").apply(); + break; case R.id.rbThemeSystem: prefs.edit().putString("theme", "system").apply(); break; diff --git a/app/src/main/res/layout/dialog_theme.xml b/app/src/main/res/layout/dialog_theme.xml index e1c61e9e78..7868cdd65e 100644 --- a/app/src/main/res/layout/dialog_theme.xml +++ b/app/src/main/res/layout/dialog_theme.xml @@ -29,27 +29,27 @@ app:layout_constraintTop_toBottomOf="@id/tvCaption"> + + + + + + + + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 2d472de2fc..e8e77936a2 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -8,6 +8,10 @@ #ffb300 #c68400 + + #01579b + #002f6c + #b3000000 #ff000000 @@ -51,7 +55,7 @@ #444 #444 - #ffffb300 + #ffffb74d #997f7f7f #fff @@ -63,6 +67,26 @@ #666 #444 + + #fdd835 + #c6a700 + #8e24aa + + + #f57f17 + #bc5100 + #ba68c8 + + + #43a047 + #00701a + #e53935 + + + #1b5e20 + #003300 + #e57373 + #222 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0e49929649..5105b953d7 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -198,15 +198,25 @@ Enable Disable Unlock + Select theme - Light theme - Dark theme - Black theme + + Blue/orange light theme + Yellow/purple light theme + Green/red light theme Grey light theme + + Blue/orange dark theme + Yellow/purple dark theme + Green/red dark theme Grey dark theme + + Black theme System theme Grey system theme + The system themes will automatically switch to light/dark on day/night, if supported by Android + Advanced Options diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index fc830a6fd7..f44713d9c0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -104,6 +104,8 @@ @color/colorAccentDark + @color/colorAccent + @color/colorAccent @color/white @@ -112,9 +114,39 @@ @color/colorAccentDark + + + + + + + +