Skip to content

Commit

Permalink
feat: XLink Kai UI option
Browse files Browse the repository at this point in the history
  • Loading branch information
codedwrench committed May 1, 2022
1 parent 9aacb96 commit fa7150e
Show file tree
Hide file tree
Showing 20 changed files with 377 additions and 3 deletions.
Expand Up @@ -39,6 +39,7 @@ public enum BooleanSetting implements AbstractBooleanSetting
true),
MAIN_ENABLE_SAVESTATES(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "EnableSaveStates",
false),
MAIN_BBA_XLINK_CHAT_OSD(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "BBA_XLINK_CHAT_OSD", false),

MAIN_DSP_JIT(Settings.FILE_DOLPHIN, Settings.SECTION_INI_DSP, "EnableJIT", true),

Expand Down
Expand Up @@ -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),
Expand Down Expand Up @@ -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
Expand Down
Expand Up @@ -24,6 +24,9 @@ public enum StringSetting implements AbstractStringSetting
MAIN_SD_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WiiSDCardPath", ""),
MAIN_WFS_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WFSPath", ""),

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", ""),

GFX_ENHANCE_POST_SHADER(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS,
"PostProcessingShader", "");

Expand Down
Expand Up @@ -6,7 +6,7 @@

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)
{
Expand Down
@@ -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;
}
}
@@ -0,0 +1,74 @@
// 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;
}
}


Expand Up @@ -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;
Expand Down
Expand Up @@ -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"),
Expand Down Expand Up @@ -74,6 +75,11 @@ public int getSubType()
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;
Expand Down
Expand Up @@ -277,6 +277,12 @@ public void onSettingChanged()
mPresenter.onSettingChanged();
}

@Override
public void onSerialPort1SettingChanged(MenuTag menuTag, int value)
{
mPresenter.onSerialPort1SettingChanged(menuTag, value);
}

@Override
public void onGcPadSettingChanged(MenuTag key, int value)
{
Expand Down
Expand Up @@ -135,6 +135,16 @@ public boolean shouldSave()
return mShouldSave;
}

public void onSerialPort1SettingChanged(MenuTag key, int value)
{
if (value != 0) // Not disabled
{
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
Expand Down
Expand Up @@ -58,6 +58,15 @@ public interface SettingsActivityView
*/
void onSettingChanged();

/**
* Called by a containing Fragment to tell the containing Activity that a 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.
Expand Down
Expand Up @@ -10,6 +10,8 @@
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.SeekBar;
import android.widget.TextView;

Expand All @@ -29,12 +31,15 @@
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;
Expand Down Expand Up @@ -119,6 +124,14 @@ public SettingViewHolder onCreateViewHolder(ViewGroup parent, int viewType)
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);
}
Expand Down Expand Up @@ -188,6 +201,41 @@ public void onBooleanClick(CheckBoxSetting item, int position, boolean checked)
mView.onSettingChanged();
}

public void onInputStringClick(InputStringSetting item, int position)
{
final EditText input = new EditText(mContext);
input.setText(item.getSelectedValue(getSettings()));

LinearLayout layout = new LinearLayout(mContext);
layout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
params.setMargins(50, 0, 50, 0);

layout.addView(input, params);

AlertDialog.Builder builder = new AlertDialog.Builder(mContext, R.style.DolphinDialogBase);

builder.setMessage(item.getDescription());
builder.setView(layout);
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;
Expand Down Expand Up @@ -368,6 +416,11 @@ private void handleMenuTag(MenuTag menuTag, int value)
{
if (menuTag != null)
{
if (menuTag.isSerialPort1Menu())
{
mView.onSerialPort1SettingChanged(menuTag, value);
}

if (menuTag.isGCPadMenu())
{
mView.onGcPadSettingChanged(menuTag, value);
Expand Down Expand Up @@ -448,6 +501,19 @@ else if (mClickedItem instanceof FloatSliderSetting)

closeDialog();
}
else if (mClickedItem instanceof InputStringSetting)
{
InputStringSetting scSetting = (InputStringSetting) mClickedItem;
String value = scSetting.getSelectedValue(getSettings());
if (!scSetting.getSelectedValue(getSettings()).equals(""))
mView.onSettingChanged();

handleMenuTag(scSetting.getMenuTag(), which);

scSetting.setSelectedValue(getSettings(), value);

closeDialog();
}

mClickedItem = null;
mSeekbarProgress = -1;
Expand Down
Expand Up @@ -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);
Expand Down Expand Up @@ -202,6 +203,12 @@ public void onSettingChanged()
mActivity.onSettingChanged();
}

@Override
public void onSerialPort1SettingChanged(MenuTag menuTag, int value)
{
mActivity.onSerialPort1SettingChanged(menuTag, value);
}

@Override
public void onGcPadSettingChanged(MenuTag menuTag, int value)
{
Expand Down

0 comments on commit fa7150e

Please sign in to comment.