mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-27 06:35:39 +00:00
Android: Refactor GamePropertiesDialog.onCreateDialog
This commit is contained in:
parent
5d13f3675f
commit
23ea47d4df
@ -16,6 +16,7 @@ import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
|
|||||||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
|
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
|
||||||
import org.dolphinemu.dolphinemu.model.GameFile;
|
import org.dolphinemu.dolphinemu.model.GameFile;
|
||||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||||
|
import org.dolphinemu.dolphinemu.utils.AlertDialogItemsBuilder;
|
||||||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
|
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
|
||||||
import org.dolphinemu.dolphinemu.utils.Log;
|
import org.dolphinemu.dolphinemu.utils.Log;
|
||||||
|
|
||||||
@ -47,62 +48,56 @@ public class GamePropertiesDialog extends DialogFragment
|
|||||||
@Override
|
@Override
|
||||||
public Dialog onCreateDialog(Bundle savedInstanceState)
|
public Dialog onCreateDialog(Bundle savedInstanceState)
|
||||||
{
|
{
|
||||||
AlertDialog.Builder builder = new AlertDialog.Builder(requireContext(),
|
|
||||||
R.style.DolphinDialogBase);
|
|
||||||
|
|
||||||
String path = requireArguments().getString(ARG_PATH);
|
String path = requireArguments().getString(ARG_PATH);
|
||||||
String gameId = requireArguments().getString(ARG_GAMEID);
|
String gameId = requireArguments().getString(ARG_GAMEID);
|
||||||
int revision = requireArguments().getInt(ARG_REVISION);
|
int revision = requireArguments().getInt(ARG_REVISION);
|
||||||
int platform = requireArguments().getInt(ARG_PLATFORM);
|
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()
|
builder.setTitle(requireContext()
|
||||||
.getString(R.string.preferences_game_properties) + ": " + gameId)
|
.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;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return builder.create();
|
return builder.create();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void clearGameSettings(String gameId)
|
private void clearGameSettings(String gameId)
|
||||||
{
|
{
|
||||||
String gameSettingsPath =
|
String gameSettingsPath =
|
||||||
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
@ -385,26 +385,6 @@
|
|||||||
<item>Classic A</item>
|
<item>Classic A</item>
|
||||||
</string-array>
|
</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">
|
<string-array name="orientationEntries">
|
||||||
<item>Landscape</item>
|
<item>Landscape</item>
|
||||||
<item>Portrait</item>
|
<item>Portrait</item>
|
||||||
|
@ -313,7 +313,15 @@
|
|||||||
<string name="wad_install_success">Successfully installed this title to the NAND.</string>
|
<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>
|
<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_save_exit">Save and Exit</string>
|
||||||
<string name="preferences_settings">Settings</string>
|
<string name="preferences_settings">Settings</string>
|
||||||
<string name="preferences_game_properties">Game Properties</string>
|
<string name="preferences_game_properties">Game Properties</string>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user