summaryrefslogtreecommitdiff
path: root/Source/Android/app/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'Source/Android/app/src/main/java')
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/SettingsAdapter.java6
-rw-r--r--Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java42
2 files changed, 40 insertions, 8 deletions
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 a042e7aaaf..be46ded8a1 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
@@ -467,7 +467,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
}
}
- private void handleMenuTag(MenuTag menuTag, int value)
+ public void handleMenuTag(MenuTag menuTag, int value)
{
if (menuTag != null)
{
@@ -504,8 +504,6 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
if (scSetting.getSelectedValue(getSettings()) != value)
mView.onSettingChanged();
- handleMenuTag(scSetting.getMenuTag(), value);
-
scSetting.setSelectedValue(getSettings(), value);
closeDialog();
@@ -530,8 +528,6 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
if (!scSetting.getSelectedValue(getSettings()).equals(value))
mView.onSettingChanged();
- handleMenuTag(scSetting.getMenuTag(), which);
-
scSetting.setSelectedValue(getSettings(), value);
closeDialog();
diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java
index 19b174e9b8..ba7bae3901 100644
--- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java
+++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SingleChoiceViewHolder.java
@@ -10,12 +10,16 @@ import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import org.dolphinemu.dolphinemu.databinding.ListItemSettingBinding;
+import org.dolphinemu.dolphinemu.features.settings.model.Settings;
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.StringSingleChoiceSetting;
+import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
+import java.util.function.Function;
+
public final class SingleChoiceViewHolder extends SettingViewHolder
{
private SettingsItem mItem;
@@ -35,6 +39,9 @@ public final class SingleChoiceViewHolder extends SettingViewHolder
mBinding.textSettingName.setText(item.getName());
+ SettingsAdapter adapter = getAdapter();
+ Settings settings = adapter.getSettings();
+
if (!TextUtils.isEmpty(item.getDescription()))
{
mBinding.textSettingDescription.setText(item.getDescription());
@@ -42,7 +49,7 @@ public final class SingleChoiceViewHolder extends SettingViewHolder
else if (item instanceof SingleChoiceSetting)
{
SingleChoiceSetting setting = (SingleChoiceSetting) item;
- int selected = setting.getSelectedValue(getAdapter().getSettings());
+ int selected = setting.getSelectedValue(settings);
Resources resMgr = mBinding.textSettingDescription.getContext().getResources();
String[] choices = resMgr.getStringArray(setting.getChoicesId());
int[] values = resMgr.getIntArray(setting.getValuesId());
@@ -58,7 +65,7 @@ public final class SingleChoiceViewHolder extends SettingViewHolder
{
StringSingleChoiceSetting setting = (StringSingleChoiceSetting) item;
String[] choices = setting.getChoices();
- int valueIndex = setting.getSelectedValueIndex(getAdapter().getSettings());
+ int valueIndex = setting.getSelectedValueIndex(settings);
if (valueIndex != -1)
mBinding.textSettingDescription.setText(choices[valueIndex]);
}
@@ -66,7 +73,7 @@ public final class SingleChoiceViewHolder extends SettingViewHolder
{
SingleChoiceSettingDynamicDescriptions setting =
(SingleChoiceSettingDynamicDescriptions) item;
- int selected = setting.getSelectedValue(getAdapter().getSettings());
+ int selected = setting.getSelectedValue(settings);
Resources resMgr = mBinding.textSettingDescription.getContext().getResources();
String[] choices = resMgr.getStringArray(setting.getDescriptionChoicesId());
int[] values = resMgr.getIntArray(setting.getDescriptionValuesId());
@@ -79,6 +86,35 @@ public final class SingleChoiceViewHolder extends SettingViewHolder
}
}
+ MenuTag menuTag = null;
+ Function<Settings, Integer> getSelectedValue = null;
+ if (item instanceof SingleChoiceSetting)
+ {
+ SingleChoiceSetting setting = (SingleChoiceSetting) item;
+ menuTag = setting.getMenuTag();
+ getSelectedValue = setting::getSelectedValue;
+ }
+ else if (item instanceof StringSingleChoiceSetting)
+ {
+ StringSingleChoiceSetting setting = (StringSingleChoiceSetting) item;
+ menuTag = setting.getMenuTag();
+ getSelectedValue = setting::getSelectedValueIndex;
+ }
+
+ if (menuTag != null)
+ {
+ mBinding.buttonMoreSettings.setVisibility(View.VISIBLE);
+
+ final MenuTag finalMenuTag = menuTag;
+ final Function<Settings, Integer> finalGetSelectedValue = getSelectedValue;
+ mBinding.buttonMoreSettings.setOnClickListener((view) ->
+ adapter.handleMenuTag(finalMenuTag, finalGetSelectedValue.apply(settings)));
+ }
+ else
+ {
+ mBinding.buttonMoreSettings.setVisibility(View.GONE);
+ }
+
setStyle(mBinding.textSettingName, mItem);
}