summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
authorcodedwrench <rick.04.1996@gmail.com>2022-04-30 19:15:57 +0200
committercodedwrench <rick.04.1996@gmail.com>2022-07-21 13:48:17 +0200
commit98c688ee6883bd015e15dee063f4d083401795b5 (patch)
tree2b6dd8fed05e0534642620a88ec32968b630c2c5 /Source/Android/app/src/main/java
parentdd67d5fbc4aeffe78daa7b1697ebf39bdd7ccd3e (diff)
Android: XLink Kai Android UI option
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HeaderSetting.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HyperLinkHeaderSetting.java19
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputStringSetting.java72
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java2
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java10
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java45
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java7
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java26
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java9
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderHyperLinkViewHolder.java33
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java4
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputStringSettingViewHolder.java77
18 files changed, 332 insertions, 3 deletions
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
index b6e63895a3..b419099808 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/BooleanSetting.java
@@ -18,6 +18,8 @@ public enum BooleanSetting implements AbstractBooleanSetting
MAIN_OVERRIDE_REGION_SETTINGS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE,
"OverrideRegionSettings", false),
MAIN_AUDIO_STRETCH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AudioStretch", false),
+ MAIN_BBA_XLINK_CHAT_OSD(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "BBA_XLINK_CHAT_OSD",
+ false),
MAIN_ADAPTER_RUMBLE_0(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AdapterRumble0", true),
MAIN_ADAPTER_RUMBLE_1(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AdapterRumble1", true),
MAIN_ADAPTER_RUMBLE_2(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AdapterRumble2", true),
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java
index 98601a1741..a06c4f8d61 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/IntSetting.java
@@ -20,6 +20,7 @@ public enum IntSetting implements AbstractIntSetting
MAIN_GC_LANGUAGE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SelectedLanguage", 0),
MAIN_SLOT_A(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SlotA", 8),
MAIN_SLOT_B(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SlotB", 255),
+ MAIN_SERIAL_PORT_1(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SerialPort1", 255),
MAIN_FALLBACK_REGION(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "FallbackRegion", 2),
MAIN_SI_DEVICE_0(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SIDevice0", 6),
MAIN_SI_DEVICE_1(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SIDevice1", 0),
@@ -77,6 +78,7 @@ public enum IntSetting implements AbstractIntSetting
MAIN_GC_LANGUAGE,
MAIN_SLOT_A, // Can actually be changed, but specific code is required
MAIN_SLOT_B, // Can actually be changed, but specific code is required
+ MAIN_SERIAL_PORT_1,
MAIN_FALLBACK_REGION,
MAIN_SI_DEVICE_0, // Can actually be changed, but specific code is required
MAIN_SI_DEVICE_1, // Can actually be changed, but specific code is required
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java
index 5cb9127a58..751d18f90f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/StringSetting.java
@@ -13,6 +13,10 @@ public enum StringSetting implements AbstractStringSetting
// These entries have the same names and order as in C++, just for consistency.
MAIN_DEFAULT_ISO(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "DefaultISO", ""),
+
+ MAIN_BBA_MAC(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "BBA_MAC", ""),
+ MAIN_BBA_XLINK_IP(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "BBA_XLINK_IP", ""),
+
MAIN_GFX_BACKEND(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "GFXBackend",
NativeLibrary.GetDefaultGraphicsBackendName()),
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HeaderSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HeaderSetting.java
index 5f0605553c..14c5f49021 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HeaderSetting.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HeaderSetting.java
@@ -6,7 +6,7 @@ import android.content.Context;
import org.dolphinemu.dolphinemu.features.settings.model.AbstractSetting;
-public final class HeaderSetting extends SettingsItem
+public class HeaderSetting extends SettingsItem
{
public HeaderSetting(Context context, int titleId, int descriptionId)
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HyperLinkHeaderSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HyperLinkHeaderSetting.java
new file mode 100644
index 0000000000..785e6cd6f6
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/HyperLinkHeaderSetting.java
@@ -0,0 +1,19 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.model.view;
+
+import android.content.Context;
+
+public final class HyperLinkHeaderSetting extends HeaderSetting
+{
+ public HyperLinkHeaderSetting(Context context, int titleId, int descriptionId)
+ {
+ super(context, titleId, descriptionId);
+ }
+
+ @Override
+ public int getType()
+ {
+ return SettingsItem.TYPE_HYPERLINK_HEADER;
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputStringSetting.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputStringSetting.java
new file mode 100644
index 0000000000..90773e1762
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/InputStringSetting.java
@@ -0,0 +1,72 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.model.view;
+
+import android.content.Context;
+
+import org.dolphinemu.dolphinemu.features.settings.model.AbstractSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.AbstractStringSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
+import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
+
+public class InputStringSetting extends SettingsItem
+{
+ private AbstractStringSetting mSetting;
+
+ private MenuTag mMenuTag;
+
+ public InputStringSetting(Context context, AbstractStringSetting setting, int titleId,
+ int descriptionId, MenuTag menuTag)
+ {
+ super(context, titleId, descriptionId);
+ mSetting = setting;
+ mMenuTag = menuTag;
+ }
+
+ public InputStringSetting(Context context, AbstractStringSetting setting, int titleId,
+ int descriptionId)
+ {
+ this(context, setting, titleId, descriptionId, null);
+ }
+
+ public InputStringSetting(Context context, AbstractStringSetting setting, int titleId,
+ int descriptionId, int choicesId, int valuesId, MenuTag menuTag)
+ {
+ super(context, titleId, descriptionId);
+ mSetting = setting;
+ mMenuTag = menuTag;
+ }
+
+ public InputStringSetting(Context context, AbstractStringSetting setting, int titleId,
+ int descriptionId, int choicesId, int valuesId)
+ {
+ this(context, setting, titleId, descriptionId, choicesId, valuesId, null);
+ }
+
+ public String getSelectedValue(Settings settings)
+ {
+ return mSetting.getString(settings);
+ }
+
+ public MenuTag getMenuTag()
+ {
+ return mMenuTag;
+ }
+
+ public void setSelectedValue(Settings settings, String selection)
+ {
+ mSetting.setString(settings, selection);
+ }
+
+ @Override
+ public int getType()
+ {
+ return TYPE_STRING;
+ }
+
+ @Override
+ public AbstractSetting getSetting()
+ {
+ return mSetting;
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java
index fade63e26d..ffb653d26f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/model/view/SettingsItem.java
@@ -27,6 +27,8 @@ public abstract class SettingsItem
public static final int TYPE_SINGLE_CHOICE_DYNAMIC_DESCRIPTIONS = 8;
public static final int TYPE_FILE_PICKER = 9;
public static final int TYPE_RUN_RUNNABLE = 10;
+ public static final int TYPE_STRING = 11;
+ public static final int TYPE_HYPERLINK_HEADER = 12;
private final CharSequence mName;
private final CharSequence mDescription;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
index aa5d4216a0..38cb3382ef 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/MenuTag.java
@@ -13,6 +13,7 @@ public enum MenuTag
CONFIG_AUDIO("config_audio"),
CONFIG_PATHS("config_paths"),
CONFIG_GAME_CUBE("config_gamecube"),
+ CONFIG_SERIALPORT1("config_serialport1"),
CONFIG_WII("config_wii"),
CONFIG_ADVANCED("config_advanced"),
CONFIG_LOG("config_log"),
@@ -74,6 +75,11 @@ public enum MenuTag
return subType;
}
+ public boolean isSerialPort1Menu()
+ {
+ return this == CONFIG_SERIALPORT1;
+ }
+
public boolean isGCPadMenu()
{
return this == GCPAD_1 || this == GCPAD_2 || this == GCPAD_3 || this == GCPAD_4;
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
index baaf955e96..8f3d587b3f 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivity.java
@@ -278,6 +278,12 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
}
@Override
+ public void onSerialPort1SettingChanged(MenuTag menuTag, int value)
+ {
+ mPresenter.onSerialPort1SettingChanged(menuTag, value);
+ }
+
+ @Override
public void onGcPadSettingChanged(MenuTag key, int value)
{
mPresenter.onGcPadSettingChanged(key, value);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
index 78f3a78fd6..4135f06e01 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityPresenter.java
@@ -135,6 +135,16 @@ public final class SettingsActivityPresenter
return mShouldSave;
}
+ public void onSerialPort1SettingChanged(MenuTag key, int value)
+ {
+ if (value != 0 && value != 255) // Not disabled or dummy
+ {
+ Bundle bundle = new Bundle();
+ bundle.putInt(SettingsFragmentPresenter.ARG_SERIALPORT1_TYPE, value);
+ mView.showSettingsFragment(key, bundle, true, mGameId);
+ }
+ }
+
public void onGcPadSettingChanged(MenuTag key, int value)
{
if (value != 0) // Not disabled
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
index 0b04ee7875..d126920c24 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsActivityView.java
@@ -59,6 +59,15 @@ public interface SettingsActivityView
void onSettingChanged();
/**
+ * Called by a containing Fragment to tell the containing Activity that the Serial Port 1 setting
+ * was modified.
+ *
+ * @param menuTag Identifier for the SerialPort that was modified.
+ * @param value New setting for the SerialPort.
+ */
+ void onSerialPort1SettingChanged(MenuTag menuTag, int value);
+
+ /**
* Called by a containing Fragment to tell the containing Activity that a GCPad's setting
* was modified.
*
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
index 3f8499a4ef..75f184f5b0 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java
@@ -10,6 +10,7 @@ import android.provider.DocumentsContract;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
+import android.widget.EditText;
import android.widget.SeekBar;
import android.widget.TextView;
@@ -29,12 +30,15 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
import org.dolphinemu.dolphinemu.features.settings.model.view.SingleChoiceSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.SingleChoiceSettingDynamicDescriptions;
import org.dolphinemu.dolphinemu.features.settings.model.view.SliderSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.view.InputStringSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.StringSingleChoiceSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.SubmenuSetting;
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.CheckBoxSettingViewHolder;
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.FilePickerViewHolder;
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.HeaderHyperLinkViewHolder;
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.HeaderViewHolder;
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.InputBindingSettingViewHolder;
+import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.InputStringSettingViewHolder;
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.RumbleBindingViewHolder;
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.RunRunnableViewHolder;
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SettingViewHolder;
@@ -119,6 +123,14 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
view = inflater.inflate(R.layout.list_item_setting, parent, false);
return new RunRunnableViewHolder(view, this, mContext);
+ case SettingsItem.TYPE_STRING:
+ view = inflater.inflate(R.layout.list_item_setting, parent, false);
+ return new InputStringSettingViewHolder(view, this);
+
+ case SettingsItem.TYPE_HYPERLINK_HEADER:
+ view = inflater.inflate(R.layout.list_item_header, parent, false);
+ return new HeaderHyperLinkViewHolder(view, this, mContext);
+
default:
throw new IllegalArgumentException("Invalid view type: " + viewType);
}
@@ -188,6 +200,34 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
mView.onSettingChanged();
}
+ public void onInputStringClick(InputStringSetting item, int position)
+ {
+ LayoutInflater inflater = LayoutInflater.from(mContext);
+
+ AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.DolphinDialogBase);
+ View dialogView = inflater.inflate(R.layout.dialog_input_string, null);
+ EditText input = (EditText) dialogView.findViewById(R.id.input);
+ input.setText(item.getSelectedValue(getSettings()));
+
+ builder.setView(dialogView);
+ builder.setMessage(item.getDescription());
+ builder.setPositiveButton(R.string.ok, (dialogInterface, i) ->
+ {
+ String editTextInput = input.getText().toString();
+
+ if (!item.getSelectedValue(mView.getSettings()).equals(editTextInput))
+ {
+ notifyItemChanged(position);
+ mView.onSettingChanged();
+ }
+
+ item.setSelectedValue(mView.getSettings(), editTextInput);
+ });
+ builder.setNegativeButton(R.string.cancel, null);
+
+ mDialog = builder.show();
+ }
+
public void onSingleChoiceClick(SingleChoiceSetting item, int position)
{
mClickedItem = item;
@@ -364,6 +404,11 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
{
if (menuTag != null)
{
+ if (menuTag.isSerialPort1Menu())
+ {
+ mView.onSerialPort1SettingChanged(menuTag, value);
+ }
+
if (menuTag.isGCPadMenu())
{
mView.onGcPadSettingChanged(menuTag, value);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
index 9358a6f706..dfb92caf84 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragment.java
@@ -44,6 +44,7 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
titles.put(MenuTag.CONFIG_AUDIO, R.string.audio_submenu);
titles.put(MenuTag.CONFIG_PATHS, R.string.paths_submenu);
titles.put(MenuTag.CONFIG_GAME_CUBE, R.string.gamecube_submenu);
+ titles.put(MenuTag.CONFIG_SERIALPORT1, R.string.serialport1_submenu);
titles.put(MenuTag.CONFIG_WII, R.string.wii_submenu);
titles.put(MenuTag.CONFIG_ADVANCED, R.string.advanced_submenu);
titles.put(MenuTag.DEBUG, R.string.debug_submenu);
@@ -203,6 +204,12 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
}
@Override
+ public void onSerialPort1SettingChanged(MenuTag menuTag, int value)
+ {
+ mActivity.onSerialPort1SettingChanged(menuTag, value);
+ }
+
+ @Override
public void onGcPadSettingChanged(MenuTag menuTag, int value)
{
mActivity.onGcPadSettingChanged(menuTag, value);
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
index 61f3098f0a..ae45cb96ad 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentPresenter.java
@@ -25,7 +25,9 @@ import org.dolphinemu.dolphinemu.features.settings.model.WiimoteProfileStringSet
import org.dolphinemu.dolphinemu.features.settings.model.view.CheckBoxSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.FilePicker;
import org.dolphinemu.dolphinemu.features.settings.model.view.HeaderSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.view.HyperLinkHeaderSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.InputBindingSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.view.InputStringSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.IntSliderSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.InvertedCheckBoxSetting;
import org.dolphinemu.dolphinemu.features.settings.model.view.LogCheckBoxSetting;
@@ -54,12 +56,14 @@ public final class SettingsFragmentPresenter
NativeLibrary.GetLogTypeNames();
public static final String ARG_CONTROLLER_TYPE = "controller_type";
+ public static final String ARG_SERIALPORT1_TYPE = "serialport1_type";
private MenuTag mMenuTag;
private String mGameID;
private Settings mSettings;
private ArrayList<SettingsItem> mSettingsList;
+ private int mSerialPort1Type;
private int mControllerNumber;
private int mControllerType;
@@ -83,6 +87,10 @@ public final class SettingsFragmentPresenter
{
mControllerNumber = menuTag.getSubType();
}
+ else if (menuTag.isSerialPort1Menu())
+ {
+ mSerialPort1Type = extras.getInt(ARG_SERIALPORT1_TYPE);
+ }
}
public void onViewCreated(MenuTag menuTag, Settings settings)
@@ -167,6 +175,10 @@ public final class SettingsFragmentPresenter
addGraphicsSettings(sl);
break;
+ case CONFIG_SERIALPORT1:
+ addSerialPortSubSettings(sl, mSerialPort1Type);
+ break;
+
case GCPAD_TYPE:
addGcPadSettings(sl);
break;
@@ -425,6 +437,10 @@ public final class SettingsFragmentPresenter
R.array.slotDeviceEntries, R.array.slotDeviceValues));
sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_SLOT_B, R.string.slot_b_device, 0,
R.array.slotDeviceEntries, R.array.slotDeviceValues));
+ sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_SERIAL_PORT_1,
+ R.string.serial_port_1_device, 0,
+ R.array.serialPort1DeviceEntries, R.array.serialPort1DeviceValues,
+ MenuTag.CONFIG_SERIALPORT1));
}
private void addWiiSettings(ArrayList<SettingsItem> sl)
@@ -559,6 +575,16 @@ public final class SettingsFragmentPresenter
R.array.synchronizeGpuThreadValues));
}
+ private void addSerialPortSubSettings(ArrayList<SettingsItem> sl, int serialPort1Type)
+ {
+ if (serialPort1Type == 10) // XLink Kai
+ {
+ sl.add(new HyperLinkHeaderSetting(mContext, R.string.xlink_kai_guide_header, 0));
+ sl.add(new InputStringSetting(mContext, StringSetting.MAIN_BBA_XLINK_IP,
+ R.string.xlink_kai_bba_ip, R.string.xlink_kai_bba_ip_description));
+ }
+ }
+
private void addGcPadSettings(ArrayList<SettingsItem> sl)
{
sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_SI_DEVICE_0, R.string.controller_0, 0,
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
index 04736091df..e79ef6a859 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsFragmentView.java
@@ -72,6 +72,15 @@ public interface SettingsFragmentView
void onSettingChanged();
/**
+ * Called by a containing Fragment to tell the containing Activity that the Serial Port 1 setting
+ * was modified.
+ *
+ * @param menuTag Identifier for the SerialPort that was modified.
+ * @param value New setting for the SerialPort.
+ */
+ void onSerialPort1SettingChanged(MenuTag menuTag, int value);
+
+ /**
* Have the fragment tell the containing Activity that a GCPad's setting was modified.
*
* @param menuTag Identifier for the GCPad that was modified.
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderHyperLinkViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderHyperLinkViewHolder.java
new file mode 100644
index 0000000000..8a30e34fff
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderHyperLinkViewHolder.java
@@ -0,0 +1,33 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.ui.viewholder;
+
+import android.content.Context;
+import android.text.method.LinkMovementMethod;
+import android.view.View;
+
+import androidx.core.content.ContextCompat;
+
+import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
+import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
+
+public final class HeaderHyperLinkViewHolder extends HeaderViewHolder
+{
+ private Context mContext;
+
+ public HeaderHyperLinkViewHolder(View itemView, SettingsAdapter adapter, Context context)
+ {
+ super(itemView, adapter);
+ mContext = context;
+ itemView.setOnClickListener(null);
+ }
+
+ @Override
+ public void bind(SettingsItem item)
+ {
+ super.bind(item);
+ mHeaderName.setMovementMethod(LinkMovementMethod.getInstance());
+ mHeaderName.setLinkTextColor(ContextCompat.getColor(mContext, R.color.dolphin_blue_secondary));
+ }
+}
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java
index eaa2014364..4422d9081d 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/HeaderViewHolder.java
@@ -11,9 +11,9 @@ import org.dolphinemu.dolphinemu.R;
import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
-public final class HeaderViewHolder extends SettingViewHolder
+public class HeaderViewHolder extends SettingViewHolder
{
- private TextView mHeaderName;
+ protected TextView mHeaderName;
public HeaderViewHolder(View itemView, SettingsAdapter adapter)
{
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputStringSettingViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputStringSettingViewHolder.java
new file mode 100644
index 0000000000..da36fb1953
--- /dev/null
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/InputStringSettingViewHolder.java
@@ -0,0 +1,77 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+package org.dolphinemu.dolphinemu.features.settings.ui.viewholder;
+
+import android.text.TextUtils;
+import android.view.View;
+import android.widget.TextView;
+
+import androidx.annotation.Nullable;
+
+import org.dolphinemu.dolphinemu.R;
+import org.dolphinemu.dolphinemu.features.settings.model.view.InputStringSetting;
+import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
+import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
+
+public final class InputStringSettingViewHolder extends SettingViewHolder
+{
+ private InputStringSetting mInputString;
+
+ private TextView mTextSettingName;
+ private TextView mTextSettingDescription;
+
+ public InputStringSettingViewHolder(View itemView, SettingsAdapter adapter)
+ {
+ super(itemView, adapter);
+ }
+
+ @Override
+ protected void findViews(View root)
+ {
+ mTextSettingName = root.findViewById(R.id.text_setting_name);
+ mTextSettingDescription = root.findViewById(R.id.text_setting_description);
+ }
+
+ @Override
+ public void bind(SettingsItem item)
+ {
+ mInputString = (InputStringSetting) item;
+
+ String inputString = mInputString.getSelectedValue(getAdapter().getSettings());
+
+ mTextSettingName.setText(item.getName());
+
+ if (!TextUtils.isEmpty(inputString))
+ {
+ mTextSettingDescription.setText(inputString);
+ }
+ else
+ {
+ mTextSettingDescription.setText(item.getDescription());
+ }
+
+ setStyle(mTextSettingName, mInputString);
+ }
+
+ @Override
+ public void onClick(View clicked)
+ {
+ if (!mInputString.isEditable())
+ {
+ showNotRuntimeEditableError();
+ return;
+ }
+
+ int position = getAdapterPosition();
+
+ getAdapter().onInputStringClick(mInputString, position);
+
+ setStyle(mTextSettingName, mInputString);
+ }
+
+ @Nullable @Override
+ protected SettingsItem getItem()
+ {
+ return mInputString;
+ }
+}