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 131c95bc6f..c962fba4fd 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 @@ -13,7 +13,9 @@ import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.preference.PreferenceManager; +import android.support.annotation.IntDef; import android.support.v7.app.AppCompatActivity; +import android.util.SparseIntArray; import android.view.InputDevice; import android.view.KeyEvent; import android.view.LayoutInflater; @@ -44,8 +46,11 @@ import org.dolphinemu.dolphinemu.utils.Java_GCAdapter; import org.dolphinemu.dolphinemu.utils.Java_WiimoteAdapter; import org.dolphinemu.dolphinemu.utils.Log; +import java.lang.annotation.Retention; import java.util.List; +import static java.lang.annotation.RetentionPolicy.SOURCE; + public final class EmulationActivity extends AppCompatActivity { private View mDecorView; @@ -84,6 +89,71 @@ public final class EmulationActivity extends AppCompatActivity private FrameLayout mFrameContent; private String mSelectedTitle; + @Retention(SOURCE) + @IntDef({MENU_ACTION_EDIT_CONTROLS_PLACEMENT, MENU_ACTION_TOGGLE_CONTROLS, MENU_ACTION_ADJUST_SCALE, + MENU_ACTION_CHOOSE_CONTROLLER, MENU_ACTION_REFRESH_WIIMOTES, MENU_ACTION_TAKE_SCREENSHOT, + MENU_ACTION_QUICK_SAVE, MENU_ACTION_QUICK_LOAD, MENU_ACTION_SAVE_ROOT, + MENU_ACTION_LOAD_ROOT, MENU_ACTION_SAVE_SLOT1, MENU_ACTION_SAVE_SLOT2, + MENU_ACTION_SAVE_SLOT3, MENU_ACTION_SAVE_SLOT4, MENU_ACTION_SAVE_SLOT5, + MENU_ACTION_SAVE_SLOT6, MENU_ACTION_LOAD_SLOT1, MENU_ACTION_LOAD_SLOT2, + MENU_ACTION_LOAD_SLOT3, MENU_ACTION_LOAD_SLOT4, MENU_ACTION_LOAD_SLOT5, + MENU_ACTION_LOAD_SLOT6, MENU_ACTION_EXIT}) + public @interface MenuAction { + } + + public static final int MENU_ACTION_EDIT_CONTROLS_PLACEMENT = 0; + public static final int MENU_ACTION_TOGGLE_CONTROLS = 1; + public static final int MENU_ACTION_ADJUST_SCALE = 2; + public static final int MENU_ACTION_CHOOSE_CONTROLLER = 3; + public static final int MENU_ACTION_REFRESH_WIIMOTES = 4; + public static final int MENU_ACTION_TAKE_SCREENSHOT = 5; + public static final int MENU_ACTION_QUICK_SAVE = 6; + public static final int MENU_ACTION_QUICK_LOAD = 7; + public static final int MENU_ACTION_SAVE_ROOT = 8; + public static final int MENU_ACTION_LOAD_ROOT = 9; + public static final int MENU_ACTION_SAVE_SLOT1 = 10; + public static final int MENU_ACTION_SAVE_SLOT2 = 11; + public static final int MENU_ACTION_SAVE_SLOT3 = 12; + public static final int MENU_ACTION_SAVE_SLOT4 = 13; + public static final int MENU_ACTION_SAVE_SLOT5 = 14; + public static final int MENU_ACTION_SAVE_SLOT6 = 15; + public static final int MENU_ACTION_LOAD_SLOT1 = 16; + public static final int MENU_ACTION_LOAD_SLOT2 = 17; + public static final int MENU_ACTION_LOAD_SLOT3 = 18; + public static final int MENU_ACTION_LOAD_SLOT4 = 19; + public static final int MENU_ACTION_LOAD_SLOT5 = 20; + public static final int MENU_ACTION_LOAD_SLOT6 = 21; + public static final int MENU_ACTION_EXIT = 22; + + + private static SparseIntArray buttonsActionsMap = new SparseIntArray(); + static { + buttonsActionsMap.append(R.id.menu_emulation_edit_layout, EmulationActivity.MENU_ACTION_EDIT_CONTROLS_PLACEMENT); + buttonsActionsMap.append(R.id.menu_emulation_toggle_controls, EmulationActivity.MENU_ACTION_TOGGLE_CONTROLS); + buttonsActionsMap.append(R.id.menu_emulation_adjust_scale, EmulationActivity.MENU_ACTION_ADJUST_SCALE); + buttonsActionsMap.append(R.id.menu_emulation_choose_controller, EmulationActivity.MENU_ACTION_CHOOSE_CONTROLLER); + buttonsActionsMap.append(R.id.menu_refresh_wiimotes, EmulationActivity.MENU_ACTION_REFRESH_WIIMOTES); + buttonsActionsMap.append(R.id.menu_emulation_screenshot, EmulationActivity.MENU_ACTION_TAKE_SCREENSHOT); + + buttonsActionsMap.append(R.id.menu_quicksave, EmulationActivity.MENU_ACTION_QUICK_SAVE); + buttonsActionsMap.append(R.id.menu_quickload, EmulationActivity.MENU_ACTION_QUICK_LOAD); + buttonsActionsMap.append(R.id.menu_emulation_save_root, EmulationActivity.MENU_ACTION_SAVE_ROOT); + buttonsActionsMap.append(R.id.menu_emulation_load_root, EmulationActivity.MENU_ACTION_LOAD_ROOT); + buttonsActionsMap.append(R.id.menu_emulation_save_1, EmulationActivity.MENU_ACTION_SAVE_SLOT1); + buttonsActionsMap.append(R.id.menu_emulation_save_2, EmulationActivity.MENU_ACTION_SAVE_SLOT2); + buttonsActionsMap.append(R.id.menu_emulation_save_3, EmulationActivity.MENU_ACTION_SAVE_SLOT3); + buttonsActionsMap.append(R.id.menu_emulation_save_4, EmulationActivity.MENU_ACTION_SAVE_SLOT4); + buttonsActionsMap.append(R.id.menu_emulation_save_5, EmulationActivity.MENU_ACTION_SAVE_SLOT5); + buttonsActionsMap.append(R.id.menu_emulation_load_1, EmulationActivity.MENU_ACTION_LOAD_SLOT1); + buttonsActionsMap.append(R.id.menu_emulation_load_2, EmulationActivity.MENU_ACTION_LOAD_SLOT2); + buttonsActionsMap.append(R.id.menu_emulation_load_3, EmulationActivity.MENU_ACTION_LOAD_SLOT3); + buttonsActionsMap.append(R.id.menu_emulation_load_4, EmulationActivity.MENU_ACTION_LOAD_SLOT4); + buttonsActionsMap.append(R.id.menu_emulation_load_5, EmulationActivity.MENU_ACTION_LOAD_SLOT5); + buttonsActionsMap.append(R.id.menu_exit, EmulationActivity.MENU_ACTION_EXIT); + + + } + @Override protected void onCreate(Bundle savedInstanceState) { @@ -394,249 +464,65 @@ public final class EmulationActivity extends AppCompatActivity return true; } + @SuppressWarnings("WrongConstant") @Override public boolean onOptionsItemSelected(MenuItem item) { - onMenuItemClicked(item.getItemId()); + handleMenuAction(buttonsActionsMap.get(item.getItemId())); return true; } - public void onMenuItemClicked(int id) + public void handleMenuAction(@MenuAction int menuAction) { - switch (id) + switch (menuAction) { // Edit the placement of the controls - case R.id.menu_emulation_edit_layout: - EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() - .findFragmentById(R.id.frame_emulation_fragment); - if (emulationFragment.isConfiguringControls()) - { - emulationFragment.stopConfiguringControls(); - } - else - { - emulationFragment.startConfiguringControls(); - } + case MENU_ACTION_EDIT_CONTROLS_PLACEMENT: + editControlsPlacement(); break; // Enable/Disable specific buttons or the entire input overlay. - case R.id.menu_emulation_toggle_controls: - { - final SharedPreferences.Editor editor = mPreferences.edit(); - boolean[] enabledButtons = new boolean[14]; - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.emulation_toggle_controls); - if (mIsGameCubeGame || mPreferences.getInt("wiiController", 3) == 0) - { - for (int i = 0; i < enabledButtons.length; i++) - { - enabledButtons[i] = mPreferences.getBoolean("buttonToggleGc" + i, true); - } - builder.setMultiChoiceItems(R.array.gcpadButtons, enabledButtons, - new DialogInterface.OnMultiChoiceClickListener() - { - @Override - public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) - { - editor.putBoolean("buttonToggleGc" + indexSelected, isChecked); - } - }); - } - else if (mPreferences.getInt("wiiController", 3) == 4) - { - for (int i = 0; i < enabledButtons.length; i++) - { - enabledButtons[i] = mPreferences.getBoolean("buttonToggleClassic" + i, true); - } - builder.setMultiChoiceItems(R.array.classicButtons, enabledButtons, - new DialogInterface.OnMultiChoiceClickListener() - { - @Override - public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) - { - editor.putBoolean("buttonToggleClassic" + indexSelected, isChecked); - } - }); - } - else - { - for (int i = 0; i < enabledButtons.length; i++) - { - enabledButtons[i] = mPreferences.getBoolean("buttonToggleWii" + i, true); - } - if (mPreferences.getInt("wiiController", 3) == 3) - { - builder.setMultiChoiceItems(R.array.nunchukButtons, enabledButtons, - new DialogInterface.OnMultiChoiceClickListener() - { - @Override - public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) - { - editor.putBoolean("buttonToggleWii" + indexSelected, isChecked); - } - }); - } - else - { - builder.setMultiChoiceItems(R.array.wiimoteButtons, enabledButtons, - new DialogInterface.OnMultiChoiceClickListener() - { - @Override - public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) - { - editor.putBoolean("buttonToggleWii" + indexSelected, isChecked); - } - }); - } - } - builder.setNeutralButton(getString(R.string.emulation_toggle_all), new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialogInterface, int i) - { - EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() - .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); - emulationFragment.toggleInputOverlayVisibility(); - } - }); - builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialogInterface, int i) - { - editor.apply(); - - EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() - .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); - emulationFragment.refreshInputOverlay(); - } - }); - - AlertDialog alertDialog = builder.create(); - alertDialog.show(); - + case MENU_ACTION_TOGGLE_CONTROLS: + toggleControls(); return; - } // Adjust the scale of the overlay controls. - case R.id.menu_emulation_adjust_scale: - { - LayoutInflater inflater = LayoutInflater.from(this); - View view = inflater.inflate(R.layout.dialog_seekbar, null); - - final SeekBar seekbar = (SeekBar) view.findViewById(R.id.seekbar); - final TextView value = (TextView) view.findViewById(R.id.text_value); - final TextView units = (TextView) view.findViewById(R.id.text_units); - - seekbar.setMax(150); - seekbar.setProgress(mPreferences.getInt("controlScale", 50)); - seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() - { - public void onStartTrackingTouch(SeekBar seekBar) - { - // Do nothing - } - public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) - { - value.setText(String.valueOf(progress + 50)); - } - public void onStopTrackingTouch(SeekBar seekBar) - { - // Do nothing - } - }); - - value.setText(String.valueOf(seekbar.getProgress() + 50)); - units.setText("%"); - - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.emulation_control_scale); - builder.setView(view); - builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialogInterface, int i) - { - SharedPreferences.Editor editor = mPreferences.edit(); - editor.putInt("controlScale", seekbar.getProgress()); - editor.apply(); - - EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() - .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); - emulationFragment.refreshInputOverlay(); - } - }); - - AlertDialog alertDialog = builder.create(); - alertDialog.show(); - + case MENU_ACTION_ADJUST_SCALE: + adjustScale(); return; - } // (Wii games only) Change the controller for the input overlay. - case R.id.menu_emulation_choose_controller: - final SharedPreferences.Editor editor = mPreferences.edit(); - AlertDialog.Builder builder = new AlertDialog.Builder(this); - builder.setTitle(R.string.emulation_choose_controller); - builder.setSingleChoiceItems(R.array.controllersEntries, mPreferences.getInt("wiiController", 3), - new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialog, int indexSelected) - { - editor.putInt("wiiController", indexSelected); - - NativeLibrary.SetConfig("WiimoteNew.ini", "Wiimote1", "Extension", - getResources().getStringArray(R.array.controllersValues)[indexSelected]); - } - }); - builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() - { - @Override - public void onClick(DialogInterface dialogInterface, int i) - { - editor.apply(); - - EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() - .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); - emulationFragment.refreshInputOverlay(); - - Toast.makeText(getApplication(), R.string.emulation_controller_changed, Toast.LENGTH_SHORT).show(); - } - }); - - AlertDialog alertDialog = builder.create(); - alertDialog.show(); - + case MENU_ACTION_CHOOSE_CONTROLLER: + chooseController(); return; - case R.id.menu_refresh_wiimotes: + case MENU_ACTION_REFRESH_WIIMOTES: NativeLibrary.RefreshWiimotes(); return; // Screenshot capturing - case R.id.menu_emulation_screenshot: + case MENU_ACTION_TAKE_SCREENSHOT: NativeLibrary.SaveScreenShot(); return; // Quick save / load - case R.id.menu_quicksave: + case MENU_ACTION_QUICK_SAVE: NativeLibrary.SaveState(9); return; - case R.id.menu_quickload: + case MENU_ACTION_QUICK_LOAD: NativeLibrary.LoadState(9); return; // TV Menu only - case R.id.menu_emulation_save_root: + case MENU_ACTION_SAVE_ROOT: if (!mDeviceHasTouchScreen) { showMenu(SaveStateFragment.FRAGMENT_ID); } return; - case R.id.menu_emulation_load_root: + case MENU_ACTION_LOAD_ROOT: if (!mDeviceHasTouchScreen) { showMenu(LoadStateFragment.FRAGMENT_ID); @@ -644,54 +530,73 @@ public final class EmulationActivity extends AppCompatActivity return; // Save state slots - case R.id.menu_emulation_save_1: + case MENU_ACTION_SAVE_SLOT1: NativeLibrary.SaveState(0); return; - case R.id.menu_emulation_save_2: + case MENU_ACTION_SAVE_SLOT2: NativeLibrary.SaveState(1); return; - case R.id.menu_emulation_save_3: + case MENU_ACTION_SAVE_SLOT3: NativeLibrary.SaveState(2); return; - case R.id.menu_emulation_save_4: + case MENU_ACTION_SAVE_SLOT4: NativeLibrary.SaveState(3); return; - case R.id.menu_emulation_save_5: + case MENU_ACTION_SAVE_SLOT5: NativeLibrary.SaveState(4); return; + case MENU_ACTION_SAVE_SLOT6: + NativeLibrary.SaveState(5); + return; + // Load state slots - case R.id.menu_emulation_load_1: + case MENU_ACTION_LOAD_SLOT1: NativeLibrary.LoadState(0); return; - case R.id.menu_emulation_load_2: + case MENU_ACTION_LOAD_SLOT2: NativeLibrary.LoadState(1); return; - case R.id.menu_emulation_load_3: + case MENU_ACTION_LOAD_SLOT3: NativeLibrary.LoadState(2); return; - case R.id.menu_emulation_load_4: + case MENU_ACTION_LOAD_SLOT4: NativeLibrary.LoadState(3); return; - case R.id.menu_emulation_load_5: + case MENU_ACTION_LOAD_SLOT5: NativeLibrary.LoadState(4); return; - case R.id.menu_exit: + case MENU_ACTION_LOAD_SLOT6: + NativeLibrary.LoadState(5); + return; + + case MENU_ACTION_EXIT: toggleMenu(); stopEmulation(); return; } } + + private void editControlsPlacement() { + EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() + .findFragmentById(R.id.frame_emulation_fragment); + if (emulationFragment.isConfiguringControls()) { + emulationFragment.stopConfiguringControls(); + } else { + emulationFragment.startConfiguringControls(); + } + } + // Gets button presses @Override public boolean dispatchKeyEvent(KeyEvent event) @@ -726,6 +631,157 @@ public final class EmulationActivity extends AppCompatActivity return NativeLibrary.onGamePadEvent(input.getDescriptor(), event.getKeyCode(), action); } + private void toggleControls() { + final SharedPreferences.Editor editor = mPreferences.edit(); + boolean[] enabledButtons = new boolean[14]; + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.emulation_toggle_controls); + if (mIsGameCubeGame || mPreferences.getInt("wiiController", 3) == 0) { + for (int i = 0; i < enabledButtons.length; i++) { + enabledButtons[i] = mPreferences.getBoolean("buttonToggleGc" + i, true); + } + builder.setMultiChoiceItems(R.array.gcpadButtons, enabledButtons, + new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { + editor.putBoolean("buttonToggleGc" + indexSelected, isChecked); + } + }); + } else if (mPreferences.getInt("wiiController", 3) == 4) { + for (int i = 0; i < enabledButtons.length; i++) { + enabledButtons[i] = mPreferences.getBoolean("buttonToggleClassic" + i, true); + } + builder.setMultiChoiceItems(R.array.classicButtons, enabledButtons, + new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { + editor.putBoolean("buttonToggleClassic" + indexSelected, isChecked); + } + }); + } else { + for (int i = 0; i < enabledButtons.length; i++) { + enabledButtons[i] = mPreferences.getBoolean("buttonToggleWii" + i, true); + } + if (mPreferences.getInt("wiiController", 3) == 3) { + builder.setMultiChoiceItems(R.array.nunchukButtons, enabledButtons, + new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { + editor.putBoolean("buttonToggleWii" + indexSelected, isChecked); + } + }); + } else { + builder.setMultiChoiceItems(R.array.wiimoteButtons, enabledButtons, + new DialogInterface.OnMultiChoiceClickListener() { + @Override + public void onClick(DialogInterface dialog, int indexSelected, boolean isChecked) { + editor.putBoolean("buttonToggleWii" + indexSelected, isChecked); + } + }); + } + } + builder.setNeutralButton(getString(R.string.emulation_toggle_all), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() + .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); + emulationFragment.toggleInputOverlayVisibility(); + } + }); + builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + editor.apply(); + + EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() + .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); + emulationFragment.refreshInputOverlay(); + } + }); + + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + } + + private void adjustScale() { + LayoutInflater inflater = LayoutInflater.from(this); + View view = inflater.inflate(R.layout.dialog_seekbar, null); + + final SeekBar seekbar = (SeekBar) view.findViewById(R.id.seekbar); + final TextView value = (TextView) view.findViewById(R.id.text_value); + final TextView units = (TextView) view.findViewById(R.id.text_units); + + seekbar.setMax(150); + seekbar.setProgress(mPreferences.getInt("controlScale", 50)); + seekbar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { + public void onStartTrackingTouch(SeekBar seekBar) { + // Do nothing + } + + public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { + value.setText(String.valueOf(progress + 50)); + } + + public void onStopTrackingTouch(SeekBar seekBar) { + // Do nothing + } + }); + + value.setText(String.valueOf(seekbar.getProgress() + 50)); + units.setText("%"); + + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.emulation_control_scale); + builder.setView(view); + builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + SharedPreferences.Editor editor = mPreferences.edit(); + editor.putInt("controlScale", seekbar.getProgress()); + editor.apply(); + + EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() + .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); + emulationFragment.refreshInputOverlay(); + } + }); + + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + } + + private void chooseController() { + final SharedPreferences.Editor editor = mPreferences.edit(); + AlertDialog.Builder builder = new AlertDialog.Builder(this); + builder.setTitle(R.string.emulation_choose_controller); + builder.setSingleChoiceItems(R.array.controllersEntries, mPreferences.getInt("wiiController", 3), + new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int indexSelected) { + editor.putInt("wiiController", indexSelected); + + NativeLibrary.SetConfig("WiimoteNew.ini", "Wiimote1", "Extension", + getResources().getStringArray(R.array.controllersValues)[indexSelected]); + } + }); + builder.setPositiveButton(getString(R.string.ok), new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialogInterface, int i) { + editor.apply(); + + EmulationFragment emulationFragment = (EmulationFragment) getFragmentManager() + .findFragmentByTag(EmulationFragment.FRAGMENT_TAG); + emulationFragment.refreshInputOverlay(); + + Toast.makeText(getApplication(), R.string.emulation_controller_changed, Toast.LENGTH_SHORT).show(); + } + }); + + AlertDialog alertDialog = builder.create(); + alertDialog.show(); + + } + @Override public boolean dispatchGenericMotionEvent(MotionEvent event) { diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/LoadStateFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/LoadStateFragment.java index bbd9807b9b..2fbbc1838b 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/LoadStateFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/LoadStateFragment.java @@ -3,6 +3,7 @@ package org.dolphinemu.dolphinemu.fragments; import android.app.Fragment; import android.os.Bundle; import android.support.annotation.Nullable; +import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -18,6 +19,16 @@ public final class LoadStateFragment extends Fragment implements View.OnClickLis public static final String FRAGMENT_TAG = BuildConfig.APPLICATION_ID + ".load_state"; public static final int FRAGMENT_ID = R.layout.fragment_state_load; + private static SparseIntArray buttonsActionsMap = new SparseIntArray(); + static { + buttonsActionsMap.append(R.id.menu_emulation_load_1, EmulationActivity.MENU_ACTION_LOAD_SLOT1); + buttonsActionsMap.append(R.id.menu_emulation_load_2, EmulationActivity.MENU_ACTION_LOAD_SLOT2); + buttonsActionsMap.append(R.id.menu_emulation_load_3, EmulationActivity.MENU_ACTION_LOAD_SLOT3); + buttonsActionsMap.append(R.id.menu_emulation_load_4, EmulationActivity.MENU_ACTION_LOAD_SLOT4); + buttonsActionsMap.append(R.id.menu_emulation_load_5, EmulationActivity.MENU_ACTION_LOAD_SLOT5); + buttonsActionsMap.append(R.id.menu_emulation_load_6, EmulationActivity.MENU_ACTION_LOAD_SLOT6); + } + public static LoadStateFragment newInstance() { LoadStateFragment fragment = new LoadStateFragment(); @@ -47,9 +58,10 @@ public final class LoadStateFragment extends Fragment implements View.OnClickLis return rootView; } + @SuppressWarnings("WrongConstant") @Override public void onClick(View button) { - ((EmulationActivity) getActivity()).onMenuItemClicked(button.getId()); + ((EmulationActivity) getActivity()).handleMenuAction(buttonsActionsMap.get(button.getId())); } } 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 d894f32373..f83b0a4f98 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 @@ -3,6 +3,7 @@ package org.dolphinemu.dolphinemu.fragments; import android.app.Fragment; import android.os.Bundle; import android.support.annotation.Nullable; +import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -19,6 +20,16 @@ public final class MenuFragment extends Fragment implements View.OnClickListener public static final String FRAGMENT_TAG = BuildConfig.APPLICATION_ID + ".ingame_menu"; public static final int FRAGMENT_ID = R.layout.fragment_ingame_menu; private TextView mTitleText; + private static SparseIntArray buttonsActionsMap = new SparseIntArray(); + static { + buttonsActionsMap.append(R.id.menu_take_screenshot, EmulationActivity.MENU_ACTION_TAKE_SCREENSHOT); + buttonsActionsMap.append(R.id.menu_quicksave, EmulationActivity.MENU_ACTION_QUICK_SAVE); + buttonsActionsMap.append(R.id.menu_quickload, EmulationActivity.MENU_ACTION_QUICK_LOAD); + buttonsActionsMap.append(R.id.menu_emulation_save_root, EmulationActivity.MENU_ACTION_SAVE_ROOT); + buttonsActionsMap.append(R.id.menu_emulation_load_root, EmulationActivity.MENU_ACTION_LOAD_ROOT); + buttonsActionsMap.append(R.id.menu_refresh_wiimotes, EmulationActivity.MENU_ACTION_REFRESH_WIIMOTES); + buttonsActionsMap.append(R.id.menu_exit, EmulationActivity.MENU_ACTION_EXIT); + } @Nullable @Override @@ -39,10 +50,11 @@ public final class MenuFragment extends Fragment implements View.OnClickListener return rootView; } + @SuppressWarnings("WrongConstant") @Override public void onClick(View button) { - ((EmulationActivity) getActivity()).onMenuItemClicked(button.getId()); + ((EmulationActivity) getActivity()).handleMenuAction(buttonsActionsMap.get(button.getId())); } public void setTitleText(String title) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/SaveStateFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/SaveStateFragment.java index a5e9e6d441..4ddebc37d9 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/SaveStateFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/fragments/SaveStateFragment.java @@ -3,6 +3,7 @@ package org.dolphinemu.dolphinemu.fragments; import android.app.Fragment; import android.os.Bundle; import android.support.annotation.Nullable; +import android.util.SparseIntArray; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -18,6 +19,16 @@ public final class SaveStateFragment extends Fragment implements View.OnClickLis public static final String FRAGMENT_TAG = BuildConfig.APPLICATION_ID + ".save_state"; public static final int FRAGMENT_ID = R.layout.fragment_state_save; + private static SparseIntArray buttonsActionsMap = new SparseIntArray(); + static { + buttonsActionsMap.append(R.id.menu_emulation_save_1, EmulationActivity.MENU_ACTION_SAVE_SLOT1); + buttonsActionsMap.append(R.id.menu_emulation_save_2, EmulationActivity.MENU_ACTION_SAVE_SLOT2); + buttonsActionsMap.append(R.id.menu_emulation_save_3, EmulationActivity.MENU_ACTION_SAVE_SLOT3); + buttonsActionsMap.append(R.id.menu_emulation_save_4, EmulationActivity.MENU_ACTION_SAVE_SLOT4); + buttonsActionsMap.append(R.id.menu_emulation_save_5, EmulationActivity.MENU_ACTION_SAVE_SLOT5); + buttonsActionsMap.append(R.id.menu_emulation_save_6, EmulationActivity.MENU_ACTION_SAVE_SLOT6); + } + public static SaveStateFragment newInstance() { SaveStateFragment fragment = new SaveStateFragment(); @@ -47,9 +58,10 @@ public final class SaveStateFragment extends Fragment implements View.OnClickLis return rootView; } + @SuppressWarnings("WrongConstant") @Override public void onClick(View button) { - ((EmulationActivity) getActivity()).onMenuItemClicked(button.getId()); + ((EmulationActivity) getActivity()).handleMenuAction(buttonsActionsMap.get(button.getId())); } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java index 6514fade3c..5fd25a2354 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/model/Game.java @@ -95,7 +95,7 @@ public final class Game { ContentValues values = new ContentValues(); - String screenPath = PATH_SCREENSHOT_FOLDER + gameId + "/thumb.png"; + String screenPath = PATH_SCREENSHOT_FOLDER + gameId + "/" + gameId + "-1.png"; values.put(GameDatabase.KEY_GAME_PLATFORM, platform); values.put(GameDatabase.KEY_GAME_TITLE, title); diff --git a/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml b/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml index 4bf4e6193f..6aa1e9dc8b 100644 --- a/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml +++ b/Source/Android/app/src/main/res/layout/fragment_ingame_menu.xml @@ -52,11 +52,6 @@ android:text="@string/emulation_loadstate" style="@style/InGameMenuOption"/> -