diff options
| author | JosJuice <josjuice@gmail.com> | 2022-12-10 21:09:26 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-12-10 21:09:26 +0100 |
| commit | 1fd8d476e84b9362648d65f67f833719bad5673b (patch) | |
| tree | 4f4f249070808154506d8c9a993a7829a1f26bc0 /Source/Android/app/src/main/java | |
| parent | 2b7b3c3942579cab9724a504548e4678ad43cf07 (diff) | |
| parent | fd7a84b794c50f471fa87101f0913e8b9e2610e8 (diff) | |
Merge pull request #11325 from t895/extra-dark
Android: Add black backgrounds toggle
Diffstat (limited to 'Source/Android/app/src/main/java')
4 files changed, 98 insertions, 18 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java index 9c6e2ce476..79d76ada40 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java @@ -81,6 +81,8 @@ public enum BooleanSetting implements AbstractBooleanSetting MAIN_SHOW_GAME_TITLES(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID, "ShowGameTitles", true), + MAIN_USE_BLACK_BACKGROUNDS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID, + "UseBlackBackgrounds", false), MAIN_JOYSTICK_REL_CENTER(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID, "JoystickRelCenter", true), MAIN_PHONE_RUMBLE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID, diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java index 6b1bde216e..8fa25e64fc 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java @@ -13,6 +13,7 @@ import androidx.appcompat.app.AppCompatActivity; import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.activities.UserDataActivity; +import org.dolphinemu.dolphinemu.features.settings.model.AbstractBooleanSetting; import org.dolphinemu.dolphinemu.features.settings.model.AbstractIntSetting; import org.dolphinemu.dolphinemu.features.settings.model.AbstractStringSetting; import org.dolphinemu.dolphinemu.features.settings.model.AdHocBooleanSetting; @@ -414,6 +415,44 @@ public final class SettingsFragmentPresenter sl.add(new SingleChoiceSetting(mContext, themeMode, R.string.change_theme_mode, 0, R.array.themeModeEntries, R.array.themeModeValues)); + + AbstractBooleanSetting blackBackgrounds = new AbstractBooleanSetting() + { + @Override + public boolean isOverridden(Settings settings) + { + return BooleanSetting.MAIN_USE_BLACK_BACKGROUNDS.isOverridden(settings); + } + + @Override + public boolean isRuntimeEditable() + { + return true; + } + + @Override + public boolean delete(Settings settings) + { + ThemeHelper.deleteBackgroundSetting((AppCompatActivity) mView.getActivity()); + return BooleanSetting.MAIN_USE_BLACK_BACKGROUNDS.delete(settings); + } + + @Override + public boolean getBoolean(Settings settings) + { + return BooleanSetting.MAIN_USE_BLACK_BACKGROUNDS.getBoolean(settings); + } + + @Override + public void setBoolean(Settings settings, boolean newValue) + { + BooleanSetting.MAIN_USE_BLACK_BACKGROUNDS.setBoolean(settings, newValue); + ThemeHelper.saveBackgroundSetting((AppCompatActivity) mView.getActivity(), newValue); + } + }; + + sl.add(new CheckBoxSetting(mContext, blackBackgrounds, R.string.use_black_backgrounds, + R.string.use_black_backgrounds_description)); } private void addAudioSettings(ArrayList<SettingsItem> sl) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java index 15cf635615..b1584df1be 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/DirectoryInitialization.java @@ -21,6 +21,7 @@ import androidx.preference.PreferenceManager; import org.dolphinemu.dolphinemu.NativeLibrary; import org.dolphinemu.dolphinemu.R; import org.dolphinemu.dolphinemu.activities.EmulationActivity; +import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting; import org.dolphinemu.dolphinemu.features.settings.model.IntSetting; import java.io.File; @@ -79,24 +80,7 @@ public final class DirectoryInitialization areDirectoriesAvailable = true; - SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); - if (IntSetting.MAIN_INTERFACE_THEME.getIntGlobal() != - preferences.getInt(ThemeHelper.CURRENT_THEME, ThemeHelper.DEFAULT)) - { - preferences.edit() - .putInt(ThemeHelper.CURRENT_THEME, IntSetting.MAIN_INTERFACE_THEME.getIntGlobal()) - .apply(); - } - - if (IntSetting.MAIN_INTERFACE_THEME_MODE.getIntGlobal() != - preferences.getInt(ThemeHelper.CURRENT_THEME_MODE, - AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)) - { - preferences.edit() - .putInt(ThemeHelper.CURRENT_THEME_MODE, - IntSetting.MAIN_INTERFACE_THEME_MODE.getIntGlobal()) - .apply(); - } + checkThemeSettings(context); if (wiimoteIniWritten) { @@ -418,6 +402,37 @@ public final class DirectoryInitialization return preferLegacyUserDirectory(context) && !PermissionsHandler.hasWriteAccess(context); } + private static void checkThemeSettings(Context context) + { + SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); + if (IntSetting.MAIN_INTERFACE_THEME.getIntGlobal() != + preferences.getInt(ThemeHelper.CURRENT_THEME, ThemeHelper.DEFAULT)) + { + preferences.edit() + .putInt(ThemeHelper.CURRENT_THEME, IntSetting.MAIN_INTERFACE_THEME.getIntGlobal()) + .apply(); + } + + if (IntSetting.MAIN_INTERFACE_THEME_MODE.getIntGlobal() != + preferences.getInt(ThemeHelper.CURRENT_THEME_MODE, + AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM)) + { + preferences.edit() + .putInt(ThemeHelper.CURRENT_THEME_MODE, + IntSetting.MAIN_INTERFACE_THEME_MODE.getIntGlobal()) + .apply(); + } + + if (BooleanSetting.MAIN_USE_BLACK_BACKGROUNDS.getBooleanGlobal() != + preferences.getBoolean(ThemeHelper.USE_BLACK_BACKGROUNDS, false)) + { + preferences.edit() + .putBoolean(ThemeHelper.USE_BLACK_BACKGROUNDS, + BooleanSetting.MAIN_USE_BLACK_BACKGROUNDS.getBooleanGlobal()) + .apply(); + } + } + private static native void CreateUserDirectories(); private static native void SetSysDirectory(String path); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.java index 968d0eef68..c7aead7aa9 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/ThemeHelper.java @@ -28,6 +28,7 @@ public class ThemeHelper { public static final String CURRENT_THEME = "current_theme"; public static final String CURRENT_THEME_MODE = "current_theme_mode"; + public static final String USE_BLACK_BACKGROUNDS = "use_black_backgrounds"; public static final int DEFAULT = 0; public static final int MONET = 1; @@ -67,6 +68,11 @@ public class ThemeHelper break; } + if (preferences.getBoolean(USE_BLACK_BACKGROUNDS, false)) + { + activity.setTheme(R.style.ThemeOverlay_Dolphin_Dark); + } + // Since the top app bar matches the color of the status bar, devices below API 23 have to get a // black status bar since their icons do not adapt based on background color if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) @@ -158,6 +164,24 @@ public class ThemeHelper setThemeMode(activity); } + public static void saveBackgroundSetting(AppCompatActivity activity, boolean backgroundValue) + { + PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext()) + .edit() + .putBoolean(USE_BLACK_BACKGROUNDS, backgroundValue) + .apply(); + activity.recreate(); + } + + public static void deleteBackgroundSetting(AppCompatActivity activity) + { + PreferenceManager.getDefaultSharedPreferences(activity.getApplicationContext()) + .edit() + .remove(USE_BLACK_BACKGROUNDS) + .apply(); + activity.recreate(); + } + public static void setCorrectTheme(AppCompatActivity activity) { int currentTheme = ((ThemeProvider) activity).getThemeId(); |
