summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-11-07 12:22:29 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2019-11-07 11:53:37 +0000
commitefa98329129317068909bee1c91a4dd6b26bd621 (patch)
tree1ad4dd59fa41b859f1cdae04644574ae2f99ee3e
parent8e4fb0553291ec64e5b2868fed161b574cb53ae2 (diff)
downloadqt-creator-efa98329129317068909bee1c91a4dd6b26bd621.tar.gz
LayoutBuilder: Allow for more compact code at calling sites
Change-Id: I12bb6dbfc138e03138b9a74d36e864d8ea36092f Reviewed-by: hjk <hjk@qt.io>
-rw-r--r--src/plugins/debugger/debuggerrunconfigurationaspect.cpp12
-rw-r--r--src/plugins/ios/iosrunconfiguration.cpp3
-rw-r--r--src/plugins/projectexplorer/buildconfiguration.cpp6
-rw-r--r--src/plugins/projectexplorer/buildstep.cpp6
-rw-r--r--src/plugins/projectexplorer/customexecutablerunconfiguration.cpp4
-rw-r--r--src/plugins/projectexplorer/projectconfiguration.cpp7
-rw-r--r--src/plugins/projectexplorer/projectconfiguration.h10
-rw-r--r--src/plugins/projectexplorer/projectconfigurationaspects.cpp9
-rw-r--r--src/plugins/projectexplorer/runconfiguration.cpp6
-rw-r--r--src/plugins/projectexplorer/runconfigurationaspects.cpp13
-rw-r--r--src/plugins/python/pythonrunconfiguration.cpp4
-rw-r--r--src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp3
-rw-r--r--src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp3
13 files changed, 34 insertions, 52 deletions
diff --git a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
index bf9d4d9a20..c02e192213 100644
--- a/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
+++ b/src/plugins/debugger/debuggerrunconfigurationaspect.cpp
@@ -168,16 +168,12 @@ DebuggerRunConfigurationAspect::DebuggerRunConfigurationAspect(Target *target)
QWidget *w = new QWidget;
LayoutBuilder builder(w);
m_cppAspect->addToLayout(builder);
- builder.startNewRow();
- m_qmlAspect->addToLayout(builder);
- builder.startNewRow();
- m_overrideStartupAspect->addToLayout(builder);
+ m_qmlAspect->addToLayout(builder.startNewRow());
+ m_overrideStartupAspect->addToLayout(builder.startNewRow());
static const QByteArray env = qgetenv("QTC_DEBUGGER_MULTIPROCESS");
- if (env.toInt()) {
- builder.startNewRow();
- m_multiProcessAspect->addToLayout(builder);
- }
+ if (env.toInt())
+ m_multiProcessAspect->addToLayout(builder.startNewRow());
return w;
});
diff --git a/src/plugins/ios/iosrunconfiguration.cpp b/src/plugins/ios/iosrunconfiguration.cpp
index 92cb1965ab..fb1389b969 100644
--- a/src/plugins/ios/iosrunconfiguration.cpp
+++ b/src/plugins/ios/iosrunconfiguration.cpp
@@ -328,8 +328,7 @@ void IosDeviceTypeAspect::addToLayout(LayoutBuilder &builder)
m_deviceTypeLabel = new QLabel(IosRunConfiguration::tr("Device type:"));
- builder.addItem(m_deviceTypeLabel);
- builder.addItem(m_deviceTypeComboBox);
+ builder.addItems(m_deviceTypeLabel, m_deviceTypeComboBox);
updateValues();
diff --git a/src/plugins/projectexplorer/buildconfiguration.cpp b/src/plugins/projectexplorer/buildconfiguration.cpp
index 9496ec76a1..d1e6225b98 100644
--- a/src/plugins/projectexplorer/buildconfiguration.cpp
+++ b/src/plugins/projectexplorer/buildconfiguration.cpp
@@ -185,10 +185,8 @@ NamedWidget *BuildConfiguration::createConfigWidget()
LayoutBuilder builder(widget);
for (ProjectConfigurationAspect *aspect : aspects()) {
- if (aspect->isVisible()) {
- builder.startNewRow();
- aspect->addToLayout(builder);
- }
+ if (aspect->isVisible())
+ aspect->addToLayout(builder.startNewRow());
}
return named;
diff --git a/src/plugins/projectexplorer/buildstep.cpp b/src/plugins/projectexplorer/buildstep.cpp
index 97d1874e81..fb8c1f3848 100644
--- a/src/plugins/projectexplorer/buildstep.cpp
+++ b/src/plugins/projectexplorer/buildstep.cpp
@@ -152,10 +152,8 @@ BuildStepConfigWidget *BuildStep::createConfigWidget()
{
LayoutBuilder builder(widget);
for (ProjectConfigurationAspect *aspect : m_aspects) {
- if (aspect->isVisible()) {
- builder.startNewRow();
- aspect->addToLayout(builder);
- }
+ if (aspect->isVisible())
+ aspect->addToLayout(builder.startNewRow());
}
}
diff --git a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
index e3dfd2f1a0..5903379da4 100644
--- a/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
+++ b/src/plugins/projectexplorer/customexecutablerunconfiguration.cpp
@@ -126,9 +126,7 @@ CustomExecutableDialog::CustomExecutableDialog(RunConfiguration *rc)
{
LayoutBuilder builder(detailsWidget);
- builder.addItem(tr("Executable:"));
- builder.addItem(m_executableChooser);
- builder.startNewRow();
+ builder.addItems(tr("Executable:"), m_executableChooser).startNewRow();
m_arguments.addToLayout(builder);
m_workingDirectory.addToLayout(builder);
m_terminal.addToLayout(builder);
diff --git a/src/plugins/projectexplorer/projectconfiguration.cpp b/src/plugins/projectexplorer/projectconfiguration.cpp
index 442438fc3d..2d8ea701c7 100644
--- a/src/plugins/projectexplorer/projectconfiguration.cpp
+++ b/src/plugins/projectexplorer/projectconfiguration.cpp
@@ -73,9 +73,10 @@ LayoutBuilder::~LayoutBuilder()
flushPendingItems();
}
-void LayoutBuilder::startNewRow()
+LayoutBuilder &LayoutBuilder::startNewRow()
{
flushPendingItems();
+ return *this;
}
void LayoutBuilder::flushPendingItems()
@@ -132,12 +133,12 @@ QLayout *LayoutBuilder::layout() const
return m_layout;
}
-void LayoutBuilder::addItem(LayoutItem item)
+LayoutBuilder &LayoutBuilder::addItem(LayoutItem item)
{
if (item.widget && !item.widget->parent())
item.widget->setParent(m_layout->parentWidget());
-
m_pendingItems.append(item);
+ return *this;
}
diff --git a/src/plugins/projectexplorer/projectconfiguration.h b/src/plugins/projectexplorer/projectconfiguration.h
index 76b3080291..6377e55df8 100644
--- a/src/plugins/projectexplorer/projectconfiguration.h
+++ b/src/plugins/projectexplorer/projectconfiguration.h
@@ -61,8 +61,14 @@ public:
QString text;
};
- void addItem(LayoutItem item);
- void startNewRow();
+ template<typename ...Items>
+ LayoutBuilder &addItems(LayoutItem first, Items... rest) {
+ return addItem(first).addItems(rest...);
+ }
+ LayoutBuilder &addItems() { return *this; }
+ LayoutBuilder &addItem(LayoutItem item);
+
+ LayoutBuilder &startNewRow();
QLayout *layout() const;
diff --git a/src/plugins/projectexplorer/projectconfigurationaspects.cpp b/src/plugins/projectexplorer/projectconfigurationaspects.cpp
index 60b1ff400b..794a61efe0 100644
--- a/src/plugins/projectexplorer/projectconfigurationaspects.cpp
+++ b/src/plugins/projectexplorer/projectconfigurationaspects.cpp
@@ -377,8 +377,7 @@ void BaseBoolAspect::addToLayout(LayoutBuilder &builder)
d->m_checkBox = new QCheckBox(d->m_label);
d->m_checkBox->setChecked(d->m_value);
d->m_checkBox->setToolTip(d->m_tooltip);
- builder.addItem(QString());
- builder.addItem(d->m_checkBox.data());
+ builder.addItems(QString(), d->m_checkBox.data());
connect(d->m_checkBox.data(), &QAbstractButton::clicked, this, [this] {
d->m_value = d->m_checkBox->isChecked();
emit changed();
@@ -450,8 +449,7 @@ void BaseSelectionAspect::addToLayout(LayoutBuilder &builder)
auto button = new QRadioButton(option.displayName);
button->setChecked(i == d->m_value);
button->setToolTip(option.tooltip);
- builder.addItem(QString());
- builder.addItem(button);
+ builder.addItems(QString(), button);
d->m_buttons.append(button);
d->m_buttonGroup->addButton(button);
connect(button, &QAbstractButton::clicked, this, [this, i] {
@@ -521,8 +519,7 @@ void BaseIntegerAspect::addToLayout(LayoutBuilder &builder)
if (d->m_maximumValue.isValid() && d->m_maximumValue.isValid())
d->m_spinBox->setRange(int(d->m_minimumValue.toLongLong() / d->m_displayScaleFactor),
int(d->m_maximumValue.toLongLong() / d->m_displayScaleFactor));
- builder.addItem(d->m_label);
- builder.addItem(d->m_spinBox.data());
+ builder.addItems(d->m_label, d->m_spinBox.data());
connect(d->m_spinBox.data(), QOverload<int>::of(&QSpinBox::valueChanged),
this, [this](int value) {
d->m_value = value * d->m_displayScaleFactor;
diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp
index 903c6f878a..4629e0bc22 100644
--- a/src/plugins/projectexplorer/runconfiguration.cpp
+++ b/src/plugins/projectexplorer/runconfiguration.cpp
@@ -251,10 +251,8 @@ QWidget *RunConfiguration::createConfigurationWidget()
{
LayoutBuilder builder(widget);
for (ProjectConfigurationAspect *aspect : m_aspects) {
- if (aspect->isVisible()) {
- builder.startNewRow();
- aspect->addToLayout(builder);
- }
+ if (aspect->isVisible())
+ aspect->addToLayout(builder.startNewRow());
}
}
diff --git a/src/plugins/projectexplorer/runconfigurationaspects.cpp b/src/plugins/projectexplorer/runconfigurationaspects.cpp
index 0d1e963263..237970e5bd 100644
--- a/src/plugins/projectexplorer/runconfigurationaspects.cpp
+++ b/src/plugins/projectexplorer/runconfigurationaspects.cpp
@@ -68,8 +68,7 @@ void TerminalAspect::addToLayout(LayoutBuilder &builder)
QTC_CHECK(!m_checkBox);
m_checkBox = new QCheckBox(tr("Run in terminal"));
m_checkBox->setChecked(m_useTerminal);
- builder.addItem(QString());
- builder.addItem(m_checkBox.data());
+ builder.addItems(QString(), m_checkBox.data());
connect(m_checkBox.data(), &QAbstractButton::clicked, this, [this] {
m_userSet = true;
m_useTerminal = m_checkBox->isChecked();
@@ -169,9 +168,7 @@ void WorkingDirectoryAspect::addToLayout(LayoutBuilder &builder)
m_chooser->setEnvironment(m_envAspect->environment());
}
- builder.addItem(tr("Working directory:"));
- builder.addItem(m_chooser.data());
- builder.addItem(m_resetButton.data());
+ builder.addItems(tr("Working directory:"), m_chooser.data(), m_resetButton.data());
}
void WorkingDirectoryAspect::acquaintSiblings(const ProjectConfigurationAspects &siblings)
@@ -455,10 +452,8 @@ FilePath ExecutableAspect::executable() const
void ExecutableAspect::addToLayout(LayoutBuilder &builder)
{
m_executable.addToLayout(builder);
- if (m_alternativeExecutable) {
- builder.startNewRow();
- m_alternativeExecutable->addToLayout(builder);
- }
+ if (m_alternativeExecutable)
+ m_alternativeExecutable->addToLayout(builder.startNewRow());
}
void ExecutableAspect::setLabelText(const QString &labelText)
diff --git a/src/plugins/python/pythonrunconfiguration.cpp b/src/plugins/python/pythonrunconfiguration.cpp
index 41386ef611..8af7e2f1b2 100644
--- a/src/plugins/python/pythonrunconfiguration.cpp
+++ b/src/plugins/python/pythonrunconfiguration.cpp
@@ -204,9 +204,7 @@ void InterpreterAspect::addToLayout(LayoutBuilder &builder)
Core::ICore::showOptionsDialog(Constants::C_PYTHONOPTIONS_PAGE_ID);
});
- builder.addItem(tr("Interpreter"));
- builder.addItem(m_comboBox.data());
- builder.addItem(manageButton);
+ builder.addItems(tr("Interpreter"), m_comboBox.data(), manageButton);
}
void InterpreterAspect::updateCurrentInterpreter()
diff --git a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
index 2b093fd7af..a10ac4fa57 100644
--- a/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
+++ b/src/plugins/qmlprojectmanager/qmlprojectrunconfiguration.cpp
@@ -130,8 +130,7 @@ void MainQmlFileAspect::addToLayout(LayoutBuilder &builder)
connect(m_fileListCombo, QOverload<int>::of(&QComboBox::activated),
this, &MainQmlFileAspect::setMainScript);
- builder.addItem(QmlProjectRunConfiguration::tr("Main QML file:"));
- builder.addItem(m_fileListCombo.data());
+ builder.addItems(QmlProjectRunConfiguration::tr("Main QML file:"), m_fileListCombo.data());
}
void MainQmlFileAspect::toMap(QVariantMap &map) const
diff --git a/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp b/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp
index c4c9f8f376..10c6c06d45 100644
--- a/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp
+++ b/src/plugins/webassembly/webassemblyrunconfigurationaspects.cpp
@@ -88,8 +88,7 @@ void WebBrowserSelectionAspect::addToLayout(ProjectExplorer::LayoutBuilder &buil
m_currentBrowser = selectedBrowser;
emit changed();
});
- builder.addItem(tr("Web browser:"));
- builder.addItem(m_webBrowserComboBox);
+ builder.addItems(tr("Web browser:"), m_webBrowserComboBox);
}
void WebBrowserSelectionAspect::fromMap(const QVariantMap &map)