From 5803448ea0a11e8c0985205c9fc915f84be6c3dd Mon Sep 17 00:00:00 2001 From: Henning Gruendl Date: Fri, 13 Mar 2020 14:58:59 +0100 Subject: [PATCH] ADS: Add workspace switcher ComboBox to Toolbar Change-Id: Ice2e38ac8fd7a0a4ef174d443b9f7e308239aa40 Reviewed-by: Thomas Hartmann --- src/plugins/qmldesigner/designmodewidget.cpp | 25 ++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp index d92bf6f6b3c..68c1170f2b7 100644 --- a/src/plugins/qmldesigner/designmodewidget.cpp +++ b/src/plugins/qmldesigner/designmodewidget.cpp @@ -66,6 +66,7 @@ #include #include #include +#include #include #include @@ -399,6 +400,30 @@ void DesignModeWidget::setup() } }); + auto workspaceComboBox = new QComboBox(); + workspaceComboBox->setMinimumWidth(120); + workspaceComboBox->setToolTip(tr("Switch the active workspace.")); + auto sortedWorkspaces = m_dockManager->workspaces(); + Utils::sort(sortedWorkspaces); + workspaceComboBox->addItems(sortedWorkspaces); + workspaceComboBox->setCurrentText(m_dockManager->activeWorkspace()); + toolBar->addWidget(workspaceComboBox); + + connect(m_dockManager, &ADS::DockManager::workspaceListChanged, + workspaceComboBox, [this, workspaceComboBox]() { + workspaceComboBox->clear(); + auto sortedWorkspaces = m_dockManager->workspaces(); + Utils::sort(sortedWorkspaces); + workspaceComboBox->addItems(sortedWorkspaces); + workspaceComboBox->setCurrentText(m_dockManager->activeWorkspace()); + }); + connect(m_dockManager, &ADS::DockManager::workspaceLoaded, workspaceComboBox, &QComboBox::setCurrentText); + connect(workspaceComboBox, QOverload::of(&QComboBox::activated), + m_dockManager, [this, workspaceComboBox] (int index) { + Q_UNUSED(index) + m_dockManager->openWorkspace(workspaceComboBox->currentText()); + }); + viewManager().enableWidgets(); readSettings(); show();