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 42b3231c8c..b0f9358852 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 @@ -54,6 +54,9 @@ public final class MainPresenter mView.launchSettingsActivity(SettingsFile.FILE_NAME_GCPAD); return true; + case R.id.menu_settings_wiimote: + mView.launchSettingsActivity(SettingsFile.FILE_NAME_WIIMOTE); + 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 bf9087bef1..c4f753edbd 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 @@ -225,10 +225,6 @@ public final class TvMainActivity extends Activity implements MainView { ArrayObjectAdapter rowItems = new ArrayObjectAdapter(new SettingsRowPresenter()); - rowItems.add(new TvSettingsItem(R.id.menu_refresh, - R.drawable.ic_refresh_tv, - R.string.grid_menu_refresh)); - rowItems.add(new TvSettingsItem(R.id.menu_settings_core, R.drawable.ic_settings_core_tv, R.string.grid_menu_core_settings)); @@ -241,10 +237,18 @@ public final class TvMainActivity extends Activity implements MainView R.drawable.ic_settings_gcpad, R.string.grid_menu_gcpad_settings)); + rowItems.add(new TvSettingsItem(R.id.menu_settings_wiimote, + R.drawable.ic_settings_wiimote, + R.string.grid_menu_wiimote_settings)); + rowItems.add(new TvSettingsItem(R.id.button_add_directory, R.drawable.ic_add_tv, R.string.add_directory_title)); + rowItems.add(new TvSettingsItem(R.id.menu_refresh, + R.drawable.ic_refresh_tv, + R.string.grid_menu_refresh)); + // Create a header for this row. HeaderItem header = new HeaderItem(R.string.settings, getString(R.string.settings)); 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 206d6432dd..2ba41846b9 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 @@ -156,6 +156,12 @@ public final class SettingsActivity extends AppCompatActivity implements Setting mPresenter.onGcPadSettingChanged(key, value); } + @Override + public void onWiimoteSettingChanged(String section, int value) + { + mPresenter.onWiimoteSettingChanged(section, 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 59d4cbee77..7aea8c88d0 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 @@ -174,4 +174,18 @@ public final class SettingsActivityPresenter break; } } + + public void onWiimoteSettingChanged(String section, int value) + { + switch (value) + { + case 1: + mView.showToastMessage("Configuration coming soon. Settings from old versions will still work."); + break; + + case 2: + mView.showToastMessage("Please make sure Continuous Scanning is enabled in Core Settings."); + 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 4307ec891b..8276077505 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 @@ -78,4 +78,14 @@ public interface SettingsActivityView * @param value New setting for the GCPad. */ void onGcPadSettingChanged(String key, int value); + + /** + * Called by a containing Fragment tell the containing Activity that a Wiimote's setting + * was modified. + * + * @param section Identifier for Wiimote that was modified; Wiimotes are identified by their section, + * not their key. + * @param value New setting for the Wiimote. + */ + void onWiimoteSettingChanged(String section, 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 4028af87a2..182593c2c9 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 @@ -194,6 +194,11 @@ public final class SettingsAdapter extends RecyclerView.Adapter sl) @@ -170,6 +176,19 @@ public final class SettingsFragmentPresenter } } + private void addWiimoteSettings(ArrayList sl) + { + if (mSettings != null) + { + for (int i = 1; i <= 4; i++) + { + // TODO This wiimote_0 + i business is quite the hack. It should work, but only if the definitions are kept together and in order. + Setting wiimoteSetting = mSettings.get(SettingsFile.SECTION_WIIMOTE + i).getSetting(SettingsFile.KEY_WIIMOTE_TYPE); + sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_TYPE, SettingsFile.SECTION_WIIMOTE + i, R.string.wiimote_0 + i - 1, 0, R.array.wiimoteTypeEntries, R.array.wiimoteTypeValues, 0, wiimoteSetting)); + } + } + } + private void addGraphicsSettings(ArrayList sl) { Setting showFps = null; 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 8cdf4361e7..e3a62bbbbb 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 @@ -84,4 +84,13 @@ public interface SettingsFragmentView * @param value New setting for the GCPad. */ void onGcPadSettingChanged(String key, int value); + + /** + * Have the fragment tell the containing Activity that a Wiimote's setting was modified. + * + * @param section Identifier for Wiimote that was modified; Wiimotes are identified by their section, + * not their key. + * @param value New setting for the Wiimote. + */ + void onWiimoteSettingChanged(String section, int value); } 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 12221cb0fe..22404d32d6 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 @@ -41,6 +41,8 @@ public final class SettingsFile public static final String SECTION_STEREOSCOPY = "Stereoscopy"; + public static final String SECTION_WIIMOTE = "Wiimote"; + public static final String KEY_CPU_CORE = "CPUCore"; public static final String KEY_DUAL_CORE = "CPUThread"; public static final String KEY_OVERCLOCK_ENABLE = "OverclockEnable"; @@ -78,6 +80,10 @@ public final class SettingsFile public static final String KEY_GCADAPTER_RUMBLE = "AdapterRumble"; public static final String KEY_GCADAPTER_BONGOS = "SimulateKonga"; + public static final String KEY_WIIMOTE_TYPE = "Source"; + + public static final String KEY_WIIMOTE_SCAN = "WiimoteContinuousScanning"; + // Internal only, not actually found in settings file. public static final String KEY_XFB_METHOD = "XFBMethod"; diff --git a/Source/Android/app/src/main/res/menu/menu_game_grid.xml b/Source/Android/app/src/main/res/menu/menu_game_grid.xml index 034da74ee0..112123fce3 100644 --- a/Source/Android/app/src/main/res/menu/menu_game_grid.xml +++ b/Source/Android/app/src/main/res/menu/menu_game_grid.xml @@ -16,6 +16,11 @@ android:title="@string/grid_menu_gcpad_settings" android:icon="@drawable/ic_settings_gcpad" app:showAsAction="ifRoom"/> + 12 + + Disabled + Emulated + "Real Wiimote (DolphinBar required)" + + + 0 + 1 + 2 + + diff --git a/Source/Android/app/src/main/res/values/strings.xml b/Source/Android/app/src/main/res/values/strings.xml index e3e309ca73..fa2dcb7a00 100644 --- a/Source/Android/app/src/main/res/values/strings.xml +++ b/Source/Android/app/src/main/res/values/strings.xml @@ -95,10 +95,14 @@ Modifier Range Analog Radius (High value = High sensitivity) Analog Threshold (Low value = High sensitivity) + + Wiimote 1 Wiimote 2 Wiimote 3 Wiimote 4 + + Enable Wiimote IR Motion Controls Swing Navigation @@ -245,6 +249,9 @@ Higher values can make variable-framerate games run at a higher framerate, requiring a powerful device. Lower values make games run at a lower framerate, increasing emulation speed, but reducing the emulated console\'s performance. Emulated CPU Clock Speed WARNING: Changing this from the default (100%) WILL break games and cause glitches. Please do not report bugs that occur with a non-default clock. + Wiimote Continuous Scanning + Leave this on if you are using a DolphinBar for real Wiimote support. + Video @@ -324,6 +331,7 @@ CPU Settings Video Settings GameCube Input + Wii Input Refresh Library