From bbdee22ea8842e401ea9199d02662c6716919eae Mon Sep 17 00:00:00 2001 From: Connor McLaughlin Date: Fri, 28 Feb 2020 17:00:14 +1000 Subject: [PATCH] SDL: Move SDLSettingsInterface (ini) to frontend-common --- src/duckstation-sdl/CMakeLists.txt | 4 +-- src/duckstation-sdl/duckstation-sdl.vcxproj | 2 -- .../duckstation-sdl.vcxproj.filters | 2 -- src/duckstation-sdl/sdl_host_interface.cpp | 6 ++-- src/frontend-common/CMakeLists.txt | 4 ++- src/frontend-common/frontend-common.vcxproj | 27 +++++++++----- .../frontend-common.vcxproj.filters | 2 ++ .../ini_settings_interface.cpp} | 36 +++++++++---------- .../ini_settings_interface.h} | 6 ++-- 9 files changed, 49 insertions(+), 40 deletions(-) rename src/{duckstation-sdl/sdl_settings_interface.cpp => frontend-common/ini_settings_interface.cpp} (72%) rename src/{duckstation-sdl/sdl_settings_interface.h => frontend-common/ini_settings_interface.h} (91%) diff --git a/src/duckstation-sdl/CMakeLists.txt b/src/duckstation-sdl/CMakeLists.txt index 8f9caf7c9..cc101b8d9 100644 --- a/src/duckstation-sdl/CMakeLists.txt +++ b/src/duckstation-sdl/CMakeLists.txt @@ -6,12 +6,10 @@ add_executable(duckstation-sdl opengl_host_display.h sdl_host_interface.cpp sdl_host_interface.h - sdl_settings_interface.cpp - sdl_settings_interface.h ) target_include_directories(duckstation-sdl PRIVATE ${SDL2_INCLUDE_DIRS}) -target_link_libraries(duckstation-sdl PRIVATE core common imgui nativefiledialog glad simpleini frontend-common ${SDL2_LIBRARIES}) +target_link_libraries(duckstation-sdl PRIVATE core common imgui nativefiledialog glad frontend-common ${SDL2_LIBRARIES}) if(WIN32) target_sources(duckstation-sdl PRIVATE diff --git a/src/duckstation-sdl/duckstation-sdl.vcxproj b/src/duckstation-sdl/duckstation-sdl.vcxproj index 8048f331a..4d8c25285 100644 --- a/src/duckstation-sdl/duckstation-sdl.vcxproj +++ b/src/duckstation-sdl/duckstation-sdl.vcxproj @@ -57,14 +57,12 @@ - - diff --git a/src/duckstation-sdl/duckstation-sdl.vcxproj.filters b/src/duckstation-sdl/duckstation-sdl.vcxproj.filters index 7c6071779..7f3f2db71 100644 --- a/src/duckstation-sdl/duckstation-sdl.vcxproj.filters +++ b/src/duckstation-sdl/duckstation-sdl.vcxproj.filters @@ -5,14 +5,12 @@ - - diff --git a/src/duckstation-sdl/sdl_host_interface.cpp b/src/duckstation-sdl/sdl_host_interface.cpp index 82d2cb376..fa2fc9fb4 100644 --- a/src/duckstation-sdl/sdl_host_interface.cpp +++ b/src/duckstation-sdl/sdl_host_interface.cpp @@ -9,11 +9,11 @@ #include "core/system.h" #include "frontend-common/icon.h" #include "frontend-common/imgui_styles.h" +#include "frontend-common/ini_settings_interface.h" #include "frontend-common/sdl_audio_stream.h" #include "frontend-common/sdl_controller_interface.h" #include "imgui_impl_sdl.h" #include "opengl_host_display.h" -#include "sdl_settings_interface.h" #include #include #include @@ -268,7 +268,7 @@ void SDLHostInterface::RunLater(std::function callback) void SDLHostInterface::SaveSettings() { - SDLSettingsInterface si(GetSettingsFileName().c_str()); + INISettingsInterface si(GetSettingsFileName().c_str()); m_settings_copy.Save(si); } @@ -296,7 +296,7 @@ std::unique_ptr SDLHostInterface::Create() std::unique_ptr intf = std::make_unique(); // Settings need to be loaded prior to creating the window for OpenGL bits. - SDLSettingsInterface si(intf->GetSettingsFileName().c_str()); + INISettingsInterface si(intf->GetSettingsFileName().c_str()); intf->m_settings_copy.Load(si); intf->m_settings = intf->m_settings_copy; intf->m_fullscreen = intf->m_settings_copy.display_fullscreen; diff --git a/src/frontend-common/CMakeLists.txt b/src/frontend-common/CMakeLists.txt index 6ad3eb2fb..a66952745 100644 --- a/src/frontend-common/CMakeLists.txt +++ b/src/frontend-common/CMakeLists.txt @@ -5,6 +5,8 @@ add_library(frontend-common icon.h imgui_styles.cpp imgui_styles.h + ini_settings_interface.cpp + ini_settings_interface.h ) if(SDL2_FOUND) @@ -21,5 +23,5 @@ if(SDL2_FOUND) target_link_libraries(frontend-common PRIVATE ${SDL2_LIBRARIES}) endif() -target_link_libraries(frontend-common PRIVATE core common imgui) +target_link_libraries(frontend-common PRIVATE core common imgui simpleini) diff --git a/src/frontend-common/frontend-common.vcxproj b/src/frontend-common/frontend-common.vcxproj index c8adcaf33..60d2b0caf 100644 --- a/src/frontend-common/frontend-common.vcxproj +++ b/src/frontend-common/frontend-common.vcxproj @@ -44,11 +44,21 @@ {6a4208ed-e3dc-41e1-81cd-f61025fc285a} + + {3773f4cc-614e-4028-8595-22e08ca649e3} + + + {ee054e08-3799-4a59-a422-18259c105ffd} + + + {868b98c8-65a1-494b-8346-250a73a48c0a} + + @@ -57,6 +67,7 @@ + @@ -205,7 +216,7 @@ WITH_SDL2=1;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) true ProgramDatabase - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) true stdcpp17 true @@ -232,7 +243,7 @@ WITH_SDL2=1;_ITERATOR_DEBUG_LEVEL=1;WIN32;_DEBUGFAST;_DEBUG;_LIB;%(PreprocessorDefinitions) true ProgramDatabase - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) Default false true @@ -262,7 +273,7 @@ WITH_SDL2=1;WIN32;_DEBUG;_LIB;%(PreprocessorDefinitions) true ProgramDatabase - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) true stdcpp17 true @@ -289,7 +300,7 @@ WITH_SDL2=1;_ITERATOR_DEBUG_LEVEL=1;WIN32;_DEBUGFAST;_DEBUG;_LIB;%(PreprocessorDefinitions) true ProgramDatabase - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) Default false true @@ -320,7 +331,7 @@ true WITH_SDL2=1;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) true - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) true stdcpp17 false @@ -349,7 +360,7 @@ true WITH_SDL2=1;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) true - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) true true stdcpp17 @@ -380,7 +391,7 @@ true WITH_SDL2=1;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) true - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) true stdcpp17 false @@ -409,7 +420,7 @@ true WITH_SDL2=1;WIN32;NDEBUG;_LIB;%(PreprocessorDefinitions) true - $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\glad\include;$(SolutionDir)dep\imgui\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) + $(SolutionDir)dep\msvc\include\SDL;$(SolutionDir)dep\imgui\include;$(SolutionDir)dep\simpleini\include;$(SolutionDir)src;%(AdditionalIncludeDirectories) true true stdcpp17 diff --git a/src/frontend-common/frontend-common.vcxproj.filters b/src/frontend-common/frontend-common.vcxproj.filters index 1ed7f95cf..4d94c6622 100644 --- a/src/frontend-common/frontend-common.vcxproj.filters +++ b/src/frontend-common/frontend-common.vcxproj.filters @@ -7,6 +7,7 @@ + @@ -15,6 +16,7 @@ + diff --git a/src/duckstation-sdl/sdl_settings_interface.cpp b/src/frontend-common/ini_settings_interface.cpp similarity index 72% rename from src/duckstation-sdl/sdl_settings_interface.cpp rename to src/frontend-common/ini_settings_interface.cpp index 11841a275..0ca5488cf 100644 --- a/src/duckstation-sdl/sdl_settings_interface.cpp +++ b/src/frontend-common/ini_settings_interface.cpp @@ -1,16 +1,16 @@ -#include "sdl_settings_interface.h" +#include "ini_settings_interface.h" #include "common/log.h" #include -Log_SetChannel(SDLSettingsInterface); +Log_SetChannel(INISettingsInterface); -SDLSettingsInterface::SDLSettingsInterface(const char* filename) : m_filename(filename), m_ini(true, true) +INISettingsInterface::INISettingsInterface(const char* filename) : m_filename(filename), m_ini(true, true) { SI_Error err = m_ini.LoadFile(filename); if (err != SI_OK) Log_WarningPrintf("Settings could not be loaded from '%s', defaults will be used.", filename); } -SDLSettingsInterface::~SDLSettingsInterface() +INISettingsInterface::~INISettingsInterface() { if (m_dirty) { @@ -20,63 +20,63 @@ SDLSettingsInterface::~SDLSettingsInterface() } } -void SDLSettingsInterface::Clear() +void INISettingsInterface::Clear() { m_ini.Reset(); } -int SDLSettingsInterface::GetIntValue(const char* section, const char* key, int default_value /*= 0*/) +int INISettingsInterface::GetIntValue(const char* section, const char* key, int default_value /*= 0*/) { return static_cast(m_ini.GetLongValue(section, key, default_value)); } -float SDLSettingsInterface::GetFloatValue(const char* section, const char* key, float default_value /*= 0.0f*/) +float INISettingsInterface::GetFloatValue(const char* section, const char* key, float default_value /*= 0.0f*/) { return static_cast(m_ini.GetDoubleValue(section, key, default_value)); } -bool SDLSettingsInterface::GetBoolValue(const char* section, const char* key, bool default_value /*= false*/) +bool INISettingsInterface::GetBoolValue(const char* section, const char* key, bool default_value /*= false*/) { return m_ini.GetBoolValue(section, key, default_value); } -std::string SDLSettingsInterface::GetStringValue(const char* section, const char* key, +std::string INISettingsInterface::GetStringValue(const char* section, const char* key, const char* default_value /*= ""*/) { return m_ini.GetValue(section, key, default_value); } -void SDLSettingsInterface::SetIntValue(const char* section, const char* key, int value) +void INISettingsInterface::SetIntValue(const char* section, const char* key, int value) { m_dirty = true; m_ini.SetLongValue(section, key, static_cast(value), nullptr, false, true); } -void SDLSettingsInterface::SetFloatValue(const char* section, const char* key, float value) +void INISettingsInterface::SetFloatValue(const char* section, const char* key, float value) { m_dirty = true; m_ini.SetDoubleValue(section, key, static_cast(value), nullptr, true); } -void SDLSettingsInterface::SetBoolValue(const char* section, const char* key, bool value) +void INISettingsInterface::SetBoolValue(const char* section, const char* key, bool value) { m_dirty = true; m_ini.SetBoolValue(section, key, value, nullptr, true); } -void SDLSettingsInterface::SetStringValue(const char* section, const char* key, const char* value) +void INISettingsInterface::SetStringValue(const char* section, const char* key, const char* value) { m_dirty = true; m_ini.SetValue(section, key, value, nullptr, true); } -void SDLSettingsInterface::DeleteValue(const char* section, const char* key) +void INISettingsInterface::DeleteValue(const char* section, const char* key) { m_dirty = true; m_ini.Delete(section, key); } -std::vector SDLSettingsInterface::GetStringList(const char* section, const char* key) +std::vector INISettingsInterface::GetStringList(const char* section, const char* key) { std::list entries; if (!m_ini.GetAllValues(section, key, entries)) @@ -89,7 +89,7 @@ std::vector SDLSettingsInterface::GetStringList(const char* section return ret; } -void SDLSettingsInterface::SetStringList(const char* section, const char* key, +void INISettingsInterface::SetStringList(const char* section, const char* key, const std::vector& items) { m_dirty = true; @@ -99,13 +99,13 @@ void SDLSettingsInterface::SetStringList(const char* section, const char* key, m_ini.SetValue(section, key, std::string(sv).c_str(), nullptr, false); } -bool SDLSettingsInterface::RemoveFromStringList(const char* section, const char* key, const char* item) +bool INISettingsInterface::RemoveFromStringList(const char* section, const char* key, const char* item) { m_dirty = true; return m_ini.DeleteValue(section, key, item, true); } -bool SDLSettingsInterface::AddToStringList(const char* section, const char* key, const char* item) +bool INISettingsInterface::AddToStringList(const char* section, const char* key, const char* item) { std::list entries; if (m_ini.GetAllValues(section, key, entries) && diff --git a/src/duckstation-sdl/sdl_settings_interface.h b/src/frontend-common/ini_settings_interface.h similarity index 91% rename from src/duckstation-sdl/sdl_settings_interface.h rename to src/frontend-common/ini_settings_interface.h index d0c7d684c..b9d8c4c81 100644 --- a/src/duckstation-sdl/sdl_settings_interface.h +++ b/src/frontend-common/ini_settings_interface.h @@ -3,11 +3,11 @@ #include "SimpleIni.h" -class SDLSettingsInterface : public SettingsInterface +class INISettingsInterface : public SettingsInterface { public: - SDLSettingsInterface(const char* filename); - ~SDLSettingsInterface(); + INISettingsInterface(const char* filename); + ~INISettingsInterface(); void Clear() override;