diff --git a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java index ca83ffaad..471807f5e 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java +++ b/mastodon/src/main/java/org/joinmastodon/android/GlobalUserPreferences.java @@ -4,6 +4,7 @@ import android.content.Context; import android.content.SharedPreferences; public class GlobalUserPreferences{ + public static boolean originalColors; public static boolean playGifs; public static boolean useCustomTabs; public static boolean trueBlackTheme; @@ -15,12 +16,13 @@ public class GlobalUserPreferences{ public static boolean disableMarquee; public static ThemePreference theme; - private static SharedPreferences getPrefs(){ + private static SharedPreferences getPrefs(){ return MastodonApp.context.getSharedPreferences("global", Context.MODE_PRIVATE); } public static void load(){ SharedPreferences prefs=getPrefs(); + originalColors=prefs.getBoolean("originalColors", false); playGifs=prefs.getBoolean("playGifs", true); useCustomTabs=prefs.getBoolean("useCustomTabs", true); trueBlackTheme=prefs.getBoolean("trueBlackTheme", false); @@ -35,6 +37,7 @@ public class GlobalUserPreferences{ public static void save(){ getPrefs().edit() + .putBoolean("originalColors", originalColors) .putBoolean("playGifs", playGifs) .putBoolean("useCustomTabs", useCustomTabs) .putBoolean("showReplies", showReplies) @@ -54,3 +57,4 @@ public class GlobalUserPreferences{ DARK } } + diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java index e6687b28a..cf44646d9 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/SettingsFragment.java @@ -99,6 +99,8 @@ public class SettingsFragment extends MastodonToolbarFragment{ GlobalUserPreferences.disableMarquee=i.checked; GlobalUserPreferences.save(); })); + items.add(new SwitchItem(R.string.enable_mastodon_original_colors, R.drawable.bg_button_green, GlobalUserPreferences.originalColors, this::onOriginalColorChanged)); + items.add(new HeaderItem(R.string.settings_behavior)); items.add(new SwitchItem(R.string.settings_gif, R.drawable.ic_fluent_gif_24_regular, GlobalUserPreferences.playGifs, i->{ @@ -240,6 +242,12 @@ public class SettingsFragment extends MastodonToolbarFragment{ } } + private void onOriginalColorChanged(SwitchItem item){ + GlobalUserPreferences.originalColors=item.checked; + GlobalUserPreferences.save(); + restartActivityToApplyNewTheme(); + } + private void restartActivityToApplyNewTheme(){ // Calling activity.recreate() causes a black screen for like half a second. // So, let's take a screenshot and overlay it on top to create the illusion of a smoother transition. diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java index acba9c7a3..41d839672 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/utils/UiUtils.java @@ -655,13 +655,16 @@ public class UiUtils{ } public static void setUserPreferredTheme(Context context){ + boolean isDarkTheme = isDarkTheme(); context.setTheme(switch(GlobalUserPreferences.theme){ - case AUTO -> GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack : R.style.Theme_Mastodon_AutoLightDark; - case LIGHT -> R.style.Theme_Mastodon_Light; - case DARK -> GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_Dark_TrueBlack : R.style.Theme_Mastodon_Dark; + case AUTO -> + GlobalUserPreferences.originalColors ? (GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Original : (isDarkTheme ? R.style.Theme_Mastodon_Dark_Original : R.style.Theme_Mastodon_AutoLightDark_Original)) : (GlobalUserPreferences.trueBlackTheme ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack : R.style.Theme_Mastodon_AutoLightDark); + case LIGHT -> + GlobalUserPreferences.originalColors ? R.style.Theme_Mastodon_Light_Original : R.style.Theme_Mastodon_Light; + case DARK -> + GlobalUserPreferences.trueBlackTheme ? (GlobalUserPreferences.originalColors ? R.style.Theme_Mastodon_AutoLightDark_TrueBlack_Original : R.style.Theme_Mastodon_Dark_TrueBlack) : (GlobalUserPreferences.originalColors ? R.style.Theme_Mastodon_Dark_Original : R.style.Theme_Mastodon_Dark); }); } - public static boolean isDarkTheme(){ if(GlobalUserPreferences.theme==GlobalUserPreferences.ThemePreference.AUTO) return (MastodonApp.context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK)==Configuration.UI_MODE_NIGHT_YES; diff --git a/mastodon/src/main/res/values/colors.xml b/mastodon/src/main/res/values/colors.xml index a53cf0b3d..745a43cc1 100644 --- a/mastodon/src/main/res/values/colors.xml +++ b/mastodon/src/main/res/values/colors.xml @@ -30,6 +30,19 @@ #d92aad #ae218a #6d1556 + + #fafaff + #f4f3ff + #ebebff + #d7d7ff + #c2c2ff + #9999ff + #6364ff + #562cfc + #431cbb + #2f0c7a + #17063b + #FFFBFA #FEF3F2 #FEE4E2 diff --git a/mastodon/src/main/res/values/strings.xml b/mastodon/src/main/res/values/strings.xml index 34f23a8cc..17a375da6 100644 --- a/mastodon/src/main/res/values/strings.xml +++ b/mastodon/src/main/res/values/strings.xml @@ -427,5 +427,6 @@ Your Favorites Always reveal content warnings Disable scrolling text in title bars + Enable mastodon original colors Contribute to Megalodon diff --git a/mastodon/src/main/res/values/styles.xml b/mastodon/src/main/res/values/styles.xml index 44d7e574c..2f464d0d8 100644 --- a/mastodon/src/main/res/values/styles.xml +++ b/mastodon/src/main/res/values/styles.xml @@ -113,6 +113,31 @@ + + + + + +