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); + } +}