diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -94,16 +94,23 @@ MainWindow::MainWindow(QWidget *parent) // init UI signals - // menu signals + // Help menu signals QObject::connect(ui->actionHelpAbout, &QAction::triggered, &aboutDialog, &QWidget::show); QObject::connect(ui->actionReportBug, &QAction::triggered, [](){QDesktopServices::openUrl(QUrl(BUG_REPORT_URL));}); + // File menu signals QObject::connect(ui->actionExportCsv, &QAction::triggered, this, &MainWindow::onExportCsv); + QObject::connect(ui->actionSaveSettings, &QAction::triggered, + this, &MainWindow::onSaveSettings); + + QObject::connect(ui->actionLoadSettings, &QAction::triggered, + this, &MainWindow::onLoadSettings); + ui->actionQuit->setShortcutContext(Qt::ApplicationShortcut); QObject::connect(ui->actionQuit, &QAction::triggered, @@ -428,3 +435,27 @@ void MainWindow::loadSettings(QSettings* move(settings->value("pos", pos()).toPoint()); settings->endGroup(); } + +void MainWindow::onSaveSettings() +{ + QString fileName = QFileDialog::getSaveFileName( + this, tr("Save Settings"), QString(), "INI (*.ini)"); + + if (!fileName.isNull()) // user canceled + { + QSettings settings(fileName, QSettings::IniFormat); + saveSettings(&settings); + } +} + +void MainWindow::onLoadSettings() +{ + QString fileName = QFileDialog::getOpenFileName( + this, tr("Load Settings"), QString(), "INI (*.ini)"); + + if (!fileName.isNull()) // user canceled + { + QSettings settings(fileName, QSettings::IniFormat); + loadSettings(&settings); + } +} diff --git a/src/mainwindow.h b/src/mainwindow.h --- a/src/mainwindow.h +++ b/src/mainwindow.h @@ -98,6 +98,8 @@ private slots: void onSpsChanged(unsigned sps); void enableDemo(bool enabled); void onExportCsv(); + void onSaveSettings(); + void onLoadSettings(); }; #endif // MAINWINDOW_H diff --git a/src/mainwindow.ui b/src/mainwindow.ui --- a/src/mainwindow.ui +++ b/src/mainwindow.ui @@ -105,6 +105,8 @@ File + + @@ -197,6 +199,22 @@ Report a Bug on SerialPlot Website + + + Save Settings + + + Save Settings to a File + + + + + Load Settings + + + Load Settings from a File + +