Qt: use persistent_settings for playtimes

This commit is contained in:
Megamouse 2020-01-12 22:17:01 +01:00
parent e2512e78b6
commit 449cbb7281
16 changed files with 436 additions and 193 deletions

View file

@ -745,7 +745,7 @@ namespace rsx
void run_FIFO(); void run_FIFO();
public: public:
virtual void clear_surface(u32 arg) {}; virtual void clear_surface(u32 /*arg*/) {};
virtual void begin(); virtual void begin();
virtual void end(); virtual void end();
virtual void execute_nop_draw(); virtual void execute_nop_draw();

View file

@ -472,6 +472,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_persistent_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_pkg_install_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_pkg_install_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@ -502,6 +507,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_settings_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_settings_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@ -672,6 +682,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_persistent_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_pkg_install_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Debug\moc_pkg_install_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@ -702,6 +717,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_settings_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Debug\moc_settings_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@ -892,6 +912,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_persistent_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_pkg_install_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_pkg_install_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@ -922,6 +947,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_settings_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_settings_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
@ -1092,6 +1122,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_persistent_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_pkg_install_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Release\moc_pkg_install_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@ -1122,6 +1157,11 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile> </ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_settings.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_settings_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Release\moc_settings_dialog.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild> <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
@ -1172,6 +1212,8 @@
<ClCompile Include="rpcs3qt\input_dialog.cpp" /> <ClCompile Include="rpcs3qt\input_dialog.cpp" />
<ClCompile Include="rpcs3qt\osk_dialog_frame.cpp" /> <ClCompile Include="rpcs3qt\osk_dialog_frame.cpp" />
<ClCompile Include="rpcs3qt\pkg_install_dialog.cpp" /> <ClCompile Include="rpcs3qt\pkg_install_dialog.cpp" />
<ClCompile Include="rpcs3qt\persistent_settings.cpp" />
<ClCompile Include="rpcs3qt\settings.cpp" />
<ClCompile Include="rpcs3qt\skylander_dialog.cpp" /> <ClCompile Include="rpcs3qt\skylander_dialog.cpp" />
<ClCompile Include="rpcs3qt\update_manager.cpp" /> <ClCompile Include="rpcs3qt\update_manager.cpp" />
<ClCompile Include="rpcs3qt\_discord_utils.cpp" /> <ClCompile Include="rpcs3qt\_discord_utils.cpp" />
@ -1751,6 +1793,42 @@
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs> <Outputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent" "-IC:\Program Files (x86)\Visual Leak Detector\include"</Command> <Command Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent" "-IC:\Program Files (x86)\Visual Leak Detector\include"</Command>
</CustomBuild> </CustomBuild>
<CustomBuild Include="rpcs3qt\settings.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB "-DBRANCH=$(BRANCH)" -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
</CustomBuild>
<CustomBuild Include="rpcs3qt\persistent_settings.h">
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB "-DBRANCH=$(BRANCH)" -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DWITH_DISCORD_RPC -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\release" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath)</AdditionalInputs>
<Message Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">Moc%27ing %(Identity)...</Message>
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">.\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp</Outputs>
<Command Condition="'$(Configuration)|$(Platform)'=='Debug - LLVM|x64'">"$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DQT_CONCURRENT_LIB -D%(PreprocessorDefinitions) "-I.\..\3rdparty\libusb\libusb" "-I$(VULKAN_SDK)\Include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtANGLE" "-I$(QTDIR)\include\QtQml" "-I$(QTDIR)\include\QtNetwork" "-I$(QTDIR)\include\QtCore" "-I.\debug" "-I$(QTDIR)\mkspecs\win32-msvc2015" "-I.\QTGeneratedFiles\$(ConfigurationName)" "-I.\QTGeneratedFiles" "-I$(QTDIR)\include\QtWinExtras" "-I$(QTDIR)\include\QtConcurrent"</Command>
</CustomBuild>
<ClInclude Include="rpcs3qt\stylesheets.h" /> <ClInclude Include="rpcs3qt\stylesheets.h" />
<ClInclude Include="rpcs3qt\skylander_dialog.h" /> <ClInclude Include="rpcs3qt\skylander_dialog.h" />
<CustomBuild Include="rpcs3qt\update_manager.h"> <CustomBuild Include="rpcs3qt\update_manager.h">

View file

@ -656,9 +656,6 @@
<ClCompile Include="rpcs3qt\_discord_utils.cpp"> <ClCompile Include="rpcs3qt\_discord_utils.cpp">
<Filter>Gui\utils</Filter> <Filter>Gui\utils</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Input/keyboard_pad_handler.cpp">
<Filter>Io\Keyboard</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_trophy_manager_dialog.cpp"> <ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_trophy_manager_dialog.cpp">
<Filter>Generated Files\Release - LLVM</Filter> <Filter>Generated Files\Release - LLVM</Filter>
</ClCompile> </ClCompile>
@ -716,9 +713,6 @@
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_osk_dialog_frame.cpp"> <ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_osk_dialog_frame.cpp">
<Filter>Generated Files\Debug - LLVM</Filter> <Filter>Generated Files\Debug - LLVM</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Input/ds3_pad_handler.cpp">
<Filter>Io\DS3</Filter>
</ClCompile>
<ClCompile Include="rpcs3qt\gui_application.cpp"> <ClCompile Include="rpcs3qt\gui_application.cpp">
<Filter>Gui</Filter> <Filter>Gui</Filter>
</ClCompile> </ClCompile>
@ -803,6 +797,54 @@
<ClCompile Include="rpcs3qt\pkg_install_dialog.cpp"> <ClCompile Include="rpcs3qt\pkg_install_dialog.cpp">
<Filter>Gui\misc dialogs</Filter> <Filter>Gui\misc dialogs</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="Input\ds3_pad_handler.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="Input\keyboard_pad_handler.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="rpcs3qt\settings.cpp">
<Filter>Gui\settings</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_settings.cpp">
<Filter>Generated Files\Release - LLVM</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_settings.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_settings.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_settings.cpp">
<Filter>Generated Files\Debug - LLVM</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_playtime_settings.cpp">
<Filter>Generated Files\Release - LLVM</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_playtime_settings.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_playtime_settings.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_playtime_settings.cpp">
<Filter>Generated Files\Debug - LLVM</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release - LLVM\moc_persistent_settings.cpp">
<Filter>Generated Files\Release - LLVM</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug\moc_persistent_settings.cpp">
<Filter>Generated Files\Debug</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Release\moc_persistent_settings.cpp">
<Filter>Generated Files\Release</Filter>
</ClCompile>
<ClCompile Include="QTGeneratedFiles\Debug - LLVM\moc_persistent_settings.cpp">
<Filter>Generated Files\Debug - LLVM</Filter>
</ClCompile>
<ClCompile Include="rpcs3qt\persistent_settings.cpp">
<Filter>Gui\settings</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClInclude Include="\rpcs3qt\*.h"> <ClInclude Include="\rpcs3qt\*.h">
@ -811,9 +853,6 @@
<ClInclude Include="Input\ds4_pad_handler.h"> <ClInclude Include="Input\ds4_pad_handler.h">
<Filter>Io\DS4</Filter> <Filter>Io\DS4</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Input\mm_joystick_handler.h">
<Filter>Io\MMJoystick</Filter>
</ClInclude>
<ClInclude Include="Input\xinput_pad_handler.h"> <ClInclude Include="Input\xinput_pad_handler.h">
<Filter>Io\XInput</Filter> <Filter>Io\XInput</Filter>
</ClInclude> </ClInclude>
@ -883,12 +922,6 @@
<ClInclude Include="rpcs3qt\_discord_utils.h"> <ClInclude Include="rpcs3qt\_discord_utils.h">
<Filter>Gui\utils</Filter> <Filter>Gui\utils</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Input/keyboard_pad_handler.h">
<Filter>Io\Keyboard</Filter>
</ClInclude>
<ClInclude Include="Input/ds3_pad_handler.h">
<Filter>Io\DS3</Filter>
</ClInclude>
<ClInclude Include="rpcs3qt\stylesheets.h"> <ClInclude Include="rpcs3qt\stylesheets.h">
<Filter>Gui</Filter> <Filter>Gui</Filter>
</ClInclude> </ClInclude>
@ -898,6 +931,15 @@
<ClInclude Include="display_sleep_control.h"> <ClInclude Include="display_sleep_control.h">
<Filter>Gui</Filter> <Filter>Gui</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="Input\ds3_pad_handler.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="Input\keyboard_pad_handler.h">
<Filter>Generated Files</Filter>
</ClInclude>
<ClInclude Include="Input/mm_joystick_handler.h">
<Filter>Generated Files</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<CustomBuild Include="debug\moc_predefs.h.cbt"> <CustomBuild Include="debug\moc_predefs.h.cbt">
@ -1059,6 +1101,12 @@
<CustomBuild Include="rpcs3qt\pkg_install_dialog.h"> <CustomBuild Include="rpcs3qt\pkg_install_dialog.h">
<Filter>Gui\misc dialogs</Filter> <Filter>Gui\misc dialogs</Filter>
</CustomBuild> </CustomBuild>
<CustomBuild Include="rpcs3qt\settings.h">
<Filter>Gui\settings</Filter>
</CustomBuild>
<CustomBuild Include="rpcs3qt\persistent_settings.h">
<Filter>Gui\settings</Filter>
</CustomBuild>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<Image Include="rpcs3.ico" /> <Image Include="rpcs3.ico" />

View file

@ -29,6 +29,7 @@
msg_dialog_frame.cpp msg_dialog_frame.cpp
osk_dialog_frame.cpp osk_dialog_frame.cpp
pad_settings_dialog.cpp pad_settings_dialog.cpp
persistent_settings.cpp
pkg_install_dialog.cpp pkg_install_dialog.cpp
progress_dialog.cpp progress_dialog.cpp
qt_utils.cpp qt_utils.cpp
@ -38,6 +39,7 @@
save_data_info_dialog.cpp save_data_info_dialog.cpp
save_data_list_dialog.cpp save_data_list_dialog.cpp
save_manager_dialog.cpp save_manager_dialog.cpp
settings.cpp
settings_dialog.cpp settings_dialog.cpp
skylander_dialog.cpp skylander_dialog.cpp
syntax_highlighter.cpp syntax_highlighter.cpp

View file

@ -31,8 +31,11 @@
inline std::string sstr(const QString& _in) { return _in.toStdString(); } inline std::string sstr(const QString& _in) { return _in.toStdString(); }
game_list_frame::game_list_frame(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, QWidget *parent) game_list_frame::game_list_frame(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, std::shared_ptr<persistent_settings> persistent_settings, QWidget *parent)
: custom_dock_widget(tr("Game List"), parent), m_gui_settings(guiSettings), m_emu_settings(emuSettings) : custom_dock_widget(tr("Game List"), parent)
, m_gui_settings(guiSettings)
, m_emu_settings(emuSettings)
, m_persistent_settings(persistent_settings)
{ {
m_isListLayout = m_gui_settings->GetValue(gui::gl_listMode).toBool(); m_isListLayout = m_gui_settings->GetValue(gui::gl_listMode).toBool();
m_Margin_Factor = m_gui_settings->GetValue(gui::gl_marginFactor).toReal(); m_Margin_Factor = m_gui_settings->GetValue(gui::gl_marginFactor).toReal();
@ -364,12 +367,12 @@ void game_list_frame::SortGameList()
QString game_list_frame::GetLastPlayedBySerial(const QString& serial) QString game_list_frame::GetLastPlayedBySerial(const QString& serial)
{ {
return m_gui_settings->GetLastPlayed(serial); return m_persistent_settings->GetLastPlayed(serial);
} }
QString game_list_frame::GetPlayTimeBySerial(const QString& serial) QString game_list_frame::GetPlayTimeBySerial(const QString& serial)
{ {
const qint64 elapsed_ms = m_gui_settings->GetPlaytime(serial); const qint64 elapsed_ms = m_persistent_settings->GetPlaytime(serial);
if (elapsed_ms <= 0) if (elapsed_ms <= 0)
{ {
@ -579,8 +582,32 @@ void game_list_frame::Refresh(const bool fromDrive, const bool scrollAfter)
const QString serial = qstr(game.serial); const QString serial = qstr(game.serial);
const QString note = m_gui_settings->GetValue(gui::notes, serial, "").toString(); const QString note = m_gui_settings->GetValue(gui::notes, serial, "").toString();
const QString title = m_gui_settings->GetValue(gui::titles, serial, "").toString().simplified(); const QString title = m_gui_settings->GetValue(gui::titles, serial, "").toString().simplified();
m_gui_settings->SetLastPlayed(serial, m_gui_settings->GetValue(gui::last_played, serial, "").toString());
m_gui_settings->SetPlaytime(serial, m_gui_settings->GetValue(gui::playtime, serial, 0).toInt()); // Read persistent_settings values
QString last_played = m_persistent_settings->GetValue(gui::persistent::last_played, serial, "").toString();
int playtime = m_persistent_settings->GetValue(gui::persistent::playtime, serial, 0).toInt();
// Read deprecated gui_setting values first for backwards compatibility (older than January 12th 2020).
// Restrict this to empty persistent settings to keep continuity.
if (last_played.isEmpty())
{
last_played = m_gui_settings->GetValue(gui::persistent::last_played, serial, "").toString();
}
if (playtime <= 0)
{
playtime = m_gui_settings->GetValue(gui::persistent::playtime, serial, 0).toInt();
}
// Set persistent_settings values if values exist
if (!last_played.isEmpty())
{
m_persistent_settings->SetLastPlayed(serial, last_played);
}
if (playtime > 0)
{
m_persistent_settings->SetPlaytime(serial, playtime);
}
serials.insert(serial); serials.insert(serial);
if (!note.isEmpty()) if (!note.isEmpty())

View file

@ -7,6 +7,7 @@
#include "game_list.h" #include "game_list.h"
#include "game_list_grid.h" #include "game_list_grid.h"
#include "emu_settings.h" #include "emu_settings.h"
#include "persistent_settings.h"
#include "game_compatibility.h" #include "game_compatibility.h"
#include <QMainWindow> #include <QMainWindow>
@ -182,7 +183,7 @@ class game_list_frame : public custom_dock_widget
Q_OBJECT Q_OBJECT
public: public:
explicit game_list_frame(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, QWidget *parent = nullptr); explicit game_list_frame(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, std::shared_ptr<persistent_settings> persistent_settings, QWidget *parent = nullptr);
~game_list_frame(); ~game_list_frame();
/** Fix columns with width smaller than the minimal section size */ /** Fix columns with width smaller than the minimal section size */
@ -289,6 +290,7 @@ private:
// Data // Data
std::shared_ptr<gui_settings> m_gui_settings; std::shared_ptr<gui_settings> m_gui_settings;
std::shared_ptr<emu_settings> m_emu_settings; std::shared_ptr<emu_settings> m_emu_settings;
std::shared_ptr<persistent_settings> m_persistent_settings;
QList<game_info> m_game_data; QList<game_info> m_game_data;
QSet<QString> m_hidden_list; QSet<QString> m_hidden_list;
bool m_show_hidden{false}; bool m_show_hidden{false};

View file

@ -35,6 +35,7 @@ void gui_application::Init()
m_emu_settings.reset(new emu_settings()); m_emu_settings.reset(new emu_settings());
m_gui_settings.reset(new gui_settings()); m_gui_settings.reset(new gui_settings());
m_persistent_settings.reset(new persistent_settings());
// Force init the emulator // Force init the emulator
InitializeEmulator(m_gui_settings->GetCurrentUser().toStdString(), true, m_show_gui); InitializeEmulator(m_gui_settings->GetCurrentUser().toStdString(), true, m_show_gui);
@ -42,7 +43,7 @@ void gui_application::Init()
// Create the main window // Create the main window
if (m_show_gui) if (m_show_gui)
{ {
m_main_window = new main_window(m_gui_settings, m_emu_settings, nullptr); m_main_window = new main_window(m_gui_settings, m_emu_settings, m_persistent_settings, nullptr);
} }
// Create callbacks from the emulator, which reference the handlers. // Create callbacks from the emulator, which reference the handlers.
@ -216,7 +217,7 @@ void gui_application::StartPlaytime()
return; return;
} }
m_gui_settings->SetLastPlayed(serial, QDate::currentDate().toString("MMMM d yyyy")); m_persistent_settings->SetLastPlayed(serial, QDate::currentDate().toString("MMMM d yyyy"));
m_timer_playtime.start(); m_timer_playtime.start();
} }
@ -232,9 +233,9 @@ void gui_application::StopPlaytime()
return; return;
} }
const qint64 playtime = m_gui_settings->GetPlaytime(serial) + m_timer_playtime.elapsed(); const qint64 playtime = m_persistent_settings->GetPlaytime(serial) + m_timer_playtime.elapsed();
m_gui_settings->SetPlaytime(serial, playtime); m_persistent_settings->SetPlaytime(serial, playtime);
m_gui_settings->SetLastPlayed(serial, QDate::currentDate().toString("MMMM d yyyy")); m_persistent_settings->SetLastPlayed(serial, QDate::currentDate().toString("MMMM d yyyy"));
m_timer_playtime.invalidate(); m_timer_playtime.invalidate();
} }

View file

@ -10,6 +10,7 @@
#include "main_application.h" #include "main_application.h"
#include "emu_settings.h" #include "emu_settings.h"
#include "gui_settings.h" #include "gui_settings.h"
#include "persistent_settings.h"
#include "gs_frame.h" #include "gs_frame.h"
#include "gl_gs_frame.h" #include "gl_gs_frame.h"
@ -56,6 +57,7 @@ private:
std::shared_ptr<emu_settings> m_emu_settings; std::shared_ptr<emu_settings> m_emu_settings;
std::shared_ptr<gui_settings> m_gui_settings; std::shared_ptr<gui_settings> m_gui_settings;
std::shared_ptr<persistent_settings> m_persistent_settings;
bool m_show_gui = true; bool m_show_gui = true;
bool m_use_cli_style = false; bool m_use_cli_style = false;

View file

@ -8,11 +8,11 @@
inline std::string sstr(const QString& _in) { return _in.toStdString(); } inline std::string sstr(const QString& _in) { return _in.toStdString(); }
gui_settings::gui_settings(QObject* parent) : QObject(parent) gui_settings::gui_settings(QObject* parent) : settings(parent)
, m_current_name(gui::Settings) , m_current_name(gui::Settings)
, m_settings(ComputeSettingsDir() + gui::Settings + ".ini", QSettings::Format::IniFormat, parent)
, m_settingsDir(ComputeSettingsDir())
{ {
m_settings = new QSettings(ComputeSettingsDir() + gui::Settings + ".ini", QSettings::Format::IniFormat, parent);
const QString settings_name = GetValue(gui::m_currentConfig).toString(); const QString settings_name = GetValue(gui::m_currentConfig).toString();
if (settings_name != m_current_name) if (settings_name != m_current_name)
@ -21,11 +21,6 @@ gui_settings::gui_settings(QObject* parent) : QObject(parent)
} }
} }
gui_settings::~gui_settings()
{
m_settings.sync();
}
QString gui_settings::GetCurrentUser() QString gui_settings::GetCurrentUser()
{ {
// load user // load user
@ -43,16 +38,6 @@ QString gui_settings::GetCurrentUser()
return QString(); return QString();
} }
QString gui_settings::GetSettingsDir()
{
return m_settingsDir.absolutePath();
}
QString gui_settings::ComputeSettingsDir()
{
return QString::fromStdString(fs::get_config_dir()) + "/GuiConfigs/";
}
bool gui_settings::ChangeToConfig(const QString& friendly_name) bool gui_settings::ChangeToConfig(const QString& friendly_name)
{ {
if (m_current_name == friendly_name) if (m_current_name == friendly_name)
@ -68,27 +53,27 @@ bool gui_settings::ChangeToConfig(const QString& friendly_name)
} }
else else
{ {
QSettings tmp(m_settingsDir.absoluteFilePath(gui::Settings + ".ini"), QSettings::Format::IniFormat, parent()); QSettings tmp(m_settings_dir.absoluteFilePath(gui::Settings + ".ini"), QSettings::Format::IniFormat, parent());
tmp.beginGroup(gui::m_currentConfig.key); tmp.beginGroup(gui::m_currentConfig.key);
tmp.setValue(gui::m_currentConfig.name, friendly_name); tmp.setValue(gui::m_currentConfig.name, friendly_name);
tmp.endGroup(); tmp.endGroup();
} }
} }
m_settings.sync(); m_settings->sync();
Reset(true); Reset(true);
QSettings other(m_settingsDir.absoluteFilePath(friendly_name + ".ini"), QSettings::IniFormat); QSettings other(m_settings_dir.absoluteFilePath(friendly_name + ".ini"), QSettings::IniFormat);
for (const QString& key : other.allKeys()) for (const QString& key : other.allKeys())
{ {
m_settings.setValue(key, other.value(key)); m_settings->setValue(key, other.value(key));
} }
SetValue(gui::m_currentConfig, friendly_name); SetValue(gui::m_currentConfig, friendly_name);
m_settings.sync(); m_settings->sync();
m_current_name = friendly_name; m_current_name = friendly_name;
@ -99,86 +84,16 @@ void gui_settings::Reset(bool removeMeta)
{ {
if (removeMeta) if (removeMeta)
{ {
m_settings.clear(); m_settings->clear();
} }
else else
{ {
m_settings.remove(gui::logger); m_settings->remove(gui::logger);
m_settings.remove(gui::main_window); m_settings->remove(gui::main_window);
m_settings.remove(gui::game_list); m_settings->remove(gui::game_list);
} }
} }
void gui_settings::RemoveValue(const QString& key, const QString& name)
{
m_settings.beginGroup(key);
m_settings.remove(name);
m_settings.endGroup();
}
QVariant gui_settings::GetValue(const gui_save& entry)
{
return m_settings.value(entry.key + "/" + entry.name, entry.def);
}
QVariant gui_settings::GetValue(const QString& key, const QString& name, const QString& def)
{
return m_settings.value(key + "/" + name, def);
}
QVariant gui_settings::List2Var(const q_pair_list& list)
{
QByteArray ba;
QDataStream stream(&ba, QIODevice::WriteOnly);
stream << list;
return QVariant(ba);
}
q_pair_list gui_settings::Var2List(const QVariant& var)
{
q_pair_list list;
QByteArray ba = var.toByteArray();
QDataStream stream(&ba, QIODevice::ReadOnly);
stream >> list;
return list;
}
void gui_settings::SetValue(const gui_save& entry, const QVariant& value)
{
m_settings.beginGroup(entry.key);
m_settings.setValue(entry.name, value);
m_settings.endGroup();
}
void gui_settings::SetValue(const QString& key, const QString& name, const QVariant& value)
{
m_settings.beginGroup(key);
m_settings.setValue(name, value);
m_settings.endGroup();
}
void gui_settings::SetPlaytime(const QString& serial, const qint64& elapsed)
{
m_playtime[serial] = elapsed;
SetValue(gui::playtime, serial, elapsed);
}
qint64 gui_settings::GetPlaytime(const QString& serial)
{
return m_playtime[serial];
}
void gui_settings::SetLastPlayed(const QString& serial, const QString& date)
{
m_last_played[serial] = date;
SetValue(gui::last_played, serial, date);
}
QString gui_settings::GetLastPlayed(const QString& serial)
{
return m_last_played[serial];
}
QStringList gui_settings::GetGameListCategoryFilters() QStringList gui_settings::GetGameListCategoryFilters()
{ {
QStringList filterList; QStringList filterList;
@ -325,11 +240,11 @@ void gui_settings::SaveCurrentConfig(const QString& friendly_name)
if (m_current_name == gui::Settings) if (m_current_name == gui::Settings)
{ {
SetValue(gui::m_currentConfig, friendly_name); SetValue(gui::m_currentConfig, friendly_name);
m_settings.sync(); m_settings->sync();
} }
else else
{ {
QSettings tmp(m_settingsDir.absoluteFilePath(gui::Settings + ".ini"), QSettings::Format::IniFormat, parent()); QSettings tmp(m_settings_dir.absoluteFilePath(gui::Settings + ".ini"), QSettings::Format::IniFormat, parent());
tmp.beginGroup(gui::m_currentConfig.key); tmp.beginGroup(gui::m_currentConfig.key);
tmp.setValue(gui::m_currentConfig.name, friendly_name); tmp.setValue(gui::m_currentConfig.name, friendly_name);
tmp.endGroup(); tmp.endGroup();
@ -359,7 +274,7 @@ QStringList gui_settings::GetConfigEntries()
{ {
QStringList nameFilter; QStringList nameFilter;
nameFilter << "*.ini"; nameFilter << "*.ini";
QFileInfoList entries = m_settingsDir.entryInfoList(nameFilter, QDir::Files); QFileInfoList entries = m_settings_dir.entryInfoList(nameFilter, QDir::Files);
QStringList res; QStringList res;
for (const QFileInfo &entry : entries) for (const QFileInfo &entry : entries)
{ {
@ -373,11 +288,11 @@ void gui_settings::BackupSettingsToTarget(const QString& friendly_name)
{ {
QSettings target(ComputeSettingsDir() + friendly_name + ".ini", QSettings::Format::IniFormat); QSettings target(ComputeSettingsDir() + friendly_name + ".ini", QSettings::Format::IniFormat);
for (const QString& key : m_settings.allKeys()) for (const QString& key : m_settings->allKeys())
{ {
if (!key.startsWith(gui::meta)) if (!key.startsWith(gui::meta))
{ {
target.setValue(key, m_settings.value(key)); target.setValue(key, m_settings->value(key));
} }
} }
@ -387,7 +302,7 @@ void gui_settings::BackupSettingsToTarget(const QString& friendly_name)
QStringList gui_settings::GetStylesheetEntries() QStringList gui_settings::GetStylesheetEntries()
{ {
QStringList nameFilter = QStringList("*.qss"); QStringList nameFilter = QStringList("*.qss");
QStringList res = gui::utils::get_dir_entries(m_settingsDir, nameFilter); QStringList res = gui::utils::get_dir_entries(m_settings_dir, nameFilter);
#if !defined(_WIN32) #if !defined(_WIN32)
// Makes stylesheets load if using AppImage (App Bundle) or installed to /usr/bin // Makes stylesheets load if using AppImage (App Bundle) or installed to /usr/bin
#ifdef __APPLE__ #ifdef __APPLE__
@ -415,7 +330,7 @@ QString gui_settings::GetCurrentStylesheetPath()
return "-"; return "-";
} }
return m_settingsDir.absoluteFilePath(stylesheet + ".qss"); return m_settings_dir.absoluteFilePath(stylesheet + ".qss");
} }
QSize gui_settings::SizeFromSlider(int pos) QSize gui_settings::SizeFromSlider(int pos)

View file

@ -1,40 +1,13 @@
#pragma once #pragma once
#include "settings.h"
#include "Utilities/Log.h" #include "Utilities/Log.h"
#include <QSettings>
#include <QDir> #include <QDir>
#include <QVariant> #include <QVariant>
#include <QSize> #include <QSize>
#include <QColor> #include <QColor>
struct gui_save
{
QString key;
QString name;
QVariant def;
gui_save()
{
key = "";
name = "";
def = QVariant();
}
gui_save(const QString& k, const QString& n, const QVariant& d)
{
key = k;
name = n;
def = d;
}
};
typedef std::map<std::string, const QString> q_from_char;
typedef QPair<QString, QString> q_string_pair;
typedef QPair<QString, QSize> q_size_pair;
typedef QList<q_string_pair> q_pair_list;
typedef QList<q_size_pair> q_size_list;
namespace gui namespace gui
{ {
static QString stylesheet; static QString stylesheet;
@ -137,8 +110,6 @@ namespace gui
const QString users = "Users"; const QString users = "Users";
const QString notes = "Notes"; const QString notes = "Notes";
const QString titles = "Titles"; const QString titles = "Titles";
const QString playtime = "Playtime";
const QString last_played = "LastPlayed";
const QColor gl_icon_color = QColor(240, 240, 240, 255); const QColor gl_icon_color = QColor(240, 240, 240, 255);
@ -165,7 +136,7 @@ namespace gui
const gui_save mw_titleBarsVisible = gui_save(main_window, "titleBarsVisible", true); const gui_save mw_titleBarsVisible = gui_save(main_window, "titleBarsVisible", true);
const gui_save mw_geometry = gui_save(main_window, "geometry", QByteArray()); const gui_save mw_geometry = gui_save(main_window, "geometry", QByteArray());
const gui_save mw_windowState = gui_save(main_window, "windowState", QByteArray()); const gui_save mw_windowState = gui_save(main_window, "windowState", QByteArray());
const gui_save mw_mwState = gui_save(main_window, "wwState", QByteArray()); const gui_save mw_mwState = gui_save(main_window, "mwState", QByteArray());
const gui_save cat_hdd_game = gui_save(game_list, "categoryVisibleHDDGame", true); const gui_save cat_hdd_game = gui_save(game_list, "categoryVisibleHDDGame", true);
const gui_save cat_disc_game = gui_save(game_list, "categoryVisibleDiscGame", true); const gui_save cat_disc_game = gui_save(game_list, "categoryVisibleDiscGame", true);
@ -249,25 +220,19 @@ namespace gui
/** Class for GUI settings.. /** Class for GUI settings..
*/ */
class gui_settings : public QObject class gui_settings : public settings
{ {
Q_OBJECT Q_OBJECT
public: public:
explicit gui_settings(QObject* parent = nullptr); explicit gui_settings(QObject* parent = nullptr);
~gui_settings();
QString GetCurrentUser(); QString GetCurrentUser();
QString GetSettingsDir();
/** Changes the settings file to the destination preset*/ /** Changes the settings file to the destination preset*/
bool ChangeToConfig(const QString& friendly_name); bool ChangeToConfig(const QString& friendly_name);
bool GetCategoryVisibility(int cat); bool GetCategoryVisibility(int cat);
QVariant GetValue(const gui_save& entry);
QVariant GetValue(const QString& key, const QString& name, const QString& def);
QVariant List2Var(const q_pair_list& list);
q_pair_list Var2List(const QVariant &var);
void ShowConfirmationBox(const QString& title, const QString& text, const gui_save& entry, int* result, QWidget* parent); void ShowConfirmationBox(const QString& title, const QString& text, const gui_save& entry, int* result, QWidget* parent);
void ShowInfoBox(const QString& title, const QString& text, const gui_save& entry, QWidget* parent); void ShowInfoBox(const QString& title, const QString& text, const gui_save& entry, QWidget* parent);
@ -283,19 +248,6 @@ public:
public Q_SLOTS: public Q_SLOTS:
void Reset(bool removeMeta = false); void Reset(bool removeMeta = false);
/** Remove entry */
void RemoveValue(const QString& key, const QString& name);
/** Write value to entry */
void SetValue(const gui_save& entry, const QVariant& value);
void SetValue(const QString& key, const QString& name, const QVariant& value);
void SetPlaytime(const QString& serial, const qint64& elapsed);
qint64 GetPlaytime(const QString& serial);
void SetLastPlayed(const QString& serial, const QString& date);
QString GetLastPlayed(const QString& serial);
/** Sets the visibility of the chosen category. */ /** Sets the visibility of the chosen category. */
void SetCategoryVisibility(int cat, const bool& val); void SetCategoryVisibility(int cat, const bool& val);
@ -309,13 +261,8 @@ public Q_SLOTS:
static gui_save GetGuiSaveForColumn(int col); static gui_save GetGuiSaveForColumn(int col);
private: private:
QString ComputeSettingsDir();
void BackupSettingsToTarget(const QString& friendly_name); void BackupSettingsToTarget(const QString& friendly_name);
void ShowBox(bool confirm, const QString& title, const QString& text, const gui_save& entry, int* result, QWidget* parent, bool always_on_top); void ShowBox(bool confirm, const QString& title, const QString& text, const gui_save& entry, int* result, QWidget* parent, bool always_on_top);
QSettings m_settings;
QDir m_settingsDir;
QString m_current_name; QString m_current_name;
QMap<QString, qint64> m_playtime;
QMap<QString, QString> m_last_played;
}; };

View file

@ -57,8 +57,13 @@
inline std::string sstr(const QString& _in) { return _in.toStdString(); } inline std::string sstr(const QString& _in) { return _in.toStdString(); }
main_window::main_window(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, QWidget *parent) main_window::main_window(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, std::shared_ptr<persistent_settings> persistent_settings, QWidget *parent)
: QMainWindow(parent), guiSettings(guiSettings), emuSettings(emuSettings), m_sys_menu_opened(false), ui(new Ui::main_window) : QMainWindow(parent)
, guiSettings(guiSettings)
, emuSettings(emuSettings)
, m_persistent_settings(persistent_settings)
, m_sys_menu_opened(false)
, ui(new Ui::main_window)
{ {
} }
@ -1557,7 +1562,7 @@ void main_window::CreateDockWindows()
m_mw = new QMainWindow(); m_mw = new QMainWindow();
m_mw->setContextMenuPolicy(Qt::PreventContextMenu); m_mw->setContextMenuPolicy(Qt::PreventContextMenu);
m_gameListFrame = new game_list_frame(guiSettings, emuSettings, m_mw); m_gameListFrame = new game_list_frame(guiSettings, emuSettings, m_persistent_settings, m_mw);
m_gameListFrame->setObjectName("gamelist"); m_gameListFrame->setObjectName("gamelist");
m_debuggerFrame = new debugger_frame(guiSettings, m_mw); m_debuggerFrame = new debugger_frame(guiSettings, m_mw);
m_debuggerFrame->setObjectName("debugger"); m_debuggerFrame->setObjectName("debugger");

View file

@ -15,6 +15,7 @@
#include "debugger_frame.h" #include "debugger_frame.h"
#include "game_list_frame.h" #include "game_list_frame.h"
#include "gui_settings.h" #include "gui_settings.h"
#include "persistent_settings.h"
#include "update_manager.h" #include "update_manager.h"
#include <memory> #include <memory>
@ -67,7 +68,7 @@ class main_window : public QMainWindow
}; };
public: public:
explicit main_window(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, QWidget *parent = 0); explicit main_window(std::shared_ptr<gui_settings> guiSettings, std::shared_ptr<emu_settings> emuSettings, std::shared_ptr<persistent_settings> persistent_settings, QWidget *parent = 0);
void Init(); void Init();
~main_window(); ~main_window();
QIcon GetAppIcon(); QIcon GetAppIcon();
@ -141,6 +142,7 @@ private:
game_list_frame* m_gameListFrame = nullptr; game_list_frame* m_gameListFrame = nullptr;
std::shared_ptr<gui_settings> guiSettings; std::shared_ptr<gui_settings> guiSettings;
std::shared_ptr<emu_settings> emuSettings; std::shared_ptr<emu_settings> emuSettings;
std::shared_ptr<persistent_settings> m_persistent_settings;
update_manager m_updater; update_manager m_updater;
}; };

View file

@ -0,0 +1,29 @@
#include "persistent_settings.h"
persistent_settings::persistent_settings(QObject* parent) : settings(parent)
{
// Don't use the .ini file ending for now, as it will be confused for a regular gui_settings file.
m_settings = new QSettings(ComputeSettingsDir() + gui::persistent::persistent_file_name + ".dat", QSettings::Format::IniFormat, parent);
}
void persistent_settings::SetPlaytime(const QString& serial, const qint64& elapsed)
{
m_playtime[serial] = elapsed;
SetValue(gui::persistent::playtime, serial, elapsed);
}
qint64 persistent_settings::GetPlaytime(const QString& serial)
{
return m_playtime[serial];
}
void persistent_settings::SetLastPlayed(const QString& serial, const QString& date)
{
m_last_played[serial] = date;
SetValue(gui::persistent::last_played, serial, date);
}
QString persistent_settings::GetLastPlayed(const QString& serial)
{
return m_last_played[serial];
}

View file

@ -0,0 +1,35 @@
#pragma once
#include "settings.h"
namespace gui
{
namespace persistent
{
// File name
const QString persistent_file_name = "persistent_settings";
// Entry names
const QString playtime = "Playtime";
const QString last_played = "LastPlayed";
}
}
// Provides a persistent settings class that won't be affected by settings dialog changes
class persistent_settings : public settings
{
Q_OBJECT
public:
explicit persistent_settings(QObject* parent = nullptr);
public Q_SLOTS:
void SetPlaytime(const QString& serial, const qint64& elapsed);
qint64 GetPlaytime(const QString& serial);
void SetLastPlayed(const QString& serial, const QString& date);
QString GetLastPlayed(const QString& serial);
private:
QMap<QString, qint64> m_playtime;
QMap<QString, QString> m_last_played;
};

View file

@ -0,0 +1,85 @@
#include "settings.h"
#include "qt_utils.h"
inline std::string sstr(const QString& _in) { return _in.toStdString(); }
settings::settings(QObject* parent) : QObject(parent),
m_settings_dir(ComputeSettingsDir())
{
}
settings::~settings()
{
if (m_settings)
{
m_settings->sync();
}
}
QString settings::GetSettingsDir()
{
return m_settings_dir.absolutePath();
}
QString settings::ComputeSettingsDir()
{
return QString::fromStdString(fs::get_config_dir()) + "/GuiConfigs/";
}
void settings::RemoveValue(const QString& key, const QString& name)
{
if (m_settings)
{
m_settings->beginGroup(key);
m_settings->remove(name);
m_settings->endGroup();
}
}
QVariant settings::GetValue(const gui_save& entry)
{
return m_settings ? m_settings->value(entry.key + "/" + entry.name, entry.def) : entry.def;
}
QVariant settings::GetValue(const QString& key, const QString& name, const QString& def)
{
return m_settings ? m_settings->value(key + "/" + name, def) : def;
}
QVariant settings::List2Var(const q_pair_list& list)
{
QByteArray ba;
QDataStream stream(&ba, QIODevice::WriteOnly);
stream << list;
return QVariant(ba);
}
q_pair_list settings::Var2List(const QVariant& var)
{
q_pair_list list;
QByteArray ba = var.toByteArray();
QDataStream stream(&ba, QIODevice::ReadOnly);
stream >> list;
return list;
}
void settings::SetValue(const gui_save& entry, const QVariant& value)
{
if (m_settings)
{
m_settings->beginGroup(entry.key);
m_settings->setValue(entry.name, value);
m_settings->endGroup();
}
}
void settings::SetValue(const QString& key, const QString& name, const QVariant& value)
{
if (m_settings)
{
m_settings->beginGroup(key);
m_settings->setValue(name, value);
m_settings->endGroup();
}
}

65
rpcs3/rpcs3qt/settings.h Normal file
View file

@ -0,0 +1,65 @@
#pragma once
#include <QSettings>
#include <QDir>
#include <QVariant>
#include <QSize>
struct gui_save
{
QString key;
QString name;
QVariant def;
gui_save()
{
key = "";
name = "";
def = QVariant();
}
gui_save(const QString& k, const QString& n, const QVariant& d)
{
key = k;
name = n;
def = d;
}
};
typedef std::map<std::string, const QString> q_from_char;
typedef QPair<QString, QString> q_string_pair;
typedef QPair<QString, QSize> q_size_pair;
typedef QList<q_string_pair> q_pair_list;
typedef QList<q_size_pair> q_size_list;
// Parent Class for GUI settings
class settings : public QObject
{
Q_OBJECT
public:
explicit settings(QObject* parent = nullptr);
~settings();
QString GetSettingsDir();
QVariant GetValue(const gui_save& entry);
QVariant GetValue(const QString& key, const QString& name, const QString& def);
QVariant List2Var(const q_pair_list& list);
q_pair_list Var2List(const QVariant& var);
public Q_SLOTS:
/** Remove entry */
void RemoveValue(const QString& key, const QString& name);
/** Write value to entry */
void SetValue(const gui_save& entry, const QVariant& value);
void SetValue(const QString& key, const QString& name, const QVariant& value);
protected:
QString ComputeSettingsDir();
QSettings* m_settings = nullptr;
QDir m_settings_dir;
QString m_current_name;
};