Only fire apply event when settings are actually applied
Signed-off-by: TheKodeToad <TheKodeToad@proton.me>
This commit is contained in:
parent
8732e17db9
commit
adf2ed0849
7 changed files with 26 additions and 14 deletions
|
@ -1564,9 +1564,9 @@ void Application::ShowGlobalSettings(class QWidget* parent, QString open_page)
|
||||||
{
|
{
|
||||||
SettingsObject::Lock lock(APPLICATION->settings());
|
SettingsObject::Lock lock(APPLICATION->settings());
|
||||||
PageDialog dlg(m_globalSettingsProvider.get(), open_page, parent);
|
PageDialog dlg(m_globalSettingsProvider.get(), open_page, parent);
|
||||||
|
connect(&dlg, &PageDialog::applied, this, &Application::globalSettingsApplied);
|
||||||
dlg.exec();
|
dlg.exec();
|
||||||
}
|
}
|
||||||
emit globalSettingsClosed();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow* Application::showMainWindow(bool minimized)
|
MainWindow* Application::showMainWindow(bool minimized)
|
||||||
|
|
|
@ -197,7 +197,7 @@ class Application : public QApplication {
|
||||||
signals:
|
signals:
|
||||||
void updateAllowedChanged(bool status);
|
void updateAllowedChanged(bool status);
|
||||||
void globalSettingsAboutToOpen();
|
void globalSettingsAboutToOpen();
|
||||||
void globalSettingsClosed();
|
void globalSettingsApplied();
|
||||||
int currentCatChanged(int index);
|
int currentCatChanged(int index);
|
||||||
|
|
||||||
void oauthReplyRecieved(QVariantMap);
|
void oauthReplyRecieved(QVariantMap);
|
||||||
|
|
|
@ -111,7 +111,7 @@ InstanceWindow::InstanceWindow(InstancePtr instance, QWidget* parent) : QMainWin
|
||||||
m_container->addButtons(horizontalLayout);
|
m_container->addButtons(horizontalLayout);
|
||||||
|
|
||||||
connect(m_instance.get(), &BaseInstance::profilerChanged, this, &InstanceWindow::updateButtons);
|
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
|
// restore window state
|
||||||
|
|
|
@ -351,7 +351,7 @@ MainWindow::MainWindow(QWidget* parent) : QMainWindow(parent), ui(new Ui::MainWi
|
||||||
connect(APPLICATION->instances().get(), &InstanceList::instanceSelectRequest, this, &MainWindow::instanceSelectRequest);
|
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
|
// 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_statusLeft = new QLabel(tr("No instance selected"), this);
|
||||||
m_statusCenter = new QLabel(tr("Total playtime: 0s"), this);
|
m_statusCenter = new QLabel(tr("Total playtime: 0s"), this);
|
||||||
|
|
|
@ -43,20 +43,26 @@ PageDialog::PageDialog(BasePageProvider* pageProvider, QString defaultId, QWidge
|
||||||
buttons->setContentsMargins(6, 0, 6, 0);
|
buttons->setContentsMargins(6, 0, 6, 0);
|
||||||
m_container->addButtons(buttons);
|
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::Cancel), &QPushButton::clicked, this, &PageDialog::reject);
|
||||||
connect(buttons->button(QDialogButtonBox::Help), &QPushButton::clicked, m_container, &PageContainer::help);
|
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()));
|
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()) {
|
if (m_container->prepareToClose()) {
|
||||||
qDebug() << "Paged dialog close approved";
|
qDebug() << "Paged dialog close approved";
|
||||||
APPLICATION->settings()->set("PagedGeometry", saveGeometry().toBase64());
|
emit applied();
|
||||||
qDebug() << "Paged dialog geometry saved";
|
}
|
||||||
close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PageDialog::storeGeometry()
|
||||||
|
{
|
||||||
|
APPLICATION->settings()->set("PagedGeometry", saveGeometry().toBase64());
|
||||||
|
qDebug() << "Paged dialog geometry saved";
|
||||||
}
|
}
|
||||||
|
|
|
@ -25,8 +25,14 @@ class PageDialog : public QDialog {
|
||||||
explicit PageDialog(BasePageProvider* pageProvider, QString defaultId = QString(), QWidget* parent = 0);
|
explicit PageDialog(BasePageProvider* pageProvider, QString defaultId = QString(), QWidget* parent = 0);
|
||||||
virtual ~PageDialog() {}
|
virtual ~PageDialog() {}
|
||||||
|
|
||||||
private:
|
signals:
|
||||||
void applyAndClose();
|
void applied();
|
||||||
|
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void onAccepted();
|
||||||
|
void storeGeometry();
|
||||||
|
|
||||||
|
private:
|
||||||
PageContainer* m_container;
|
PageContainer* m_container;
|
||||||
};
|
};
|
||||||
|
|
|
@ -48,7 +48,7 @@ class InstanceSettingsPage : public MinecraftSettingsWidget, public BasePage {
|
||||||
explicit InstanceSettingsPage(MinecraftInstancePtr instance, QWidget* parent = nullptr) : MinecraftSettingsWidget(std::move(instance), parent)
|
explicit InstanceSettingsPage(MinecraftInstancePtr instance, QWidget* parent = nullptr) : MinecraftSettingsWidget(std::move(instance), parent)
|
||||||
{
|
{
|
||||||
connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::saveSettings);
|
connect(APPLICATION, &Application::globalSettingsAboutToOpen, this, &InstanceSettingsPage::saveSettings);
|
||||||
connect(APPLICATION, &Application::globalSettingsClosed, this, &InstanceSettingsPage::loadSettings);
|
connect(APPLICATION, &Application::globalSettingsApplied, this, &InstanceSettingsPage::loadSettings);
|
||||||
}
|
}
|
||||||
~InstanceSettingsPage() override {}
|
~InstanceSettingsPage() override {}
|
||||||
QString displayName() const override { return tr("Settings"); }
|
QString displayName() const override { return tr("Settings"); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue