mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-03-01 10:13:38 +00:00
Android: Create separate InvertedCheckBoxSetting and PercentSliderSetting classes
This way we don't have to hardcode any keys inside the classes.
This commit is contained in:
parent
c6a308380c
commit
ee9444a8f9
@ -1,11 +1,10 @@
|
|||||||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||||
|
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
|
||||||
|
|
||||||
public final class CheckBoxSetting extends SettingsItem
|
public class CheckBoxSetting extends SettingsItem
|
||||||
{
|
{
|
||||||
private boolean mDefaultValue;
|
protected boolean mDefaultValue;
|
||||||
|
|
||||||
public CheckBoxSetting(String file, String section, String key, int titleId, int descriptionId,
|
public CheckBoxSetting(String file, String section, String key, int titleId, int descriptionId,
|
||||||
boolean defaultValue)
|
boolean defaultValue)
|
||||||
@ -16,24 +15,12 @@ public final class CheckBoxSetting extends SettingsItem
|
|||||||
|
|
||||||
public boolean isChecked(Settings settings)
|
public boolean isChecked(Settings settings)
|
||||||
{
|
{
|
||||||
return invertIfNeeded(settings.getSection(getFile(), getSection())
|
return settings.getSection(getFile(), getSection()).getBoolean(getKey(), mDefaultValue);
|
||||||
.getBoolean(getKey(), invertIfNeeded(mDefaultValue)));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setChecked(Settings settings, boolean checked)
|
public void setChecked(Settings settings, boolean checked)
|
||||||
{
|
{
|
||||||
settings.getSection(getFile(), getSection()).setBoolean(getKey(), invertIfNeeded(checked));
|
settings.getSection(getFile(), getSection()).setBoolean(getKey(), checked);
|
||||||
}
|
|
||||||
|
|
||||||
private boolean invertIfNeeded(boolean x)
|
|
||||||
{
|
|
||||||
return isInverted() ? !x : x;
|
|
||||||
}
|
|
||||||
|
|
||||||
private boolean isInverted()
|
|
||||||
{
|
|
||||||
return getKey().equals(SettingsFile.KEY_SKIP_EFB) ||
|
|
||||||
getKey().equals(SettingsFile.KEY_IGNORE_FORMAT);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,39 +1,26 @@
|
|||||||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||||
|
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
|
||||||
|
|
||||||
public final class FloatSliderSetting extends SliderSetting
|
public class FloatSliderSetting extends SliderSetting
|
||||||
{
|
{
|
||||||
private float mDefaultValue;
|
protected float mDefaultValue;
|
||||||
|
|
||||||
public FloatSliderSetting(String file, String section, String key, int titleId, int descriptionId,
|
public FloatSliderSetting(String file, String section, String key, int titleId, int descriptionId,
|
||||||
int max, String units, float defaultValue)
|
int max, String units, float defaultValue)
|
||||||
{
|
{
|
||||||
super(file, section, key, titleId, descriptionId, max, units);
|
super(file, section, key, titleId, descriptionId, max, units);
|
||||||
mDefaultValue = defaultValue;
|
mDefaultValue = defaultValue;
|
||||||
|
|
||||||
if (isPercentSetting())
|
|
||||||
mDefaultValue /= 100;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public int getSelectedValue(Settings settings)
|
public int getSelectedValue(Settings settings)
|
||||||
{
|
{
|
||||||
float value = settings.getSection(getFile(), getSection()).getFloat(getKey(), mDefaultValue);
|
float value = settings.getSection(getFile(), getSection()).getFloat(getKey(), mDefaultValue);
|
||||||
return Math.round(isPercentSetting() ? value * 100 : value);
|
return Math.round(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSelectedValue(Settings settings, float selection)
|
public void setSelectedValue(Settings settings, float selection)
|
||||||
{
|
{
|
||||||
if (isPercentSetting())
|
|
||||||
selection /= 100;
|
|
||||||
|
|
||||||
settings.getSection(getFile(), getSection()).setFloat(getKey(), selection);
|
settings.getSection(getFile(), getSection()).setFloat(getKey(), selection);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPercentSetting()
|
|
||||||
{
|
|
||||||
return getKey().equals(SettingsFile.KEY_OVERCLOCK_PERCENT)
|
|
||||||
|| getKey().equals(SettingsFile.KEY_SPEED_LIMIT);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,25 @@
|
|||||||
|
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||||
|
|
||||||
|
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||||
|
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||||
|
|
||||||
|
public final class InvertedCheckBoxSetting extends CheckBoxSetting
|
||||||
|
{
|
||||||
|
public InvertedCheckBoxSetting(String file, String section, String key, int titleId,
|
||||||
|
int descriptionId, boolean defaultValue)
|
||||||
|
{
|
||||||
|
super(file, section, key, titleId, descriptionId, !defaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChecked(Settings settings)
|
||||||
|
{
|
||||||
|
return !settings.getSection(getFile(), getSection()).getBoolean(getKey(), mDefaultValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setChecked(Settings settings, boolean checked)
|
||||||
|
{
|
||||||
|
settings.getSection(getFile(), getSection()).setBoolean(getKey(), !checked);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,25 @@
|
|||||||
|
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||||
|
|
||||||
|
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||||
|
|
||||||
|
public final class PercentSliderSetting extends FloatSliderSetting
|
||||||
|
{
|
||||||
|
public PercentSliderSetting(String file, String section, String key, int titleId,
|
||||||
|
int descriptionId, int max, String units, float defaultValue)
|
||||||
|
{
|
||||||
|
super(file, section, key, titleId, descriptionId, max, units, defaultValue / 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getSelectedValue(Settings settings)
|
||||||
|
{
|
||||||
|
float value = settings.getSection(getFile(), getSection()).getFloat(getKey(), mDefaultValue);
|
||||||
|
return Math.round(value * 100);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setSelectedValue(Settings settings, float selection)
|
||||||
|
{
|
||||||
|
settings.getSection(getFile(), getSection()).setFloat(getKey(), selection / 100);
|
||||||
|
}
|
||||||
|
}
|
@ -13,6 +13,8 @@ import org.dolphinemu.dolphinemu.features.settings.model.view.FloatSliderSetting
|
|||||||
import org.dolphinemu.dolphinemu.features.settings.model.view.HeaderSetting;
|
import org.dolphinemu.dolphinemu.features.settings.model.view.HeaderSetting;
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.view.InputBindingSetting;
|
import org.dolphinemu.dolphinemu.features.settings.model.view.InputBindingSetting;
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.view.IntSliderSetting;
|
import org.dolphinemu.dolphinemu.features.settings.model.view.IntSliderSetting;
|
||||||
|
import org.dolphinemu.dolphinemu.features.settings.model.view.InvertedCheckBoxSetting;
|
||||||
|
import org.dolphinemu.dolphinemu.features.settings.model.view.PercentSliderSetting;
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.view.RumbleBindingSetting;
|
import org.dolphinemu.dolphinemu.features.settings.model.view.RumbleBindingSetting;
|
||||||
import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
|
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.SingleChoiceSetting;
|
||||||
@ -226,7 +228,7 @@ public final class SettingsFragmentPresenter
|
|||||||
false));
|
false));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
||||||
SettingsFile.KEY_AUTO_DISC_CHANGE, R.string.auto_disc_change, 0, false));
|
SettingsFile.KEY_AUTO_DISC_CHANGE, R.string.auto_disc_change, 0, false));
|
||||||
sl.add(new FloatSliderSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
sl.add(new PercentSliderSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
||||||
SettingsFile.KEY_SPEED_LIMIT, R.string.speed_limit, 0, 200, "%", 100));
|
SettingsFile.KEY_SPEED_LIMIT, R.string.speed_limit, 0, 200, "%", 100));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_ANALYTICS,
|
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_ANALYTICS,
|
||||||
SettingsFile.KEY_ANALYTICS_ENABLED, R.string.analytics, 0, false));
|
SettingsFile.KEY_ANALYTICS_ENABLED, R.string.analytics, 0, false));
|
||||||
@ -356,7 +358,7 @@ public final class SettingsFragmentPresenter
|
|||||||
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
||||||
SettingsFile.KEY_OVERCLOCK_ENABLE, R.string.overclock_enable,
|
SettingsFile.KEY_OVERCLOCK_ENABLE, R.string.overclock_enable,
|
||||||
R.string.overclock_enable_description, false));
|
R.string.overclock_enable_description, false));
|
||||||
sl.add(new FloatSliderSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
sl.add(new PercentSliderSetting(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE,
|
||||||
SettingsFile.KEY_OVERCLOCK_PERCENT, R.string.overclock_title,
|
SettingsFile.KEY_OVERCLOCK_PERCENT, R.string.overclock_title,
|
||||||
R.string.overclock_title_description, 400, "%", 100));
|
R.string.overclock_title_description, 400, "%", 100));
|
||||||
}
|
}
|
||||||
@ -544,10 +546,10 @@ public final class SettingsFragmentPresenter
|
|||||||
private void addHackSettings(ArrayList<SettingsItem> sl)
|
private void addHackSettings(ArrayList<SettingsItem> sl)
|
||||||
{
|
{
|
||||||
sl.add(new HeaderSetting(null, R.string.embedded_frame_buffer, 0));
|
sl.add(new HeaderSetting(null, R.string.embedded_frame_buffer, 0));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_GFX, Settings.SECTION_GFX_HACKS,
|
sl.add(new InvertedCheckBoxSetting(SettingsFile.FILE_NAME_GFX, Settings.SECTION_GFX_HACKS,
|
||||||
SettingsFile.KEY_SKIP_EFB, R.string.skip_efb_access,
|
SettingsFile.KEY_SKIP_EFB, R.string.skip_efb_access,
|
||||||
R.string.skip_efb_access_description, false));
|
R.string.skip_efb_access_description, false));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_GFX, Settings.SECTION_GFX_HACKS,
|
sl.add(new InvertedCheckBoxSetting(SettingsFile.FILE_NAME_GFX, Settings.SECTION_GFX_HACKS,
|
||||||
SettingsFile.KEY_IGNORE_FORMAT, R.string.ignore_format_changes,
|
SettingsFile.KEY_IGNORE_FORMAT, R.string.ignore_format_changes,
|
||||||
R.string.ignore_format_changes_description, true));
|
R.string.ignore_format_changes_description, true));
|
||||||
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_GFX, Settings.SECTION_GFX_HACKS,
|
sl.add(new CheckBoxSetting(SettingsFile.FILE_NAME_GFX, Settings.SECTION_GFX_HACKS,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user