diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.java index 15c302a52..10d43da82 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/SettingsItem.java @@ -17,7 +17,8 @@ public abstract class SettingsItem { public static final int TYPE_SLIDER = 3; public static final int TYPE_SUBMENU = 4; public static final int TYPE_INPUT_BINDING = 5; - public static final int TYPE_DATETIME_SETTING = 6; + public static final int TYPE_STRING_SINGLE_CHOICE = 6; + public static final int TYPE_DATETIME_SETTING = 7; private String mKey; private String mSection; diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/StringSingleChoiceSetting.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/StringSingleChoiceSetting.java new file mode 100644 index 000000000..5716adc46 --- /dev/null +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/model/view/StringSingleChoiceSetting.java @@ -0,0 +1,100 @@ +package org.citra.citra_emu.features.settings.model.view; + +import org.citra.citra_emu.features.settings.model.Setting; +import org.citra.citra_emu.features.settings.model.StringSetting; + +public class StringSingleChoiceSetting extends SettingsItem +{ + private String mDefaultValue; + + private String[] mChoicesId; + private String[] mValuesId; + + public StringSingleChoiceSetting(String key, String section, int titleId, int descriptionId, + String[] choicesId, String[] valuesId, String defaultValue, Setting setting) + { + super(key, section, setting, titleId, descriptionId); + mValuesId = valuesId; + mChoicesId = choicesId; + mDefaultValue = defaultValue; + } + + public String[] getChoicesId() + { + return mChoicesId; + } + + public String[] getValuesId() + { + return mValuesId; + } + + public String getValueAt(int index) + { + if (mValuesId == null) + return null; + + if (index >= 0 && index < mValuesId.length) + { + return mValuesId[index]; + } + + return ""; + } + + public String getSelectedValue() + { + if (getSetting() != null) + { + StringSetting setting = (StringSetting) getSetting(); + return setting.getValue(); + } + else + { + return mDefaultValue; + } + } + + public int getSelectValueIndex() + { + String selectedValue = getSelectedValue(); + for (int i = 0; i < mValuesId.length; i++) + { + if (mValuesId[i].equals(selectedValue)) + { + return i; + } + } + + return -1; + } + + /** + * Write a value to the backing int. If that int was previously null, + * initializes a new one and returns it, so it can be added to the Hashmap. + * + * @param selection New value of the int. + * @return null if overwritten successfully otherwise; a newly created IntSetting. + */ + public StringSetting setSelectedValue(String selection) + { + if (getSetting() == null) + { + StringSetting setting = new StringSetting(getKey(), getSection(), selection); + setSetting(setting); + return setting; + } + else + { + StringSetting setting = (StringSetting) getSetting(); + setting.setValue(selection); + return null; + } + } + + @Override + public int getType() + { + return TYPE_STRING_SINGLE_CHOICE; + } +} diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.java index e2616bdd1..9181e62a0 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsAdapter.java @@ -23,6 +23,7 @@ import org.citra.citra_emu.features.settings.model.view.InputBindingSetting; import org.citra.citra_emu.features.settings.model.view.SettingsItem; import org.citra.citra_emu.features.settings.model.view.SingleChoiceSetting; import org.citra.citra_emu.features.settings.model.view.SliderSetting; +import org.citra.citra_emu.features.settings.model.view.StringSingleChoiceSetting; import org.citra.citra_emu.features.settings.model.view.SubmenuSetting; import org.citra.citra_emu.features.settings.ui.viewholder.CheckBoxSettingViewHolder; import org.citra.citra_emu.features.settings.ui.viewholder.DateTimeViewHolder; @@ -70,6 +71,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter closeDialog(); public void onDateTimeClick(DateTimeSetting item, int position) { @@ -285,6 +300,18 @@ public final class SettingsAdapter extends RecyclerView.Adapter