diff --git a/src/QGCCore.cc b/src/QGCCore.cc index 7d4510efe9cca9ff0a0f94340cc7e7acce2ad0a8..49b9fd78cfb7b24d7d109984626f72fabaef0208 100644 --- a/src/QGCCore.cc +++ b/src/QGCCore.cc @@ -55,6 +55,7 @@ This file is part of the QGROUNDCONTROL project #include "MAVLinkSimulationLink.h" #include "SerialLink.h" +const char* QGCCore::deleteAllSettingsKey = "DeleteAllSettingsNextBoot"; const char* QGCCore::_settingsVersionKey = "SettingsVersion"; /** @@ -99,9 +100,13 @@ QGCCore::QGCCore(int &argc, char* argv[]) : QSettings settings; + // The setting will delete all settings on this boot + fClearSettingsOptions |= settings.contains(deleteAllSettingsKey); + if (fClearSettingsOptions) { // User requested settings to be cleared on command line settings.clear(); + settings.setValue(_settingsVersionKey, QGC_SETTINGS_VERSION); settings.sync(); } diff --git a/src/QGCCore.h b/src/QGCCore.h index b1f73ce935719185f24292a89c0d01fe661d503d..f3abe01803d580bdb0fcfef2a242622acfc5c9ad 100644 --- a/src/QGCCore.h +++ b/src/QGCCore.h @@ -60,6 +60,8 @@ public: /// @brief Initialize the applicaation. /// @return false: init failed, app should exit bool init(void); + + static const char* deleteAllSettingsKey; protected: void startLinkManager(); diff --git a/src/ui/QGCSettingsWidget.cc b/src/ui/QGCSettingsWidget.cc index e9f24a747d9cb1203c37e004990c80a50eb1f82e..2c9e775fe2e4a4bc9032ff2ff46c467ca5e17b6d 100644 --- a/src/ui/QGCSettingsWidget.cc +++ b/src/ui/QGCSettingsWidget.cc @@ -10,6 +10,7 @@ #include "MAVLinkProtocol.h" #include "MAVLinkSettingsWidget.h" #include "GAudioOutput.h" +#include "QGCCore.h" QGCSettingsWidget::QGCSettingsWidget(JoystickInput *joystick, QWidget *parent, Qt::WindowFlags flags) : QDialog(parent, flags), @@ -54,6 +55,8 @@ QGCSettingsWidget::QGCSettingsWidget(JoystickInput *joystick, QWidget *parent, Q // Dock widget title bars ui->titleBarCheckBox->setChecked(mainWindow->dockWidgetTitleBarsEnabled()); connect(ui->titleBarCheckBox,SIGNAL(clicked(bool)),mainWindow,SLOT(enableDockWidgetTitleBars(bool))); + + connect(ui->deleteSettings, &QAbstractButton::toggled, this, &QGCSettingsWidget::_deleteSettingsToggled); // Custom mode @@ -197,3 +200,20 @@ void QGCSettingsWidget::selectCustomMode(int mode) MainWindow::instance()->setCustomMode(static_cast(ui->customModeComboBox->itemData(mode).toInt())); MainWindow::instance()->showInfoMessage(tr("Please restart QGroundControl"), tr("The optimization selection was changed. The application needs to be closed and restarted to put all optimizations into effect.")); } + +void QGCSettingsWidget::_deleteSettingsToggled(bool checked) +{ + if (checked){ + QMessageBox::StandardButton answer = QMessageBox::question(this, + tr("Delete Settings"), + tr("All saved settgings will be deleted the next time you start QGroundControl. Is this really what you want?"), + QMessageBox::Yes | QMessageBox::No, + QMessageBox::No); + if (answer == QMessageBox::Yes) { + QSettings settings; + settings.setValue(QGCCore::deleteAllSettingsKey, 1); + } else { + ui->deleteSettings->setChecked(false); + } + } +} diff --git a/src/ui/QGCSettingsWidget.h b/src/ui/QGCSettingsWidget.h index fb5d85d76bc84ca6887cf890de986aa502c8afa0..aca37c75ecb3c361e43c2f6cd68681731cc603a7 100644 --- a/src/ui/QGCSettingsWidget.h +++ b/src/ui/QGCSettingsWidget.h @@ -24,6 +24,9 @@ public slots: void selectStylesheet(); void selectCustomMode(int mode); +private slots: + void _deleteSettingsToggled(bool checked); + private: MainWindow* mainWindow; Ui::QGCSettingsWidget* ui; diff --git a/src/ui/QGCSettingsWidget.ui b/src/ui/QGCSettingsWidget.ui index 28f48778ca5f77243e1646090c0191d6605c1b2e..768d042323b5d68917b6619bf19616f683cac87f 100644 --- a/src/ui/QGCSettingsWidget.ui +++ b/src/ui/QGCSettingsWidget.ui @@ -151,6 +151,22 @@ + + + + Danger Zone + + + + + + Delete all saved settings on next boot + + + + + +