diff options
| author | JosJuice <josjuice@gmail.com> | 2020-06-27 12:20:58 +0200 |
|---|---|---|
| committer | JosJuice <josjuice@gmail.com> | 2020-09-16 18:48:25 +0200 |
| commit | 23ea47d4dfb8ea4ac2b33aa8c5650110dbb0aa89 (patch) | |
| tree | 47e5c1fe71f1256a97b2155c47dd5f56ffc38e67 /Source | |
| parent | 5d13f3675f9907459f107e951d39713628e51177 (diff) | |
Android: Refactor GamePropertiesDialog.onCreateDialog
Diffstat (limited to 'Source')
4 files changed, 91 insertions, 68 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java index 9e4f7a535b..d3f5395107 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java @@ -16,6 +16,7 @@ import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag; import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity; import org.dolphinemu.dolphinemu.model.GameFile; import org.dolphinemu.dolphinemu.ui.platform.Platform; +import org.dolphinemu.dolphinemu.utils.AlertDialogItemsBuilder; import org.dolphinemu.dolphinemu.utils.DirectoryInitialization; import org.dolphinemu.dolphinemu.utils.Log; @@ -47,62 +48,56 @@ public class GamePropertiesDialog extends DialogFragment @Override public Dialog onCreateDialog(Bundle savedInstanceState) { - AlertDialog.Builder builder = new AlertDialog.Builder(requireContext(), - R.style.DolphinDialogBase); - String path = requireArguments().getString(ARG_PATH); String gameId = requireArguments().getString(ARG_GAMEID); int revision = requireArguments().getInt(ARG_REVISION); int platform = requireArguments().getInt(ARG_PLATFORM); + AlertDialogItemsBuilder itemsBuilder = new AlertDialogItemsBuilder(requireContext()); + + itemsBuilder.add(R.string.properties_details, (dialog, i) -> + GameDetailsDialog.newInstance(path).show(requireActivity() + .getSupportFragmentManager(), "game_details")); + + itemsBuilder.add(R.string.properties_convert, (dialog, i) -> + ConvertActivity.launch(getContext(), path)); + + itemsBuilder.add(R.string.properties_set_default_iso, (dialog, i) -> + { + try (Settings settings = new Settings()) + { + settings.loadSettings(null); + StringSetting.MAIN_DEFAULT_ISO.setString(settings, path); + settings.saveSettings(null, getContext()); + } + }); + + itemsBuilder.add(R.string.properties_core_settings, (dialog, i) -> + SettingsActivity.launch(getContext(), MenuTag.CONFIG, gameId, revision)); + + itemsBuilder.add(R.string.properties_gfx_settings, (dialog, i) -> + SettingsActivity.launch(getContext(), MenuTag.GRAPHICS, gameId, revision)); + + itemsBuilder.add(R.string.properties_gc_controller, (dialog, i) -> + SettingsActivity.launch(getContext(), MenuTag.GCPAD_TYPE, gameId, revision)); + + if (platform != Platform.GAMECUBE.toInt()) + { + itemsBuilder.add(R.string.properties_wii_controller, (dialog, i) -> + SettingsActivity.launch(getActivity(), MenuTag.WIIMOTE, gameId, revision)); + } + + itemsBuilder.add(R.string.properties_clear_game_settings, (dialog, i) -> + clearGameSettings(gameId)); + + AlertDialog.Builder builder = new AlertDialog.Builder(requireContext(), + R.style.DolphinDialogBase); + itemsBuilder.applyToBuilder(builder); builder.setTitle(requireContext() - .getString(R.string.preferences_game_properties) + ": " + gameId) - .setItems(platform == Platform.GAMECUBE.toInt() ? - R.array.gameSettingsMenusGC : - R.array.gameSettingsMenusWii, (dialog, which) -> - { - switch (which) - { - case 0: - GameDetailsDialog.newInstance(path).show((requireActivity()) - .getSupportFragmentManager(), "game_details"); - break; - case 1: - ConvertActivity.launch(getContext(), path); - break; - case 2: - try (Settings settings = new Settings()) - { - settings.loadSettings(null); - StringSetting.MAIN_DEFAULT_ISO.setString(settings, path); - settings.saveSettings(null, getContext()); - } - break; - case 3: - SettingsActivity.launch(getContext(), MenuTag.CONFIG, gameId, revision); - break; - case 4: - SettingsActivity.launch(getContext(), MenuTag.GRAPHICS, gameId, revision); - break; - case 5: - SettingsActivity.launch(getContext(), MenuTag.GCPAD_TYPE, gameId, revision); - break; - case 6: - // Clear option for GC, Wii controls for else - if (platform == Platform.GAMECUBE.toInt()) - clearGameSettings(gameId); - else - SettingsActivity.launch(getActivity(), MenuTag.WIIMOTE, gameId, revision); - break; - case 7: - clearGameSettings(gameId); - break; - } - }); + .getString(R.string.preferences_game_properties) + ": " + gameId); return builder.create(); } - private void clearGameSettings(String gameId) { String gameSettingsPath = diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java new file mode 100644 index 0000000000..0c4f358069 --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java @@ -0,0 +1,40 @@ +package org.dolphinemu.dolphinemu.utils; + +import androidx.appcompat.app.AlertDialog; + +import android.content.Context; +import android.content.DialogInterface.OnClickListener; + +import java.util.ArrayList; + +public class AlertDialogItemsBuilder +{ + private Context mContext; + + private ArrayList<CharSequence> mLabels = new ArrayList<>(); + private ArrayList<OnClickListener> mListeners = new ArrayList<>(); + + public AlertDialogItemsBuilder(Context context) + { + mContext = context; + } + + public void add(int stringId, OnClickListener listener) + { + mLabels.add(mContext.getResources().getString(stringId)); + mListeners.add(listener); + } + + public void add(CharSequence label, OnClickListener listener) + { + mLabels.add(label); + mListeners.add(listener); + } + + public void applyToBuilder(AlertDialog.Builder builder) + { + CharSequence[] labels = new CharSequence[mLabels.size()]; + labels = mLabels.toArray(labels); + builder.setItems(labels, (dialog, i) -> mListeners.get(i).onClick(dialog, i)); + } +} diff --git a/Source/Android/app/src/main/res/values/arrays.xml b/Source/Android/app/src/main/res/values/arrays.xml index 724ac6d8c4..77622fbae9 100644 --- a/Source/Android/app/src/main/res/values/arrays.xml +++ b/Source/Android/app/src/main/res/values/arrays.xml @@ -385,26 +385,6 @@ <item>Classic A</item> </string-array> - <string-array name="gameSettingsMenusGC"> - <item>Details</item> - <item>Convert File</item> - <item>Set as Default ISO</item> - <item>Core Settings</item> - <item>GFX Settings</item> - <item>GameCube Controller Settings</item> - <item>Clear Game Settings</item> - </string-array> - <string-array name="gameSettingsMenusWii"> - <item>Details</item> - <item>Convert File</item> - <item>Set as Default ISO</item> - <item>Core Settings</item> - <item>GFX Settings</item> - <item>GameCube Controller Settings</item> - <item>Wii Controller Settings</item> - <item>Clear Game Settings</item> - </string-array> - <string-array name="orientationEntries"> <item>Landscape</item> <item>Portrait</item> diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index 95efff4161..092e64fe86 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -313,7 +313,15 @@ <string name="wad_install_success">Successfully installed this title to the NAND.</string> <string name="wad_install_failure">Failed to install this title to the NAND.</string> - <!-- Preferences Screen --> + <!-- Game Properties Screen --> + <string name="properties_details">Details</string> + <string name="properties_convert">Convert File</string> + <string name="properties_set_default_iso">Set as Default ISO</string> + <string name="properties_core_settings">Core Settings</string> + <string name="properties_gfx_settings">GFX Settings</string> + <string name="properties_gc_controller">GameCube Controller Settings</string> + <string name="properties_wii_controller">Wii Controller Settings</string> + <string name="properties_clear_game_settings">Clear Game Settings</string> <string name="preferences_save_exit">Save and Exit</string> <string name="preferences_settings">Settings</string> <string name="preferences_game_properties">Game Properties</string> |
