Android: Set each slider step size manually

This commit is contained in:
Charles Lombardo 2023-01-30 13:17:02 -05:00
parent 07cf8c5668
commit 26c8440ae1
6 changed files with 28 additions and 29 deletions

@ -13,9 +13,9 @@ public class FloatSliderSetting extends SliderSetting
protected AbstractFloatSetting mSetting; protected AbstractFloatSetting mSetting;
public FloatSliderSetting(Context context, AbstractFloatSetting setting, int titleId, public FloatSliderSetting(Context context, AbstractFloatSetting setting, int titleId,
int descriptionId, int min, int max, String units) int descriptionId, int min, int max, String units, int stepSize)
{ {
super(context, titleId, descriptionId, min, max, units); super(context, titleId, descriptionId, min, max, units, stepSize);
mSetting = setting; mSetting = setting;
} }

@ -13,9 +13,9 @@ public final class IntSliderSetting extends SliderSetting
private AbstractIntSetting mSetting; private AbstractIntSetting mSetting;
public IntSliderSetting(Context context, AbstractIntSetting setting, int titleId, public IntSliderSetting(Context context, AbstractIntSetting setting, int titleId,
int descriptionId, int min, int max, String units) int descriptionId, int min, int max, String units, int stepSize)
{ {
super(context, titleId, descriptionId, min, max, units); super(context, titleId, descriptionId, min, max, units, stepSize);
mSetting = setting; mSetting = setting;
} }

@ -11,9 +11,9 @@ import org.dolphinemu.dolphinemu.features.settings.model.Settings;
public final class PercentSliderSetting extends FloatSliderSetting public final class PercentSliderSetting extends FloatSliderSetting
{ {
public PercentSliderSetting(Context context, AbstractFloatSetting setting, int titleId, public PercentSliderSetting(Context context, AbstractFloatSetting setting, int titleId,
int descriptionId, int min, int max, String units) int descriptionId, int min, int max, String units, int stepSize)
{ {
super(context, setting, titleId, descriptionId, min, max, units); super(context, setting, titleId, descriptionId, min, max, units, stepSize);
} }
@Override @Override

@ -11,14 +11,16 @@ public abstract class SliderSetting extends SettingsItem
private int mMin; private int mMin;
private int mMax; private int mMax;
private String mUnits; private String mUnits;
private int mStepSize;
public SliderSetting(Context context, int nameId, int descriptionId, int min, int max, public SliderSetting(Context context, int nameId, int descriptionId, int min, int max,
String units) String units, int stepSize)
{ {
super(context, nameId, descriptionId); super(context, nameId, descriptionId);
mMin = min; mMin = min;
mMax = max; mMax = max;
mUnits = units; mUnits = units;
mStepSize = stepSize;
} }
public abstract int getSelectedValue(Settings settings); public abstract int getSelectedValue(Settings settings);
@ -38,6 +40,11 @@ public abstract class SliderSetting extends SettingsItem
return mUnits; return mUnits;
} }
public int getStepSize()
{
return mStepSize;
}
@Override @Override
public int getType() public int getType()
{ {

@ -298,17 +298,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
slider.setValueFrom(item.getMin()); slider.setValueFrom(item.getMin());
slider.setValueTo(item.getMax()); slider.setValueTo(item.getMax());
slider.setValue(mSeekbarProgress); slider.setValue(mSeekbarProgress);
slider.setStepSize(item.getStepSize());
// Sliders can get frustrating to use with a small step size and large ranges
int maxRange = item.getMax() - item.getMin();
if (maxRange <= 100)
{
slider.setStepSize(1);
}
else
{
slider.setStepSize((int) Math.pow(10, Math.ceil(Math.log10(maxRange)) - 2));
}
slider.addOnChangeListener(this); slider.addOnChangeListener(this);

@ -293,7 +293,7 @@ public final class SettingsFragmentPresenter
sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_AUTO_DISC_CHANGE, sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_AUTO_DISC_CHANGE,
R.string.auto_disc_change, 0)); R.string.auto_disc_change, 0));
sl.add(new PercentSliderSetting(mContext, FloatSetting.MAIN_EMULATION_SPEED, sl.add(new PercentSliderSetting(mContext, FloatSetting.MAIN_EMULATION_SPEED,
R.string.speed_limit, 0, 0, 200, "%")); R.string.speed_limit, 0, 0, 200, "%", 1));
sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_FALLBACK_REGION, sl.add(new SingleChoiceSetting(mContext, IntSetting.MAIN_FALLBACK_REGION,
R.string.fallback_region, 0, R.array.regionEntries, R.array.regionValues)); R.string.fallback_region, 0, R.array.regionEntries, R.array.regionValues));
sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_ANALYTICS_ENABLED, R.string.analytics, sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_ANALYTICS_ENABLED, R.string.analytics,
@ -542,7 +542,7 @@ public final class SettingsFragmentPresenter
sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_AUDIO_STRETCH, R.string.audio_stretch, sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_AUDIO_STRETCH, R.string.audio_stretch,
R.string.audio_stretch_description)); R.string.audio_stretch_description));
sl.add(new IntSliderSetting(mContext, IntSetting.MAIN_AUDIO_VOLUME, R.string.audio_volume, 0, sl.add(new IntSliderSetting(mContext, IntSetting.MAIN_AUDIO_VOLUME, R.string.audio_volume, 0,
0, 100, "%")); 0, 100, "%", 1));
} }
private void addPathsSettings(ArrayList<SettingsItem> sl) private void addPathsSettings(ArrayList<SettingsItem> sl)
@ -621,9 +621,9 @@ public final class SettingsFragmentPresenter
sl.add(new SwitchSetting(mContext, BooleanSetting.SYSCONF_WIIMOTE_MOTOR, sl.add(new SwitchSetting(mContext, BooleanSetting.SYSCONF_WIIMOTE_MOTOR,
R.string.wiimote_rumble, 0)); R.string.wiimote_rumble, 0));
sl.add(new IntSliderSetting(mContext, IntSetting.SYSCONF_SPEAKER_VOLUME, sl.add(new IntSliderSetting(mContext, IntSetting.SYSCONF_SPEAKER_VOLUME,
R.string.wiimote_volume, 0, 0, 127, "")); R.string.wiimote_volume, 0, 0, 127, "", 1));
sl.add(new IntSliderSetting(mContext, IntSetting.SYSCONF_SENSOR_BAR_SENSITIVITY, sl.add(new IntSliderSetting(mContext, IntSetting.SYSCONF_SENSOR_BAR_SENSITIVITY,
R.string.sensor_bar_sensitivity, 0, 1, 5, "")); R.string.sensor_bar_sensitivity, 0, 1, 5, "", 1));
sl.add(new SingleChoiceSetting(mContext, IntSetting.SYSCONF_SENSOR_BAR_POSITION, sl.add(new SingleChoiceSetting(mContext, IntSetting.SYSCONF_SENSOR_BAR_POSITION,
R.string.sensor_bar_position, 0, R.array.sensorBarPositionEntries, R.string.sensor_bar_position, 0, R.array.sensorBarPositionEntries,
R.array.sensorBarPositionValues)); R.array.sensorBarPositionValues));
@ -735,7 +735,7 @@ public final class SettingsFragmentPresenter
sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_OVERCLOCK_ENABLE, sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_OVERCLOCK_ENABLE,
R.string.overclock_enable, R.string.overclock_enable_description)); R.string.overclock_enable, R.string.overclock_enable_description));
sl.add(new PercentSliderSetting(mContext, FloatSetting.MAIN_OVERCLOCK, R.string.overclock_title, sl.add(new PercentSliderSetting(mContext, FloatSetting.MAIN_OVERCLOCK, R.string.overclock_title,
R.string.overclock_title_description, 0, 400, "%")); R.string.overclock_title_description, 0, 400, "%", 1));
AbstractIntSetting mem1Setting = new AbstractIntSetting() AbstractIntSetting mem1Setting = new AbstractIntSetting()
{ {
@ -805,8 +805,10 @@ public final class SettingsFragmentPresenter
sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_RAM_OVERRIDE_ENABLE, sl.add(new SwitchSetting(mContext, BooleanSetting.MAIN_RAM_OVERRIDE_ENABLE,
R.string.enable_memory_size_override, R.string.enable_memory_size_override,
R.string.enable_memory_size_override_description)); R.string.enable_memory_size_override_description));
sl.add(new IntSliderSetting(mContext, mem1Setting, R.string.main_mem1_size, 0, 24, 64, "MB")); sl.add(new IntSliderSetting(mContext, mem1Setting, R.string.main_mem1_size, 0, 24, 64, "MB",
sl.add(new IntSliderSetting(mContext, mem2Setting, R.string.main_mem2_size, 0, 64, 128, "MB")); 1));
sl.add(new IntSliderSetting(mContext, mem2Setting, R.string.main_mem2_size, 0, 64, 128, "MB",
1));
sl.add(new HeaderSetting(mContext, R.string.gpu_options, 0)); sl.add(new HeaderSetting(mContext, R.string.gpu_options, 0));
sl.add(new SingleChoiceSetting(mContext, synchronizeGpuThread, R.string.synchronize_gpu_thread, sl.add(new SingleChoiceSetting(mContext, synchronizeGpuThread, R.string.synchronize_gpu_thread,
@ -1030,7 +1032,7 @@ public final class SettingsFragmentPresenter
R.string.log_render_time_to_file_description)); R.string.log_render_time_to_file_description));
sl.add(new IntSliderSetting(mContext, IntSetting.GFX_PERF_SAMP_WINDOW, sl.add(new IntSliderSetting(mContext, IntSetting.GFX_PERF_SAMP_WINDOW,
R.string.performance_sample_window, R.string.performance_sample_window_description, 0, R.string.performance_sample_window, R.string.performance_sample_window_description, 0,
10000, "ms")); 10000, "ms", 100));
} }
private void addAdvancedGraphicsSettings(ArrayList<SettingsItem> sl) private void addAdvancedGraphicsSettings(ArrayList<SettingsItem> sl)
@ -1070,7 +1072,7 @@ public final class SettingsFragmentPresenter
sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_INTERNAL_RESOLUTION_FRAME_DUMPS, sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_INTERNAL_RESOLUTION_FRAME_DUMPS,
R.string.internal_resolution_dumps, R.string.internal_resolution_dumps_description)); R.string.internal_resolution_dumps, R.string.internal_resolution_dumps_description));
sl.add(new IntSliderSetting(mContext, IntSetting.GFX_PNG_COMPRESSION_LEVEL, sl.add(new IntSliderSetting(mContext, IntSetting.GFX_PNG_COMPRESSION_LEVEL,
R.string.png_compression_level, 0, 0, 9, "")); R.string.png_compression_level, 0, 0, 9, "", 1));
sl.add(new HeaderSetting(mContext, R.string.debugging, 0)); sl.add(new HeaderSetting(mContext, R.string.debugging, 0));
sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_ENABLE_WIREFRAME, sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_ENABLE_WIREFRAME,
@ -1143,10 +1145,10 @@ public final class SettingsFragmentPresenter
sl.add(new SingleChoiceSetting(mContext, IntSetting.GFX_STEREO_MODE, R.string.stereoscopy_mode, sl.add(new SingleChoiceSetting(mContext, IntSetting.GFX_STEREO_MODE, R.string.stereoscopy_mode,
0, R.array.stereoscopyEntries, R.array.stereoscopyValues)); 0, R.array.stereoscopyEntries, R.array.stereoscopyValues));
sl.add(new IntSliderSetting(mContext, IntSetting.GFX_STEREO_DEPTH, R.string.stereoscopy_depth, sl.add(new IntSliderSetting(mContext, IntSetting.GFX_STEREO_DEPTH, R.string.stereoscopy_depth,
R.string.stereoscopy_depth_description, 0, 100, "%")); R.string.stereoscopy_depth_description, 0, 100, "%", 1));
sl.add(new IntSliderSetting(mContext, IntSetting.GFX_STEREO_CONVERGENCE_PERCENTAGE, sl.add(new IntSliderSetting(mContext, IntSetting.GFX_STEREO_CONVERGENCE_PERCENTAGE,
R.string.stereoscopy_convergence, R.string.stereoscopy_convergence_description, 0, 200, R.string.stereoscopy_convergence, R.string.stereoscopy_convergence_description, 0, 200,
"%")); "%", 1));
sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_STEREO_SWAP_EYES, sl.add(new SwitchSetting(mContext, BooleanSetting.GFX_STEREO_SWAP_EYES,
R.string.stereoscopy_swap_eyes, R.string.stereoscopy_swap_eyes_description)); R.string.stereoscopy_swap_eyes, R.string.stereoscopy_swap_eyes_description));
} }