From b5aac31be81d870640638b76c30cb69d34d8445d Mon Sep 17 00:00:00 2001 From: M66B Date: Sat, 19 Sep 2026 20:01:32 +0200 Subject: [PATCH] Added beige switch to theme selector --- .../eu/faircode/email/FragmentDialogTheme.java | 16 ++++++++++++++++ app/src/main/res/layout-v31/dialog_theme.xml | 12 +++++++++++- app/src/main/res/layout-v34/dialog_theme.xml | 12 +++++++++++- app/src/main/res/layout/dialog_theme.xml | 12 +++++++++++- 4 files changed, 49 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java index eb405343c6..21796ca7e7 100644 --- a/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java +++ b/app/src/main/java/eu/faircode/email/FragmentDialogTheme.java @@ -55,6 +55,7 @@ public class FragmentDialogTheme extends FragmentDialogBase { private RadioGroup rgThemeOptions; private TextView tvSystem; private SwitchCompat swBlack; + private SwitchCompat swBeige; private SwitchCompat swHtmlLight; private SwitchCompat swComposerLight; private Button btnMore; @@ -62,6 +63,9 @@ public class FragmentDialogTheme extends FragmentDialogBase { private Group grpDebug; private void eval() { + SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext()); + boolean cards = prefs.getBoolean("cards", true); + int checkedId = rgTheme.getCheckedRadioButtonId(); boolean grey = (checkedId == R.id.rbThemeGrey); boolean solarized = (checkedId == R.id.rbThemeSolarized); @@ -84,6 +88,7 @@ public class FragmentDialogTheme extends FragmentDialogBase { tvSystem.setEnabled(colored && optionId == R.id.rbThemeSystem); swBlack.setEnabled(colored && !grey && !bw && !solarized && optionId != R.id.rbThemeLight); + swBeige.setEnabled(cards && optionId != R.id.rbThemeDark); swHtmlLight.setEnabled(colored ? optionId != R.id.rbThemeLight : !blank); swComposerLight.setEnabled(colored ? optionId != R.id.rbThemeLight : !blank); @@ -111,6 +116,7 @@ public class FragmentDialogTheme extends FragmentDialogBase { rgThemeOptions = dview.findViewById(R.id.rgThemeOptions); tvSystem = dview.findViewById(R.id.tvSystem); swBlack = dview.findViewById(R.id.swBlack); + swBeige = dview.findViewById(R.id.swBeige); swHtmlLight = dview.findViewById(R.id.swHtmlLight); swComposerLight = dview.findViewById(R.id.swComposerLight); btnMore = dview.findViewById(R.id.btnMore); @@ -156,6 +162,13 @@ public class FragmentDialogTheme extends FragmentDialogBase { } }); + swBeige.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + eval(); + } + }); + boolean reversed = (theme.contains("reversed") || theme.startsWith("orange_blue") || @@ -164,6 +177,7 @@ public class FragmentDialogTheme extends FragmentDialogBase { 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")); + boolean beige = prefs.getBoolean("beige", true); swReverse.setChecked(reversed); @@ -175,6 +189,7 @@ public class FragmentDialogTheme extends FragmentDialogBase { rgThemeOptions.check(R.id.rbThemeLight); swBlack.setChecked(black); + swBeige.setChecked(beige); swHtmlLight.setChecked(default_light); swComposerLight.setChecked(composer_light); @@ -380,6 +395,7 @@ public class FragmentDialogTheme extends FragmentDialogBase { (black ? "_black" : dark ? "_dark" : "_light")).apply(); } + editor.putBoolean("beige", swBeige.isChecked()); editor.putBoolean("default_light", swHtmlLight.isChecked()); editor.putBoolean("composer_light", swComposerLight.isChecked()); diff --git a/app/src/main/res/layout-v31/dialog_theme.xml b/app/src/main/res/layout-v31/dialog_theme.xml index 946ab4479f..49b613ff67 100644 --- a/app/src/main/res/layout-v31/dialog_theme.xml +++ b/app/src/main/res/layout-v31/dialog_theme.xml @@ -376,6 +376,16 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tvSystem" /> + + + app:layout_constraintTop_toBottomOf="@id/swBeige" /> + + + app:layout_constraintTop_toBottomOf="@id/swBeige" /> + + + app:layout_constraintTop_toBottomOf="@id/swBeige" />