From 798d115a5c2826301d03bdcf150252a16de04e91 Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 20 Mar 2018 13:09:16 +0100 Subject: [PATCH] Consolidate some run configuration widget boilerplate This removes the outermost layer of widget-vbox and moves some common code into a helper function. The pattern repeats (with variations) a few more times, that's left for later patches. Change-Id: I8c98229cf41d03d5330c896ec9fa0965bfc65602 Reviewed-by: Tobias Hunger --- .../cmakerunconfiguration.cpp | 19 +++---------------- .../cmakerunconfiguration.h | 2 +- .../projectexplorer/runconfiguration.cpp | 9 +++++++++ .../projectexplorer/runconfiguration.h | 1 + .../qbsprojectmanager/qbsrunconfiguration.cpp | 14 ++------------ .../desktopqmakerunconfiguration.cpp | 13 ++----------- 6 files changed, 18 insertions(+), 40 deletions(-) diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index c5ef733d762..ad3d3b0496d 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -35,7 +35,6 @@ #include #include -#include #include #include #include @@ -164,7 +163,7 @@ void CMakeRunConfiguration::updateEnabledState() QWidget *CMakeRunConfiguration::createConfigurationWidget() { - return new CMakeRunConfigurationWidget(this); + return wrapWidget(new CMakeRunConfigurationWidget(this)); } QString CMakeRunConfiguration::disabledReason() const @@ -190,10 +189,9 @@ static void updateExecutable(CMakeRunConfiguration *rc, Utils::FancyLineEdit *fl } // Configuration widget -CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration, QWidget *parent) - : QWidget(parent) +CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration) { - auto fl = new QFormLayout(); + auto fl = new QFormLayout(this); fl->setMargin(0); fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); @@ -210,17 +208,6 @@ CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration * cmakeRunConfiguration->extraAspect()->addToMainConfigurationWidget(this, fl); cmakeRunConfiguration->extraAspect()->addToMainConfigurationWidget(this, fl); cmakeRunConfiguration->extraAspect()->addToMainConfigurationWidget(this, fl); - - auto detailsContainer = new Utils::DetailsWidget(this); - detailsContainer->setState(Utils::DetailsWidget::NoSummary); - - auto detailsWidget = new QWidget(detailsContainer); - detailsContainer->setWidget(detailsWidget); - detailsWidget->setLayout(fl); - - auto vbx = new QVBoxLayout(this); - vbx->setMargin(0); - vbx->addWidget(detailsContainer); } // Factory diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h index 2a619bc574e..698fed19334 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.h @@ -71,7 +71,7 @@ class CMakeRunConfigurationWidget : public QWidget Q_OBJECT public: - explicit CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration, QWidget *parent = 0); + explicit CMakeRunConfigurationWidget(CMakeRunConfiguration *cmakeRunConfiguration); }; class CMakeRunConfigurationFactory : public ProjectExplorer::RunConfigurationFactory diff --git a/src/plugins/projectexplorer/runconfiguration.cpp b/src/plugins/projectexplorer/runconfiguration.cpp index 10c23082a39..fbef8e738cf 100644 --- a/src/plugins/projectexplorer/runconfiguration.cpp +++ b/src/plugins/projectexplorer/runconfiguration.cpp @@ -38,6 +38,7 @@ #include #include +#include #include #include #include @@ -298,6 +299,14 @@ BuildConfiguration *RunConfiguration::activeBuildConfiguration() const return target()->activeBuildConfiguration(); } +QWidget *RunConfiguration::wrapWidget(QWidget *inner) const +{ + auto detailsWidget = new Utils::DetailsWidget; + detailsWidget->setState(DetailsWidget::NoSummary); + detailsWidget->setWidget(inner); + return detailsWidget; +} + Target *RunConfiguration::target() const { return static_cast(parent()); diff --git a/src/plugins/projectexplorer/runconfiguration.h b/src/plugins/projectexplorer/runconfiguration.h index 259804d7cac..e4a2bb65d18 100644 --- a/src/plugins/projectexplorer/runconfiguration.h +++ b/src/plugins/projectexplorer/runconfiguration.h @@ -269,6 +269,7 @@ protected: /// convenience function to get current build configuration. BuildConfiguration *activeBuildConfiguration() const; + QWidget *wrapWidget(QWidget *inner) const; virtual void updateEnabledState(); virtual void doAdditionalSetup(const RunConfigurationCreationInfo &) {} diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index e8da9cded2f..7a9e4e4229c 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -44,7 +44,6 @@ #include #include -#include #include #include #include @@ -89,16 +88,7 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc) { m_runConfiguration = rc; - auto mainLayout = new QVBoxLayout(this); - mainLayout->setMargin(0); - - auto detailsContainer = new Utils::DetailsWidget(this); - detailsContainer->setState(Utils::DetailsWidget::NoSummary); - - mainLayout->addWidget(detailsContainer); - auto detailsWidget = new QWidget(detailsContainer); - detailsContainer->setWidget(detailsWidget); - auto toplayout = new QFormLayout(detailsWidget); + auto toplayout = new QFormLayout(this); toplayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); toplayout->setMargin(0); @@ -230,7 +220,7 @@ void QbsRunConfiguration::doAdditionalSetup(const RunConfigurationCreationInfo & QWidget *QbsRunConfiguration::createConfigurationWidget() { - return new QbsRunConfigurationWidget(this); + return wrapWidget(new QbsRunConfigurationWidget(this)); } Runnable QbsRunConfiguration::runnable() const diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp index ea943065b47..221ac759180 100644 --- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp @@ -38,7 +38,6 @@ #include #include -#include #include #include #include @@ -115,15 +114,7 @@ void DesktopQmakeRunConfiguration::updateTargetInformation() DesktopQmakeRunConfigurationWidget::DesktopQmakeRunConfigurationWidget(DesktopQmakeRunConfiguration *qmakeRunConfiguration) : m_qmakeRunConfiguration(qmakeRunConfiguration) { - auto vboxTopLayout = new QVBoxLayout(this); - vboxTopLayout->setMargin(0); - - auto detailsContainer = new DetailsWidget(this); - detailsContainer->setState(DetailsWidget::NoSummary); - vboxTopLayout->addWidget(detailsContainer); - auto detailsWidget = new QWidget(detailsContainer); - detailsContainer->setWidget(detailsWidget); - auto toplayout = new QFormLayout(detailsWidget); + auto toplayout = new QFormLayout(this); toplayout->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); toplayout->setMargin(0); @@ -207,7 +198,7 @@ void DesktopQmakeRunConfigurationWidget::effectiveTargetInformationChanged() QWidget *DesktopQmakeRunConfiguration::createConfigurationWidget() { - return new DesktopQmakeRunConfigurationWidget(this); + return wrapWidget(new DesktopQmakeRunConfigurationWidget(this)); } Runnable DesktopQmakeRunConfiguration::runnable() const