diff --git a/tools/cabana/mainwin.cc b/tools/cabana/mainwin.cc index d3caf492a6..c91fcf7100 100644 --- a/tools/cabana/mainwin.cc +++ b/tools/cabana/mainwin.cc @@ -606,7 +606,13 @@ void MainWindow::closeEvent(QCloseEvent *event) { settings.video_splitter_state = video_splitter->saveState(); } settings.message_header_state = messages_widget->saveHeaderState(); - settings.save(); + + auto status = settings.save(); + if (status == QSettings::AccessError) { + QString error = tr("Failed to write settings to [%1]: access denied").arg(Settings::filePath()); + qDebug() << error; + QMessageBox::warning(this, tr("Failed to write settings"), error); + } QWidget::closeEvent(event); } diff --git a/tools/cabana/settings.cc b/tools/cabana/settings.cc index 027dcb903f..ee345c490c 100644 --- a/tools/cabana/settings.cc +++ b/tools/cabana/settings.cc @@ -6,14 +6,13 @@ #include #include #include -#include #include #include "tools/cabana/util.h" Settings settings; -void Settings::save() { +QSettings::Status Settings::save() { QSettings s(filePath(), QSettings::IniFormat); s.setValue("fps", fps); s.setValue("max_cached_minutes", max_cached_minutes); @@ -35,6 +34,8 @@ void Settings::save() { s.setValue("log_path", log_path); s.setValue("drag_direction", drag_direction); s.setValue("suppress_defined_signals", suppress_defined_signals); + s.sync(); + return s.status(); } void Settings::load() { diff --git a/tools/cabana/settings.h b/tools/cabana/settings.h index f9eaa8ffad..42073a72de 100644 --- a/tools/cabana/settings.h +++ b/tools/cabana/settings.h @@ -7,6 +7,7 @@ #include #include #include +#include #include #define LIGHT_THEME 1 @@ -24,7 +25,7 @@ public: }; Settings() {} - void save(); + QSettings::Status save(); void load(); inline static QString filePath() { return QApplication::applicationDirPath() + "/settings"; }