summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2020-06-27 12:20:58 +0200
committerJosJuice <josjuice@gmail.com>2020-09-16 18:48:25 +0200
commit23ea47d4dfb8ea4ac2b33aa8c5650110dbb0aa89 (patch)
tree47e5c1fe71f1256a97b2155c47dd5f56ffc38e67 /Source
parent5d13f3675f9907459f107e951d39713628e51177 (diff)
Android: Refactor GamePropertiesDialog.onCreateDialog
Diffstat (limited to 'Source')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/dialogs/GamePropertiesDialog.java89
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/AlertDialogItemsBuilder.java40
-rw-r--r--Source/Android/app/src/main/res/values/arrays.xml20
-rw-r--r--Source/Android/app/src/main/res/values/strings.xml10
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>