Save the general state of the docks (position, size, corner, etc)

This commit is contained in:
AdenKoperczak 2024-09-12 11:31:53 -04:00
parent 3789845a36
commit bc62236351
4 changed files with 33 additions and 3 deletions

View file

@ -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()

View file

@ -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);

View file

@ -21,6 +21,7 @@ public:
timelineExpanded_.SetDefault(true);
alertDockVisible_.SetDefault(false);
radarToolboxDockVisible_.SetDefault(true);
mainUIState_.SetDefault("");
}
~UiSettingsImpl() {}
@ -32,6 +33,7 @@ public:
SettingsVariable<bool> timelineExpanded_ {"timeline_expanded"};
SettingsVariable<bool> alertDockVisible_ {"alert_dock_visible"};
SettingsVariable<bool> radarToolboxDockVisible_ {"radar_toolbox_dock_visible"};
SettingsVariable<std::string> 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<bool>& UiSettings::radar_toolbox_dock_visible() const
return p->radarToolboxDockVisible_;
}
SettingsVariable<std::string>& 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

View file

@ -34,6 +34,7 @@ public:
SettingsVariable<bool>& timeline_expanded() const;
SettingsVariable<bool>& alert_dock_visible() const;
SettingsVariable<bool>& radar_toolbox_dock_visible() const;
SettingsVariable<std::string>& main_ui_state() const;
bool Shutdown();