From bc622363519c0703a50ae67e409a533bcdbf286c Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 11:31:53 -0400 Subject: [PATCH] Save the general state of the docks (position, size, corner, etc) --- scwx-qt/source/scwx/qt/main/main_window.cpp | 20 ++++++++++++++++++- scwx-qt/source/scwx/qt/main/main_window.hpp | 1 + .../source/scwx/qt/settings/ui_settings.cpp | 14 +++++++++++-- .../source/scwx/qt/settings/ui_settings.hpp | 1 + 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 02506176..acf05368 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -460,7 +460,25 @@ void MainWindow::showEvent(QShowEvent* event) { QMainWindow::showEvent(event); - resizeDocks({ui->radarToolboxDock}, {194}, Qt::Horizontal); + // restore the UI state + std::string uiState = + settings::UiSettings::Instance().main_ui_state().GetValue(); + + bool restored = + restoreState(QByteArray::fromBase64(QByteArray::fromStdString(uiState))); + if (!restored) + { + resizeDocks({ui->radarToolboxDock}, {194}, Qt::Horizontal); + } +} + +void MainWindow::closeEvent(QCloseEvent* event) +{ + // save the UI state + QByteArray uiState = saveState().toBase64(); + settings::UiSettings::Instance().main_ui_state().StageValue(uiState.data()); + + QMainWindow::closeEvent(event); } void MainWindow::on_actionOpenNexrad_triggered() diff --git a/scwx-qt/source/scwx/qt/main/main_window.hpp b/scwx-qt/source/scwx/qt/main/main_window.hpp index 33043308..c6ea3a5f 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.hpp +++ b/scwx-qt/source/scwx/qt/main/main_window.hpp @@ -29,6 +29,7 @@ public: void keyPressEvent(QKeyEvent* ev) override final; void keyReleaseEvent(QKeyEvent* ev) override final; void showEvent(QShowEvent* event) override; + void closeEvent(QCloseEvent *event) override; signals: void ActiveMapMoved(double latitude, double longitude); diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp index 865b5c4a..c5536230 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp @@ -21,6 +21,7 @@ public: timelineExpanded_.SetDefault(true); alertDockVisible_.SetDefault(false); radarToolboxDockVisible_.SetDefault(true); + mainUIState_.SetDefault(""); } ~UiSettingsImpl() {} @@ -32,6 +33,7 @@ public: SettingsVariable timelineExpanded_ {"timeline_expanded"}; SettingsVariable alertDockVisible_ {"alert_dock_visible"}; SettingsVariable radarToolboxDockVisible_ {"radar_toolbox_dock_visible"}; + SettingsVariable mainUIState_ {"main_ui_state"}; }; UiSettings::UiSettings() : @@ -43,7 +45,8 @@ UiSettings::UiSettings() : &p->mapSettingsExpanded_, &p->timelineExpanded_, &p->alertDockVisible_, - &p->radarToolboxDockVisible_}); + &p->radarToolboxDockVisible_, + &p->mainUIState_}); SetDefaults(); } UiSettings::~UiSettings() = default; @@ -86,6 +89,11 @@ SettingsVariable& UiSettings::radar_toolbox_dock_visible() const return p->radarToolboxDockVisible_; } +SettingsVariable& UiSettings::main_ui_state() const +{ + return p->mainUIState_; +} + bool UiSettings::Shutdown() { @@ -99,6 +107,7 @@ bool UiSettings::Shutdown() dataChanged |= p->timelineExpanded_.Commit(); dataChanged |= p->alertDockVisible_.Commit(); dataChanged |= p->radarToolboxDockVisible_.Commit(); + dataChanged |= p->mainUIState_.Commit(); return dataChanged; } @@ -117,7 +126,8 @@ bool operator==(const UiSettings& lhs, const UiSettings& rhs) lhs.p->mapSettingsExpanded_ == rhs.p->mapSettingsExpanded_ && lhs.p->timelineExpanded_ == rhs.p->timelineExpanded_ && lhs.p->alertDockVisible_ == rhs.p->alertDockVisible_ && - lhs.p->radarToolboxDockVisible_ == rhs.p->radarToolboxDockVisible_); + lhs.p->radarToolboxDockVisible_ == rhs.p->radarToolboxDockVisible_ && + lhs.p->mainUIState_ == rhs.p->mainUIState_); } } // namespace settings diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp index f05ce5d3..9fe9880b 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp @@ -34,6 +34,7 @@ public: SettingsVariable& timeline_expanded() const; SettingsVariable& alert_dock_visible() const; SettingsVariable& radar_toolbox_dock_visible() const; + SettingsVariable& main_ui_state() const; bool Shutdown();