diff --git a/tools/cabana/mainwin.cc b/tools/cabana/mainwin.cc index 1468073017..517d0b1b73 100644 --- a/tools/cabana/mainwin.cc +++ b/tools/cabana/mainwin.cc @@ -29,11 +29,13 @@ MainWindow::MainWindow() : QMainWindow() { createStatusBar(); createShortcuts(); + // restore states restoreGeometry(settings.geometry); if (isMaximized()) { setGeometry(QApplication::desktop()->availableGeometry(this)); } restoreState(settings.window_state); + messages_widget->restoreHeaderState(settings.message_header_state); qRegisterMetaType("uint64_t"); qRegisterMetaType("ReplyMsgType"); @@ -285,11 +287,13 @@ void MainWindow::closeEvent(QCloseEvent *event) { if (floating_window) floating_window->deleteLater(); + // save states settings.geometry = saveGeometry(); settings.window_state = saveState(); if (!can->liveStreaming()) { settings.video_splitter_state = video_splitter->saveState(); } + settings.message_header_state = messages_widget->saveHeaderState(); settings.save(); QWidget::closeEvent(event); } diff --git a/tools/cabana/messageswidget.cc b/tools/cabana/messageswidget.cc index 353fe26340..69c6d298c0 100644 --- a/tools/cabana/messageswidget.cc +++ b/tools/cabana/messageswidget.cc @@ -1,7 +1,6 @@ #include "tools/cabana/messageswidget.h" #include -#include #include #include #include diff --git a/tools/cabana/messageswidget.h b/tools/cabana/messageswidget.h index 49f57b78e6..69fdd26170 100644 --- a/tools/cabana/messageswidget.h +++ b/tools/cabana/messageswidget.h @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -33,6 +34,8 @@ class MessagesWidget : public QWidget { public: MessagesWidget(QWidget *parent); void selectMessage(const QString &message_id); + QByteArray saveHeaderState() const { return table_widget->horizontalHeader()->saveState(); } + bool restoreHeaderState(const QByteArray &state) const { return table_widget->horizontalHeader()->restoreState(state); } signals: void msgSelectionChanged(const QString &message_id); diff --git a/tools/cabana/settings.cc b/tools/cabana/settings.cc index e06d149831..7d34d5dec0 100644 --- a/tools/cabana/settings.cc +++ b/tools/cabana/settings.cc @@ -23,6 +23,7 @@ void Settings::save() { s.setValue("window_state", window_state); s.setValue("geometry", geometry); s.setValue("video_splitter_state", video_splitter_state); + s.setValue("message_header_state", message_header_state); } void Settings::load() { @@ -36,6 +37,7 @@ void Settings::load() { window_state = s.value("window_state").toByteArray(); geometry = s.value("geometry").toByteArray(); video_splitter_state = s.value("video_splitter_state").toByteArray(); + message_header_state = s.value("message_header_state").toByteArray(); } // SettingsDlg diff --git a/tools/cabana/settings.h b/tools/cabana/settings.h index 86ebd73113..7b0cbc9f5d 100644 --- a/tools/cabana/settings.h +++ b/tools/cabana/settings.h @@ -22,6 +22,7 @@ public: QByteArray geometry; QByteArray video_splitter_state; QByteArray window_state; + QByteArray message_header_state; signals: void changed();