From 8c723d05841c784c7af90e6f29eb82c2120358f5 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Thu, 24 Dec 2020 14:55:10 +0100 Subject: Android: Only have one settings entrypoint per activity/dialog Basically, instead of having one button for config, one button for graphics settings and so on, we now have just one settings button which takes you to a screen where you pick between config/graphics/GameCube controllers/Wii Remotes. The main reason I want to do this is because people still have trouble finding Overlay Controls in the "new" in-game menu. Typically (depending on the screen size and the length of the game name), the scrollable part of the menu can fit 4 items, and merging Config and Graphics Settings into one item would move Overlay Controls from 5th place to 4th place (assuming the user doesn't have savestates enabled), which makes it findable even for users who don't realize the menu can be scrolled. The dialog that's shown when long pressing a game in the game list is also shortened. While not a pressing matter, I think it was getting a bit long. An additional reason to do this is because we probably will want to make it possible to edit the controller settings from the in-game menu at some point in the future. With the old approach, this would require us to dedicate a whopping 4 menu items just for settings (not including Overlay Controls), which I think is excessive. --- .../dolphinemu/activities/EmulationActivity.java | 13 ++++--------- .../dolphinemu/features/settings/ui/MenuTag.java | 1 + .../features/settings/ui/SettingsFragment.java | 9 +++++---- .../settings/ui/SettingsFragmentPresenter.java | 20 ++++++++++++++++++-- .../dolphinemu/fragments/MenuFragment.java | 4 +--- .../dolphinemu/dolphinemu/ui/main/MainPresenter.java | 16 ++-------------- .../dolphinemu/ui/main/TvMainActivity.java | 18 +++--------------- 7 files changed, 34 insertions(+), 47 deletions(-) (limited to 'Source/Android/app/src/main/java') diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java index 9bb3be3878..7ca2ae0c9e 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/activities/EmulationActivity.java @@ -99,7 +99,7 @@ public final class EmulationActivity extends AppCompatActivity MENU_ACTION_LOAD_SLOT6, MENU_ACTION_EXIT, MENU_ACTION_CHANGE_DISC, MENU_ACTION_RESET_OVERLAY, MENU_SET_IR_SENSITIVITY, MENU_ACTION_CHOOSE_DOUBLETAP, MENU_ACTION_MOTION_CONTROLS, MENU_ACTION_PAUSE_EMULATION, MENU_ACTION_UNPAUSE_EMULATION, - MENU_ACTION_OVERLAY_CONTROLS, MENU_ACTION_SETTINGS_CORE, MENU_ACTION_SETTINGS_GRAPHICS}) + MENU_ACTION_OVERLAY_CONTROLS, MENU_ACTION_SETTINGS}) public @interface MenuAction { } @@ -137,8 +137,7 @@ public final class EmulationActivity extends AppCompatActivity public static final int MENU_ACTION_PAUSE_EMULATION = 30; public static final int MENU_ACTION_UNPAUSE_EMULATION = 31; public static final int MENU_ACTION_OVERLAY_CONTROLS = 32; - public static final int MENU_ACTION_SETTINGS_CORE = 33; - public static final int MENU_ACTION_SETTINGS_GRAPHICS = 34; + public static final int MENU_ACTION_SETTINGS = 33; private static final SparseIntArray buttonsActionsMap = new SparseIntArray(); @@ -656,12 +655,8 @@ public final class EmulationActivity extends AppCompatActivity showMotionControlsOptions(); break; - case MENU_ACTION_SETTINGS_CORE: - SettingsActivity.launch(this, MenuTag.CONFIG); - break; - - case MENU_ACTION_SETTINGS_GRAPHICS: - SettingsActivity.launch(this, MenuTag.GRAPHICS); + case MENU_ACTION_SETTINGS: + SettingsActivity.launch(this, MenuTag.SETTINGS); break; case MENU_ACTION_EXIT: diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java index 8422f2903b..721cd52a6a 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java @@ -4,6 +4,7 @@ import androidx.annotation.NonNull; public enum MenuTag { + SETTINGS("settings"), CONFIG("config"), CONFIG_GENERAL("config_general"), CONFIG_INTERFACE("config_interface"), diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java index 155cf1bfac..405040f391 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java @@ -35,7 +35,8 @@ public final class SettingsFragment extends Fragment implements SettingsFragment static { - titles.put(MenuTag.CONFIG, R.string.preferences_settings); + titles.put(MenuTag.SETTINGS, R.string.preferences_settings); + titles.put(MenuTag.CONFIG, R.string.config); titles.put(MenuTag.CONFIG_GENERAL, R.string.general_submenu); titles.put(MenuTag.CONFIG_INTERFACE, R.string.interface_submenu); titles.put(MenuTag.CONFIG_AUDIO, R.string.audio_submenu); @@ -43,10 +44,10 @@ public final class SettingsFragment extends Fragment implements SettingsFragment titles.put(MenuTag.CONFIG_GAME_CUBE, R.string.gamecube_submenu); titles.put(MenuTag.CONFIG_WII, R.string.wii_submenu); titles.put(MenuTag.CONFIG_ADVANCED, R.string.advanced_submenu); - titles.put(MenuTag.WIIMOTE, R.string.grid_menu_wiimote_settings); + titles.put(MenuTag.WIIMOTE, R.string.wiimote_settings); titles.put(MenuTag.WIIMOTE_EXTENSION, R.string.wiimote_extensions); - titles.put(MenuTag.GCPAD_TYPE, R.string.grid_menu_gcpad_settings); - titles.put(MenuTag.GRAPHICS, R.string.grid_menu_graphics_settings); + titles.put(MenuTag.GCPAD_TYPE, R.string.gcpad_settings); + titles.put(MenuTag.GRAPHICS, R.string.graphics_settings); titles.put(MenuTag.HACKS, R.string.hacks_submenu); titles.put(MenuTag.CONFIG_LOG, R.string.log_submenu); titles.put(MenuTag.DEBUG, R.string.debug_submenu); 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 8f50dac6e1..622e552f63 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 @@ -122,6 +122,10 @@ public final class SettingsFragmentPresenter switch (mMenuTag) { + case SETTINGS: + addTopLevelSettings(sl); + break; + case CONFIG: addConfigSettings(sl); break; @@ -216,6 +220,20 @@ public final class SettingsFragmentPresenter mView.showSettingsList(mSettingsList); } + private void addTopLevelSettings(ArrayList sl) + { + sl.add(new SubmenuSetting(R.string.config, MenuTag.CONFIG)); + sl.add(new SubmenuSetting(R.string.graphics_settings, MenuTag.GRAPHICS)); + + if (!NativeLibrary.IsRunning()) + { + sl.add(new SubmenuSetting(R.string.gcpad_settings, MenuTag.GCPAD_TYPE)); + sl.add(new SubmenuSetting(R.string.wiimote_settings, MenuTag.WIIMOTE)); + } + + sl.add(new HeaderSetting(R.string.setting_clear_info, 0)); + } + private void addConfigSettings(ArrayList sl) { sl.add(new SubmenuSetting(R.string.general_submenu, MenuTag.CONFIG_GENERAL)); @@ -227,7 +245,6 @@ public final class SettingsFragmentPresenter sl.add(new SubmenuSetting(R.string.advanced_submenu, MenuTag.CONFIG_ADVANCED)); sl.add(new SubmenuSetting(R.string.log_submenu, MenuTag.CONFIG_LOG)); sl.add(new SubmenuSetting(R.string.debug_submenu, MenuTag.DEBUG)); - sl.add(new HeaderSetting(R.string.setting_clear_info, 0)); } private void addGeneralSettings(ArrayList sl) @@ -513,7 +530,6 @@ public final class SettingsFragmentPresenter sl.add(new HeaderSetting(R.string.graphics_enhancements_and_hacks, 0)); sl.add(new SubmenuSetting(R.string.enhancements_submenu, MenuTag.ENHANCEMENTS)); sl.add(new SubmenuSetting(R.string.hacks_submenu, MenuTag.HACKS)); - sl.add(new HeaderSetting(R.string.setting_clear_info, 0)); } private void addEnhanceSettings(ArrayList sl) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java index 90b3ee7d2d..555b20097d 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/MenuFragment.java @@ -48,9 +48,7 @@ public final class MenuFragment extends Fragment implements View.OnClickListener .append(R.id.menu_refresh_wiimotes, EmulationActivity.MENU_ACTION_REFRESH_WIIMOTES); buttonsActionsMap.append(R.id.menu_change_disc, EmulationActivity.MENU_ACTION_CHANGE_DISC); buttonsActionsMap.append(R.id.menu_exit, EmulationActivity.MENU_ACTION_EXIT); - buttonsActionsMap.append(R.id.menu_settings_core, EmulationActivity.MENU_ACTION_SETTINGS_CORE); - buttonsActionsMap.append(R.id.menu_settings_graphics, - EmulationActivity.MENU_ACTION_SETTINGS_GRAPHICS); + buttonsActionsMap.append(R.id.menu_settings, EmulationActivity.MENU_ACTION_SETTINGS); } public static MenuFragment newInstance() diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java index 75f2002ba3..8db0ee44a1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java @@ -71,20 +71,8 @@ public final class MainPresenter { switch (itemId) { - case R.id.menu_settings_core: - mView.launchSettingsActivity(MenuTag.CONFIG); - return true; - - case R.id.menu_settings_graphics: - mView.launchSettingsActivity(MenuTag.GRAPHICS); - return true; - - case R.id.menu_settings_gcpad: - mView.launchSettingsActivity(MenuTag.GCPAD_TYPE); - return true; - - case R.id.menu_settings_wiimote: - mView.launchSettingsActivity(MenuTag.WIIMOTE); + case R.id.menu_settings: + mView.launchSettingsActivity(MenuTag.SETTINGS); return true; case R.id.menu_refresh: diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index 23d1050d04..c7bc923461 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -313,21 +313,9 @@ public final class TvMainActivity extends FragmentActivity implements MainView { ArrayObjectAdapter rowItems = new ArrayObjectAdapter(new SettingsRowPresenter()); - rowItems.add(new TvSettingsItem(R.id.menu_settings_core, - R.drawable.ic_settings_core_tv, - R.string.grid_menu_config)); - - rowItems.add(new TvSettingsItem(R.id.menu_settings_graphics, - R.drawable.ic_settings_graphics_tv, - R.string.grid_menu_graphics_settings)); - - rowItems.add(new TvSettingsItem(R.id.menu_settings_gcpad, - R.drawable.ic_settings_gcpad, - R.string.grid_menu_gcpad_settings)); - - rowItems.add(new TvSettingsItem(R.id.menu_settings_wiimote, - R.drawable.ic_settings_wiimote, - R.string.grid_menu_wiimote_settings)); + rowItems.add(new TvSettingsItem(R.id.menu_settings, + R.drawable.ic_settings_tv, + R.string.grid_menu_settings)); rowItems.add(new TvSettingsItem(R.id.button_add_directory, R.drawable.ic_add_tv, -- cgit v1.2.3