aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorJarek Kobus <jaroslaw.kobus@qt.io>2022-11-17 17:05:07 +0100
committerJarek Kobus <jaroslaw.kobus@qt.io>2022-11-25 12:56:15 +0000
commit7afe536a5c7de0e2a9d60660b7c34088b8c64514 (patch)
tree978fa0e24523628c0a80f18f618fa73ae34254fa /src/libs
parentbcdfe1cedc3557709c4d033bcae31645019d2f89 (diff)
AdvancedDockingSystem: WorkspaceDialog: Use Layouting
Change-Id: I998147908941b4390c810983a5676628f07b1250 Reviewed-by: Henning Gründl <henning.gruendl@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/libs')
-rw-r--r--src/libs/advanceddockingsystem/CMakeLists.txt1
-rw-r--r--src/libs/advanceddockingsystem/advanceddockingsystem.qbs1
-rw-r--r--src/libs/advanceddockingsystem/workspacedialog.cpp169
-rw-r--r--src/libs/advanceddockingsystem/workspacedialog.h18
-rw-r--r--src/libs/advanceddockingsystem/workspacedialog.ui193
-rw-r--r--src/libs/advanceddockingsystem/workspacemodel.cpp1
-rw-r--r--src/libs/advanceddockingsystem/workspaceview.cpp14
-rw-r--r--src/libs/advanceddockingsystem/workspaceview.h4
8 files changed, 119 insertions, 282 deletions
diff --git a/src/libs/advanceddockingsystem/CMakeLists.txt b/src/libs/advanceddockingsystem/CMakeLists.txt
index cd50597337..de13664535 100644
--- a/src/libs/advanceddockingsystem/CMakeLists.txt
+++ b/src/libs/advanceddockingsystem/CMakeLists.txt
@@ -22,7 +22,6 @@ add_qtc_library(AdvancedDockingSystem
workspacedialog.cpp workspacedialog.h
workspacemodel.cpp workspacemodel.h
workspaceview.cpp workspaceview.h
- workspacedialog.ui
)
extend_qtc_library(AdvancedDockingSystem
diff --git a/src/libs/advanceddockingsystem/advanceddockingsystem.qbs b/src/libs/advanceddockingsystem/advanceddockingsystem.qbs
index 4401e9a1db..9778f62949 100644
--- a/src/libs/advanceddockingsystem/advanceddockingsystem.qbs
+++ b/src/libs/advanceddockingsystem/advanceddockingsystem.qbs
@@ -34,7 +34,6 @@ QtcLibrary {
"workspacedialog.cpp", "workspacedialog.h",
"workspacemodel.cpp", "workspacemodel.h",
"workspaceview.cpp", "workspaceview.h",
- "workspacedialog.ui"
]
}
diff --git a/src/libs/advanceddockingsystem/workspacedialog.cpp b/src/libs/advanceddockingsystem/workspacedialog.cpp
index 6594e05d7c..c868564b7a 100644
--- a/src/libs/advanceddockingsystem/workspacedialog.cpp
+++ b/src/libs/advanceddockingsystem/workspacedialog.cpp
@@ -4,10 +4,16 @@
#include "workspacedialog.h"
#include "dockmanager.h"
+#include "workspaceview.h"
#include <utils/algorithm.h>
+#include <utils/layoutbuilder.h>
-#include <QInputDialog>
+#include <QCheckBox>
+#include <QDialogButtonBox>
+#include <QLabel>
+#include <QLineEdit>
+#include <QPushButton>
#include <QRegularExpression>
#include <QValidator>
@@ -59,12 +65,9 @@ WorkspaceNameInputDialog::WorkspaceNameInputDialog(DockManager *manager, QWidget
: QDialog(parent)
, m_manager(manager)
{
- auto hlayout = new QVBoxLayout(this);
auto label = new QLabel(tr("Enter the name of the workspace:"), this);
- hlayout->addWidget(label);
m_newWorkspaceLineEdit = new QLineEdit(this);
m_newWorkspaceLineEdit->setValidator(new WorkspaceValidator(this, m_manager->workspaces()));
- hlayout->addWidget(m_newWorkspaceLineEdit);
auto buttons = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel,
Qt::Horizontal,
this);
@@ -74,8 +77,14 @@ WorkspaceNameInputDialog::WorkspaceNameInputDialog(DockManager *manager, QWidget
connect(m_switchToButton, &QPushButton::clicked, [this]() { m_usedSwitchTo = true; });
connect(buttons, &QDialogButtonBox::accepted, this, &QDialog::accept);
connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject);
- hlayout->addWidget(buttons);
- setLayout(hlayout);
+
+ using namespace Utils::Layouting;
+
+ Column {
+ label,
+ m_newWorkspaceLineEdit,
+ buttons
+ }.attachTo(this);
}
void WorkspaceNameInputDialog::setActionText(const QString &actionText,
@@ -103,64 +112,90 @@ bool WorkspaceNameInputDialog::isSwitchToRequested() const
WorkspaceDialog::WorkspaceDialog(DockManager *manager, QWidget *parent)
: QDialog(parent)
, m_manager(manager)
+ , m_workspaceView(new WorkspaceView(manager))
+ , m_btCreateNew(new QPushButton(tr("&New")))
+ , m_btRename(new QPushButton(tr("&Rename")))
+ , m_btClone(new QPushButton(tr("C&lone")))
+ , m_btDelete(new QPushButton(tr("&Delete")))
+ , m_btReset(new QPushButton(tr("Reset")))
+ , m_btSwitch(new QPushButton(tr("&Switch To")))
+ , m_btImport(new QPushButton(tr("Import")))
+ , m_btExport(new QPushButton(tr("Export")))
+ , m_autoLoadCheckBox(new QCheckBox(tr("Restore last workspace on startup")))
{
- m_ui.setupUi(this);
- m_ui.workspaceView->setActivationMode(Utils::DoubleClickActivation);
-
- connect(m_ui.btCreateNew,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::createNewWorkspace);
- connect(m_ui.btClone,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::cloneCurrentWorkspace);
- connect(m_ui.btDelete,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::deleteSelectedWorkspaces);
- connect(m_ui.btSwitch,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::switchToCurrentWorkspace);
- connect(m_ui.btRename,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::renameCurrentWorkspace);
- connect(m_ui.btReset,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::resetCurrentWorkspace);
- connect(m_ui.workspaceView,
- &WorkspaceView::workspaceActivated,
- m_ui.workspaceView,
- &WorkspaceView::switchToCurrentWorkspace);
- connect(m_ui.workspaceView,
- &WorkspaceView::workspacesSelected,
- this,
- &WorkspaceDialog::updateActions);
- connect(m_ui.btImport,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::importWorkspace);
- connect(m_ui.btExport,
- &QAbstractButton::clicked,
- m_ui.workspaceView,
- &WorkspaceView::exportCurrentWorkspace);
-
- m_ui.whatsAWorkspaceLabel->setOpenExternalLinks(true);
-
- updateActions(m_ui.workspaceView->selectedWorkspaces());
+ setWindowTitle(tr("Workspace Manager"));
+
+ m_workspaceView->setActivationMode(Utils::DoubleClickActivation);
+
+ QLabel *whatsAWorkspaceLabel = new QLabel(tr("<a href=\"qthelp://org.qt-project.qtcreator/doc/"
+ "creator-project-managing-workspaces.html\">What is a Workspace?</a>"));
+ whatsAWorkspaceLabel->setOpenExternalLinks(true);
+
+ QDialogButtonBox *buttonBox = new QDialogButtonBox;
+ buttonBox->setStandardButtons(QDialogButtonBox::Close);
+ connect(buttonBox, &QDialogButtonBox::rejected, this, &QDialog::reject);
+ connect(buttonBox, &QDialogButtonBox::accepted, this, &QDialog::accept);
+
+ using namespace Utils::Layouting;
+
+ Column {
+ Row {
+ Column {
+ m_workspaceView,
+ m_autoLoadCheckBox
+ },
+ Column {
+ m_btCreateNew,
+ m_btRename,
+ m_btClone,
+ m_btDelete,
+ m_btReset,
+ m_btSwitch,
+ st,
+ m_btImport,
+ m_btExport
+ }
+ },
+ hr,
+ Row {
+ whatsAWorkspaceLabel,
+ buttonBox
+ }
+ }.attachTo(this);
+
+
+ connect(m_btCreateNew, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::createNewWorkspace);
+ connect(m_btClone, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::cloneCurrentWorkspace);
+ connect(m_btDelete, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::deleteSelectedWorkspaces);
+ connect(m_btSwitch, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::switchToCurrentWorkspace);
+ connect(m_btRename, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::renameCurrentWorkspace);
+ connect(m_btReset, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::resetCurrentWorkspace);
+ connect(m_workspaceView, &WorkspaceView::workspaceActivated,
+ m_workspaceView, &WorkspaceView::switchToCurrentWorkspace);
+ connect(m_workspaceView, &WorkspaceView::workspacesSelected,
+ this, &WorkspaceDialog::updateActions);
+ connect(m_btImport, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::importWorkspace);
+ connect(m_btExport, &QAbstractButton::clicked,
+ m_workspaceView, &WorkspaceView::exportCurrentWorkspace);
+
+ updateActions(m_workspaceView->selectedWorkspaces());
}
void WorkspaceDialog::setAutoLoadWorkspace(bool check)
{
- m_ui.autoLoadCheckBox->setChecked(check);
+ m_autoLoadCheckBox->setChecked(check);
}
bool WorkspaceDialog::autoLoadWorkspace() const
{
- return m_ui.autoLoadCheckBox->checkState() == Qt::Checked;
+ return m_autoLoadCheckBox->checkState() == Qt::Checked;
}
DockManager *WorkspaceDialog::dockManager() const
@@ -171,12 +206,12 @@ DockManager *WorkspaceDialog::dockManager() const
void WorkspaceDialog::updateActions(const QStringList &workspaces)
{
if (workspaces.isEmpty()) {
- m_ui.btDelete->setEnabled(false);
- m_ui.btRename->setEnabled(false);
- m_ui.btClone->setEnabled(false);
- m_ui.btReset->setEnabled(false);
- m_ui.btSwitch->setEnabled(false);
- m_ui.btExport->setEnabled(false);
+ m_btDelete->setEnabled(false);
+ m_btRename->setEnabled(false);
+ m_btClone->setEnabled(false);
+ m_btReset->setEnabled(false);
+ m_btSwitch->setEnabled(false);
+ m_btExport->setEnabled(false);
return;
}
const bool presetIsSelected = Utils::anyOf(workspaces, [this](const QString &workspace) {
@@ -185,12 +220,12 @@ void WorkspaceDialog::updateActions(const QStringList &workspaces)
const bool activeIsSelected = Utils::anyOf(workspaces, [this](const QString &workspace) {
return workspace == m_manager->activeWorkspace();
});
- m_ui.btDelete->setEnabled(!activeIsSelected && !presetIsSelected);
- m_ui.btRename->setEnabled(workspaces.size() == 1 && !presetIsSelected);
- m_ui.btClone->setEnabled(workspaces.size() == 1);
- m_ui.btReset->setEnabled(presetIsSelected);
- m_ui.btSwitch->setEnabled(workspaces.size() == 1);
- m_ui.btExport->setEnabled(workspaces.size() == 1);
+ m_btDelete->setEnabled(!activeIsSelected && !presetIsSelected);
+ m_btRename->setEnabled(workspaces.size() == 1 && !presetIsSelected);
+ m_btClone->setEnabled(workspaces.size() == 1);
+ m_btReset->setEnabled(presetIsSelected);
+ m_btSwitch->setEnabled(workspaces.size() == 1);
+ m_btExport->setEnabled(workspaces.size() == 1);
}
} // namespace ADS
diff --git a/src/libs/advanceddockingsystem/workspacedialog.h b/src/libs/advanceddockingsystem/workspacedialog.h
index 3a6f1f27b1..fe710bc885 100644
--- a/src/libs/advanceddockingsystem/workspacedialog.h
+++ b/src/libs/advanceddockingsystem/workspacedialog.h
@@ -3,12 +3,10 @@
#pragma once
-#include "ui_workspacedialog.h"
-
#include <QDialog>
-#include <QString>
QT_BEGIN_NAMESPACE
+class QCheckBox;
class QLineEdit;
class QPushButton;
QT_END_NAMESPACE
@@ -16,6 +14,7 @@ QT_END_NAMESPACE
namespace ADS {
class DockManager;
+class WorkspaceView;
class WorkspaceDialog : public QDialog
{
@@ -32,9 +31,18 @@ public:
private:
void updateActions(const QStringList &workspaces);
- Ui::WorkspaceDialog m_ui;
-
DockManager *m_manager = nullptr;
+
+ WorkspaceView *m_workspaceView = nullptr;
+ QPushButton *m_btCreateNew = nullptr;
+ QPushButton *m_btRename = nullptr;
+ QPushButton *m_btClone = nullptr;
+ QPushButton *m_btDelete = nullptr;
+ QPushButton *m_btReset = nullptr;
+ QPushButton *m_btSwitch = nullptr;
+ QPushButton *m_btImport = nullptr;
+ QPushButton *m_btExport = nullptr;
+ QCheckBox *m_autoLoadCheckBox = nullptr;
};
class WorkspaceNameInputDialog : public QDialog
diff --git a/src/libs/advanceddockingsystem/workspacedialog.ui b/src/libs/advanceddockingsystem/workspacedialog.ui
deleted file mode 100644
index ea494218aa..0000000000
--- a/src/libs/advanceddockingsystem/workspacedialog.ui
+++ /dev/null
@@ -1,193 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<ui version="4.0">
- <class>ADS::WorkspaceDialog</class>
- <widget class="QDialog" name="ADS::WorkspaceDialog">
- <property name="geometry">
- <rect>
- <x>0</x>
- <y>0</y>
- <width>400</width>
- <height>300</height>
- </rect>
- </property>
- <property name="windowTitle">
- <string>Workspace Manager</string>
- </property>
- <layout class="QGridLayout" name="gridLayout">
- <item row="0" column="0">
- <widget class="WorkspaceView" name="workspaceView">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Expanding">
- <horstretch>1</horstretch>
- <verstretch>1</verstretch>
- </sizepolicy>
- </property>
- </widget>
- </item>
- <item row="0" column="1" rowspan="2">
- <layout class="QVBoxLayout" name="verticalLayout">
- <property name="leftMargin">
- <number>0</number>
- </property>
- <property name="rightMargin">
- <number>0</number>
- </property>
- <item>
- <widget class="QPushButton" name="btCreateNew">
- <property name="text">
- <string>&amp;New</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btRename">
- <property name="text">
- <string>&amp;Rename</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btClone">
- <property name="text">
- <string>C&amp;lone</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btDelete">
- <property name="text">
- <string>&amp;Delete</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btReset">
- <property name="text">
- <string>Reset</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btSwitch">
- <property name="text">
- <string>&amp;Switch To</string>
- </property>
- <property name="default">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- <item>
- <spacer name="verticalSpacer">
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="sizeHint" stdset="0">
- <size>
- <width>85</width>
- <height>48</height>
- </size>
- </property>
- </spacer>
- </item>
- <item>
- <widget class="QPushButton" name="btImport">
- <property name="text">
- <string>Import</string>
- </property>
- </widget>
- </item>
- <item>
- <widget class="QPushButton" name="btExport">
- <property name="text">
- <string>Export</string>
- </property>
- </widget>
- </item>
- </layout>
- </item>
- <item row="1" column="0">
- <widget class="QCheckBox" name="autoLoadCheckBox">
- <property name="text">
- <string>Restore last workspace on startup</string>
- </property>
- </widget>
- </item>
- <item row="2" column="0" colspan="2">
- <widget class="Line" name="line">
- <property name="orientation">
- <enum>Qt::Horizontal</enum>
- </property>
- </widget>
- </item>
- <item row="3" column="0">
- <widget class="QLabel" name="whatsAWorkspaceLabel">
- <property name="text">
- <string>&lt;a href=&quot;qthelp://org.qt-project.qtcreator/doc/creator-project-managing-workspaces.html&quot;&gt;What is a Workspace?&lt;/a&gt;</string>
- </property>
- </widget>
- </item>
- <item row="3" column="1">
- <widget class="QDialogButtonBox" name="buttonBox">
- <property name="sizePolicy">
- <sizepolicy hsizetype="Expanding" vsizetype="Fixed">
- <horstretch>0</horstretch>
- <verstretch>0</verstretch>
- </sizepolicy>
- </property>
- <property name="orientation">
- <enum>Qt::Vertical</enum>
- </property>
- <property name="standardButtons">
- <set>QDialogButtonBox::Close</set>
- </property>
- <property name="centerButtons">
- <bool>true</bool>
- </property>
- </widget>
- </item>
- </layout>
- </widget>
- <customwidgets>
- <customwidget>
- <class>WorkspaceView</class>
- <extends>QTreeView</extends>
- <header>workspaceview.h</header>
- </customwidget>
- </customwidgets>
- <resources/>
- <connections>
- <connection>
- <sender>buttonBox</sender>
- <signal>rejected()</signal>
- <receiver>ADS::WorkspaceDialog</receiver>
- <slot>reject()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>191</x>
- <y>244</y>
- </hint>
- <hint type="destinationlabel">
- <x>114</x>
- <y>237</y>
- </hint>
- </hints>
- </connection>
- <connection>
- <sender>buttonBox</sender>
- <signal>accepted()</signal>
- <receiver>ADS::WorkspaceDialog</receiver>
- <slot>accept()</slot>
- <hints>
- <hint type="sourcelabel">
- <x>246</x>
- <y>237</y>
- </hint>
- <hint type="destinationlabel">
- <x>78</x>
- <y>216</y>
- </hint>
- </hints>
- </connection>
- </connections>
-</ui>
diff --git a/src/libs/advanceddockingsystem/workspacemodel.cpp b/src/libs/advanceddockingsystem/workspacemodel.cpp
index af3823f414..44e12dafe1 100644
--- a/src/libs/advanceddockingsystem/workspacemodel.cpp
+++ b/src/libs/advanceddockingsystem/workspacemodel.cpp
@@ -10,7 +10,6 @@
#include <utils/fileutils.h>
#include <utils/stringutils.h>
-#include <QDir>
#include <QFileInfo>
namespace ADS {
diff --git a/src/libs/advanceddockingsystem/workspaceview.cpp b/src/libs/advanceddockingsystem/workspaceview.cpp
index 41d0dfb28a..702794fba9 100644
--- a/src/libs/advanceddockingsystem/workspaceview.cpp
+++ b/src/libs/advanceddockingsystem/workspaceview.cpp
@@ -4,7 +4,6 @@
#include "workspaceview.h"
#include "dockmanager.h"
-#include "workspacedialog.h"
#include <utils/algorithm.h>
@@ -39,17 +38,10 @@ void RemoveItemFocusDelegate::paint(QPainter *painter,
QStyledItemDelegate::paint(painter, opt, index);
}
-WorkspaceDialog *WorkspaceView::castToWorkspaceDialog(QWidget *widget)
-{
- auto dialog = qobject_cast<WorkspaceDialog *>(widget);
- Q_ASSERT(dialog);
- return dialog;
-}
-
-WorkspaceView::WorkspaceView(QWidget *parent)
+WorkspaceView::WorkspaceView(DockManager *manager, QWidget *parent)
: Utils::TreeView(parent)
- , m_manager(WorkspaceView::castToWorkspaceDialog(parent)->dockManager())
- , m_workspaceModel(m_manager)
+ , m_manager(manager)
+ , m_workspaceModel(manager)
{
setItemDelegate(new RemoveItemFocusDelegate(this));
setSelectionBehavior(QAbstractItemView::SelectRows);
diff --git a/src/libs/advanceddockingsystem/workspaceview.h b/src/libs/advanceddockingsystem/workspaceview.h
index 615678512f..3c1edb8930 100644
--- a/src/libs/advanceddockingsystem/workspaceview.h
+++ b/src/libs/advanceddockingsystem/workspaceview.h
@@ -19,7 +19,7 @@ class WorkspaceView : public Utils::TreeView
Q_OBJECT
public:
- explicit WorkspaceView(QWidget *parent = nullptr);
+ explicit WorkspaceView(DockManager *manager, QWidget *parent = nullptr);
void createNewWorkspace();
void deleteSelectedWorkspaces();
@@ -49,8 +49,6 @@ private:
void deleteWorkspaces(const QStringList &workspaces);
- static WorkspaceDialog *castToWorkspaceDialog(QWidget *widget);
-
DockManager *m_manager;
WorkspaceModel m_workspaceModel;
};