diff options
| author | sigmabeta <sigmabeta@users.noreply.github.com> | 2016-01-27 08:58:44 -0500 |
|---|---|---|
| committer | sigmabeta <sigmabeta@users.noreply.github.com> | 2016-01-29 23:33:06 -0500 |
| commit | 6115d39a7a3a1a84a1abe25b18b5e122a9145ec4 (patch) | |
| tree | 1932dfdd45c5391710c166385efbb7a0d95fe0c5 /Source/Android/app/src/main/java | |
| parent | f1ca95eec765ab8d7763bda8a0240248790fbe24 (diff) | |
Implement Gamecube Input setting screen
Diffstat (limited to 'Source/Android/app/src/main/java')
14 files changed, 137 insertions, 7 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java new file mode 100644 index 0000000000..346a16741d --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java @@ -0,0 +1,6 @@ +package org.dolphinemu.dolphinemu.ui.input.gamecube; + + +public class ControllerFragment +{ +} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java new file mode 100644 index 0000000000..d8916ccf08 --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java @@ -0,0 +1,6 @@ +package org.dolphinemu.dolphinemu.ui.input.gamecube; + + +public class ControllerFragmentPresenter +{ +} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java new file mode 100644 index 0000000000..77c8b7b3a7 --- /dev/null +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java @@ -0,0 +1,6 @@ +package org.dolphinemu.dolphinemu.ui.input.gamecube; + + +public interface ControllerFragmentView +{ +} diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java index c1052fc42a..42b3231c8c 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java @@ -50,6 +50,10 @@ public final class MainPresenter mView.launchSettingsActivity(SettingsFile.FILE_NAME_GFX); return true; + case R.id.menu_settings_gcpad: + mView.launchSettingsActivity(SettingsFile.FILE_NAME_GCPAD); + return true; + case R.id.menu_refresh: mView.refresh(); return true; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java index b1103998b3..bf9087bef1 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java @@ -237,6 +237,10 @@ public final class TvMainActivity extends Activity implements MainView R.drawable.ic_settings_graphics_tv, R.string.grid_menu_video_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.button_add_directory, R.drawable.ic_add_tv, R.string.add_directory_title)); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java index 70d3cfbb86..206d6432dd 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java @@ -150,6 +150,12 @@ public final class SettingsActivity extends AppCompatActivity implements Setting mPresenter.onSettingChanged(); } + @Override + public void onGcPadSettingChanged(String key, int value) + { + mPresenter.onGcPadSettingChanged(key, value); + } + private SettingsFragment getFragment() { return (SettingsFragment) getFragmentManager().findFragmentByTag(SettingsFragment.FRAGMENT_TAG); diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java index 8c16443cec..59d4cbee77 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java @@ -39,6 +39,21 @@ public final class SettingsActivityPresenter if (savedInstanceState == null) { + // TODO DI should be able to get rid of this hack + if (filename.equals(SettingsFile.FILE_NAME_GCPAD)) + { + // Psyche! Don't actually load that file (yet). + mFileName = SettingsFile.FILE_NAME_DOLPHIN; + + // But do display its fragment, as if we had. + mView.showSettingsFragment(SettingsFile.FILE_NAME_GCPAD, false); + } + else + { + mFileName = filename; + mView.showSettingsFragment(mFileName, false); + } + SettingsFile.readFile(mFileName) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) @@ -60,8 +75,6 @@ public final class SettingsActivityPresenter mView.onSettingsFileNotFound(); } }); - - mView.showSettingsFragment(mFileName, false); } else { @@ -147,4 +160,18 @@ public final class SettingsActivityPresenter { outState.putBoolean(SHOULD_SAVE, mShouldSave); } + + public void onGcPadSettingChanged(String key, int value) + { + switch (value) + { + case 6: + mView.showToastMessage("Configuration coming soon. Settings from old versions will still work."); + break; + + case 12: + mView.showSettingsFragment(key, true); + break; + } + } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java index 0a14440087..4307ec891b 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java @@ -69,4 +69,13 @@ public interface SettingsActivityView * unless this has been called, the Activity will not save to disk. */ void onSettingChanged(); + + /** + * Called by a containing Fragment to tell the containing Activity that a GCPad's setting + * was modified. + * + * @param key Identifier for the GCPad that was modified. + * @param value New setting for the GCPad. + */ + void onGcPadSettingChanged(String key, int value); } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java index 72ff6049b1..4028af87a2 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java @@ -189,6 +189,11 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde int value = getValueForSingleChoiceSelection(scSetting, which); + if (scSetting.getKey().startsWith(SettingsFile.KEY_GCPAD_TYPE)) + { + mView.onGcPadSettingChanged(scSetting.getKey(), value); + } + // Get the backing Setting, which may be null (if for example it was missing from the file) IntSetting setting = scSetting.setSelectedValue(value); if (setting != null) diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java index d265c9b824..6ccd5f1a22 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java @@ -151,6 +151,12 @@ public final class SettingsFragment extends Fragment implements SettingsFragment mActivity.onSettingChanged(); } + @Override + public void onGcPadSettingChanged(String key, int value) + { + mActivity.onGcPadSettingChanged(key, value); + } + public static final String FRAGMENT_TAG = BuildConfig.APPLICATION_ID + ".fragment.settings"; public static final String ARGUMENT_MENU_TAG = FRAGMENT_TAG + ".menu_tag"; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java index 6c697bfb3d..72eaad9187 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java @@ -26,6 +26,8 @@ public final class SettingsFragmentPresenter private HashMap<String, SettingSection> mSettings; private ArrayList<SettingsItem> mSettingsList; + private int mGcPadNumber; + public SettingsFragmentPresenter(SettingsFragmentView view) { mView = view; @@ -33,7 +35,15 @@ public final class SettingsFragmentPresenter public void onCreate(String menuTag) { - mMenuTag = menuTag; + if (menuTag.startsWith(SettingsFile.KEY_GCPAD_TYPE)) + { + mMenuTag = SettingsFile.KEY_GCPAD_TYPE; + mGcPadNumber = Integer.valueOf(menuTag.substring(menuTag.length() - 1)); + } + else + { + mMenuTag = menuTag; + } } public void onViewCreated(HashMap<String, SettingSection> settings) @@ -92,6 +102,10 @@ public final class SettingsFragmentPresenter addGraphicsSettings(sl); break; + case SettingsFile.FILE_NAME_GCPAD: + addGcPadSettings(sl); + break; + case SettingsFile.SECTION_GFX_ENHANCEMENTS: addEnhanceSettings(sl); break; @@ -100,6 +114,10 @@ public final class SettingsFragmentPresenter addHackSettings(sl); break; + case SettingsFile.KEY_GCPAD_TYPE: + addGcAdapterSettings(sl, mGcPadNumber); + break; + default: mView.showToastMessage("Unimplemented menu."); return; @@ -139,6 +157,19 @@ public final class SettingsFragmentPresenter } + private void addGcPadSettings(ArrayList<SettingsItem> sl) + { + if (mSettings != null) + { + for (int i = 0; i < 4; i++) + { + // TODO This controller_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order. + Setting gcPadSetting = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_GCPAD_TYPE + i); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_GCPAD_TYPE + i, SettingsFile.SECTION_CORE, R.string.controller_0 + i, 0, R.array.gcpadTypeEntries, R.array.gcpadTypeValues, 0, gcPadSetting)); + } + } + } + private void addGraphicsSettings(ArrayList<SettingsItem> sl) { Setting showFps = null; @@ -229,6 +260,15 @@ public final class SettingsFragmentPresenter sl.add(new SingleChoiceSetting(SettingsFile.KEY_ASPECT_RATIO, SettingsFile.SECTION_GFX_HACKS, R.string.aspect_ratio, R.string.aspect_ratio_descrip, R.array.aspectRatioEntries, R.array.aspectRatioValues, 0, aspectRatio)); } + private void addGcAdapterSettings(ArrayList<SettingsItem> sl, int gcPadNumber) + { + Setting rumble = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_GCADAPTER_RUMBLE + gcPadNumber); + Setting bongos = mSettings.get(SettingsFile.SECTION_CORE).getSetting(SettingsFile.KEY_GCADAPTER_BONGOS + gcPadNumber); + + sl.add(new CheckBoxSetting(SettingsFile.KEY_GCADAPTER_RUMBLE + gcPadNumber, SettingsFile.SECTION_CORE, R.string.gc_adapter_rumble, R.string.gc_adapter_rumble_description, false, rumble)); + sl.add(new CheckBoxSetting(SettingsFile.KEY_GCADAPTER_BONGOS + gcPadNumber, SettingsFile.SECTION_CORE, R.string.gc_adapter_bongos, R.string.gc_adapter_bongos_description, false, bongos)); + } + private int getXfbValue() { int xfbValue; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java index 66ea466b54..8cdf4361e7 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java @@ -76,4 +76,12 @@ public interface SettingsFragmentView * Have the fragment tell the containing Activity that a setting was modified. */ void onSettingChanged(); + + /** + * Have the fragment tell the containing Activity that a GCPad's setting was modified. + * + * @param key Identifier for the GCPad that was modified. + * @param value New setting for the GCPad. + */ + void onGcPadSettingChanged(String key, int value); } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java index 2b2286d5c7..26a1232e41 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java @@ -20,9 +20,7 @@ import java.util.Map; public class Java_GCAdapter { public static UsbManager manager; - public static Activity our_activity; static byte[] controller_payload = new byte[37]; - static byte HasRead; static UsbDeviceConnection usb_con; static UsbInterface usb_intf; diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java index 865e3371ae..12221cb0fe 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java @@ -70,8 +70,13 @@ public final class SettingsFile public static final String KEY_TEXCACHE_ACCURACY = "SafeTextureCacheColorSamples"; public static final String KEY_XFB = "UseXFB"; public static final String KEY_XFB_REAL = "UseRealXFB"; - public static final String KEY_FAST_DEPTH= "FastDepthCalc"; - public static final String KEY_ASPECT_RATIO= "AspectRatio"; + public static final String KEY_FAST_DEPTH = "FastDepthCalc"; + public static final String KEY_ASPECT_RATIO = "AspectRatio"; + + public static final String KEY_GCPAD_TYPE = "SIDevice"; + + public static final String KEY_GCADAPTER_RUMBLE = "AdapterRumble"; + public static final String KEY_GCADAPTER_BONGOS = "SimulateKonga"; // Internal only, not actually found in settings file. public static final String KEY_XFB_METHOD = "XFBMethod"; |
