Android: Centralize setting definitions
Except controller settings, because those would be annoying to fit into the same system, and I only need the non-controller settings to be brought over for the next commits to work.
This commit is contained in:
parent
b1fecbb71c
commit
13d1ef6681
|
@ -33,6 +33,7 @@ import androidx.fragment.app.FragmentManager;
|
|||
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Setting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||
import org.dolphinemu.dolphinemu.fragments.EmulationFragment;
|
||||
|
@ -855,7 +856,7 @@ public final class EmulationActivity extends AppCompatActivity
|
|||
{
|
||||
editor.putInt("wiiController", indexSelected);
|
||||
|
||||
File wiimoteNewFile = SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_WIIMOTE);
|
||||
File wiimoteNewFile = SettingsFile.getSettingsFile(Settings.FILE_WIIMOTE);
|
||||
IniFile wiimoteNewIni = new IniFile(wiimoteNewFile);
|
||||
wiimoteNewIni.setString("Wiimote1", "Extension",
|
||||
getResources().getStringArray(R.array.controllersValues)[indexSelected]);
|
||||
|
@ -889,7 +890,7 @@ public final class EmulationActivity extends AppCompatActivity
|
|||
else
|
||||
mMotionListener.disable();
|
||||
|
||||
File wiimoteNewFile = SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_WIIMOTE);
|
||||
File wiimoteNewFile = SettingsFile.getSettingsFile(Settings.FILE_WIIMOTE);
|
||||
IniFile wiimoteNewIni = new IniFile(wiimoteNewFile);
|
||||
wiimoteNewIni.setBoolean("Wiimote1", "IMUIR/Enabled", indexSelected != 1);
|
||||
wiimoteNewIni.save(wiimoteNewFile);
|
||||
|
|
|
@ -8,15 +8,13 @@ import androidx.annotation.NonNull;
|
|||
import androidx.appcompat.app.AlertDialog;
|
||||
import androidx.fragment.app.DialogFragment;
|
||||
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Setting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
|
||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
|
||||
import org.dolphinemu.dolphinemu.utils.IniFile;
|
||||
import org.dolphinemu.dolphinemu.utils.Log;
|
||||
|
||||
import java.io.File;
|
||||
|
@ -65,14 +63,10 @@ public class GamePropertiesDialog extends DialogFragment
|
|||
.getSupportFragmentManager(), "game_details");
|
||||
break;
|
||||
case 1:
|
||||
File dolphinFile = SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_DOLPHIN);
|
||||
IniFile dolphinIni = new IniFile(dolphinFile);
|
||||
dolphinIni.setString(Settings.SECTION_INI_CORE, SettingsFile.KEY_DEFAULT_ISO,
|
||||
path);
|
||||
dolphinIni.save(dolphinFile);
|
||||
|
||||
NativeLibrary.ReloadConfig();
|
||||
Toast.makeText(getContext(), "Default ISO set", Toast.LENGTH_SHORT).show();
|
||||
Settings settings = new Settings();
|
||||
settings.loadSettings(null);
|
||||
Setting.MAIN_DEFAULT_ISO.setString(settings, path);
|
||||
settings.saveSettings(null, getContext());
|
||||
break;
|
||||
case 2:
|
||||
SettingsActivity.launch(getContext(), MenuTag.CONFIG, gameId);
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model;
|
||||
|
||||
public interface AbstractSetting
|
||||
{
|
||||
boolean delete(Settings settings);
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model;
|
||||
|
||||
public interface BooleanSetting extends AbstractSetting
|
||||
{
|
||||
boolean getBoolean(Settings settings, boolean defaultValue);
|
||||
|
||||
void setBoolean(Settings settings, boolean newValue);
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model;
|
||||
|
||||
public interface FloatSetting extends AbstractSetting
|
||||
{
|
||||
float getFloat(Settings settings, float defaultValue);
|
||||
|
||||
void setFloat(Settings settings, float newValue);
|
||||
}
|
|
@ -0,0 +1,8 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model;
|
||||
|
||||
public interface IntSetting extends AbstractSetting
|
||||
{
|
||||
int getInt(Settings settings, int defaultValue);
|
||||
|
||||
void setInt(Settings settings, int newValue);
|
||||
}
|
|
@ -0,0 +1,69 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model;
|
||||
|
||||
public class LegacySetting implements StringSetting, BooleanSetting, IntSetting, FloatSetting
|
||||
{
|
||||
private final String mFile;
|
||||
private final String mSection;
|
||||
private final String mKey;
|
||||
|
||||
public LegacySetting(String file, String section, String key)
|
||||
{
|
||||
mFile = file;
|
||||
mSection = section;
|
||||
mKey = key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean delete(Settings settings)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).delete(mKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getString(Settings settings, String defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getString(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getBoolean(Settings settings, boolean defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getBoolean(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt(Settings settings, int defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getInt(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFloat(Settings settings, float defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getFloat(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setString(Settings settings, String newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setString(mKey, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoolean(Settings settings, boolean newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setBoolean(mKey, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInt(Settings settings, int newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setInt(mKey, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFloat(Settings settings, float newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setFloat(mKey, newValue);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,186 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model;
|
||||
|
||||
public enum Setting implements StringSetting, BooleanSetting, IntSetting, FloatSetting
|
||||
{
|
||||
// These entries have the same names and order as in C++, just for consistency.
|
||||
|
||||
MAIN_CPU_CORE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "CPUCore"),
|
||||
MAIN_DSP_HLE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "DSPHLE"),
|
||||
MAIN_CPU_THREAD(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "CPUThread"),
|
||||
MAIN_DEFAULT_ISO(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "DefaultISO"),
|
||||
MAIN_GC_LANGUAGE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SelectedLanguage"),
|
||||
MAIN_OVERRIDE_REGION_SETTINGS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE,
|
||||
"OverrideRegionSettings"),
|
||||
MAIN_AUDIO_STRETCH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AudioStretch"),
|
||||
MAIN_SLOT_A(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SlotA"),
|
||||
MAIN_SLOT_B(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "SlotB"),
|
||||
MAIN_WII_SD_CARD(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "WiiSDCard"),
|
||||
MAIN_WIIMOTE_CONTINUOUS_SCANNING(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE,
|
||||
"WiimoteContinuousScanning"),
|
||||
MAIN_WIIMOTE_ENABLE_SPEAKER(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE,
|
||||
"WiimoteEnableSpeaker"),
|
||||
MAIN_EMULATION_SPEED(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "EmulationSpeed"),
|
||||
MAIN_OVERCLOCK(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "Overclock"),
|
||||
MAIN_OVERCLOCK_ENABLE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "OverclockEnable"),
|
||||
MAIN_GFX_BACKEND(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "GFXBackend"),
|
||||
MAIN_AUTO_DISC_CHANGE(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "AutoDiscChange"),
|
||||
MAIN_ALLOW_SD_WRITES(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "WiiSDCardAllowWrites"),
|
||||
MAIN_ENABLE_SAVESTATES(Settings.FILE_DOLPHIN, Settings.SECTION_INI_CORE, "EnableSaveStates"),
|
||||
|
||||
MAIN_DSP_JIT(Settings.FILE_DOLPHIN, Settings.SECTION_INI_DSP, "EnableJIT"),
|
||||
MAIN_AUDIO_VOLUME(Settings.FILE_DOLPHIN, Settings.SECTION_INI_DSP, "Volume"),
|
||||
|
||||
MAIN_DUMP_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "DumpPath"),
|
||||
MAIN_LOAD_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "LoadPath"),
|
||||
MAIN_RESOURCEPACK_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "ResourcePackPath"),
|
||||
MAIN_FS_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "NANDRootPath"),
|
||||
MAIN_SD_PATH(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL, "WiiSDCardPath"),
|
||||
|
||||
MAIN_USE_PANIC_HANDLERS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_INTERFACE,
|
||||
"UsePanicHandlers"),
|
||||
MAIN_OSD_MESSAGES(Settings.FILE_DOLPHIN, Settings.SECTION_INI_INTERFACE,
|
||||
"OnScreenDisplayMessages"),
|
||||
|
||||
MAIN_ANALYTICS_ENABLED(Settings.FILE_DOLPHIN, Settings.SECTION_ANALYTICS, "Enabled"),
|
||||
MAIN_ANALYTICS_PERMISSION_ASKED(Settings.FILE_DOLPHIN, Settings.SECTION_ANALYTICS,
|
||||
"PermissionAsked"),
|
||||
|
||||
MAIN_RECURSIVE_ISO_PATHS(Settings.FILE_DOLPHIN, Settings.SECTION_INI_GENERAL,
|
||||
"RecursiveISOPaths"),
|
||||
|
||||
MAIN_LAST_PLATFORM_TAB(Settings.FILE_DOLPHIN, Settings.SECTION_INI_ANDROID, "LastPlatformTab"),
|
||||
|
||||
GFX_WIDESCREEN_HACK(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "wideScreenHack"),
|
||||
GFX_ASPECT_RATIO(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "AspectRatio"),
|
||||
GFX_SAFE_TEXTURE_CACHE_COLOR_SAMPLES(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS,
|
||||
"SafeTextureCacheColorSamples"),
|
||||
GFX_SHOW_FPS(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "ShowFPS"),
|
||||
GFX_ENABLE_GPU_TEXTURE_DECODING(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS,
|
||||
"EnableGPUTextureDecoding"),
|
||||
GFX_ENABLE_PIXEL_LIGHTING(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS,
|
||||
"EnablePixelLighting"),
|
||||
GFX_FAST_DEPTH_CALC(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "FastDepthCalc"),
|
||||
GFX_MSAA(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "MSAA"),
|
||||
GFX_EFB_SCALE(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "InternalResolution"),
|
||||
GFX_DISABLE_FOG(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS, "DisableFog"),
|
||||
GFX_BACKEND_MULTITHREADING(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS,
|
||||
"BackendMultithreading"),
|
||||
GFX_WAIT_FOR_SHADERS_BEFORE_STARTING(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS,
|
||||
"WaitForShadersBeforeStarting"),
|
||||
GFX_SHADER_COMPILATION_MODE(Settings.FILE_GFX, Settings.SECTION_GFX_SETTINGS,
|
||||
"ShaderCompilationMode"),
|
||||
|
||||
GFX_ENHANCE_FORCE_FILTERING(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS,
|
||||
"ForceFiltering"),
|
||||
GFX_ENHANCE_MAX_ANISOTROPY(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS, "MaxAnisotropy"),
|
||||
GFX_ENHANCE_POST_SHADER(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS,
|
||||
"PostProcessingShader"),
|
||||
GFX_ENHANCE_FORCE_TRUE_COLOR(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS,
|
||||
"ForceTrueColor"),
|
||||
GFX_ENHANCE_DISABLE_COPY_FILTER(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS,
|
||||
"DisableCopyFilter"),
|
||||
GFX_ENHANCE_ARBITRARY_MIPMAP_DETECTION(Settings.FILE_GFX, Settings.SECTION_GFX_ENHANCEMENTS,
|
||||
"ArbitraryMipmapDetection"),
|
||||
|
||||
GFX_STEREO_MODE(Settings.FILE_GFX, Settings.SECTION_STEREOSCOPY, "StereoMode"),
|
||||
GFX_STEREO_DEPTH(Settings.FILE_GFX, Settings.SECTION_STEREOSCOPY, "StereoDepth"),
|
||||
GFX_STEREO_CONVERGENCE_PERCENTAGE(Settings.FILE_GFX, Settings.SECTION_STEREOSCOPY,
|
||||
"StereoConvergencePercentage"),
|
||||
GFX_STEREO_SWAP_EYES(Settings.FILE_GFX, Settings.SECTION_STEREOSCOPY, "StereoSwapEyes"),
|
||||
|
||||
GFX_HACK_EFB_ACCESS_ENABLE(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "EFBAccessEnable"),
|
||||
GFX_HACK_SKIP_EFB_COPY_TO_RAM(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS,
|
||||
"EFBToTextureEnable"),
|
||||
GFX_HACK_SKIP_XFB_COPY_TO_RAM(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS,
|
||||
"XFBToTextureEnable"),
|
||||
GFX_HACK_DEFER_EFB_COPIES(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "DeferEFBCopies"),
|
||||
GFX_HACK_IMMEDIATE_XFB(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "ImmediateXFBEnable"),
|
||||
GFX_HACK_SKIP_DUPLICATE_XFBS(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "SkipDuplicateXFBs"),
|
||||
GFX_HACK_COPY_EFB_SCALED(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS, "EFBScaledCopy"),
|
||||
GFX_HACK_EFB_EMULATE_FORMAT_CHANGES(Settings.FILE_GFX, Settings.SECTION_GFX_HACKS,
|
||||
"EFBEmulateFormatChanges"),
|
||||
|
||||
LOGGER_WRITE_TO_FILE(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_OPTIONS, "WriteToFile"),
|
||||
LOGGER_VERBOSITY(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_OPTIONS, "Verbosity"),
|
||||
|
||||
// These settings are not yet in the new config system in C++ - please move them once they are
|
||||
|
||||
MAIN_JIT_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG, "JitOff"),
|
||||
MAIN_JIT_LOAD_STORE_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG, "JitLoadStoreOff"),
|
||||
MAIN_JIT_LOAD_STORE_FLOATING_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG,
|
||||
"JitLoadStoreFloatingOff"),
|
||||
MAIN_JIT_LOAD_STORE_PAIRED_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG,
|
||||
"JitLoadStorePairedOff"),
|
||||
MAIN_JIT_FLOATING_POINT_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG, "JitFloatingPointOff"),
|
||||
MAIN_JIT_INTEGER_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG, "JitIntegerOff"),
|
||||
MAIN_JIT_PAIRED_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG, "JitPairedOff"),
|
||||
MAIN_JIT_SYSTEM_REGISTERS_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG,
|
||||
"JitSystemRegistersOff"),
|
||||
MAIN_JIT_BRANCH_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG, "JitBranchOff"),
|
||||
MAIN_JIT_REGISTER_CACHE_OFF(Settings.FILE_DOLPHIN, Settings.SECTION_DEBUG, "JitRegisterCacheOff");
|
||||
|
||||
private final String mFile;
|
||||
private final String mSection;
|
||||
private final String mKey;
|
||||
|
||||
Setting(String file, String section, String key)
|
||||
{
|
||||
mFile = file;
|
||||
mSection = section;
|
||||
mKey = key;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean delete(Settings settings)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).delete(mKey);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getString(Settings settings, String defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getString(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean getBoolean(Settings settings, boolean defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getBoolean(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getInt(Settings settings, int defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getInt(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getFloat(Settings settings, float defaultValue)
|
||||
{
|
||||
return settings.getSection(mFile, mSection).getFloat(mKey, defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setString(Settings settings, String newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setString(mKey, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setBoolean(Settings settings, boolean newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setBoolean(mKey, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setInt(Settings settings, int newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setInt(mKey, newValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setFloat(Settings settings, float newValue)
|
||||
{
|
||||
settings.getSection(mFile, mSection).setFloat(mKey, newValue);
|
||||
}
|
||||
}
|
|
@ -2,6 +2,7 @@ package org.dolphinemu.dolphinemu.features.settings.model;
|
|||
|
||||
import android.content.Context;
|
||||
import android.text.TextUtils;
|
||||
import android.widget.Toast;
|
||||
|
||||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivityView;
|
||||
|
@ -9,13 +10,17 @@ import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
|||
import org.dolphinemu.dolphinemu.services.GameFileCacheService;
|
||||
import org.dolphinemu.dolphinemu.utils.IniFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class Settings
|
||||
{
|
||||
public static final String FILE_DOLPHIN = "Dolphin";
|
||||
public static final String FILE_GFX = "GFX";
|
||||
public static final String FILE_LOGGER = "Logger";
|
||||
public static final String FILE_GCPAD = "GCPadNew";
|
||||
public static final String FILE_WIIMOTE = "WiimoteNew";
|
||||
|
||||
public static final String SECTION_INI_ANDROID = "Android";
|
||||
public static final String SECTION_INI_GENERAL = "General";
|
||||
public static final String SECTION_INI_CORE = "Core";
|
||||
|
@ -39,22 +44,19 @@ public class Settings
|
|||
public static final String SECTION_CONTROLS = "Controls";
|
||||
public static final String SECTION_PROFILE = "Profile";
|
||||
|
||||
private static final int DSP_HLE = 0;
|
||||
private static final int DSP_LLE_RECOMPILER = 1;
|
||||
private static final int DSP_LLE_INTERPRETER = 2;
|
||||
|
||||
public static final String SECTION_ANALYTICS = "Analytics";
|
||||
|
||||
public static final String GAME_SETTINGS_PLACEHOLDER_FILE_NAME = "";
|
||||
|
||||
private String gameId;
|
||||
|
||||
private static final String[] configFiles = new String[]{SettingsFile.FILE_NAME_DOLPHIN,
|
||||
SettingsFile.FILE_NAME_GFX, SettingsFile.FILE_NAME_LOGGER,
|
||||
SettingsFile.FILE_NAME_WIIMOTE};
|
||||
private static final String[] configFiles = new String[]{FILE_DOLPHIN, FILE_GFX, FILE_LOGGER,
|
||||
FILE_WIIMOTE};
|
||||
|
||||
private HashMap<String, IniFile> mIniFiles = new HashMap<>();
|
||||
|
||||
private boolean mLoadedRecursiveIsoPathsValue = false;
|
||||
|
||||
private IniFile getGameSpecificFile()
|
||||
{
|
||||
if (TextUtils.isEmpty(gameId) || mIniFiles.size() != 1)
|
||||
|
@ -93,6 +95,8 @@ public class Settings
|
|||
{
|
||||
loadCustomGameSettings(gameId, view);
|
||||
}
|
||||
|
||||
mLoadedRecursiveIsoPathsValue = Setting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(this, false);
|
||||
}
|
||||
|
||||
private void loadDolphinSettings(SettingsActivityView view)
|
||||
|
@ -123,62 +127,37 @@ public class Settings
|
|||
loadSettings(view);
|
||||
}
|
||||
|
||||
public void saveSettings(SettingsActivityView view, Context context, Set<String> modifiedSettings)
|
||||
public void saveSettings(SettingsActivityView view, Context context)
|
||||
{
|
||||
if (TextUtils.isEmpty(gameId))
|
||||
{
|
||||
view.showToastMessage("Saved settings to INI files");
|
||||
if (context != null)
|
||||
Toast.makeText(context, "Saved settings to INI files", Toast.LENGTH_SHORT).show();
|
||||
|
||||
for (Map.Entry<String, IniFile> entry : mIniFiles.entrySet())
|
||||
{
|
||||
SettingsFile.saveFile(entry.getKey(), entry.getValue(), view);
|
||||
}
|
||||
|
||||
if (modifiedSettings.contains(SettingsFile.KEY_DSP_ENGINE))
|
||||
{
|
||||
File dolphinFile = SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_DOLPHIN);
|
||||
IniFile dolphinIni = new IniFile(dolphinFile);
|
||||
|
||||
switch (dolphinIni.getInt(Settings.SECTION_INI_ANDROID, SettingsFile.KEY_DSP_ENGINE,
|
||||
DSP_HLE))
|
||||
{
|
||||
case DSP_HLE:
|
||||
dolphinIni.setBoolean(Settings.SECTION_INI_CORE, SettingsFile.KEY_DSP_HLE, true);
|
||||
dolphinIni.setBoolean(Settings.SECTION_INI_DSP, SettingsFile.KEY_DSP_ENABLE_JIT, true);
|
||||
break;
|
||||
|
||||
case DSP_LLE_RECOMPILER:
|
||||
dolphinIni.setBoolean(Settings.SECTION_INI_CORE, SettingsFile.KEY_DSP_HLE, false);
|
||||
dolphinIni.setBoolean(Settings.SECTION_INI_DSP, SettingsFile.KEY_DSP_ENABLE_JIT, true);
|
||||
break;
|
||||
|
||||
case DSP_LLE_INTERPRETER:
|
||||
dolphinIni.setBoolean(Settings.SECTION_INI_CORE, SettingsFile.KEY_DSP_HLE, false);
|
||||
dolphinIni.setBoolean(Settings.SECTION_INI_DSP, SettingsFile.KEY_DSP_ENABLE_JIT, false);
|
||||
break;
|
||||
}
|
||||
|
||||
dolphinIni.save(dolphinFile);
|
||||
}
|
||||
|
||||
// Notify the native code of the changes
|
||||
NativeLibrary.ReloadConfig();
|
||||
NativeLibrary.ReloadWiimoteConfig();
|
||||
NativeLibrary.ReloadLoggerConfig();
|
||||
NativeLibrary.UpdateGCAdapterScanThread();
|
||||
|
||||
if (modifiedSettings.contains(SettingsFile.KEY_RECURSIVE_ISO_PATHS))
|
||||
if (mLoadedRecursiveIsoPathsValue != Setting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(this, false))
|
||||
{
|
||||
// Refresh game library
|
||||
GameFileCacheService.startRescan(context);
|
||||
}
|
||||
|
||||
modifiedSettings.clear();
|
||||
}
|
||||
else
|
||||
{
|
||||
// custom game settings
|
||||
view.showToastMessage("Saved settings for " + gameId);
|
||||
|
||||
if (context != null)
|
||||
Toast.makeText(context, "Saved settings for " + gameId, Toast.LENGTH_SHORT).show();
|
||||
|
||||
SettingsFile.saveCustomGameSettings(gameId, getGameSpecificFile());
|
||||
}
|
||||
}
|
||||
|
@ -214,6 +193,6 @@ public class Settings
|
|||
if (TextUtils.isEmpty(gameId))
|
||||
return false;
|
||||
|
||||
return getSection(SettingsFile.FILE_NAME_DOLPHIN, SECTION_INI_INTERFACE).exists("ThemeName");
|
||||
return getSection(Settings.FILE_DOLPHIN, SECTION_INI_INTERFACE).exists("ThemeName");
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,8 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model;
|
||||
|
||||
public interface StringSetting extends AbstractSetting
|
||||
{
|
||||
String getString(Settings settings, String defaultValue);
|
||||
|
||||
void setString(Settings settings, String newValue);
|
||||
}
|
|
@ -1,26 +1,29 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
|
||||
public class CheckBoxSetting extends SettingsItem
|
||||
{
|
||||
protected BooleanSetting mSetting;
|
||||
protected boolean mDefaultValue;
|
||||
|
||||
public CheckBoxSetting(String file, String section, String key, int titleId, int descriptionId,
|
||||
public CheckBoxSetting(BooleanSetting setting, int titleId, int descriptionId,
|
||||
boolean defaultValue)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
mSetting = setting;
|
||||
mDefaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public boolean isChecked(Settings settings)
|
||||
{
|
||||
return settings.getSection(getFile(), getSection()).getBoolean(getKey(), mDefaultValue);
|
||||
return mSetting.getBoolean(settings, mDefaultValue);
|
||||
}
|
||||
|
||||
public void setChecked(Settings settings, boolean checked)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setBoolean(getKey(), checked);
|
||||
mSetting.setBoolean(settings, checked);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -9,7 +9,7 @@ public final class ConfirmRunnable extends SettingsItem
|
|||
public ConfirmRunnable(int titleId, int descriptionId, int alertText, int confirmationText,
|
||||
Runnable runnable)
|
||||
{
|
||||
super(null, null, null, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
mAlertText = alertText;
|
||||
mConfirmationText = confirmationText;
|
||||
mRunnable = runnable;
|
||||
|
|
|
@ -1,28 +1,31 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.StringSetting;
|
||||
|
||||
public final class FilePicker extends SettingsItem
|
||||
{
|
||||
private StringSetting mSetting;
|
||||
private String mDefaultValue;
|
||||
private int mRequestType;
|
||||
|
||||
public FilePicker(String file, String section, String key, int titleId, int descriptionId,
|
||||
public FilePicker(StringSetting setting, int titleId, int descriptionId,
|
||||
String defaultVault, int requestType)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
mSetting = setting;
|
||||
mDefaultValue = defaultVault;
|
||||
mRequestType = requestType;
|
||||
}
|
||||
|
||||
public String getSelectedValue(Settings settings)
|
||||
{
|
||||
return settings.getSection(getFile(), getSection()).getString(getKey(), mDefaultValue);
|
||||
return mSetting.getString(settings, mDefaultValue);
|
||||
}
|
||||
|
||||
public void setSelectedValue(Settings settings, String selection)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setString(getKey(), selection);
|
||||
mSetting.setString(settings, selection);
|
||||
}
|
||||
|
||||
public int getRequestType()
|
||||
|
|
|
@ -1,26 +1,28 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.FloatSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
|
||||
public class FloatSliderSetting extends SliderSetting
|
||||
{
|
||||
protected FloatSetting mSetting;
|
||||
protected float mDefaultValue;
|
||||
|
||||
public FloatSliderSetting(String file, String section, String key, int titleId, int descriptionId,
|
||||
int max, String units, float defaultValue)
|
||||
public FloatSliderSetting(FloatSetting setting, int titleId, int descriptionId, int max,
|
||||
String units, float defaultValue)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId, max, units);
|
||||
super(titleId, descriptionId, max, units);
|
||||
mSetting = setting;
|
||||
mDefaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public int getSelectedValue(Settings settings)
|
||||
{
|
||||
float value = settings.getSection(getFile(), getSection()).getFloat(getKey(), mDefaultValue);
|
||||
return Math.round(value);
|
||||
return Math.round(mSetting.getFloat(settings, mDefaultValue));
|
||||
}
|
||||
|
||||
public void setSelectedValue(Settings settings, float selection)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setFloat(getKey(), selection);
|
||||
mSetting.setFloat(settings, selection);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,9 +2,9 @@ package org.dolphinemu.dolphinemu.features.settings.model.view;
|
|||
|
||||
public final class HeaderSetting extends SettingsItem
|
||||
{
|
||||
public HeaderSetting(String key, int titleId, int descriptionId)
|
||||
public HeaderSetting(int titleId, int descriptionId)
|
||||
{
|
||||
super(null, null, key, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -10,17 +10,29 @@ import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
|||
|
||||
public class InputBindingSetting extends SettingsItem
|
||||
{
|
||||
private String gameId;
|
||||
private String mFile;
|
||||
private String mSection;
|
||||
private String mKey;
|
||||
|
||||
private String mGameId;
|
||||
|
||||
public InputBindingSetting(String file, String section, String key, int titleId, String gameId)
|
||||
{
|
||||
super(file, section, key, titleId, 0);
|
||||
this.gameId = gameId;
|
||||
super(titleId, 0);
|
||||
mFile = file;
|
||||
mSection = section;
|
||||
mKey = key;
|
||||
mGameId = gameId;
|
||||
}
|
||||
|
||||
public String getKey()
|
||||
{
|
||||
return mKey;
|
||||
}
|
||||
|
||||
public String getValue(Settings settings)
|
||||
{
|
||||
return settings.getSection(getFile(), getSection()).getString(getKey(), "");
|
||||
return settings.getSection(mFile, mSection).getString(mKey, "");
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -60,10 +72,10 @@ public class InputBindingSetting extends SettingsItem
|
|||
preferences =
|
||||
PreferenceManager.getDefaultSharedPreferences(DolphinApplication.getAppContext());
|
||||
SharedPreferences.Editor editor = preferences.edit();
|
||||
editor.putString(getKey() + gameId, ui);
|
||||
editor.putString(mKey + mGameId, ui);
|
||||
editor.apply();
|
||||
|
||||
settings.getSection(getFile(), getSection()).setString(getKey(), bind);
|
||||
settings.getSection(mFile, mSection).setString(mKey, bind);
|
||||
}
|
||||
|
||||
public void clearValue(Settings settings)
|
||||
|
@ -79,6 +91,6 @@ public class InputBindingSetting extends SettingsItem
|
|||
|
||||
public String getGameId()
|
||||
{
|
||||
return gameId;
|
||||
return mGameId;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,25 +1,28 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.IntSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
|
||||
public final class IntSliderSetting extends SliderSetting
|
||||
{
|
||||
private IntSetting mSetting;
|
||||
private int mDefaultValue;
|
||||
|
||||
public IntSliderSetting(String file, String section, String key, int titleId, int descriptionId,
|
||||
int max, String units, int defaultValue)
|
||||
public IntSliderSetting(IntSetting setting, int titleId, int descriptionId, int max,
|
||||
String units, int defaultValue)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId, max, units);
|
||||
super(titleId, descriptionId, max, units);
|
||||
mSetting = setting;
|
||||
mDefaultValue = defaultValue;
|
||||
}
|
||||
|
||||
public int getSelectedValue(Settings settings)
|
||||
{
|
||||
return settings.getSection(getFile(), getSection()).getInt(getKey(), mDefaultValue);
|
||||
return mSetting.getInt(settings, mDefaultValue);
|
||||
}
|
||||
|
||||
public void setSelectedValue(Settings settings, int selection)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setInt(getKey(), selection);
|
||||
mSetting.setInt(settings, selection);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,24 +1,25 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.BooleanSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
|
||||
public final class InvertedCheckBoxSetting extends CheckBoxSetting
|
||||
{
|
||||
public InvertedCheckBoxSetting(String file, String section, String key, int titleId,
|
||||
public InvertedCheckBoxSetting(BooleanSetting setting, int titleId,
|
||||
int descriptionId, boolean defaultValue)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId, !defaultValue);
|
||||
super(setting, titleId, descriptionId, !defaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isChecked(Settings settings)
|
||||
{
|
||||
return !settings.getSection(getFile(), getSection()).getBoolean(getKey(), mDefaultValue);
|
||||
return !mSetting.getBoolean(settings, mDefaultValue);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setChecked(Settings settings, boolean checked)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setBoolean(getKey(), !checked);
|
||||
mSetting.setBoolean(settings, !checked);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,22 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.LegacySetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
|
||||
public class LogCheckBoxSetting extends CheckBoxSetting
|
||||
{
|
||||
String mKey;
|
||||
|
||||
public LogCheckBoxSetting(String key, int titleId, int descriptionId,
|
||||
boolean defaultValue)
|
||||
{
|
||||
super(new LegacySetting(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_LOGS, key), titleId,
|
||||
descriptionId, defaultValue);
|
||||
mKey = key;
|
||||
}
|
||||
|
||||
public String getKey()
|
||||
{
|
||||
return mKey;
|
||||
}
|
||||
}
|
|
@ -1,25 +1,25 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.FloatSetting;
|
||||
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)
|
||||
public PercentSliderSetting(FloatSetting setting, int titleId, int descriptionId, int max,
|
||||
String units, float defaultValue)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId, max, units, defaultValue / 100);
|
||||
super(setting, 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);
|
||||
return Math.round(mSetting.getFloat(settings, mDefaultValue) * 100);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSelectedValue(Settings settings, float selection)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setFloat(getKey(), selection / 100);
|
||||
mSetting.setFloat(settings, selection / 100);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -21,56 +21,22 @@ public abstract class SettingsItem
|
|||
public static final int TYPE_FILE_PICKER = 9;
|
||||
public static final int TYPE_CONFIRM_RUNNABLE = 10;
|
||||
|
||||
private String mFile;
|
||||
private String mSection;
|
||||
private String mKey;
|
||||
|
||||
private int mNameId;
|
||||
private int mDescriptionId;
|
||||
|
||||
/**
|
||||
* Base constructor.
|
||||
*
|
||||
* @param file File to which the Setting belongs.
|
||||
* @param section Section to which the Setting belongs.
|
||||
* @param key Identifier for the Setting represented by this Item.
|
||||
* @param nameId Resource ID for a text string to be displayed as this setting's name.
|
||||
* @param descriptionId Resource ID for a text string to be displayed as this setting's description.
|
||||
*/
|
||||
|
||||
public SettingsItem(String file, String section, String key, int nameId, int descriptionId)
|
||||
public SettingsItem(int nameId, int descriptionId)
|
||||
{
|
||||
mFile = file;
|
||||
mSection = section;
|
||||
mKey = key;
|
||||
mNameId = nameId;
|
||||
mDescriptionId = descriptionId;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The file in which the backing setting belongs.
|
||||
*/
|
||||
public String getFile()
|
||||
{
|
||||
return mFile;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The header under which the backing setting belongs.
|
||||
*/
|
||||
public String getSection()
|
||||
{
|
||||
return mSection;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The identifier for the backing setting.
|
||||
*/
|
||||
public String getKey()
|
||||
{
|
||||
return mKey;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return A resource ID for a text string representing this setting's name.
|
||||
*/
|
||||
|
|
|
@ -1,30 +1,33 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.IntSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
|
||||
|
||||
public final class SingleChoiceSetting extends SettingsItem
|
||||
{
|
||||
private IntSetting mSetting;
|
||||
private int mDefaultValue;
|
||||
|
||||
private int mChoicesId;
|
||||
private int mValuesId;
|
||||
private MenuTag menuTag;
|
||||
|
||||
public SingleChoiceSetting(String file, String section, String key, int titleId,
|
||||
int descriptionId, int choicesId, int valuesId, int defaultValue, MenuTag menuTag)
|
||||
public SingleChoiceSetting(IntSetting setting, int titleId, int descriptionId, int choicesId,
|
||||
int valuesId, int defaultValue, MenuTag menuTag)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
mSetting = setting;
|
||||
mDefaultValue = defaultValue;
|
||||
mValuesId = valuesId;
|
||||
mChoicesId = choicesId;
|
||||
mDefaultValue = defaultValue;
|
||||
this.menuTag = menuTag;
|
||||
}
|
||||
|
||||
public SingleChoiceSetting(String file, String section, String key, int titleId,
|
||||
int descriptionId, int choicesId, int valuesId, int defaultValue)
|
||||
public SingleChoiceSetting(IntSetting setting, int titleId, int descriptionId, int choicesId,
|
||||
int valuesId, int defaultValue)
|
||||
{
|
||||
this(file, section, key, titleId, descriptionId, choicesId, valuesId, defaultValue, null);
|
||||
this(setting, titleId, descriptionId, choicesId, valuesId, defaultValue, null);
|
||||
}
|
||||
|
||||
public int getChoicesId()
|
||||
|
@ -39,7 +42,7 @@ public final class SingleChoiceSetting extends SettingsItem
|
|||
|
||||
public int getSelectedValue(Settings settings)
|
||||
{
|
||||
return settings.getSection(getFile(), getSection()).getInt(getKey(), mDefaultValue);
|
||||
return mSetting.getInt(settings, mDefaultValue);
|
||||
}
|
||||
|
||||
public MenuTag getMenuTag()
|
||||
|
@ -49,7 +52,7 @@ public final class SingleChoiceSetting extends SettingsItem
|
|||
|
||||
public void setSelectedValue(Settings settings, int selection)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setInt(getKey(), selection);
|
||||
mSetting.setInt(settings, selection);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -1,10 +1,12 @@
|
|||
package org.dolphinemu.dolphinemu.features.settings.model.view;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.IntSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
|
||||
|
||||
public final class SingleChoiceSettingDynamicDescriptions extends SettingsItem
|
||||
{
|
||||
private IntSetting mSetting;
|
||||
private int mDefaultValue;
|
||||
|
||||
private int mChoicesId;
|
||||
|
@ -13,24 +15,25 @@ public final class SingleChoiceSettingDynamicDescriptions extends SettingsItem
|
|||
private int mDescriptionValuesId;
|
||||
private MenuTag menuTag;
|
||||
|
||||
public SingleChoiceSettingDynamicDescriptions(String file, String section, String key,
|
||||
int titleId, int descriptionId, int choicesId, int valuesId, int descriptionChoicesId,
|
||||
int descriptionValuesId, int defaultValue, MenuTag menuTag)
|
||||
public SingleChoiceSettingDynamicDescriptions(IntSetting setting, int titleId, int descriptionId,
|
||||
int choicesId, int valuesId, int descriptionChoicesId, int descriptionValuesId,
|
||||
int defaultValue, MenuTag menuTag)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
mSetting = setting;
|
||||
mDefaultValue = defaultValue;
|
||||
mValuesId = valuesId;
|
||||
mChoicesId = choicesId;
|
||||
mDescriptionChoicesId = descriptionChoicesId;
|
||||
mDescriptionValuesId = descriptionValuesId;
|
||||
mDefaultValue = defaultValue;
|
||||
this.menuTag = menuTag;
|
||||
}
|
||||
|
||||
public SingleChoiceSettingDynamicDescriptions(String file, String section, String key,
|
||||
int titleId, int descriptionId, int choicesId, int valuesId, int descriptionChoicesId,
|
||||
int descriptionValuesId, int defaultValue)
|
||||
public SingleChoiceSettingDynamicDescriptions(IntSetting setting, int titleId, int descriptionId,
|
||||
int choicesId, int valuesId, int descriptionChoicesId, int descriptionValuesId,
|
||||
int defaultValue)
|
||||
{
|
||||
this(file, section, key, titleId, descriptionId, choicesId, valuesId, descriptionChoicesId,
|
||||
this(setting, titleId, descriptionId, choicesId, valuesId, descriptionChoicesId,
|
||||
descriptionValuesId, defaultValue, null);
|
||||
}
|
||||
|
||||
|
@ -56,7 +59,7 @@ public final class SingleChoiceSettingDynamicDescriptions extends SettingsItem
|
|||
|
||||
public int getSelectedValue(Settings settings)
|
||||
{
|
||||
return settings.getSection(getFile(), getSection()).getInt(getKey(), mDefaultValue);
|
||||
return mSetting.getInt(settings, mDefaultValue);
|
||||
}
|
||||
|
||||
public MenuTag getMenuTag()
|
||||
|
@ -66,7 +69,7 @@ public final class SingleChoiceSettingDynamicDescriptions extends SettingsItem
|
|||
|
||||
public void setSelectedValue(Settings settings, int selection)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setInt(getKey(), selection);
|
||||
mSetting.setInt(settings, selection);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -7,10 +7,9 @@ public abstract class SliderSetting extends SettingsItem
|
|||
private int mMax;
|
||||
private String mUnits;
|
||||
|
||||
public SliderSetting(String file, String section, String key, int nameId, int descriptionId,
|
||||
int max, String units)
|
||||
public SliderSetting(int nameId, int descriptionId, int max, String units)
|
||||
{
|
||||
super(file, section, key, nameId, descriptionId);
|
||||
super(nameId, descriptionId);
|
||||
mMax = max;
|
||||
mUnits = units;
|
||||
}
|
||||
|
|
|
@ -2,47 +2,51 @@ package org.dolphinemu.dolphinemu.features.settings.model.view;
|
|||
|
||||
import org.dolphinemu.dolphinemu.DolphinApplication;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.StringSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
|
||||
|
||||
public class StringSingleChoiceSetting extends SettingsItem
|
||||
{
|
||||
private StringSetting mSetting;
|
||||
private String mDefaultValue;
|
||||
|
||||
private String[] mChoicesId;
|
||||
private String[] mValuesId;
|
||||
private MenuTag mMenuTag;
|
||||
|
||||
public StringSingleChoiceSetting(String file, String section, String key, int titleId,
|
||||
public StringSingleChoiceSetting(StringSetting setting, int titleId,
|
||||
int descriptionId, String[] choicesId, String[] valuesId, String defaultValue,
|
||||
MenuTag menuTag)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
mSetting = setting;
|
||||
mChoicesId = choicesId;
|
||||
mValuesId = valuesId;
|
||||
mDefaultValue = defaultValue;
|
||||
mMenuTag = menuTag;
|
||||
}
|
||||
|
||||
public StringSingleChoiceSetting(String file, String section, String key, int titleId,
|
||||
public StringSingleChoiceSetting(StringSetting setting, int titleId,
|
||||
int descriptionId, String[] choicesId, String[] valuesId, String defaultValue)
|
||||
{
|
||||
this(file, section, key, titleId, descriptionId, choicesId, valuesId, defaultValue, null);
|
||||
this(setting, titleId, descriptionId, choicesId, valuesId, defaultValue, null);
|
||||
}
|
||||
|
||||
public StringSingleChoiceSetting(String file, String section, String key, int titleId,
|
||||
public StringSingleChoiceSetting(StringSetting setting, int titleId,
|
||||
int descriptionId, int choicesId, int valuesId, String defaultValue, MenuTag menuTag)
|
||||
{
|
||||
super(file, section, key, titleId, descriptionId);
|
||||
super(titleId, descriptionId);
|
||||
mSetting = setting;
|
||||
mChoicesId = DolphinApplication.getAppContext().getResources().getStringArray(choicesId);
|
||||
mValuesId = DolphinApplication.getAppContext().getResources().getStringArray(valuesId);
|
||||
mDefaultValue = defaultValue;
|
||||
mMenuTag = menuTag;
|
||||
}
|
||||
|
||||
public StringSingleChoiceSetting(String file, String section, String key, int titleId,
|
||||
public StringSingleChoiceSetting(StringSetting setting, int titleId,
|
||||
int descriptionId, int choicesId, int valuesId, String defaultValue)
|
||||
{
|
||||
this(file, section, key, titleId, descriptionId, choicesId, valuesId, defaultValue, null);
|
||||
this(setting, titleId, descriptionId, choicesId, valuesId, defaultValue, null);
|
||||
}
|
||||
|
||||
public String[] getChoicesId()
|
||||
|
@ -70,7 +74,7 @@ public class StringSingleChoiceSetting extends SettingsItem
|
|||
|
||||
public String getSelectedValue(Settings settings)
|
||||
{
|
||||
return settings.getSection(getFile(), getSection()).getString(getKey(), mDefaultValue);
|
||||
return mSetting.getString(settings, mDefaultValue);
|
||||
}
|
||||
|
||||
public int getSelectValueIndex(Settings settings)
|
||||
|
@ -94,7 +98,7 @@ public class StringSingleChoiceSetting extends SettingsItem
|
|||
|
||||
public void setSelectedValue(Settings settings, String selection)
|
||||
{
|
||||
settings.getSection(getFile(), getSection()).setString(getKey(), selection);
|
||||
mSetting.setString(settings, selection);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -6,9 +6,9 @@ public final class SubmenuSetting extends SettingsItem
|
|||
{
|
||||
private MenuTag mMenuKey;
|
||||
|
||||
public SubmenuSetting(String key, int titleId, MenuTag menuKey)
|
||||
public SubmenuSetting(int titleId, MenuTag menuKey)
|
||||
{
|
||||
super(null, null, key, titleId, 0);
|
||||
super(titleId, 0);
|
||||
mMenuKey = menuKey;
|
||||
}
|
||||
|
||||
|
|
|
@ -224,9 +224,9 @@ public final class SettingsActivity extends AppCompatActivity implements Setting
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onSettingChanged(String key)
|
||||
public void onSettingChanged()
|
||||
{
|
||||
mPresenter.onSettingChanged(key);
|
||||
mPresenter.onSettingChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -10,9 +10,6 @@ import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner;
|
|||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
|
||||
import org.dolphinemu.dolphinemu.utils.Log;
|
||||
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
public final class SettingsActivityPresenter
|
||||
{
|
||||
private static final String KEY_SHOULD_SAVE = "should_save";
|
||||
|
@ -29,8 +26,6 @@ public final class SettingsActivityPresenter
|
|||
private String gameId;
|
||||
private Context context;
|
||||
|
||||
private final Set<String> modifiedSettings = new HashSet<>();
|
||||
|
||||
SettingsActivityPresenter(SettingsActivityView view, Settings settings)
|
||||
{
|
||||
mView = view;
|
||||
|
@ -98,7 +93,7 @@ public final class SettingsActivityPresenter
|
|||
public void clearSettings()
|
||||
{
|
||||
mSettings.clearSettings();
|
||||
onSettingChanged(null);
|
||||
onSettingChanged();
|
||||
}
|
||||
|
||||
public void onStop(boolean finishing)
|
||||
|
@ -112,7 +107,7 @@ public final class SettingsActivityPresenter
|
|||
if (mSettings != null && finishing && mShouldSave)
|
||||
{
|
||||
Log.debug("[SettingsActivity] Settings activity stopping. Saving settings to INI...");
|
||||
mSettings.saveSettings(mView, context, modifiedSettings);
|
||||
mSettings.saveSettings(mView, context);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -127,13 +122,8 @@ public final class SettingsActivityPresenter
|
|||
return false;
|
||||
}
|
||||
|
||||
public void onSettingChanged(String key)
|
||||
public void onSettingChanged()
|
||||
{
|
||||
if (key != null)
|
||||
{
|
||||
modifiedSettings.add(key);
|
||||
}
|
||||
|
||||
mShouldSave = true;
|
||||
}
|
||||
|
||||
|
|
|
@ -53,10 +53,8 @@ public interface SettingsActivityView
|
|||
/**
|
||||
* Called by a containing Fragment to tell the Activity that a setting was changed;
|
||||
* unless this has been called, the Activity will not save to disk.
|
||||
*
|
||||
* @param key Key of the modified setting.
|
||||
*/
|
||||
void onSettingChanged(String key);
|
||||
void onSettingChanged();
|
||||
|
||||
/**
|
||||
* Called by a containing Fragment to tell the containing Activity that a GCPad's setting
|
||||
|
|
|
@ -13,6 +13,8 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.dialogs.MotionAlertDialog;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.LegacySetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Setting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.view.CheckBoxSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.view.FilePicker;
|
||||
|
@ -36,10 +38,8 @@ import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SettingViewHold
|
|||
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SingleChoiceViewHolder;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SliderViewHolder;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.viewholder.SubmenuViewHolder;
|
||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||
import org.dolphinemu.dolphinemu.ui.main.MainPresenter;
|
||||
import org.dolphinemu.dolphinemu.utils.FileBrowserHelper;
|
||||
import org.dolphinemu.dolphinemu.utils.IniFile;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.ArrayList;
|
||||
|
@ -164,7 +164,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
item.setChecked(getSettings(), checked);
|
||||
notifyItemChanged(position);
|
||||
|
||||
mView.onSettingChanged(item.getKey());
|
||||
mView.onSettingChanged();
|
||||
}
|
||||
|
||||
public void onSingleChoiceClick(SingleChoiceSetting item, int position)
|
||||
|
@ -265,7 +265,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
dialog.setOnDismissListener(dialog1 ->
|
||||
{
|
||||
notifyItemChanged(position);
|
||||
mView.onSettingChanged(item.getKey());
|
||||
mView.onSettingChanged();
|
||||
});
|
||||
dialog.setCanceledOnTouchOutside(false);
|
||||
dialog.show();
|
||||
|
@ -308,7 +308,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
FilePicker filePicker = (FilePicker) mClickedItem;
|
||||
|
||||
if (!filePicker.getSelectedValue(mView.getSettings()).equals(selectedFile))
|
||||
mView.onSettingChanged(filePicker.getKey());
|
||||
mView.onSettingChanged();
|
||||
|
||||
filePicker.setSelectedValue(mView.getSettings(), selectedFile);
|
||||
|
||||
|
@ -317,32 +317,29 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
|
||||
public void resetPaths()
|
||||
{
|
||||
IniFile.Section coreSection = mView.getSettings().getSection(SettingsFile.FILE_NAME_DOLPHIN,
|
||||
Settings.SECTION_INI_CORE);
|
||||
IniFile.Section generalSection = mView.getSettings().getSection(SettingsFile.FILE_NAME_DOLPHIN,
|
||||
Settings.SECTION_INI_GENERAL);
|
||||
Settings settings = mView.getSettings();
|
||||
|
||||
coreSection.delete(SettingsFile.KEY_DEFAULT_ISO);
|
||||
generalSection.delete(SettingsFile.KEY_NAND_ROOT_PATH);
|
||||
generalSection.delete(SettingsFile.KEY_DUMP_PATH);
|
||||
generalSection.delete(SettingsFile.KEY_LOAD_PATH);
|
||||
generalSection.delete(SettingsFile.KEY_RESOURCE_PACK_PATH);
|
||||
generalSection.delete(SettingsFile.KEY_WII_SD_CARD_PATH);
|
||||
Setting.MAIN_DEFAULT_ISO.delete(settings);
|
||||
Setting.MAIN_FS_PATH.delete(settings);
|
||||
Setting.MAIN_DUMP_PATH.delete(settings);
|
||||
Setting.MAIN_LOAD_PATH.delete(settings);
|
||||
Setting.MAIN_RESOURCEPACK_PATH.delete(settings);
|
||||
Setting.MAIN_SD_PATH.delete(settings);
|
||||
|
||||
mView.onSettingChanged(null);
|
||||
mView.onSettingChanged();
|
||||
}
|
||||
|
||||
public void setAllLogTypes(boolean value)
|
||||
{
|
||||
IniFile.Section section = mView.getSettings().getSection(SettingsFile.FILE_NAME_LOGGER,
|
||||
Settings.SECTION_LOGGER_LOGS);
|
||||
Settings settings = mView.getSettings();
|
||||
|
||||
for (Map.Entry<String, String> entry : SettingsFragmentPresenter.LOG_TYPE_NAMES.entrySet())
|
||||
{
|
||||
section.setBoolean(entry.getKey(), value);
|
||||
new LegacySetting(Settings.FILE_LOGGER, Settings.SECTION_LOGGER_LOGS, entry.getKey())
|
||||
.setBoolean(settings, value);
|
||||
}
|
||||
|
||||
mView.onSettingChanged(null);
|
||||
mView.onSettingChanged();
|
||||
}
|
||||
|
||||
private void handleMenuTag(MenuTag menuTag, int value)
|
||||
|
@ -375,7 +372,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
|
||||
int value = getValueForSingleChoiceSelection(scSetting, which);
|
||||
if (scSetting.getSelectedValue(getSettings()) != value)
|
||||
mView.onSettingChanged(mClickedItem.getKey());
|
||||
mView.onSettingChanged();
|
||||
|
||||
handleMenuTag(scSetting.getMenuTag(), value);
|
||||
|
||||
|
@ -390,7 +387,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
|
||||
int value = getValueForSingleChoiceDynamicDescriptionsSelection(scSetting, which);
|
||||
if (scSetting.getSelectedValue(getSettings()) != value)
|
||||
mView.onSettingChanged(mClickedItem.getKey());
|
||||
mView.onSettingChanged();
|
||||
|
||||
scSetting.setSelectedValue(getSettings(), value);
|
||||
|
||||
|
@ -401,7 +398,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
StringSingleChoiceSetting scSetting = (StringSingleChoiceSetting) mClickedItem;
|
||||
String value = scSetting.getValueAt(which);
|
||||
if (!scSetting.getSelectedValue(getSettings()).equals(value))
|
||||
mView.onSettingChanged(mClickedItem.getKey());
|
||||
mView.onSettingChanged();
|
||||
|
||||
handleMenuTag(scSetting.getMenuTag(), which);
|
||||
|
||||
|
@ -413,7 +410,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
{
|
||||
IntSliderSetting sliderSetting = (IntSliderSetting) mClickedItem;
|
||||
if (sliderSetting.getSelectedValue(getSettings()) != mSeekbarProgress)
|
||||
mView.onSettingChanged(mClickedItem.getKey());
|
||||
mView.onSettingChanged();
|
||||
|
||||
sliderSetting.setSelectedValue(getSettings(), mSeekbarProgress);
|
||||
|
||||
|
@ -423,7 +420,7 @@ public final class SettingsAdapter extends RecyclerView.Adapter<SettingViewHolde
|
|||
{
|
||||
FloatSliderSetting sliderSetting = (FloatSliderSetting) mClickedItem;
|
||||
if (sliderSetting.getSelectedValue(getSettings()) != mSeekbarProgress)
|
||||
mView.onSettingChanged(mClickedItem.getKey());
|
||||
mView.onSettingChanged();
|
||||
|
||||
sliderSetting.setSelectedValue(getSettings(), mSeekbarProgress);
|
||||
|
||||
|
|
|
@ -193,9 +193,9 @@ public final class SettingsFragment extends Fragment implements SettingsFragment
|
|||
}
|
||||
|
||||
@Override
|
||||
public void onSettingChanged(String key)
|
||||
public void onSettingChanged()
|
||||
{
|
||||
mActivity.onSettingChanged(key);
|
||||
mActivity.onSettingChanged();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -66,10 +66,8 @@ public interface SettingsFragmentView
|
|||
|
||||
/**
|
||||
* Have the fragment tell the containing Activity that a setting was modified.
|
||||
*
|
||||
* @param key Key of the modified setting, potentially null for multiple settings.
|
||||
*/
|
||||
void onSettingChanged(String key);
|
||||
void onSettingChanged();
|
||||
|
||||
/**
|
||||
* Have the fragment tell the containing Activity that a GCPad's setting was modified.
|
||||
|
|
|
@ -5,8 +5,8 @@ import android.widget.CheckBox;
|
|||
import android.widget.TextView;
|
||||
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.view.CheckBoxSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.view.LogCheckBoxSetting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.view.SettingsItem;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsAdapter;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsFragmentPresenter;
|
||||
|
@ -39,9 +39,10 @@ public final class CheckBoxSettingViewHolder extends SettingViewHolder
|
|||
mItem = (CheckBoxSetting) item;
|
||||
|
||||
// Special case for LogTypes retrieved via JNI since those aren't string references.
|
||||
if (item.getNameId() == 0 && item.getSection().equals(Settings.SECTION_LOGGER_LOGS))
|
||||
if (item.getNameId() == 0 && item instanceof LogCheckBoxSetting)
|
||||
{
|
||||
mTextSettingName.setText(SettingsFragmentPresenter.LOG_TYPE_NAMES.get(item.getKey()));
|
||||
String key = ((LogCheckBoxSetting) item).getKey();
|
||||
mTextSettingName.setText(SettingsFragmentPresenter.LOG_TYPE_NAMES.get(key));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -16,92 +16,6 @@ import java.io.File;
|
|||
*/
|
||||
public final class SettingsFile
|
||||
{
|
||||
public static final String FILE_NAME_DOLPHIN = "Dolphin";
|
||||
public static final String FILE_NAME_GFX = "GFX";
|
||||
public static final String FILE_NAME_LOGGER = "Logger";
|
||||
public static final String FILE_NAME_GCPAD = "GCPadNew";
|
||||
public static final String FILE_NAME_WIIMOTE = "WiimoteNew";
|
||||
|
||||
public static final String KEY_DSP_ENGINE = "DSPEngine";
|
||||
public static final String KEY_LAST_PLATFORM_TAB = "LastPlatformTab";
|
||||
|
||||
public static final String KEY_CPU_CORE = "CPUCore";
|
||||
public static final String KEY_DUAL_CORE = "CPUThread";
|
||||
public static final String KEY_OVERCLOCK_ENABLE = "OverclockEnable";
|
||||
public static final String KEY_OVERCLOCK_PERCENT = "Overclock";
|
||||
public static final String KEY_SPEED_LIMIT = "EmulationSpeed";
|
||||
public static final String KEY_VIDEO_BACKEND = "GFXBackend";
|
||||
|
||||
public static final String KEY_DSP_HLE = "DSPHLE";
|
||||
public static final String KEY_DSP_ENABLE_JIT = "EnableJIT";
|
||||
public static final String KEY_AUDIO_STRETCH = "AudioStretch";
|
||||
public static final String KEY_AUDIO_VOLUME = "Volume";
|
||||
|
||||
public static final String KEY_AUTO_DISC_CHANGE = "AutoDiscChange";
|
||||
public static final String KEY_GAME_CUBE_LANGUAGE = "SelectedLanguage";
|
||||
public static final String KEY_OVERRIDE_REGION_SETTINGS = "OverrideRegionSettings";
|
||||
public static final String KEY_SLOT_A_DEVICE = "SlotA";
|
||||
public static final String KEY_SLOT_B_DEVICE = "SlotB";
|
||||
public static final String KEY_ENABLE_SAVE_STATES = "EnableSaveStates";
|
||||
public static final String KEY_RECURSIVE_ISO_PATHS = "RecursiveISOPaths";
|
||||
public static final String KEY_DEFAULT_ISO = "DefaultISO";
|
||||
public static final String KEY_NAND_ROOT_PATH = "NANDRootPath";
|
||||
public static final String KEY_DUMP_PATH = "DumpPath";
|
||||
public static final String KEY_LOAD_PATH = "LoadPath";
|
||||
public static final String KEY_RESOURCE_PACK_PATH = "ResourcePackPath";
|
||||
public static final String KEY_WII_SD_CARD_PATH = "WiiSDCardPath";
|
||||
|
||||
public static final String KEY_ANALYTICS_ENABLED = "Enabled";
|
||||
public static final String KEY_ANALYTICS_PERMISSION_ASKED = "PermissionAsked";
|
||||
|
||||
public static final String KEY_USE_PANIC_HANDLERS = "UsePanicHandlers";
|
||||
public static final String KEY_OSD_MESSAGES = "OnScreenDisplayMessages";
|
||||
|
||||
public static final String KEY_SHOW_FPS = "ShowFPS";
|
||||
public static final String KEY_INTERNAL_RES = "InternalResolution";
|
||||
public static final String KEY_FSAA = "MSAA";
|
||||
public static final String KEY_ANISOTROPY = "MaxAnisotropy";
|
||||
public static final String KEY_POST_SHADER = "PostProcessingShader";
|
||||
public static final String KEY_SCALED_EFB = "EFBScaledCopy";
|
||||
public static final String KEY_PER_PIXEL = "EnablePixelLighting";
|
||||
public static final String KEY_FORCE_FILTERING = "ForceFiltering";
|
||||
public static final String KEY_DISABLE_FOG = "DisableFog";
|
||||
public static final String KEY_DISABLE_COPY_FILTER = "DisableCopyFilter";
|
||||
public static final String KEY_ARBITRARY_MIPMAP_DETECTION = "ArbitraryMipmapDetection";
|
||||
public static final String KEY_WIDE_SCREEN_HACK = "wideScreenHack";
|
||||
public static final String KEY_FORCE_24_BIT_COLOR = "ForceTrueColor";
|
||||
public static final String KEY_BACKEND_MULTITHREADING = "BackendMultithreading";
|
||||
|
||||
public static final String KEY_STEREO_MODE = "StereoMode";
|
||||
public static final String KEY_STEREO_DEPTH = "StereoDepth";
|
||||
public static final String KEY_STEREO_CONV = "StereoConvergencePercentage";
|
||||
public static final String KEY_STEREO_SWAP = "StereoSwapEyes";
|
||||
|
||||
public static final String KEY_SKIP_EFB = "EFBAccessEnable";
|
||||
public static final String KEY_IGNORE_FORMAT = "EFBEmulateFormatChanges";
|
||||
public static final String KEY_EFB_TEXTURE = "EFBToTextureEnable";
|
||||
public static final String KEY_DEFER_EFB_COPIES = "DeferEFBCopies";
|
||||
public static final String KEY_TEXCACHE_ACCURACY = "SafeTextureCacheColorSamples";
|
||||
public static final String KEY_GPU_TEXTURE_DECODING = "EnableGPUTextureDecoding";
|
||||
public static final String KEY_XFB_TEXTURE = "XFBToTextureEnable";
|
||||
public static final String KEY_IMMEDIATE_XFB = "ImmediateXFBEnable";
|
||||
public static final String KEY_SKIP_DUPLICATE_XFBS = "SkipDuplicateXFBs";
|
||||
public static final String KEY_FAST_DEPTH = "FastDepthCalc";
|
||||
public static final String KEY_ASPECT_RATIO = "AspectRatio";
|
||||
public static final String KEY_SHADER_COMPILATION_MODE = "ShaderCompilationMode";
|
||||
public static final String KEY_WAIT_FOR_SHADERS = "WaitForShadersBeforeStarting";
|
||||
|
||||
public static final String KEY_DEBUG_JITOFF = "JitOff";
|
||||
public static final String KEY_DEBUG_JITLOADSTOREOFF = "JitLoadStoreOff";
|
||||
public static final String KEY_DEBUG_JITLOADSTOREFLOATINGPOINTOFF = "JitLoadStoreFloatingOff";
|
||||
public static final String KEY_DEBUG_JITLOADSTOREPAIREDOFF = "JitLoadStorePairedOff";
|
||||
public static final String KEY_DEBUG_JITFLOATINGPOINTOFF = "JitFloatingPointOff";
|
||||
public static final String KEY_DEBUG_JITINTEGEROFF = "JitIntegerOff";
|
||||
public static final String KEY_DEBUG_JITPAIREDOFF = "JitPairedOff";
|
||||
public static final String KEY_DEBUG_JITSYSTEMREGISTEROFF = "JitSystemRegistersOff";
|
||||
public static final String KEY_DEBUG_JITBRANCHOFF = "JitBranchOff";
|
||||
public static final String KEY_DEBUG_JITREGISTERCACHEOFF = "JitRegisterCacheOff";
|
||||
|
||||
public static final String KEY_GCPAD_TYPE = "SIDevice";
|
||||
public static final String KEY_GCPAD_PLAYER_1 = "SIDevice0";
|
||||
public static final String KEY_GCPAD_G_TYPE = "PadType";
|
||||
|
@ -264,14 +178,6 @@ public final class SettingsFile
|
|||
public static final String KEY_WIIBIND_TURNTABLE_CROSSFADE_LEFT = "TurntableCrossLeft_";
|
||||
public static final String KEY_WIIBIND_TURNTABLE_CROSSFADE_RIGHT = "TurntableCrossRight_";
|
||||
|
||||
public static final String KEY_WII_SD_CARD = "WiiSDCard";
|
||||
public static final String KEY_WII_SD_CARD_ALLOW_WRITES = "WiiSDCardAllowWrites";
|
||||
public static final String KEY_WIIMOTE_SCAN = "WiimoteContinuousScanning";
|
||||
public static final String KEY_WIIMOTE_SPEAKER = "WiimoteEnableSpeaker";
|
||||
|
||||
public static final String KEY_ENABLE_LOGGING = "WriteToFile";
|
||||
public static final String KEY_LOG_VERBOSITY = "Verbosity";
|
||||
|
||||
private static BiMap<String, String> sectionsMap = new BiMap<>();
|
||||
|
||||
static
|
||||
|
@ -310,7 +216,7 @@ public final class SettingsFile
|
|||
{
|
||||
readFile(getSettingsFile(fileName), ini, view);
|
||||
|
||||
if (fileName.equals(SettingsFile.FILE_NAME_DOLPHIN))
|
||||
if (fileName.equals(Settings.FILE_DOLPHIN))
|
||||
{
|
||||
addGcPadSettingsIfTheyDontExist(ini);
|
||||
}
|
||||
|
@ -505,15 +411,4 @@ public final class SettingsFile
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
public static void firstAnalyticsAdd(boolean enabled)
|
||||
{
|
||||
IniFile dolphinIni = new IniFile();
|
||||
readFile(SettingsFile.FILE_NAME_DOLPHIN, dolphinIni, null);
|
||||
|
||||
dolphinIni.setBoolean(Settings.SECTION_ANALYTICS, KEY_ANALYTICS_ENABLED, enabled);
|
||||
dolphinIni.setBoolean(Settings.SECTION_ANALYTICS, KEY_ANALYTICS_PERMISSION_ASKED, true);
|
||||
|
||||
saveFile(SettingsFile.FILE_NAME_DOLPHIN, dolphinIni, null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -16,8 +16,8 @@ import androidx.fragment.app.Fragment;
|
|||
import org.dolphinemu.dolphinemu.NativeLibrary;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Setting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||
|
||||
public final class MenuFragment extends Fragment implements View.OnClickListener
|
||||
{
|
||||
|
@ -83,11 +83,8 @@ public final class MenuFragment extends Fragment implements View.OnClickListener
|
|||
|
||||
updatePauseUnpauseVisibility();
|
||||
|
||||
boolean enableSaveStates = ((EmulationActivity) getActivity()).getSettings()
|
||||
.getSection(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_INI_CORE)
|
||||
.getBoolean(SettingsFile.KEY_ENABLE_SAVE_STATES, false);
|
||||
|
||||
if (enableSaveStates)
|
||||
Settings settings = ((EmulationActivity) getActivity()).getSettings();
|
||||
if (Setting.MAIN_ENABLE_SAVESTATES.getBoolean(settings, false))
|
||||
{
|
||||
options.findViewById(R.id.menu_quicksave).setVisibility(View.VISIBLE);
|
||||
options.findViewById(R.id.menu_quickload).setVisibility(View.VISIBLE);
|
||||
|
|
|
@ -4,9 +4,8 @@ import android.content.Context;
|
|||
import android.content.SharedPreferences;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Setting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||
import org.dolphinemu.dolphinemu.utils.IniFile;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.HashSet;
|
||||
|
@ -82,10 +81,9 @@ public class GameFileCache
|
|||
*/
|
||||
public boolean scanLibrary(Context context)
|
||||
{
|
||||
IniFile dolphinIni =
|
||||
new IniFile(SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_DOLPHIN));
|
||||
boolean recursiveScan = dolphinIni.getBoolean(Settings.SECTION_INI_GENERAL,
|
||||
SettingsFile.KEY_RECURSIVE_ISO_PATHS, false);
|
||||
Settings settings = new Settings();
|
||||
settings.loadSettings(null);
|
||||
boolean recursiveScan = Setting.MAIN_RECURSIVE_ISO_PATHS.getBoolean(settings, false);
|
||||
|
||||
removeNonExistentGameFolders(context);
|
||||
|
||||
|
|
|
@ -706,8 +706,7 @@ public final class InputOverlay extends SurfaceView implements OnTouchListener
|
|||
// Add all the enabled overlay items back to the HashSet.
|
||||
if (EmulationActivity.isGameCubeGame())
|
||||
{
|
||||
IniFile dolphinIni =
|
||||
new IniFile(SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_DOLPHIN));
|
||||
IniFile dolphinIni = new IniFile(SettingsFile.getSettingsFile(Settings.FILE_DOLPHIN));
|
||||
|
||||
switch (dolphinIni.getInt(Settings.SECTION_INI_CORE, SettingsFile.KEY_GCPAD_PLAYER_1,
|
||||
EMULATED_GAMECUBE_CONTROLLER))
|
||||
|
|
|
@ -20,22 +20,19 @@ import com.google.android.material.tabs.TabLayout;
|
|||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.activities.EmulationActivity;
|
||||
import org.dolphinemu.dolphinemu.adapters.PlatformPagerAdapter;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Setting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.MenuTag;
|
||||
import org.dolphinemu.dolphinemu.features.settings.ui.SettingsActivity;
|
||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||
import org.dolphinemu.dolphinemu.services.GameFileCacheService;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.Platform;
|
||||
import org.dolphinemu.dolphinemu.ui.platform.PlatformGamesView;
|
||||
import org.dolphinemu.dolphinemu.utils.AfterDirectoryInitializationRunner;
|
||||
import org.dolphinemu.dolphinemu.utils.DirectoryInitialization;
|
||||
import org.dolphinemu.dolphinemu.utils.FileBrowserHelper;
|
||||
import org.dolphinemu.dolphinemu.utils.IniFile;
|
||||
import org.dolphinemu.dolphinemu.utils.PermissionsHandler;
|
||||
import org.dolphinemu.dolphinemu.utils.StartupHandler;
|
||||
|
||||
import java.io.File;
|
||||
|
||||
/**
|
||||
* The main Activity of the Lollipop style UI. Manages several PlatformGamesFragments, which
|
||||
* individually display a grid of available games for each Fragment, in a tabbed layout.
|
||||
|
@ -273,18 +270,19 @@ public final class MainActivity extends AppCompatActivity implements MainView
|
|||
{
|
||||
super.onTabSelected(tab);
|
||||
|
||||
File dolphinFile = SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_DOLPHIN);
|
||||
IniFile dolphinIni = new IniFile(dolphinFile);
|
||||
dolphinIni.setInt(Settings.SECTION_INI_ANDROID, SettingsFile.KEY_LAST_PLATFORM_TAB,
|
||||
tab.getPosition());
|
||||
dolphinIni.save(dolphinFile);
|
||||
Settings settings = new Settings();
|
||||
settings.loadSettings(null);
|
||||
|
||||
Setting.MAIN_LAST_PLATFORM_TAB.setInt(settings, tab.getPosition());
|
||||
|
||||
// Context is set to null to avoid toasts
|
||||
settings.saveSettings(null, null);
|
||||
}
|
||||
});
|
||||
|
||||
IniFile dolphinIni =
|
||||
new IniFile(SettingsFile.getSettingsFile(SettingsFile.FILE_NAME_DOLPHIN));
|
||||
mViewPager.setCurrentItem(dolphinIni.getInt(Settings.SECTION_INI_ANDROID,
|
||||
SettingsFile.KEY_LAST_PLATFORM_TAB, 0));
|
||||
Settings settings = new Settings();
|
||||
settings.loadSettings(null);
|
||||
mViewPager.setCurrentItem(Setting.MAIN_LAST_PLATFORM_TAB.getInt(settings, 0));
|
||||
|
||||
showGames();
|
||||
GameFileCacheService.startLoad(this);
|
||||
|
|
|
@ -1,9 +1,7 @@
|
|||
package org.dolphinemu.dolphinemu.utils;
|
||||
|
||||
import android.content.Context;
|
||||
import android.content.SharedPreferences;
|
||||
import android.os.Build;
|
||||
import android.preference.PreferenceManager;
|
||||
|
||||
import androidx.appcompat.app.AlertDialog;
|
||||
|
||||
|
@ -12,16 +10,11 @@ import com.android.volley.toolbox.StringRequest;
|
|||
|
||||
import org.dolphinemu.dolphinemu.DolphinApplication;
|
||||
import org.dolphinemu.dolphinemu.R;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Setting;
|
||||
import org.dolphinemu.dolphinemu.features.settings.model.Settings;
|
||||
import org.dolphinemu.dolphinemu.features.settings.utils.SettingsFile;
|
||||
|
||||
public class Analytics
|
||||
{
|
||||
private static final String analyticsAsked =
|
||||
Settings.SECTION_ANALYTICS + "_" + SettingsFile.KEY_ANALYTICS_PERMISSION_ASKED;
|
||||
private static final String analyticsEnabled =
|
||||
Settings.SECTION_ANALYTICS + "_" + SettingsFile.KEY_ANALYTICS_ENABLED;
|
||||
|
||||
private static final String DEVICE_MANUFACTURER = "DEVICE_MANUFACTURER";
|
||||
private static final String DEVICE_OS = "DEVICE_OS";
|
||||
private static final String DEVICE_MODEL = "DEVICE_MODEL";
|
||||
|
@ -29,39 +22,42 @@ public class Analytics
|
|||
|
||||
public static void checkAnalyticsInit(Context context)
|
||||
{
|
||||
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
|
||||
if (!preferences.getBoolean(analyticsAsked, false))
|
||||
new AfterDirectoryInitializationRunner().run(context, false, () ->
|
||||
{
|
||||
new AfterDirectoryInitializationRunner().run(context, false,
|
||||
() -> showMessage(context, preferences));
|
||||
}
|
||||
Settings settings = new Settings();
|
||||
settings.loadSettings(null);
|
||||
if (!Setting.MAIN_ANALYTICS_PERMISSION_ASKED.getBoolean(settings, false))
|
||||
{
|
||||
showMessage(context, settings);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static void showMessage(Context context, SharedPreferences preferences)
|
||||
private static void showMessage(Context context, Settings settings)
|
||||
{
|
||||
// We asked, set to true regardless of answer
|
||||
SharedPreferences.Editor sPrefsEditor = preferences.edit();
|
||||
sPrefsEditor.putBoolean(analyticsAsked, true);
|
||||
sPrefsEditor.apply();
|
||||
|
||||
new AlertDialog.Builder(context, R.style.DolphinDialogBase)
|
||||
.setTitle(context.getString(R.string.analytics))
|
||||
.setMessage(context.getString(R.string.analytics_desc))
|
||||
.setPositiveButton(R.string.yes, (dialogInterface, i) ->
|
||||
{
|
||||
sPrefsEditor.putBoolean(analyticsEnabled, true);
|
||||
sPrefsEditor.apply();
|
||||
SettingsFile.firstAnalyticsAdd(true);
|
||||
firstAnalyticsAdd(settings, true);
|
||||
})
|
||||
.setNegativeButton(R.string.no, (dialogInterface, i) ->
|
||||
{
|
||||
sPrefsEditor.putBoolean(analyticsEnabled, false);
|
||||
sPrefsEditor.apply();
|
||||
SettingsFile.firstAnalyticsAdd(false);
|
||||
firstAnalyticsAdd(settings, false);
|
||||
})
|
||||
.show();
|
||||
}
|
||||
|
||||
private static void firstAnalyticsAdd(Settings settings, boolean enabled)
|
||||
{
|
||||
Setting.MAIN_ANALYTICS_ENABLED.setBoolean(settings, enabled);
|
||||
Setting.MAIN_ANALYTICS_PERMISSION_ASKED.setBoolean(settings, true);
|
||||
|
||||
// Context is set to null to avoid toasts
|
||||
settings.saveSettings(null, null);
|
||||
}
|
||||
|
||||
public static void sendReport(String endpoint, byte[] data)
|
||||
{
|
||||
StringRequest request = new StringRequest(Request.Method.POST, endpoint,
|
||||
|
|
|
@ -29,7 +29,7 @@ public class Rumble
|
|||
for (int i = 0; i < 8; i++)
|
||||
{
|
||||
String deviceName = activity.getSettings()
|
||||
.getSection(SettingsFile.FILE_NAME_DOLPHIN, Settings.SECTION_BINDINGS)
|
||||
.getSection(Settings.FILE_DOLPHIN, Settings.SECTION_BINDINGS)
|
||||
.getString(SettingsFile.KEY_EMU_RUMBLE + i, "");
|
||||
|
||||
if (!deviceName.isEmpty())
|
||||
|
|
|
@ -287,7 +287,7 @@
|
|||
<string name="debug_jitfloatingpointoff">Jit Floating Point Disabled</string>
|
||||
<string name="debug_jitintegeroff">Jit Integer Disabled</string>
|
||||
<string name="debug_jitpairedoff">Jit Paired Disabled</string>
|
||||
<string name="debug_jitsystemregistersoffr">Jit System Registers Disabled</string>
|
||||
<string name="debug_jitsystemregistersoff">Jit System Registers Disabled</string>
|
||||
<string name="debug_jitbranchoff">Jit Branch Disabled</string>
|
||||
<string name="debug_jitregistercacheoff">Jit Register Cache Disabled</string>
|
||||
|
||||
|
|
Loading…
Reference in New Issue