Skip to content
This repository was archived by the owner on May 4, 2023. It is now read-only.

Commit 29e3d7e

Browse files
Add option to make dark theme a black theme
Signed-off-by: androidacy-user <opensource@androidacy.com>
1 parent 39cfa8c commit 29e3d7e

File tree

7 files changed

+62
-0
lines changed

7 files changed

+62
-0
lines changed

app/src/main/java/com/fox2code/mmm/MainApplication.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,9 +295,20 @@ public void updateTheme() {
295295
R.style.Theme_MagiskModuleManager_Light;
296296
break;
297297
}
298+
// Handle force black theme
299+
if (theme.equals("dark") && isForceBlackThemeEnabled()) {
300+
// just black background
301+
themeResId = monet ?
302+
R.style.Theme_MagiskModuleManager_Monet_Black :
303+
R.style.Theme_MagiskModuleManager_Black;
304+
}
298305
this.setManagerThemeResId(themeResId);
299306
}
300307

308+
private boolean isForceBlackThemeEnabled() {
309+
return getSharedPreferences().getBoolean("pref_force_black_theme", false);
310+
}
311+
301312
@StyleRes
302313
public int getManagerThemeResId() {
303314
return managerThemeResId;

app/src/main/java/com/fox2code/mmm/settings/SettingsActivity.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,20 @@ public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
137137
}, 1);
138138
return true;
139139
});
140+
// Force black theme - depends on themePreference being system or dark
141+
SwitchPreferenceCompat forceBlackPreference = findPreference("pref_force_black_theme");
142+
// Set invisible if theme is not dark or system
143+
forceBlackPreference.setVisible(themePreference.getValue().equals("dark") ||
144+
themePreference.getValue().equals("system"));
145+
forceBlackPreference.setOnPreferenceChangeListener((preference, newValue) -> {
146+
devModeStep = 0;
147+
UiThreadHandler.handler.postDelayed(() -> {
148+
MainApplication.getINSTANCE().updateTheme();
149+
FoxActivity.getFoxActivity(this).setThemeRecreate(
150+
MainApplication.getINSTANCE().getManagerThemeResId());
151+
}, 1);
152+
return true;
153+
});
140154
// Crash reporting
141155
TwoStatePreference crashReportingPreference = findPreference("pref_crash_reporting");
142156
if (!SentryMain.IS_SENTRY_INSTALLED) crashReportingPreference.setVisible(false);

app/src/main/res/values-v31/themes.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@
2222
<item name="chipStyle">@style/Widget.Material3.Chip.Choice.Dark</item>
2323
</style>
2424

25+
<!-- Black monet theme, which is just dark monet theme with black background -->
26+
<style name="Theme.MagiskModuleManager.Monet.Black" parent="Theme.MagiskModuleManager.Monet.Dark">
27+
<item name="colorBackgroundFloating">@color/black</item>
28+
<item name="android:windowBackground">@color/black</item>
29+
<item name="boxBackgroundColor">@color/black</item>
30+
<item name="cardBackgroundColor">@color/black</item>
31+
<item name="backgroundColor">@color/black</item>
32+
<item name="colorSurface">@color/black</item>
33+
</style>
34+
2535
<style name="Widget.Material3.Chip.Choice.Dark" parent="Widget.Material3.Chip.Assist">
2636
<item name="chipBackgroundColor">@color/system_accent2_700</item>
2737
<item name="chipStrokeWidth">0dp</item>

app/src/main/res/values/strings.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,4 +188,7 @@
188188
<string name="permission_notification_grant">Grant permission</string>
189189
<string name="background_update_check_permission_required">Please enable notifications to enable this option.</string>
190190
<string name="dont_ask_again">Don\'t ask again</string>
191+
<string name="force_black_theme_desc">Forces AMOLED black backgrounds when using dark theme.
192+
Please be aware this may have contrast problems with some color themes.</string>
193+
<string name="force_black_theme_pref">Force black theme</string>
191194
</resources>

app/src/main/res/values/styles.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
4+
<style name="Theme_MagiskModuleManager_ForceBlack">#000000</style>
5+
</resources>

app/src/main/res/values/themes.xml

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,16 @@
8383
<item name="chipStyle">@style/Widget.Material.Chip.Choice.Dark</item>
8484
</style>
8585

86+
<!-- Black theme, which is just a dark theme with a black background -->
87+
<style name="Theme.MagiskModuleManager.Black" parent="Theme.MagiskModuleManager.Dark">
88+
<item name="colorBackgroundFloating">@color/black</item>
89+
<item name="android:windowBackground">@color/black</item>
90+
<item name="boxBackgroundColor">@color/black</item>
91+
<item name="cardBackgroundColor">@color/black</item>
92+
<item name="backgroundColor">@color/black</item>
93+
<item name="colorSurface">@color/black</item>
94+
</style>
95+
8696
<style name="Widget.Material.Chip.Choice.Dark" parent="Widget.MaterialComponents.Chip.Action">
8797
<item name="chipBackgroundColor">@color/dark_chipBackgroundColor</item>
8898
<item name="chipStrokeWidth">0dp</item>

app/src/main/res/xml/root_preferences.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,15 @@
5656
app:singleLineTitle="false"
5757
app:title="@string/theme_pref" />
5858

59+
<!-- Force black theme -->
60+
<SwitchPreferenceCompat
61+
app:defaultValue="false"
62+
app:icon="@drawable/ic_baseline_palette_24"
63+
app:key="pref_force_black_theme"
64+
app:singleLineTitle="false"
65+
app:summary="@string/force_black_theme_desc"
66+
app:title="@string/force_black_theme_pref" />
67+
5968
<Preference
6069
app:icon="@drawable/ic_baseline_language_24"
6170
app:key="pref_language_selector"

0 commit comments

Comments
 (0)