Qt: Move save states directory to memory card page

Getting rid of folders, and this is the closest logical place for it..
pull/3715/head
Stenzek 5 months ago
parent df47c9f53c
commit e3423e1a57
No known key found for this signature in database

@ -21,9 +21,6 @@ FolderSettingsWidget::FolderSettingsWidget(SettingsWindow* dialog, QWidget* pare
SettingWidgetBinder::BindWidgetToFolderSetting(sif, m_ui.covers, m_ui.coversBrowse, tr("Select Covers Directory"),
m_ui.coversOpen, m_ui.coversReset, "Folders", "Covers",
Path::Combine(EmuFolders::DataRoot, "covers"));
SettingWidgetBinder::BindWidgetToFolderSetting(
sif, m_ui.saveStates, m_ui.saveStatesBrowse, tr("Select Save States Directory"), m_ui.saveStatesOpen,
m_ui.saveStatesReset, "Folders", "SaveStates", Path::Combine(EmuFolders::DataRoot, "savestates"));
SettingWidgetBinder::BindWidgetToFolderSetting(
sif, m_ui.screenshots, m_ui.screenshotsBrowse, tr("Select Screenshots Directory"), m_ui.screenshotsOpen,
m_ui.screenshotsReset, "Folders", "Screenshots", Path::Combine(EmuFolders::DataRoot, "screenshots"));

@ -103,46 +103,6 @@
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Save States Directory</string>
</property>
<layout class="QGridLayout" name="gridLayout_2">
<item row="0" column="0" colspan="4">
<widget class="QLabel" name="label_2">
<property name="text">
<string>Used for storing save states.</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QLineEdit" name="saveStates"/>
</item>
<item row="1" column="1">
<widget class="QPushButton" name="saveStatesBrowse">
<property name="text">
<string>Browse...</string>
</property>
</widget>
</item>
<item row="1" column="2">
<widget class="QPushButton" name="saveStatesOpen">
<property name="text">
<string>Open...</string>
</property>
</widget>
</item>
<item row="1" column="3">
<widget class="QPushButton" name="saveStatesReset">
<property name="text">
<string>Reset</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QGroupBox" name="groupBox">
<property name="title">

@ -20,6 +20,7 @@
#include <QtCore/QUrl>
#include <QtWidgets/QComboBox>
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QGridLayout>
#include <QtWidgets/QGroupBox>
#include <QtWidgets/QLabel>
#include <QtWidgets/QLineEdit>
@ -42,7 +43,7 @@ MemoryCardSettingsWidget::~MemoryCardSettingsWidget() = default;
void MemoryCardSettingsWidget::createUi(SettingsWindow* dialog)
{
QVBoxLayout* layout = new QVBoxLayout(this);
QVBoxLayout* const layout = new QVBoxLayout(this);
layout->setContentsMargins(0, 0, 0, 0);
for (int i = 0; i < static_cast<int>(m_port_ui.size()); i++)
@ -53,26 +54,71 @@ void MemoryCardSettingsWidget::createUi(SettingsWindow* dialog)
}
{
QGroupBox* box = new QGroupBox(tr("Game-Specific Card Settings"), this);
QVBoxLayout* box_layout = new QVBoxLayout(box);
QPushButton* browse = new QPushButton(tr("Browse..."), box);
QPushButton* open_memcards = new QPushButton(tr("Open..."), box);
QPushButton* reset = new QPushButton(qApp->translate("QPlatformTheme", "Reset"), box);
QGroupBox* const box = new QGroupBox(tr("Save Locations"), this);
QGridLayout* const box_layout = new QGridLayout(box);
layout->addWidget(box);
{
QLabel* label = new QLabel(tr("Memory Card Directory:"), box);
box_layout->addWidget(label);
QHBoxLayout* const hbox = new QHBoxLayout();
QLabel* const label = new QLabel(tr("Memory Cards:"), box);
box_layout->addWidget(label, 0, 0);
QLineEdit* const directory = new QLineEdit(box);
QPushButton* const browse = new QPushButton(box);
browse->setToolTip(tr("Browse..."));
browse->setIcon(QIcon::fromTheme("folder-open-line"));
QPushButton* const open = new QPushButton(box);
open->setToolTip(tr("Open..."));
open->setIcon(QIcon::fromTheme("open-folder-line"));
QPushButton* const reset = new QPushButton(box);
reset->setToolTip(qApp->translate("QPlatformTheme", "Reset"));
reset->setIcon(QIcon::fromTheme("delete-back-2-line"));
hbox->addWidget(directory);
hbox->addWidget(browse);
hbox->addWidget(open);
hbox->addWidget(reset);
box_layout->addLayout(hbox, 0, 1);
SettingWidgetBinder::BindWidgetToFolderSetting(m_dialog->getSettingsInterface(), directory, browse,
tr("Select Memory Card Directory"), open, reset, "MemoryCards",
"Directory", Path::Combine(EmuFolders::DataRoot, "memcards"));
QHBoxLayout* hbox = new QHBoxLayout();
m_memory_card_directory = new QLineEdit(box);
dialog->registerWidgetHelp(directory, tr("Memory Cards Location"), tr("Default"),
tr("Specifies the directory where memory cards will be saved."));
}
hbox->addWidget(m_memory_card_directory);
{
QHBoxLayout* const hbox = new QHBoxLayout();
QLabel* const label = new QLabel(tr("Save States:"), box);
box_layout->addWidget(label, 1, 0);
QLineEdit* const directory = new QLineEdit(box);
QPushButton* const browse = new QPushButton(box);
browse->setToolTip(tr("Browse..."));
browse->setIcon(QIcon::fromTheme("folder-open-line"));
QPushButton* const open = new QPushButton(box);
open->setToolTip(tr("Open..."));
open->setIcon(QIcon::fromTheme("open-folder-line"));
QPushButton* const reset = new QPushButton(box);
reset->setToolTip(qApp->translate("QPlatformTheme", "Reset"));
reset->setIcon(QIcon::fromTheme("delete-back-2-line"));
hbox->addWidget(directory);
hbox->addWidget(browse);
hbox->addWidget(open_memcards);
hbox->addWidget(open);
hbox->addWidget(reset);
box_layout->addLayout(hbox, 1, 1);
box_layout->addLayout(hbox);
SettingWidgetBinder::BindWidgetToFolderSetting(m_dialog->getSettingsInterface(), directory, browse,
tr("Select Save States Directory"), open, reset, "Folders",
"SaveStates", Path::Combine(EmuFolders::DataRoot, "savestates"));
dialog->registerWidgetHelp(directory, tr("Save States Location"), tr("Default"),
tr("Specifies the directory where save states will be saved."));
}
}
{
QGroupBox* const box = new QGroupBox(tr("Game-Specific Card Settings"), this);
QVBoxLayout* const box_layout = new QVBoxLayout(box);
layout->addWidget(box);
QCheckBox* playlist_title_as_game_title = new QCheckBox(tr("Use Single Card For Multi-Disc Games"), box);
SettingWidgetBinder::BindWidgetToBoolSetting(m_dialog->getSettingsInterface(), playlist_title_as_game_title,
@ -86,24 +132,18 @@ void MemoryCardSettingsWidget::createUi(SettingsWindow* dialog)
box_layout->addWidget(QtUtils::CreateHorizontalLine(box));
{
QHBoxLayout* hbox = new QHBoxLayout();
QLabel* label = new QLabel(
QHBoxLayout* const hbox = new QHBoxLayout();
QLabel* const label = new QLabel(
tr("The memory card editor enables you to move saves between cards, as well as import cards of other formats."),
box);
label->setWordWrap(true);
hbox->addWidget(label, 1);
QPushButton* button = new QPushButton(tr("Memory Card Editor..."), box);
QPushButton* const button = new QPushButton(tr("Memory Card Editor..."), box);
connect(button, &QPushButton::clicked, []() { g_main_window->openMemoryCardEditor(QString(), QString()); });
hbox->addWidget(button);
box_layout->addLayout(hbox);
}
layout->addWidget(box);
SettingWidgetBinder::BindWidgetToFolderSetting(
m_dialog->getSettingsInterface(), m_memory_card_directory, browse, tr("Select Memory Card Directory"),
open_memcards, reset, "MemoryCards", "Directory", Path::Combine(EmuFolders::DataRoot, "memcards"));
}
layout->addStretch(1);

@ -50,5 +50,4 @@ private:
void updateMemoryCardPath(int index);
std::array<PortSettingsUI, 2> m_port_ui = {};
QLineEdit* m_memory_card_directory = nullptr;
};

@ -96,6 +96,7 @@
<file>icons/black/svg/multi-discs.svg</file>
<file>icons/black/svg/negcon-line.svg</file>
<file>icons/black/svg/numbers-fill.svg</file>
<file>icons/black/svg/open-folder-line.svg</file>
<file>icons/black/svg/paint-brush-line.svg</file>
<file>icons/black/svg/pause-line.svg</file>
<file>icons/black/svg/play-circle-line.svg</file>
@ -262,6 +263,7 @@
<file>icons/white/svg/multi-discs.svg</file>
<file>icons/white/svg/negcon-line.svg</file>
<file>icons/white/svg/numbers-fill.svg</file>
<file>icons/white/svg/open-folder-line.svg</file>
<file>icons/white/svg/paint-brush-line.svg</file>
<file>icons/white/svg/pause-line.svg</file>
<file>icons/white/svg/play-circle-line.svg</file>

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill="#ffffff" d="M384 64C366.3 64 352 78.3 352 96C352 113.7 366.3 128 384 128L466.7 128L265.3 329.4C252.8 341.9 252.8 362.2 265.3 374.7C277.8 387.2 298.1 387.2 310.6 374.7L512 173.3L512 256C512 273.7 526.3 288 544 288C561.7 288 576 273.7 576 256L576 96C576 78.3 561.7 64 544 64L384 64zM144 160C99.8 160 64 195.8 64 240L64 496C64 540.2 99.8 576 144 576L400 576C444.2 576 480 540.2 480 496L480 416C480 398.3 465.7 384 448 384C430.3 384 416 398.3 416 416L416 496C416 504.8 408.8 512 400 512L144 512C135.2 512 128 504.8 128 496L128 240C128 231.2 135.2 224 144 224L224 224C241.7 224 256 209.7 256 192C256 174.3 241.7 160 224 160L144 160z"/></svg>

After

Width:  |  Height:  |  Size: 862 B

@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 640"><!--!Font Awesome Free v7.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2026 Fonticons, Inc.--><path fill="#ffffff" d="M384 64C366.3 64 352 78.3 352 96C352 113.7 366.3 128 384 128L466.7 128L265.3 329.4C252.8 341.9 252.8 362.2 265.3 374.7C277.8 387.2 298.1 387.2 310.6 374.7L512 173.3L512 256C512 273.7 526.3 288 544 288C561.7 288 576 273.7 576 256L576 96C576 78.3 561.7 64 544 64L384 64zM144 160C99.8 160 64 195.8 64 240L64 496C64 540.2 99.8 576 144 576L400 576C444.2 576 480 540.2 480 496L480 416C480 398.3 465.7 384 448 384C430.3 384 416 398.3 416 416L416 496C416 504.8 408.8 512 400 512L144 512C135.2 512 128 504.8 128 496L128 240C128 231.2 135.2 224 144 224L224 224C241.7 224 256 209.7 256 192C256 174.3 241.7 160 224 160L144 160z"/></svg>

After

Width:  |  Height:  |  Size: 862 B

Loading…
Cancel
Save