From 9bfa9cecce7074d5aa40593bbe040f249224e127 Mon Sep 17 00:00:00 2001 From: Don Gagne Date: Wed, 5 Nov 2014 14:50:10 -0800 Subject: [PATCH] Delete Settings from preferences --- src/QGCCore.cc | 5 +++++ src/QGCCore.h | 2 ++ src/ui/QGCSettingsWidget.cc | 20 ++++++++++++++++++++ src/ui/QGCSettingsWidget.h | 3 +++ src/ui/QGCSettingsWidget.ui | 16 ++++++++++++++++ 5 files changed, 46 insertions(+) diff --git a/src/QGCCore.cc b/src/QGCCore.cc index 7d4510efe..49b9fd78c 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 b1f73ce93..f3abe0180 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 e9f24a747..2c9e775fe 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 fb5d85d76..aca37c75e 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 28f48778c..768d04232 100644 --- a/src/ui/QGCSettingsWidget.ui +++ b/src/ui/QGCSettingsWidget.ui @@ -151,6 +151,22 @@ + + + + Danger Zone + + + + + + Delete all saved settings on next boot + + + + + + -- 2.22.0