From 608601d9b7897c40dcfe7ff4c8cb7136c5e8b729 Mon Sep 17 00:00:00 2001 From: kalaposfos13 <153381648+kalaposfos13@users.noreply.github.com> Date: Wed, 27 Nov 2024 13:04:15 +0100 Subject: [PATCH] Added 'Reset to Default' button in GUI --- src/qt_gui/kbm_config_dialog.cpp | 32 ++++++++++++++++++++++++++++++++ src/qt_gui/kbm_config_dialog.h | 7 ++++--- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/src/qt_gui/kbm_config_dialog.cpp b/src/qt_gui/kbm_config_dialog.cpp index bb3b3ac16..61b8a812a 100644 --- a/src/qt_gui/kbm_config_dialog.cpp +++ b/src/qt_gui/kbm_config_dialog.cpp @@ -4,6 +4,7 @@ #include "kbm_config_dialog.h" #include "kbm_help_dialog.h" +#include #include #include #include "common/config.h" @@ -53,6 +54,7 @@ EditorDialog::EditorDialog(QWidget* parent) : QDialog(parent) { QPushButton* saveButton = new QPushButton("Save", this); QPushButton* cancelButton = new QPushButton("Cancel", this); QPushButton* helpButton = new QPushButton("Help", this); + QPushButton* defaultButton = new QPushButton("Default", this); // Layout for the game selection and buttons QHBoxLayout* topLayout = new QHBoxLayout(); @@ -60,6 +62,7 @@ EditorDialog::EditorDialog(QWidget* parent) : QDialog(parent) { topLayout->addStretch(); topLayout->addWidget(saveButton); topLayout->addWidget(cancelButton); + topLayout->addWidget(defaultButton); topLayout->addWidget(helpButton); // Main layout with editor and buttons @@ -74,6 +77,7 @@ EditorDialog::EditorDialog(QWidget* parent) : QDialog(parent) { connect(saveButton, &QPushButton::clicked, this, &EditorDialog::onSaveClicked); connect(cancelButton, &QPushButton::clicked, this, &EditorDialog::onCancelClicked); connect(helpButton, &QPushButton::clicked, this, &EditorDialog::onHelpClicked); + connect(defaultButton, &QPushButton::clicked, this, &EditorDialog::onResetToDefaultClicked); connect(gameComboBox, &QComboBox::currentTextChanged, this, &EditorDialog::onGameSelectionChanged); } @@ -179,6 +183,34 @@ void EditorDialog::onHelpClicked() { } } +void EditorDialog::onResetToDefaultClicked() { + bool default_default = gameComboBox->currentText() == "default"; + QString prompt = + default_default + ? "Do you want to reset your custom default config to the original default config?" + : "Do you want to reset this config to your custom default config?"; + QMessageBox::StandardButton reply = + QMessageBox::question(this, "Reset to Default", prompt, QMessageBox::Yes | QMessageBox::No); + + if (reply == QMessageBox::Yes) { + if (default_default) { + const auto default_file = Config::GetFoolproofKbmConfigFile("default"); + std::filesystem::remove(default_file); + } + const auto config_file = Config::GetFoolproofKbmConfigFile("default"); + QFile file(config_file); + + if (file.open(QIODevice::ReadOnly | QIODevice::Text)) { + QTextStream in(&file); + editor->setPlainText(in.readAll()); + file.close(); + } else { + QMessageBox::warning(this, "Error", "Could not open the file for reading"); + } + // saveFile(gameComboBox->currentText()); + } +} + bool EditorDialog::hasUnsavedChanges() { // Compare the current content with the original content to check if there are unsaved changes return editor->toPlainText() != originalConfig; diff --git a/src/qt_gui/kbm_config_dialog.h b/src/qt_gui/kbm_config_dialog.h index 062e7b0ad..f436b4a71 100644 --- a/src/qt_gui/kbm_config_dialog.h +++ b/src/qt_gui/kbm_config_dialog.h @@ -30,8 +30,9 @@ private: bool hasUnsavedChanges(); // Checks for unsaved changes private slots: - void onSaveClicked(); // Save button slot - void onCancelClicked(); // Slot for handling cancel button - void onHelpClicked(); // Slot for handling help button + void onSaveClicked(); // Save button slot + void onCancelClicked(); // Slot for handling cancel button + void onHelpClicked(); // Slot for handling help button + void onResetToDefaultClicked(); void onGameSelectionChanged(const QString& game); // Slot for game selection changes };