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.
|
@ -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:
|
||||
|
|
|
@ -4,6 +4,7 @@ import androidx.annotation.NonNull;
|
|||
|
||||
public enum MenuTag
|
||||
{
|
||||
SETTINGS("settings"),
|
||||
CONFIG("config"),
|
||||
CONFIG_GENERAL("config_general"),
|
||||
CONFIG_INTERFACE("config_interface"),
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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<SettingsItem> 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<SettingsItem> 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<SettingsItem> 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<SettingsItem> sl)
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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,
|
||||
|
|
After Width: | Height: | Size: 460 B |
Before Width: | Height: | Size: 228 B |
Before Width: | Height: | Size: 231 B |
Before Width: | Height: | Size: 266 B |
Before Width: | Height: | Size: 386 B |
Before Width: | Height: | Size: 140 B |
Before Width: | Height: | Size: 264 B |
After Width: | Height: | Size: 554 B |
Before Width: | Height: | Size: 190 B |
Before Width: | Height: | Size: 212 B |
Before Width: | Height: | Size: 300 B |
Before Width: | Height: | Size: 451 B |
After Width: | Height: | Size: 788 B |
Before Width: | Height: | Size: 251 B |
Before Width: | Height: | Size: 288 B |
Before Width: | Height: | Size: 450 B |
Before Width: | Height: | Size: 653 B |
After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 375 B |
Before Width: | Height: | Size: 569 B |
Before Width: | Height: | Size: 862 B |
Before Width: | Height: | Size: 318 B |
Before Width: | Height: | Size: 375 B |
Before Width: | Height: | Size: 569 B |
After Width: | Height: | Size: 1.0 KiB |
Before Width: | Height: | Size: 862 B |
|
@ -31,16 +31,6 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:orientation="vertical">
|
||||
|
||||
<Button
|
||||
android:id="@+id/menu_settings_core"
|
||||
android:text="@string/grid_menu_config"
|
||||
style="@style/InGameMenuOption"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/menu_settings_graphics"
|
||||
android:text="@string/grid_menu_graphics_settings"
|
||||
style="@style/InGameMenuOption"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/menu_pause_emulation"
|
||||
android:text="@string/pause_emulation"
|
||||
|
@ -81,6 +71,11 @@
|
|||
style="@style/InGameMenuOption"
|
||||
android:visibility="gone"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/menu_settings"
|
||||
android:text="@string/grid_menu_settings"
|
||||
style="@style/InGameMenuOption"/>
|
||||
|
||||
<Button
|
||||
android:id="@+id/menu_overlay_controls"
|
||||
android:text="@string/emulation_overlay_controls"
|
||||
|
|
|
@ -3,27 +3,9 @@
|
|||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_settings_core"
|
||||
android:title="@string/grid_menu_config"
|
||||
android:icon="@drawable/ic_settings_core"
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_settings_graphics"
|
||||
android:title="@string/grid_menu_graphics_settings"
|
||||
android:icon="@drawable/ic_settings_graphics"
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_settings_gcpad"
|
||||
android:title="@string/grid_menu_gcpad_settings"
|
||||
android:icon="@drawable/ic_settings_gcpad"
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_settings_wiimote"
|
||||
android:title="@string/grid_menu_wiimote_settings"
|
||||
android:icon="@drawable/ic_settings_wiimote"
|
||||
android:id="@+id/menu_settings"
|
||||
android:title="@string/grid_menu_settings"
|
||||
android:icon="@drawable/ic_settings"
|
||||
app:showAsAction="ifRoom"/>
|
||||
|
||||
<item
|
||||
|
|
|
@ -121,6 +121,12 @@
|
|||
<string name="turntable_effect_dial">Dial</string>
|
||||
<string name="turntable_crossfade">Crossfade</string>
|
||||
|
||||
<!-- Main Preference Fragment -->
|
||||
<string name="config">Config</string>
|
||||
<string name="graphics_settings">Graphics Settings</string>
|
||||
<string name="gcpad_settings">GameCube Input</string>
|
||||
<string name="wiimote_settings">Wii Input</string>
|
||||
|
||||
<!-- General Preference Fragment -->
|
||||
<string name="general_submenu">General</string>
|
||||
<string name="dual_core">Dual Core</string>
|
||||
|
@ -319,10 +325,7 @@
|
|||
|
||||
<!-- Game Grid Screen-->
|
||||
<string name="add_directory_title">Add Folder to Library</string>
|
||||
<string name="grid_menu_config">Config</string>
|
||||
<string name="grid_menu_graphics_settings">Graphics Settings</string>
|
||||
<string name="grid_menu_gcpad_settings">GameCube Input</string>
|
||||
<string name="grid_menu_wiimote_settings">Wii Input</string>
|
||||
<string name="grid_menu_settings">Settings</string>
|
||||
<string name="grid_menu_refresh">Refresh Library</string>
|
||||
<string name="grid_menu_open_file">Open File</string>
|
||||
<string name="grid_menu_install_wad">Install WAD</string>
|
||||
|
|