summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorsigmabeta <sigmabeta@users.noreply.github.com>2016-01-27 08:58:44 -0500
committersigmabeta <sigmabeta@users.noreply.github.com>2016-01-29 23:33:06 -0500
commit6115d39a7a3a1a84a1abe25b18b5e122a9145ec4 (patch)
tree1932dfdd45c5391710c166385efbb7a0d95fe0c5 /Source/Android/app/src/main/java
parentf1ca95eec765ab8d7763bda8a0240248790fbe24 (diff)
Implement Gamecube Input setting screen
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragment.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentPresenter.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/input/gamecube/ControllerFragmentView.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/MainPresenter.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/main/TvMainActivity.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivity.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityPresenter.java31
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsActivityView.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsAdapter.java5
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragment.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentPresenter.java42
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/ui/settings/SettingsFragmentView.java8
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/Java_GCAdapter.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/utils/SettingsFile.java9
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";