diff --git a/rpcs3/rpcs3.vcxproj b/rpcs3/rpcs3.vcxproj index 3b73722692..10336986de 100644 --- a/rpcs3/rpcs3.vcxproj +++ b/rpcs3/rpcs3.vcxproj @@ -442,7 +442,12 @@ true true - + + true + true + true + + true true true @@ -562,7 +567,12 @@ true true - + + true + true + true + + true true true @@ -692,7 +702,12 @@ true true - + + true + true + true + + true true true @@ -812,7 +827,12 @@ true true - + + true + true + true + + true true true @@ -840,6 +860,7 @@ + @@ -863,7 +884,7 @@ - + @@ -1243,26 +1264,44 @@ $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) - - Moc%27ing save_data_utility.h... + + Moc%27ing save_data_list_dialog.h... .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -D_SCL_SECURE_NO_WARNINGS -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\.." "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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$(NOINHERIT)\." - Moc%27ing save_data_utility.h... + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -D_SCL_SECURE_NO_WARNINGS -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\.." "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + Moc%27ing save_data_list_dialog.h... .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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$(NOINHERIT)\." - Moc%27ing save_data_utility.h... + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + Moc%27ing save_data_list_dialog.h... .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - Moc%27ing save_data_utility.h... + Moc%27ing save_data_list_dialog.h... .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DLLVM_AVAILABLE -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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$(NOINHERIT)\." - $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) - $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) - $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DLLVM_AVAILABLE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\.." "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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$(NOINHERIT)\." + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DLLVM_AVAILABLE -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DLLVM_AVAILABLE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\.." "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing save_data_info_dialog.h... + .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -DLLVM_AVAILABLE -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing save_data_info_dialog.h... + .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -D_SCL_SECURE_NO_WARNINGS -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\.." "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing save_data_info_dialog.h... + .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DNDEBUG -DQT_WINEXTRAS_LIB -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + $(QTDIR)\bin\moc.exe;%(FullPath);$(QTDIR)\bin\moc.exe;%(FullPath) + Moc%27ing save_data_info_dialog.h... + .\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\QTGeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -D_WINDOWS -DUNICODE -DWIN32 -DWIN64 -DQT_OPENGL_LIB -DQT_WIDGETS_LIB -DQT_QUICK_LIB -DQT_GUI_LIB -DQT_QML_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_WINEXTRAS_LIB -DLLVM_AVAILABLE -D_SCL_SECURE_NO_WARNINGS -D_UNICODE "-I.\..\Vulkan\Vulkan-LoaderAndValidationLayers\include" "-I.\.." "-I.\..\3rdparty\minidx12\Include" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtOpenGL" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtQuick" "-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" + Moc%27ing welcome_dialog.h... diff --git a/rpcs3/rpcs3.vcxproj.filters b/rpcs3/rpcs3.vcxproj.filters index 25341f839d..162d4c67bd 100644 --- a/rpcs3/rpcs3.vcxproj.filters +++ b/rpcs3/rpcs3.vcxproj.filters @@ -60,6 +60,9 @@ ui true + + {31799965-1274-4c87-83a3-3bff31e8715d} + @@ -266,24 +269,6 @@ Gui - - Gui - - - Gui - - - Generated Files\Release - LLVM - - - Generated Files\Debug - - - Generated Files\Release - - - Generated Files\Debug - LLVM - Generated Files\Release - LLVM @@ -461,6 +446,39 @@ Generated Files\Debug - LLVM + + Generated Files\Release - LLVM + + + Generated Files\Debug + + + Generated Files\Release + + + Generated Files\Debug - LLVM + + + Generated Files\Release - LLVM + + + Generated Files\Debug + + + Generated Files\Release + + + Generated Files\Debug - LLVM + + + Gui\saves + + + Gui\saves + + + Gui\saves + @@ -469,9 +487,6 @@ Gui - - Gui - Gui @@ -517,6 +532,9 @@ Gui + + Gui\saves + @@ -564,9 +582,6 @@ Gui - - Gui - Gui @@ -618,6 +633,12 @@ Gui + + Gui\saves + + + Gui\saves + diff --git a/rpcs3/rpcs3qt/gui_settings.h b/rpcs3/rpcs3qt/gui_settings.h index 3c5b05ddb8..b0379c4026 100644 --- a/rpcs3/rpcs3qt/gui_settings.h +++ b/rpcs3/rpcs3qt/gui_settings.h @@ -117,6 +117,7 @@ namespace GUI const GUI_SAVE m_currentConfig = GUI_SAVE(meta, "currentConfig", QObject::tr("CurrentSettings")); const GUI_SAVE m_currentStylesheet = GUI_SAVE(meta, "currentStylesheet", QObject::tr("default")); + const GUI_SAVE m_saveNotes = GUI_SAVE(meta, "saveNotes", QVariantMap()); const GUI_SAVE gs_resize = GUI_SAVE(gs_frame, "resize", false); const GUI_SAVE gs_width = GUI_SAVE(gs_frame, "width", 1280); diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index e045331686..fadb6e5d89 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -9,7 +9,7 @@ #include #include "vfs_dialog.h" -#include "save_data_utility.h" +#include "save_data_list_dialog.h" #include "kernel_explorer.h" #include "game_list_frame.h" #include "debugger_frame.h" diff --git a/rpcs3/rpcs3qt/save_data_dialog.cpp b/rpcs3/rpcs3qt/save_data_dialog.cpp index 670488af9d..a265cd7219 100644 --- a/rpcs3/rpcs3qt/save_data_dialog.cpp +++ b/rpcs3/rpcs3qt/save_data_dialog.cpp @@ -2,7 +2,7 @@ #include "Emu/Memory/Memory.h" #include "save_data_dialog.h" -#include "save_data_utility.h" +#include "save_data_list_dialog.h" s32 save_data_dialog::ShowSaveDataList(std::vector& save_entries, s32 focused, bool isSaving, vm::ptr listSet) { diff --git a/rpcs3/rpcs3qt/save_data_info_dialog.cpp b/rpcs3/rpcs3qt/save_data_info_dialog.cpp new file mode 100644 index 0000000000..1e515546ff --- /dev/null +++ b/rpcs3/rpcs3qt/save_data_info_dialog.cpp @@ -0,0 +1,82 @@ +#include "save_data_info_dialog.h" + +#include +#include +#include + +inline QString qstr(const std::string& _in) { return QString::fromUtf8(_in.data(), _in.size()); } + +save_data_info_dialog::save_data_info_dialog(const SaveDataEntry& save, QWidget* parent) + : QDialog(parent), m_entry(save) +{ + setWindowTitle(tr("Save Data Information")); + + // Table + m_list = new QTableWidget(this); + + //m_list->setItemDelegate(new table_item_delegate(this)); // to get rid of item selection rectangles include "table_item_delegate.h" + m_list->setSelectionBehavior(QAbstractItemView::SelectRows); // enable to only select whole rows instead of items + m_list->setEditTriggers(QAbstractItemView::NoEditTriggers); + m_list->setColumnCount(2); + m_list->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("Detail")); + + // Buttons + QPushButton* close_button = new QPushButton(tr("&Close"), this); + connect(close_button, &QAbstractButton::clicked, this, &save_data_info_dialog::close); + + // Button Layout + QHBoxLayout* hbox_actions = new QHBoxLayout(); + hbox_actions->addStretch(); //Add a stretch to make Close on the Right-Down corner of this dialog. + hbox_actions->addWidget(close_button); + + // Main Layout + QVBoxLayout* vbox_main = new QVBoxLayout(); + vbox_main->addWidget(m_list, 1); + vbox_main->addLayout(hbox_actions, 0); + vbox_main->setAlignment(Qt::AlignCenter); + setLayout(vbox_main); + + UpdateData(); + + m_list->horizontalHeader()->resizeSections(QHeaderView::ResizeToContents); + m_list->verticalHeader()->resizeSections(QHeaderView::ResizeToContents); + + QSize tableSize = QSize( + m_list->verticalHeader()->width() + m_list->horizontalHeader()->length() + m_list->frameWidth() * 2, + m_list->horizontalHeader()->height() + m_list->verticalHeader()->length() + m_list->frameWidth() * 2); + + // no minimum size needed because we always have same table size and row count + resize(sizeHint() - m_list->sizeHint() + tableSize); + +} + +//This is intended to write the information of save data to QTableView. +void save_data_info_dialog::UpdateData() +{ + m_list->clearContents(); + int num_entries = 4; // set this to number of members in struct + m_list->setRowCount(num_entries); + + //Maybe there should be more details of save data. + m_list->setItem(0, 0, new QTableWidgetItem(tr("User ID"))); + m_list->setItem(0, 1, new QTableWidgetItem("00000001 (Default)")); + + m_list->setItem(1, 0, new QTableWidgetItem(tr("Title"))); + m_list->setItem(1, 1, new QTableWidgetItem(qstr(m_entry.title))); + + m_list->setItem(2, 0, new QTableWidgetItem(tr("Subtitle"))); + m_list->setItem(2, 1, new QTableWidgetItem(qstr(m_entry.subtitle))); + + m_list->setItem(3, 0, new QTableWidgetItem(tr("Detail"))); + m_list->setItem(3, 1, new QTableWidgetItem(qstr(m_entry.details))); + + QImage img; + if (m_entry.iconBuf.size() > 0 && img.loadFromData((uchar*)&m_entry.iconBuf[0], m_entry.iconBuf.size(), "PNG")) + { + m_list->insertRow(0); + QTableWidgetItem* img_item = new QTableWidgetItem(); + img_item->setData(Qt::DecorationRole, QPixmap::fromImage(img)); + m_list->setItem(0, 0, new QTableWidgetItem(tr("Icon"))); + m_list->setItem(0, 1, img_item); + } +} diff --git a/rpcs3/rpcs3qt/save_data_info_dialog.h b/rpcs3/rpcs3qt/save_data_info_dialog.h new file mode 100644 index 0000000000..ae4e79f972 --- /dev/null +++ b/rpcs3/rpcs3qt/save_data_info_dialog.h @@ -0,0 +1,23 @@ +#pragma once + +// I just want the struct for the save data. +#include "stdafx.h" +#include "Emu/Memory/Memory.h" +#include "Emu/Cell/Modules/cellSaveData.h" + +#include +#include + +//Used to display the information of a savedata. +class save_data_info_dialog :public QDialog +{ + Q_OBJECT + +public: + explicit save_data_info_dialog(const SaveDataEntry& save, QWidget* parent = nullptr); +private: + void UpdateData(); + + SaveDataEntry m_entry; + QTableWidget* m_list; +}; diff --git a/rpcs3/rpcs3qt/save_data_utility.cpp b/rpcs3/rpcs3qt/save_data_list_dialog.cpp similarity index 66% rename from rpcs3/rpcs3qt/save_data_utility.cpp rename to rpcs3/rpcs3qt/save_data_list_dialog.cpp index c132ff9235..dc68451bb4 100644 --- a/rpcs3/rpcs3qt/save_data_utility.cpp +++ b/rpcs3/rpcs3qt/save_data_list_dialog.cpp @@ -1,85 +1,15 @@ #include "stdafx.h" -#include "save_data_utility.h" +#include "save_data_list_dialog.h" +#include "save_data_info_dialog.h" +#include "gui_settings.h" + +#include +#include +#include +#include inline QString qstr(const std::string& _in) { return QString::fromUtf8(_in.data(), _in.size()); } -//Cause i can not decide what struct to be used to fill those. Just use no real data now. -//Currently variable info isn't used. it supposed to be a container for the information passed by other. -save_data_info_dialog::save_data_info_dialog(const SaveDataEntry& save, QWidget* parent) - : QDialog(parent), m_entry(save) -{ - setWindowTitle(tr("Save Data Information")); - - // Table - m_list = new QTableWidget(this); - - //m_list->setItemDelegate(new table_item_delegate(this)); // to get rid of item selection rectangles include "table_item_delegate.h" - m_list->setSelectionBehavior(QAbstractItemView::SelectRows); // enable to only select whole rows instead of items - m_list->setEditTriggers(QAbstractItemView::NoEditTriggers); - m_list->setColumnCount(2); - m_list->setHorizontalHeaderLabels(QStringList() << tr("Name") << tr("Detail")); - - // Buttons - QPushButton* close_button = new QPushButton(tr("&Close"), this); - connect(close_button, &QAbstractButton::clicked, this, &save_data_info_dialog::close); - - // Button Layout - QHBoxLayout* hbox_actions = new QHBoxLayout(); - hbox_actions->addStretch(); //Add a stretch to make Close on the Right-Down corner of this dialog. - hbox_actions->addWidget(close_button); - - // Main Layout - QVBoxLayout* vbox_main = new QVBoxLayout(); - vbox_main->addWidget(m_list, 1); - vbox_main->addLayout(hbox_actions, 0); - vbox_main->setAlignment(Qt::AlignCenter); - setLayout(vbox_main); - - UpdateData(); - - m_list->horizontalHeader()->resizeSections(QHeaderView::ResizeToContents); - m_list->verticalHeader()->resizeSections(QHeaderView::ResizeToContents); - - QSize tableSize = QSize( - m_list->verticalHeader()->width() + m_list->horizontalHeader()->length() + m_list->frameWidth() * 2, - m_list->horizontalHeader()->height() + m_list->verticalHeader()->length() + m_list->frameWidth() * 2); - - // no minimum size needed because we always have same table size and row count - resize(sizeHint() - m_list->sizeHint() + tableSize); - -} - -//This is intended to write the information of save data to QTableView. -void save_data_info_dialog::UpdateData() -{ - m_list->clearContents(); - int num_entries = 4; // set this to number of members in struct - m_list->setRowCount(num_entries); - - //Maybe there should be more details of save data. - m_list->setItem(0, 0, new QTableWidgetItem(tr("User ID"))); - m_list->setItem(0, 1, new QTableWidgetItem("00000001 (Default)")); - - m_list->setItem(1, 0, new QTableWidgetItem(tr("Title"))); - m_list->setItem(1, 1, new QTableWidgetItem(qstr(m_entry.title))); - - m_list->setItem(2, 0, new QTableWidgetItem(tr("Subtitle"))); - m_list->setItem(2, 1, new QTableWidgetItem(qstr(m_entry.subtitle))); - - m_list->setItem(3, 0, new QTableWidgetItem(tr("Detail"))); - m_list->setItem(3, 1, new QTableWidgetItem(qstr(m_entry.details))); - - QImage img; - if (m_entry.iconBuf.size() > 0 && img.loadFromData((uchar*) &m_entry.iconBuf[0], m_entry.iconBuf.size(), "PNG")) - { - m_list->insertRow(0); - QTableWidgetItem* img_item = new QTableWidgetItem(); - img_item->setData(Qt::DecorationRole, QPixmap::fromImage(img)); - m_list->setItem(0, 0, new QTableWidgetItem(tr("Icon"))); - m_list->setItem(0, 1, img_item); - } -} - //Show up the savedata list, either to choose one to save/load or to manage saves. //I suggest to use function callbacks to give save data list or get save data entry. (Not implemented or stubbed) save_data_list_dialog::save_data_list_dialog(const std::vector& entries, s32 focusedEntry, bool is_saving, QWidget* parent) @@ -94,10 +24,9 @@ save_data_list_dialog::save_data_list_dialog(const std::vector& e //m_list->setItemDelegate(new table_item_delegate(this)); // to get rid of cell selection rectangles include "table_item_delegate.h" m_list->setSelectionMode(QAbstractItemView::SelectionMode::SingleSelection); m_list->setSelectionBehavior(QAbstractItemView::SelectRows); - m_list->setEditTriggers(QAbstractItemView::NoEditTriggers); m_list->setContextMenuPolicy(Qt::CustomContextMenu); - m_list->setColumnCount(3); - m_list->setHorizontalHeaderLabels(QStringList() << tr("Title") << tr("Subtitle") << tr("Save ID")); + m_list->setColumnCount(4); + m_list->setHorizontalHeaderLabels(QStringList() << tr("Title") << tr("Subtitle") << tr("Save ID") << tr("Entry Notes")); // Button Layout QHBoxLayout* hbox_action = new QHBoxLayout(); @@ -158,10 +87,19 @@ save_data_list_dialog::save_data_list_dialog(const std::vector& e LoadEntries(); UpdateList(); + connect(m_list, &QTableWidget::cellChanged, [&](int row, int col) { + int originalIndex = m_list->item(row, 0)->data(Qt::UserRole).toInt(); + SaveDataEntry originalEntry = m_save_entries[originalIndex]; + QString originalDirName = qstr(originalEntry.dirName); + gui_settings settings(this); + QVariantMap currNotes = settings.GetValue(GUI::m_saveNotes).toMap(); + currNotes[originalDirName] = m_list->item(row, col)->text(); + settings.SetValue(GUI::m_saveNotes, currNotes); + }); + m_list->setCurrentCell(focusedEntry, 0); } - void save_data_list_dialog::UpdateSelectionLabel() { if (selectedEntryLabel != nullptr) @@ -196,7 +134,7 @@ s32 save_data_list_dialog::GetSelection() void save_data_list_dialog::OnSort(int idx) { - if ((idx < m_sort_type_count) && (idx >= 0)) + if (idx >= 0) { if (idx == m_sortColumn) { @@ -300,16 +238,41 @@ void save_data_list_dialog::UpdateList(void) { m_list->clearContents(); m_list->setRowCount(m_save_entries.size()); + gui_settings settings(this); int row = 0; for (SaveDataEntry entry: m_save_entries) - { - QTableWidgetItem* item = new QTableWidgetItem(qstr(entry.title)); - item->setData(Qt::UserRole, row); // For sorting to work properly - m_list->setItem(row, 0, item); - m_list->setItem(row, 1, new QTableWidgetItem(qstr(entry.subtitle))); - m_list->setItem(row, 2, new QTableWidgetItem(qstr(entry.dirName))); + { + QString title = qstr(entry.title); + QString subtitle = qstr(entry.subtitle); + QString dirName = qstr(entry.dirName); + QTableWidgetItem* titleItem = new QTableWidgetItem(title); + titleItem->setData(Qt::UserRole, row); // For sorting to work properly + titleItem->setFlags(titleItem->flags() & ~Qt::ItemIsEditable); + + m_list->setItem(row, 0, titleItem); + QTableWidgetItem* subtitleItem = new QTableWidgetItem(subtitle); + subtitleItem->setFlags(subtitleItem->flags() & ~Qt::ItemIsEditable); + m_list->setItem(row, 1, subtitleItem); + + QTableWidgetItem* dirNameItem = new QTableWidgetItem(dirName); + dirNameItem->setFlags(dirNameItem->flags() & ~Qt::ItemIsEditable); + m_list->setItem(row, 2, dirNameItem); + + QVariantMap currNotes = settings.GetValue(GUI::m_saveNotes).toMap(); + QTableWidgetItem* noteItem = new QTableWidgetItem(); + noteItem->setFlags(noteItem->flags() | Qt::ItemIsEditable); + if (currNotes.contains(dirName)) + { + noteItem->setText(currNotes[dirName].toString()); + } + else + { + currNotes[dirName] = ""; + settings.SetValue(GUI::m_saveNotes, currNotes); + } + m_list->setItem(row, 3, noteItem); ++row; } diff --git a/rpcs3/rpcs3qt/save_data_utility.h b/rpcs3/rpcs3qt/save_data_list_dialog.h similarity index 69% rename from rpcs3/rpcs3qt/save_data_utility.h rename to rpcs3/rpcs3qt/save_data_list_dialog.h index 23f2e5b991..622a64bcec 100644 --- a/rpcs3/rpcs3qt/save_data_utility.h +++ b/rpcs3/rpcs3qt/save_data_list_dialog.h @@ -5,29 +5,9 @@ #include "Emu/Memory/Memory.h" #include "Emu/Cell/Modules/cellSaveData.h" -#include -#include -#include -#include #include +#include #include -#include -#include - -//Used to display the information of a savedata. -//Not sure about what information should be displayed. -class save_data_info_dialog :public QDialog -{ - Q_OBJECT - -public: - explicit save_data_info_dialog(const SaveDataEntry& save, QWidget* parent = nullptr); -private: - void UpdateData(); - - SaveDataEntry m_entry; - QTableWidget* m_list; -}; //Display a list of SaveData. Would need to be initialized. //Can also be used as a Save Data Chooser. @@ -58,7 +38,6 @@ private: QMenu* m_sort_options; - const int m_sort_type_count = 3; int m_sortColumn; bool m_sortAscending;