cabana: display warning if failed to write settings (#29873)

* display warning if failed to write_settings

* use Settings::filePath()
old-commit-hash: f63dc51284
test-msgs
Dean Lee 2 years ago committed by GitHub
parent 75297f431b
commit 6c389dee7e
  1. 8
      tools/cabana/mainwin.cc
  2. 5
      tools/cabana/settings.cc
  3. 3
      tools/cabana/settings.h

@ -606,7 +606,13 @@ void MainWindow::closeEvent(QCloseEvent *event) {
settings.video_splitter_state = video_splitter->saveState(); settings.video_splitter_state = video_splitter->saveState();
} }
settings.message_header_state = messages_widget->saveHeaderState(); 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); QWidget::closeEvent(event);
} }

@ -6,14 +6,13 @@
#include <QFileDialog> #include <QFileDialog>
#include <QFormLayout> #include <QFormLayout>
#include <QPushButton> #include <QPushButton>
#include <QSettings>
#include <QStandardPaths> #include <QStandardPaths>
#include "tools/cabana/util.h" #include "tools/cabana/util.h"
Settings settings; Settings settings;
void Settings::save() { QSettings::Status Settings::save() {
QSettings s(filePath(), QSettings::IniFormat); QSettings s(filePath(), QSettings::IniFormat);
s.setValue("fps", fps); s.setValue("fps", fps);
s.setValue("max_cached_minutes", max_cached_minutes); s.setValue("max_cached_minutes", max_cached_minutes);
@ -35,6 +34,8 @@ void Settings::save() {
s.setValue("log_path", log_path); s.setValue("log_path", log_path);
s.setValue("drag_direction", drag_direction); s.setValue("drag_direction", drag_direction);
s.setValue("suppress_defined_signals", suppress_defined_signals); s.setValue("suppress_defined_signals", suppress_defined_signals);
s.sync();
return s.status();
} }
void Settings::load() { void Settings::load() {

@ -7,6 +7,7 @@
#include <QDialog> #include <QDialog>
#include <QGroupBox> #include <QGroupBox>
#include <QLineEdit> #include <QLineEdit>
#include <QSettings>
#include <QSpinBox> #include <QSpinBox>
#define LIGHT_THEME 1 #define LIGHT_THEME 1
@ -24,7 +25,7 @@ public:
}; };
Settings() {} Settings() {}
void save(); QSettings::Status save();
void load(); void load();
inline static QString filePath() { return QApplication::applicationDirPath() + "/settings"; } inline static QString filePath() { return QApplication::applicationDirPath() + "/settings"; }

Loading…
Cancel
Save