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 d9cd764fd9..f23e4bbe78 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 @@ -48,6 +48,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde private ArrayList<SettingsItem> mSettings; private SettingsItem mClickedItem; + private int mClickedPosition; private int mSeekbarProgress; private AlertDialog mDialog; @@ -57,6 +58,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde { mView = view; mContext = context; + mClickedPosition = -1; } @Override @@ -157,9 +159,10 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde mView.onSettingChanged(); } - public void onSingleChoiceClick(SingleChoiceSetting item) + public void onSingleChoiceClick(SingleChoiceSetting item, int position) { mClickedItem = item; + mClickedPosition = position; int value = getSelectionForSingleChoiceValue(item); @@ -171,9 +174,10 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde mDialog = builder.show(); } - public void onStringSingleChoiceClick(StringSingleChoiceSetting item) + public void onStringSingleChoiceClick(StringSingleChoiceSetting item, int position) { mClickedItem = item; + mClickedPosition = position; AlertDialog.Builder builder = new AlertDialog.Builder(mView.getActivity()); @@ -183,9 +187,10 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde mDialog = builder.show(); } - public void onSliderClick(SliderSetting item) + public void onSliderClick(SliderSetting item, int position) { mClickedItem = item; + mClickedPosition = position; mSeekbarProgress = item.getSelectedValue(); AlertDialog.Builder builder = new AlertDialog.Builder(mView.getActivity()); @@ -195,7 +200,6 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde builder.setTitle(item.getNameId()); builder.setView(view); builder.setPositiveButton(R.string.ok, this); - builder.setNegativeButton(R.string.cancel, this); mDialog = builder.show(); mTextSliderValue = (TextView) view.findViewById(R.id.text_value); @@ -347,6 +351,8 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde mView.putSetting(setting); } } + + closeDialog(); } mView.onSettingChanged(); @@ -358,6 +364,11 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde { if (mDialog != null) { + if (mClickedPosition != -1) + { + notifyItemChanged(mClickedPosition); + mClickedPosition = -1; + } mDialog.dismiss(); mDialog = null; } 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 31efc23e74..19ef69c5be 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 @@ -404,7 +404,7 @@ public final class SettingsFragmentPresenter sl.add(new HeaderSetting(null, null, R.string.graphics_general, 0)); sl.add(new SingleChoiceSetting(SettingsFile.KEY_VIDEO_BACKEND_INDEX, Settings.SECTION_INI_CORE, - R.string.video_backend, R.string.video_backend_description, R.array.videoBackendEntries, + R.string.video_backend, 0, R.array.videoBackendEntries, R.array.videoBackendValues, 0, videoBackend)); sl.add(new CheckBoxSetting(SettingsFile.KEY_SHOW_FPS, Settings.SECTION_GFX_SETTINGS, R.string.show_fps, R.string.show_fps_description, false, showFps)); @@ -466,7 +466,7 @@ public final class SettingsFragmentPresenter shaderListValues[0] = ""; sl.add(new StringSingleChoiceSetting(SettingsFile.KEY_POST_SHADER, Settings.SECTION_GFX_ENHANCEMENTS, R.string.post_processing_shader, - R.string.post_processing_shader_description, shaderListEntries, shaderListValues, "", + 0, shaderListEntries, shaderListValues, "", shader)); sl.add(new CheckBoxSetting(SettingsFile.KEY_SCALED_EFB, Settings.SECTION_GFX_HACKS, @@ -493,11 +493,11 @@ public final class SettingsFragmentPresenter R.string.wide_screen_hack, R.string.wide_screen_hack_description, false, wideScreenHack)); - /* - Check if we support stereo - If we support desktop GL then we must support at least OpenGL 3.2 - If we only support OpenGLES then we need both OpenGLES 3.1 and AEP - */ + /* + Check if we support stereo + If we support desktop GL then we must support at least OpenGL 3.2 + If we only support OpenGLES then we need both OpenGLES 3.1 and AEP + */ EGLHelper helper = new EGLHelper(EGLHelper.EGL_OPENGL_ES2_BIT); if ((helper.supportsOpenGL() && helper.GetVersion() >= 320) || @@ -815,7 +815,7 @@ public final class SettingsFragmentPresenter MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber)); sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_EXTENSION, Settings.SECTION_WIIMOTE + (wiimoteNumber - 3), R.string.wiimote_extensions, - R.string.wiimote_extensions_description, R.array.wiimoteExtensionsEntries, + 0, R.array.wiimoteExtensionsEntries, R.array.wiimoteExtensionsValues, 0, extension, MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber))); } @@ -827,7 +827,7 @@ public final class SettingsFragmentPresenter MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber)); sl.add(new SingleChoiceSetting(SettingsFile.KEY_WIIMOTE_EXTENSION + (wiimoteNumber - 4), Settings.SECTION_CONTROLS, R.string.wiimote_extensions, - R.string.wiimote_extensions_description, R.array.wiimoteExtensionsEntries, + 0, R.array.wiimoteExtensionsEntries, R.array.wiimoteExtensionsValues, 0, extension, MenuTag.getWiimoteExtensionMenuTag(wiimoteNumber))); } 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 568361f887..6de38a4b1f 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 @@ -1,5 +1,6 @@ package org.dolphinemu.dolphinemu.features.settings.ui.viewholder; +import android.content.res.Resources; import android.view.View; import android.widget.TextView; @@ -39,18 +40,42 @@ public final class SingleChoiceViewHolder extends SettingViewHolder { mTextSettingDescription.setText(item.getDescriptionId()); } + else if (item instanceof SingleChoiceSetting) + { + SingleChoiceSetting setting = (SingleChoiceSetting) item; + int selected = setting.getSelectedValue(); + Resources resMgr = mTextSettingDescription.getContext().getResources(); + String[] choices = resMgr.getStringArray(setting.getChoicesId()); + int[] values = resMgr.getIntArray(setting.getValuesId()); + for (int i = 0; i < values.length; ++i) + { + if (values[i] == selected) + { + mTextSettingDescription.setText(choices[i]); + } + } + } + else if (item instanceof StringSingleChoiceSetting) + { + StringSingleChoiceSetting setting = (StringSingleChoiceSetting) item; + String[] choices = setting.getChoicesId(); + int valueIndex = setting.getSelectValueIndex(); + if (valueIndex != -1) + mTextSettingDescription.setText(choices[valueIndex]); + } } @Override public void onClick(View clicked) { + int position = getAdapterPosition(); if (mItem instanceof SingleChoiceSetting) { - getAdapter().onSingleChoiceClick((SingleChoiceSetting) mItem); + getAdapter().onSingleChoiceClick((SingleChoiceSetting) mItem, position); } else if (mItem instanceof StringSingleChoiceSetting) { - getAdapter().onStringSingleChoiceClick((StringSingleChoiceSetting) mItem); + getAdapter().onStringSingleChoiceClick((StringSingleChoiceSetting) mItem, position); } } } diff --git a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java index 17fac794fb..b40311dcea 100644 --- a/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java +++ b/Source/Android/app/src/main/java/org/dolphinemu/dolphinemu/features/settings/ui/viewholder/SliderViewHolder.java @@ -38,12 +38,16 @@ public final class SliderViewHolder extends SettingViewHolder { mTextSettingDescription.setText(item.getDescriptionId()); } + else + { + mTextSettingDescription.setText(mItem.getSelectedValue() + mItem.getUnits()); + } } @Override public void onClick(View clicked) { - getAdapter().onSliderClick(mItem); + getAdapter().onSliderClick(mItem, getAdapterPosition()); } }