From ef6494f4c3c5d4eebea6ba90bfa5581c4c7da21f Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 10:02:23 -0400 Subject: [PATCH 01/11] add override to SettingsVariable::Commit. Fixes error for clangd. --- scwx-qt/source/scwx/qt/settings/settings_variable.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scwx-qt/source/scwx/qt/settings/settings_variable.hpp b/scwx-qt/source/scwx/qt/settings/settings_variable.hpp index 581ebcbe..4141f96b 100644 --- a/scwx-qt/source/scwx/qt/settings/settings_variable.hpp +++ b/scwx-qt/source/scwx/qt/settings/settings_variable.hpp @@ -91,7 +91,7 @@ public: * @return true if the staged value was committed, false if no staged value * is present. */ - bool Commit(); + bool Commit() override; /** * Clears the staged value of the settings variable. From 3ab18392b39ec073dead1bac305c385b8ff2bf29 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 10:04:06 -0400 Subject: [PATCH 02/11] save alert dock's visibility on exit --- scwx-qt/source/scwx/qt/main/main_window.cpp | 3 +-- scwx-qt/source/scwx/qt/settings/ui_settings.cpp | 14 ++++++++++++-- scwx-qt/source/scwx/qt/settings/ui_settings.hpp | 1 + scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp | 10 ++++++++++ 4 files changed, 24 insertions(+), 4 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 4046e3bd..f3534338 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -279,7 +279,6 @@ MainWindow::MainWindow(QWidget* parent) : // Configure Alert Dock p->alertDockWidget_ = new ui::AlertDockWidget(this); - p->alertDockWidget_->setVisible(false); addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_); // GPS Info Dialog @@ -294,7 +293,6 @@ MainWindow::MainWindow(QWidget* parent) : ui->menuView->insertAction(ui->actionAlerts, p->alertDockWidget_->toggleViewAction()); p->alertDockWidget_->toggleViewAction()->setText(tr("&Alerts")); - ui->actionAlerts->setVisible(false); ui->menuDebug->menuAction()->setVisible( settings::GeneralSettings::Instance().debug_enabled().GetValue()); @@ -803,6 +801,7 @@ void MainWindowImpl::ConfigureUiSettings() mapSettingsGroup_->SetExpanded( uiSettings.map_settings_expanded().GetValue()); timelineGroup_->SetExpanded(uiSettings.timeline_expanded().GetValue()); + alertDockWidget_->setVisible(uiSettings.alert_dock_visible().GetValue()); connect(level2ProductsGroup_, &ui::CollapsibleGroup::StateChanged, diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp index dc131d96..647732fa 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp @@ -19,6 +19,7 @@ public: level3ProductsExpanded_.SetDefault(true); mapSettingsExpanded_.SetDefault(true); timelineExpanded_.SetDefault(true); + alertDockVisible_.SetDefault(false); } ~UiSettingsImpl() {} @@ -28,6 +29,7 @@ public: SettingsVariable level3ProductsExpanded_ {"level3_products_expanded"}; SettingsVariable mapSettingsExpanded_ {"map_settings_expanded"}; SettingsVariable timelineExpanded_ {"timeline_expanded"}; + SettingsVariable alertDockVisible_ {"alert_dock_visible"}; }; UiSettings::UiSettings() : @@ -37,7 +39,8 @@ UiSettings::UiSettings() : &p->level2SettingsExpanded_, &p->level3ProductsExpanded_, &p->mapSettingsExpanded_, - &p->timelineExpanded_}); + &p->timelineExpanded_, + &p->alertDockVisible_}); SetDefaults(); } UiSettings::~UiSettings() = default; @@ -70,6 +73,11 @@ SettingsVariable& UiSettings::timeline_expanded() const return p->timelineExpanded_; } +SettingsVariable& UiSettings::alert_dock_visible() const +{ + return p->alertDockVisible_; +} + bool UiSettings::Shutdown() { bool dataChanged = false; @@ -80,6 +88,7 @@ bool UiSettings::Shutdown() dataChanged |= p->level3ProductsExpanded_.Commit(); dataChanged |= p->mapSettingsExpanded_.Commit(); dataChanged |= p->timelineExpanded_.Commit(); + dataChanged |= p->alertDockVisible_.Commit(); return dataChanged; } @@ -96,7 +105,8 @@ bool operator==(const UiSettings& lhs, const UiSettings& rhs) lhs.p->level2SettingsExpanded_ == rhs.p->level2SettingsExpanded_ && lhs.p->level3ProductsExpanded_ == rhs.p->level3ProductsExpanded_ && lhs.p->mapSettingsExpanded_ == rhs.p->mapSettingsExpanded_ && - lhs.p->timelineExpanded_ == rhs.p->timelineExpanded_); + lhs.p->timelineExpanded_ == rhs.p->timelineExpanded_ && + lhs.p->alertDockVisible_ == rhs.p->alertDockVisible_); } } // 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 e3045bcb..d03812a6 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp @@ -32,6 +32,7 @@ public: SettingsVariable& level3_products_expanded() const; SettingsVariable& map_settings_expanded() const; SettingsVariable& timeline_expanded() const; + SettingsVariable& alert_dock_visible() const; bool Shutdown(); diff --git a/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp b/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp index 61fd160a..242c847e 100644 --- a/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp +++ b/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #include #include @@ -81,6 +82,15 @@ AlertDockWidget::AlertDockWidget(QWidget* parent) : // Check Active Alerts and trigger signal ui->actionActiveAlerts->setChecked(true); + + // Update setting on visiblity change. + connect(toggleViewAction(), + &QAction::triggered, + this, + [](bool checked) { + settings::UiSettings::Instance().alert_dock_visible().StageValue( + checked); + }); } AlertDockWidget::~AlertDockWidget() From 3789845a366b34fe79f4aed99f524d1e7b5abb3a Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 10:43:55 -0400 Subject: [PATCH 03/11] save radar toolbox dock's visibility on exit --- scwx-qt/source/scwx/qt/main/main_window.cpp | 18 +++++++++++++++++- .../source/scwx/qt/settings/ui_settings.cpp | 15 +++++++++++++-- .../source/scwx/qt/settings/ui_settings.hpp | 1 + 3 files changed, 31 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 f3534338..02506176 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -277,9 +277,12 @@ MainWindow::MainWindow(QWidget* parent) : ui->radarSitePresetsButton->setVisible(!radarSitePresets.empty()); + auto& uiSettings = settings::UiSettings::Instance(); // Configure Alert Dock + bool alertDockVisible_ = uiSettings.alert_dock_visible().GetValue(); p->alertDockWidget_ = new ui::AlertDockWidget(this); addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_); + p->alertDockWidget_->setVisible(alertDockVisible_); // GPS Info Dialog p->gpsInfoDialog_ = new ui::GpsInfoDialog(this); @@ -289,10 +292,24 @@ MainWindow::MainWindow(QWidget* parent) : ui->radarToolboxDock->toggleViewAction()); ui->radarToolboxDock->toggleViewAction()->setText(tr("Radar &Toolbox")); ui->actionRadarToolbox->setVisible(false); + ui->radarToolboxDock->setVisible( + uiSettings.radar_toolbox_dock_visible().GetValue()); + + // Update dock setting on visiblity change. + connect(ui->radarToolboxDock->toggleViewAction(), + &QAction::triggered, + this, + [](bool checked) + { + settings::UiSettings::Instance() + .radar_toolbox_dock_visible() + .StageValue(checked); + }); ui->menuView->insertAction(ui->actionAlerts, p->alertDockWidget_->toggleViewAction()); p->alertDockWidget_->toggleViewAction()->setText(tr("&Alerts")); + ui->actionAlerts->setVisible(false); ui->menuDebug->menuAction()->setVisible( settings::GeneralSettings::Instance().debug_enabled().GetValue()); @@ -801,7 +818,6 @@ void MainWindowImpl::ConfigureUiSettings() mapSettingsGroup_->SetExpanded( uiSettings.map_settings_expanded().GetValue()); timelineGroup_->SetExpanded(uiSettings.timeline_expanded().GetValue()); - alertDockWidget_->setVisible(uiSettings.alert_dock_visible().GetValue()); connect(level2ProductsGroup_, &ui::CollapsibleGroup::StateChanged, diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp index 647732fa..865b5c4a 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp @@ -20,6 +20,7 @@ public: mapSettingsExpanded_.SetDefault(true); timelineExpanded_.SetDefault(true); alertDockVisible_.SetDefault(false); + radarToolboxDockVisible_.SetDefault(true); } ~UiSettingsImpl() {} @@ -30,6 +31,7 @@ public: SettingsVariable mapSettingsExpanded_ {"map_settings_expanded"}; SettingsVariable timelineExpanded_ {"timeline_expanded"}; SettingsVariable alertDockVisible_ {"alert_dock_visible"}; + SettingsVariable radarToolboxDockVisible_ {"radar_toolbox_dock_visible"}; }; UiSettings::UiSettings() : @@ -40,7 +42,8 @@ UiSettings::UiSettings() : &p->level3ProductsExpanded_, &p->mapSettingsExpanded_, &p->timelineExpanded_, - &p->alertDockVisible_}); + &p->alertDockVisible_, + &p->radarToolboxDockVisible_}); SetDefaults(); } UiSettings::~UiSettings() = default; @@ -78,6 +81,12 @@ SettingsVariable& UiSettings::alert_dock_visible() const return p->alertDockVisible_; } +SettingsVariable& UiSettings::radar_toolbox_dock_visible() const +{ + return p->radarToolboxDockVisible_; +} + + bool UiSettings::Shutdown() { bool dataChanged = false; @@ -89,6 +98,7 @@ bool UiSettings::Shutdown() dataChanged |= p->mapSettingsExpanded_.Commit(); dataChanged |= p->timelineExpanded_.Commit(); dataChanged |= p->alertDockVisible_.Commit(); + dataChanged |= p->radarToolboxDockVisible_.Commit(); return dataChanged; } @@ -106,7 +116,8 @@ bool operator==(const UiSettings& lhs, const UiSettings& rhs) lhs.p->level3ProductsExpanded_ == rhs.p->level3ProductsExpanded_ && lhs.p->mapSettingsExpanded_ == rhs.p->mapSettingsExpanded_ && lhs.p->timelineExpanded_ == rhs.p->timelineExpanded_ && - lhs.p->alertDockVisible_ == rhs.p->alertDockVisible_); + lhs.p->alertDockVisible_ == rhs.p->alertDockVisible_ && + lhs.p->radarToolboxDockVisible_ == rhs.p->radarToolboxDockVisible_); } } // 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 d03812a6..f05ce5d3 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp @@ -33,6 +33,7 @@ public: SettingsVariable& map_settings_expanded() const; SettingsVariable& timeline_expanded() const; SettingsVariable& alert_dock_visible() const; + SettingsVariable& radar_toolbox_dock_visible() const; bool Shutdown(); From bc622363519c0703a50ae67e409a533bcdbf286c Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 11:31:53 -0400 Subject: [PATCH 04/11] 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(); From a94dc82c1f68d94a13744a8fcb478956390cf3cf Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 11:46:39 -0400 Subject: [PATCH 05/11] Revert "save alert dock's visibility on exit" This reverts commit 3ab18392b39ec073dead1bac305c385b8ff2bf29. --- scwx-qt/source/scwx/qt/main/main_window.cpp | 1 + scwx-qt/source/scwx/qt/settings/ui_settings.cpp | 9 --------- scwx-qt/source/scwx/qt/settings/ui_settings.hpp | 1 - scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp | 10 ---------- 4 files changed, 1 insertion(+), 20 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index acf05368..913dd5e3 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -281,6 +281,7 @@ MainWindow::MainWindow(QWidget* parent) : // Configure Alert Dock bool alertDockVisible_ = uiSettings.alert_dock_visible().GetValue(); p->alertDockWidget_ = new ui::AlertDockWidget(this); + p->alertDockWidget_->setVisible(false); addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_); p->alertDockWidget_->setVisible(alertDockVisible_); diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp index c5536230..316f31eb 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp @@ -19,7 +19,6 @@ public: level3ProductsExpanded_.SetDefault(true); mapSettingsExpanded_.SetDefault(true); timelineExpanded_.SetDefault(true); - alertDockVisible_.SetDefault(false); radarToolboxDockVisible_.SetDefault(true); mainUIState_.SetDefault(""); } @@ -31,7 +30,6 @@ public: SettingsVariable level3ProductsExpanded_ {"level3_products_expanded"}; SettingsVariable mapSettingsExpanded_ {"map_settings_expanded"}; SettingsVariable timelineExpanded_ {"timeline_expanded"}; - SettingsVariable alertDockVisible_ {"alert_dock_visible"}; SettingsVariable radarToolboxDockVisible_ {"radar_toolbox_dock_visible"}; SettingsVariable mainUIState_ {"main_ui_state"}; }; @@ -44,7 +42,6 @@ UiSettings::UiSettings() : &p->level3ProductsExpanded_, &p->mapSettingsExpanded_, &p->timelineExpanded_, - &p->alertDockVisible_, &p->radarToolboxDockVisible_, &p->mainUIState_}); SetDefaults(); @@ -79,10 +76,6 @@ SettingsVariable& UiSettings::timeline_expanded() const return p->timelineExpanded_; } -SettingsVariable& UiSettings::alert_dock_visible() const -{ - return p->alertDockVisible_; -} SettingsVariable& UiSettings::radar_toolbox_dock_visible() const { @@ -105,7 +98,6 @@ bool UiSettings::Shutdown() dataChanged |= p->level3ProductsExpanded_.Commit(); dataChanged |= p->mapSettingsExpanded_.Commit(); dataChanged |= p->timelineExpanded_.Commit(); - dataChanged |= p->alertDockVisible_.Commit(); dataChanged |= p->radarToolboxDockVisible_.Commit(); dataChanged |= p->mainUIState_.Commit(); @@ -125,7 +117,6 @@ bool operator==(const UiSettings& lhs, const UiSettings& rhs) lhs.p->level3ProductsExpanded_ == rhs.p->level3ProductsExpanded_ && 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->mainUIState_ == rhs.p->mainUIState_); } diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp index 9fe9880b..6be8d48a 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp @@ -32,7 +32,6 @@ public: SettingsVariable& level3_products_expanded() const; SettingsVariable& map_settings_expanded() const; SettingsVariable& timeline_expanded() const; - SettingsVariable& alert_dock_visible() const; SettingsVariable& radar_toolbox_dock_visible() const; SettingsVariable& main_ui_state() const; diff --git a/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp b/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp index 242c847e..61fd160a 100644 --- a/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp +++ b/scwx-qt/source/scwx/qt/ui/alert_dock_widget.cpp @@ -5,7 +5,6 @@ #include #include #include -#include #include #include #include @@ -82,15 +81,6 @@ AlertDockWidget::AlertDockWidget(QWidget* parent) : // Check Active Alerts and trigger signal ui->actionActiveAlerts->setChecked(true); - - // Update setting on visiblity change. - connect(toggleViewAction(), - &QAction::triggered, - this, - [](bool checked) { - settings::UiSettings::Instance().alert_dock_visible().StageValue( - checked); - }); } AlertDockWidget::~AlertDockWidget() From f1bc8d2b13d88ea7f7cfbf0a3629e04f733b62d7 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 11:49:11 -0400 Subject: [PATCH 06/11] Revert "save radar toolbox dock's visibility on exit" This reverts commit 3789845a366b34fe79f4aed99f524d1e7b5abb3a. --- scwx-qt/source/scwx/qt/main/main_window.cpp | 18 +----------------- .../source/scwx/qt/settings/ui_settings.cpp | 12 ------------ .../source/scwx/qt/settings/ui_settings.hpp | 1 - 3 files changed, 1 insertion(+), 30 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 913dd5e3..5c31c1e0 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -277,13 +277,10 @@ MainWindow::MainWindow(QWidget* parent) : ui->radarSitePresetsButton->setVisible(!radarSitePresets.empty()); - auto& uiSettings = settings::UiSettings::Instance(); // Configure Alert Dock - bool alertDockVisible_ = uiSettings.alert_dock_visible().GetValue(); p->alertDockWidget_ = new ui::AlertDockWidget(this); p->alertDockWidget_->setVisible(false); addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_); - p->alertDockWidget_->setVisible(alertDockVisible_); // GPS Info Dialog p->gpsInfoDialog_ = new ui::GpsInfoDialog(this); @@ -293,24 +290,10 @@ MainWindow::MainWindow(QWidget* parent) : ui->radarToolboxDock->toggleViewAction()); ui->radarToolboxDock->toggleViewAction()->setText(tr("Radar &Toolbox")); ui->actionRadarToolbox->setVisible(false); - ui->radarToolboxDock->setVisible( - uiSettings.radar_toolbox_dock_visible().GetValue()); - - // Update dock setting on visiblity change. - connect(ui->radarToolboxDock->toggleViewAction(), - &QAction::triggered, - this, - [](bool checked) - { - settings::UiSettings::Instance() - .radar_toolbox_dock_visible() - .StageValue(checked); - }); ui->menuView->insertAction(ui->actionAlerts, p->alertDockWidget_->toggleViewAction()); p->alertDockWidget_->toggleViewAction()->setText(tr("&Alerts")); - ui->actionAlerts->setVisible(false); ui->menuDebug->menuAction()->setVisible( settings::GeneralSettings::Instance().debug_enabled().GetValue()); @@ -837,6 +820,7 @@ void MainWindowImpl::ConfigureUiSettings() mapSettingsGroup_->SetExpanded( uiSettings.map_settings_expanded().GetValue()); timelineGroup_->SetExpanded(uiSettings.timeline_expanded().GetValue()); + alertDockWidget_->setVisible(uiSettings.alert_dock_visible().GetValue()); connect(level2ProductsGroup_, &ui::CollapsibleGroup::StateChanged, diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp index 316f31eb..3ef1a23d 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp @@ -19,7 +19,6 @@ public: level3ProductsExpanded_.SetDefault(true); mapSettingsExpanded_.SetDefault(true); timelineExpanded_.SetDefault(true); - radarToolboxDockVisible_.SetDefault(true); mainUIState_.SetDefault(""); } @@ -30,7 +29,6 @@ public: SettingsVariable level3ProductsExpanded_ {"level3_products_expanded"}; SettingsVariable mapSettingsExpanded_ {"map_settings_expanded"}; SettingsVariable timelineExpanded_ {"timeline_expanded"}; - SettingsVariable radarToolboxDockVisible_ {"radar_toolbox_dock_visible"}; SettingsVariable mainUIState_ {"main_ui_state"}; }; @@ -42,7 +40,6 @@ UiSettings::UiSettings() : &p->level3ProductsExpanded_, &p->mapSettingsExpanded_, &p->timelineExpanded_, - &p->radarToolboxDockVisible_, &p->mainUIState_}); SetDefaults(); } @@ -76,18 +73,11 @@ SettingsVariable& UiSettings::timeline_expanded() const return p->timelineExpanded_; } - -SettingsVariable& UiSettings::radar_toolbox_dock_visible() const -{ - return p->radarToolboxDockVisible_; -} - SettingsVariable& UiSettings::main_ui_state() const { return p->mainUIState_; } - bool UiSettings::Shutdown() { bool dataChanged = false; @@ -98,7 +88,6 @@ bool UiSettings::Shutdown() dataChanged |= p->level3ProductsExpanded_.Commit(); dataChanged |= p->mapSettingsExpanded_.Commit(); dataChanged |= p->timelineExpanded_.Commit(); - dataChanged |= p->radarToolboxDockVisible_.Commit(); dataChanged |= p->mainUIState_.Commit(); return dataChanged; @@ -117,7 +106,6 @@ bool operator==(const UiSettings& lhs, const UiSettings& rhs) lhs.p->level3ProductsExpanded_ == rhs.p->level3ProductsExpanded_ && lhs.p->mapSettingsExpanded_ == rhs.p->mapSettingsExpanded_ && lhs.p->timelineExpanded_ == rhs.p->timelineExpanded_ && - lhs.p->radarToolboxDockVisible_ == rhs.p->radarToolboxDockVisible_ && lhs.p->mainUIState_ == rhs.p->mainUIState_); } diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp index 6be8d48a..6227a93a 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp @@ -32,7 +32,6 @@ public: SettingsVariable& level3_products_expanded() const; SettingsVariable& map_settings_expanded() const; SettingsVariable& timeline_expanded() const; - SettingsVariable& radar_toolbox_dock_visible() const; SettingsVariable& main_ui_state() const; bool Shutdown(); From 6f2a087ef8a92164e535a89f05fdd4bc9e3065f9 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 11:54:01 -0400 Subject: [PATCH 07/11] revert code re-added by last revert (should revert commits in revers order) --- scwx-qt/source/scwx/qt/main/main_window.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 5c31c1e0..64c87c3c 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -820,7 +820,6 @@ void MainWindowImpl::ConfigureUiSettings() mapSettingsGroup_->SetExpanded( uiSettings.map_settings_expanded().GetValue()); timelineGroup_->SetExpanded(uiSettings.timeline_expanded().GetValue()); - alertDockWidget_->setVisible(uiSettings.alert_dock_visible().GetValue()); connect(level2ProductsGroup_, &ui::CollapsibleGroup::StateChanged, From 83c833e89c7ffbc8bfe998ee37eb176c4b6a4aa1 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 12:04:09 -0400 Subject: [PATCH 08/11] updated test data with needed settings --- test/data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/data b/test/data index 5a91ded6..14be7d78 160000 --- a/test/data +++ b/test/data @@ -1 +1 @@ -Subproject commit 5a91ded677d4032b0de9370ed767a16708c0ecff +Subproject commit 14be7d7836e1bd2a9038a2ad6002bfe31e9cd0f7 From 06efa2da58b82a5612fadcb11b1ac9445b48f1fe Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Thu, 12 Sep 2024 13:18:22 -0400 Subject: [PATCH 09/11] Reverted change which added extra item to menu bar --- scwx-qt/source/scwx/qt/main/main_window.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index 64c87c3c..e8217290 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -279,7 +279,6 @@ MainWindow::MainWindow(QWidget* parent) : // Configure Alert Dock p->alertDockWidget_ = new ui::AlertDockWidget(this); - p->alertDockWidget_->setVisible(false); addDockWidget(Qt::BottomDockWidgetArea, p->alertDockWidget_); // GPS Info Dialog @@ -294,6 +293,7 @@ MainWindow::MainWindow(QWidget* parent) : ui->menuView->insertAction(ui->actionAlerts, p->alertDockWidget_->toggleViewAction()); p->alertDockWidget_->toggleViewAction()->setText(tr("&Alerts")); + ui->actionAlerts->setVisible(false); ui->menuDebug->menuAction()->setVisible( settings::GeneralSettings::Instance().debug_enabled().GetValue()); From 449912e655687b94f4428cf630aa74e6fca1133f Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Tue, 17 Sep 2024 10:47:26 -0400 Subject: [PATCH 10/11] update test/data for saving geomotry --- test/data | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/data b/test/data index 14be7d78..20a1ca17 160000 --- a/test/data +++ b/test/data @@ -1 +1 @@ -Subproject commit 14be7d7836e1bd2a9038a2ad6002bfe31e9cd0f7 +Subproject commit 20a1ca1752499222d33869e37148321936ca6354 From 1b16b903a0d90703c291468baf61b8ef1d3e30b6 Mon Sep 17 00:00:00 2001 From: AdenKoperczak Date: Tue, 17 Sep 2024 10:48:59 -0400 Subject: [PATCH 11/11] added saving geometry --- scwx-qt/source/scwx/qt/main/main_window.cpp | 17 ++++++++++++++--- scwx-qt/source/scwx/qt/settings/ui_settings.cpp | 14 ++++++++++++-- scwx-qt/source/scwx/qt/settings/ui_settings.hpp | 1 + 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/scwx-qt/source/scwx/qt/main/main_window.cpp b/scwx-qt/source/scwx/qt/main/main_window.cpp index e8217290..d511241a 100644 --- a/scwx-qt/source/scwx/qt/main/main_window.cpp +++ b/scwx-qt/source/scwx/qt/main/main_window.cpp @@ -443,10 +443,15 @@ void MainWindow::keyReleaseEvent(QKeyEvent* ev) void MainWindow::showEvent(QShowEvent* event) { QMainWindow::showEvent(event); + auto& uiSettings = settings::UiSettings::Instance(); + + // restore the geometry state + std::string uiGeometry = uiSettings.main_ui_geometry().GetValue(); + restoreGeometry( + QByteArray::fromBase64(QByteArray::fromStdString(uiGeometry))); // restore the UI state - std::string uiState = - settings::UiSettings::Instance().main_ui_state().GetValue(); + std::string uiState = uiSettings.main_ui_state().GetValue(); bool restored = restoreState(QByteArray::fromBase64(QByteArray::fromStdString(uiState))); @@ -458,9 +463,15 @@ void MainWindow::showEvent(QShowEvent* event) void MainWindow::closeEvent(QCloseEvent* event) { + auto& uiSettings = settings::UiSettings::Instance(); + + // save the UI geometry + QByteArray uiGeometry = saveGeometry().toBase64(); + uiSettings.main_ui_geometry().StageValue(uiGeometry.data()); + // save the UI state QByteArray uiState = saveState().toBase64(); - settings::UiSettings::Instance().main_ui_state().StageValue(uiState.data()); + uiSettings.main_ui_state().StageValue(uiState.data()); QMainWindow::closeEvent(event); } diff --git a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp index 3ef1a23d..eca2c8e1 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.cpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.cpp @@ -20,6 +20,7 @@ public: mapSettingsExpanded_.SetDefault(true); timelineExpanded_.SetDefault(true); mainUIState_.SetDefault(""); + mainUIGeometry_.SetDefault(""); } ~UiSettingsImpl() {} @@ -30,6 +31,7 @@ public: SettingsVariable mapSettingsExpanded_ {"map_settings_expanded"}; SettingsVariable timelineExpanded_ {"timeline_expanded"}; SettingsVariable mainUIState_ {"main_ui_state"}; + SettingsVariable mainUIGeometry_ {"main_ui_geometry"}; }; UiSettings::UiSettings() : @@ -40,7 +42,8 @@ UiSettings::UiSettings() : &p->level3ProductsExpanded_, &p->mapSettingsExpanded_, &p->timelineExpanded_, - &p->mainUIState_}); + &p->mainUIState_, + &p->mainUIGeometry_}); SetDefaults(); } UiSettings::~UiSettings() = default; @@ -78,6 +81,11 @@ SettingsVariable& UiSettings::main_ui_state() const return p->mainUIState_; } +SettingsVariable& UiSettings::main_ui_geometry() const +{ + return p->mainUIGeometry_; +} + bool UiSettings::Shutdown() { bool dataChanged = false; @@ -89,6 +97,7 @@ bool UiSettings::Shutdown() dataChanged |= p->mapSettingsExpanded_.Commit(); dataChanged |= p->timelineExpanded_.Commit(); dataChanged |= p->mainUIState_.Commit(); + dataChanged |= p->mainUIGeometry_.Commit(); return dataChanged; } @@ -106,7 +115,8 @@ bool operator==(const UiSettings& lhs, const UiSettings& rhs) lhs.p->level3ProductsExpanded_ == rhs.p->level3ProductsExpanded_ && lhs.p->mapSettingsExpanded_ == rhs.p->mapSettingsExpanded_ && lhs.p->timelineExpanded_ == rhs.p->timelineExpanded_ && - lhs.p->mainUIState_ == rhs.p->mainUIState_); + lhs.p->mainUIState_ == rhs.p->mainUIState_ && + lhs.p->mainUIGeometry_ == rhs.p->mainUIGeometry_); } } // 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 6227a93a..0a9f95ef 100644 --- a/scwx-qt/source/scwx/qt/settings/ui_settings.hpp +++ b/scwx-qt/source/scwx/qt/settings/ui_settings.hpp @@ -33,6 +33,7 @@ public: SettingsVariable& map_settings_expanded() const; SettingsVariable& timeline_expanded() const; SettingsVariable& main_ui_state() const; + SettingsVariable& main_ui_geometry() const; bool Shutdown();