Gui: simplify code to handle workbench selector

+ replace three boolean parameters with a single string parameter
+ refactor DlgGeneralImp::saveSettings/loadSettings
+ handle visibility of corner widgets
This commit is contained in:
wmayer
2022-11-08 14:05:54 +01:00
committed by Uwe
parent 2e1feaa78e
commit e6a8533fa8
5 changed files with 70 additions and 52 deletions

View File

@@ -366,21 +366,38 @@ void MenuManager::setup(MenuItem* item, QMenu* menu) const
}
}
void MenuManager::setupMenuBarCornerWidgets() const {
void MenuManager::setupMenuBarCornerWidgets() const
{
/*Note: currently only workbench selector uses corner widget.*/
QMenuBar* menuBar = getMainWindow()->menuBar();
ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow");
std::string pos = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/MainWindow")->GetASCII("WSPosition", "WSToolbar");
bool showLeftWidget = false;
bool showRightWidget = false;
//Right corner widget
if (hGrp->GetBool("WSRightCorner", false)) { //add workbench selector to menubar right corner widget.
if (!menuBar->cornerWidget(Qt::TopRightCorner))
if (pos == "WSRightCorner") {
//add workbench selector to menubar right corner widget.
if (!menuBar->cornerWidget(Qt::TopRightCorner)) {
Application::Instance->commandManager().addTo("Std_Workbench", menuBar);
}
showRightWidget = true;
}
//Left corner widget
else if (pos == "WSLeftCorner") {
//add workbench selector to menubar left corner widget.
if (!menuBar->cornerWidget(Qt::TopLeftCorner)) {
Application::Instance->commandManager().addTo("Std_Workbench", menuBar);
}
showLeftWidget = true;
}
//Left corner widget
if (hGrp->GetBool("WSLeftCorner", false)) { //add workbench selector to menubar left corner widget.
if (!menuBar->cornerWidget(Qt::TopLeftCorner))
Application::Instance->commandManager().addTo("Std_Workbench", menuBar);
// Set visibility of corner widget
if (QWidget* right = menuBar->cornerWidget(Qt::TopRightCorner)) {
right->setVisible(showRightWidget);
}
if (QWidget* left = menuBar->cornerWidget(Qt::TopLeftCorner)) {
left->setVisible(showLeftWidget);
}
}