Only fire apply event when settings are actually applied

Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
TheKodeToad
2025-03-23 15:22:17 +00:00
parent 8732e17db9
commit adf2ed0849
7 changed files with 26 additions and 14 deletions

View File

@ -1564,9 +1564,9 @@ void Application::ShowGlobalSettings(class QWidget* parent, QString open_page)
{
SettingsObject::Lock lock(APPLICATION->settings());
PageDialog dlg(m_globalSettingsProvider.get(), open_page, parent);
connect(&dlg, &PageDialog::applied, this, &Application::globalSettingsApplied);
dlg.exec();
}
emit globalSettingsClosed();
}
MainWindow* Application::showMainWindow(bool minimized)

View File

@ -197,7 +197,7 @@ class Application : public QApplication {
signals:
void updateAllowedChanged(bool status);
void globalSettingsAboutToOpen();
void globalSettingsClosed();
void globalSettingsApplied();
int currentCatChanged(int index);
void oauthReplyRecieved(QVariantMap);

View File

@ -111,7 +111,7 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWin
m_container->addButtons(horizontalLayout);
connect(m_instance.get(), &BaseInstance::profilerChanged, this, &InstanceWindow::updateButtons);
connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceWindow::updateButtons);
connect(APPLICATION, &Application::globalSettingsApplied, this, &InstanceWindow::updateButtons);
}
// restore window state

View File

@ -351,7 +351,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
connect(APPLICATION->instances().get(), &InstanceList::instanceSelectRequest, this, &MainWindow::instanceSelectRequest);
// When the global settings page closes, we want to know about it and update our state
connect(APPLICATION, &Application::globalSettingsClosed, this, &MainWindow::globalSettingsClosed);
connect(APPLICATION, &Application::globalSettingsApplied, this, &MainWindow::globalSettingsClosed);
m_statusLeft = new QLabel(tr("No instance selected"), this);
m_statusCenter = new QLabel(tr("Total playtime: 0s"), this);

View File

@ -43,20 +43,26 @@ PageDialog::PageDialog(BasePageProvider* pageProvider, QString defaultId, QWidge
buttons->setContentsMargins(6, 0, 6, 0);
m_container->addButtons(buttons);
connect(buttons->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &PageDialog::applyAndClose);
connect(buttons->button(QDialogButtonBox::Ok), &QPushButton::clicked, this, &PageDialog::accept);
connect(buttons->button(QDialogButtonBox::Cancel), &QPushButton::clicked, this, &PageDialog::reject);
connect(buttons->button(QDialogButtonBox::Help), &QPushButton::clicked, m_container, &PageContainer::help);
connect(this, &QDialog::accepted, this, &PageDialog::onAccepted);
connect(this, &QDialog::rejected, this, &PageDialog::storeGeometry);
restoreGeometry(QByteArray::fromBase64(APPLICATION->settings()->get("PagedGeometry").toByteArray()));
}
void PageDialog::applyAndClose()
void PageDialog::onAccepted()
{
qDebug() << "Paged dialog apply and close requested";
qDebug() << "Paged dialog accepted";
if (m_container->prepareToClose()) {
qDebug() << "Paged dialog close approved";
APPLICATION->settings()->set("PagedGeometry", saveGeometry().toBase64());
qDebug() << "Paged dialog geometry saved";
close();
emit applied();
}
}
void PageDialog::storeGeometry()
{
APPLICATION->settings()->set("PagedGeometry", saveGeometry().toBase64());
qDebug() << "Paged dialog geometry saved";
}

View File

@ -25,8 +25,14 @@ class PageDialog : public QDialog {
explicit PageDialog(BasePageProvider* pageProvider, QString defaultId = QString(), QWidget* parent = 0);
virtual ~PageDialog() {}
private:
void applyAndClose();
signals:
void applied();
private slots:
void onAccepted();
void storeGeometry();
private:
PageContainer* m_container;
};

View File

@ -48,7 +48,7 @@ class InstanceSettingsPage : public MinecraftSettingsWidget, public BasePage {
explicit InstanceSettingsPage(MinecraftInstancePtr instance, QWidget* parent = nullptr) : MinecraftSettingsWidget(std::move(instance), parent)
{
connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::saveSettings);
connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings);
connect(APPLICATION, &Application::globalSettingsApplied, this, &InstanceSettingsPage::loadSettings);
}
~InstanceSettingsPage() override {}
QString displayName() const override { return tr("Settings"); }