diff options
author | Tobias Hunger <tobias.hunger@qt.io> | 2017-07-17 16:54:13 +0200 |
---|---|---|
committer | Tobias Hunger <tobias.hunger@qt.io> | 2017-07-28 17:26:10 +0000 |
commit | 366ada9fea70c74a85e858d743e41553ac7373f8 (patch) | |
tree | c1e177928a7393abfb2f2f259d2e4344f7cba775 | |
parent | 131c7a1c4e60da68bd5cfc5a6d5df1dc81ed0125 (diff) |
RunConfiguration: Centralize enabled state handling
Centralize handling of enabled state of RunConfiguration widgets.
Remove code that does the same thing in all the different run configuration
widgets.
Change-Id: I175d7e19d031bd28a2b19cd825e0b6568da19bc3
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
15 files changed, 39 insertions, 146 deletions
diff --git a/src/plugins/android/androidrunconfigurationwidget.cpp b/src/plugins/android/androidrunconfigurationwidget.cpp index a9560fdaaa1..a7327ce917a 100644 --- a/src/plugins/android/androidrunconfigurationwidget.cpp +++ b/src/plugins/android/androidrunconfigurationwidget.cpp @@ -69,9 +69,7 @@ AndroidRunConfigurationWidget::AndroidRunConfigurationWidget(QWidget *parent): }); } -AndroidRunConfigurationWidget::~AndroidRunConfigurationWidget() -{ -} +AndroidRunConfigurationWidget::~AndroidRunConfigurationWidget() = default; void AndroidRunConfigurationWidget::setAmStartArgs(const QStringList &args) { diff --git a/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp b/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp index 2b8a0868e23..942702ca235 100644 --- a/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp +++ b/src/plugins/baremetal/baremetalrunconfigurationwidget.cpp @@ -49,9 +49,6 @@ public: { } BareMetalRunConfiguration * const runConfiguration; - QWidget topWidget; - QLabel disabledIcon; - QLabel disabledReason; QLineEdit workingDirLineEdit; QLabel localExecutableLabel; QFormLayout genericWidgetsLayout; @@ -65,11 +62,7 @@ BareMetalRunConfigurationWidget::BareMetalRunConfigurationWidget(BareMetalRunCon QWidget *parent) : QWidget(parent), d(new BareMetalRunConfigurationWidgetPrivate(runConfiguration)) { - QVBoxLayout *topLayout = new QVBoxLayout(this); - topLayout->setMargin(0); - addDisabledLabel(topLayout); - topLayout->addWidget(&d->topWidget); - QVBoxLayout *mainLayout = new QVBoxLayout(&d->topWidget); + QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setMargin(0); Utils::DetailsWidget *detailsContainer = new Utils::DetailsWidget(this); @@ -97,9 +90,6 @@ BareMetalRunConfigurationWidget::BareMetalRunConfigurationWidget(BareMetalRunCon this, &BareMetalRunConfigurationWidget::updateTargetInformation); connect(&d->workingDirLineEdit, &QLineEdit::textEdited, this, &BareMetalRunConfigurationWidget::handleWorkingDirectoryChanged); - connect(d->runConfiguration, &ProjectExplorer::RunConfiguration::enabledChanged, - this, &BareMetalRunConfigurationWidget::runConfigurationEnabledChange); - runConfigurationEnabledChange(); } BareMetalRunConfigurationWidget::~BareMetalRunConfigurationWidget() @@ -107,18 +97,6 @@ BareMetalRunConfigurationWidget::~BareMetalRunConfigurationWidget() delete d; } -void BareMetalRunConfigurationWidget::addDisabledLabel(QVBoxLayout *topLayout) -{ - QHBoxLayout * const hl = new QHBoxLayout; - hl->addStretch(); - d->disabledIcon.setPixmap(Utils::Icons::WARNING.pixmap()); - hl->addWidget(&d->disabledIcon); - d->disabledReason.setVisible(false); - hl->addWidget(&d->disabledReason); - hl->addStretch(); - topLayout->addLayout(hl); -} - void BareMetalRunConfigurationWidget::updateTargetInformation() { setLabelText(d->localExecutableLabel, @@ -138,13 +116,4 @@ void BareMetalRunConfigurationWidget::setLabelText(QLabel &label, const QString label.setText(regularText.isEmpty() ? errorMessage : regularText); } -void BareMetalRunConfigurationWidget::runConfigurationEnabledChange() -{ - bool enabled = d->runConfiguration->isEnabled(); - d->topWidget.setEnabled(enabled); - d->disabledIcon.setVisible(!enabled); - d->disabledReason.setVisible(!enabled); - d->disabledReason.setText(d->runConfiguration->disabledReason()); -} - } // namespace BareMetal diff --git a/src/plugins/baremetal/baremetalrunconfigurationwidget.h b/src/plugins/baremetal/baremetalrunconfigurationwidget.h index 76f9cc86b77..d5a5a271cdd 100644 --- a/src/plugins/baremetal/baremetalrunconfigurationwidget.h +++ b/src/plugins/baremetal/baremetalrunconfigurationwidget.h @@ -46,9 +46,6 @@ public: explicit BareMetalRunConfigurationWidget(BareMetalRunConfiguration *runConfiguration, QWidget *parent = 0); ~BareMetalRunConfigurationWidget(); - void addDisabledLabel(QVBoxLayout *topLayout); - - Q_SLOT void runConfigurationEnabledChange(); private: void updateTargetInformation(); diff --git a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp index a3468804fdf..56530dbebb6 100644 --- a/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp +++ b/src/plugins/cmakeprojectmanager/cmakerunconfiguration.cpp @@ -210,8 +210,6 @@ CMakeRunConfigurationWidget::CMakeRunConfigurationWidget(CMakeRunConfiguration * auto vbx = new QVBoxLayout(this); vbx->setMargin(0); vbx->addWidget(detailsContainer); - - setEnabled(cmakeRunConfiguration->isEnabled()); } // Factory diff --git a/src/plugins/nim/project/nimrunconfigurationwidget.cpp b/src/plugins/nim/project/nimrunconfigurationwidget.cpp index 74ea801937b..0fc0b671a6e 100644 --- a/src/plugins/nim/project/nimrunconfigurationwidget.cpp +++ b/src/plugins/nim/project/nimrunconfigurationwidget.cpp @@ -45,14 +45,6 @@ NimRunConfigurationWidget::NimRunConfigurationWidget(NimRunConfiguration *rc, fl->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); rc->extraAspect<ArgumentsAspect>()->addToMainConfigurationWidget(this, fl); rc->extraAspect<TerminalAspect>()->addToMainConfigurationWidget(this,fl); - connect(rc, &NimRunConfiguration::enabledChanged, this, &NimRunConfigurationWidget::updateUi); - updateUi(); } - -void NimRunConfigurationWidget::updateUi() -{ - setEnabled(m_rc->isEnabled()); -} - -} +} // namespace Nim diff --git a/src/plugins/nim/project/nimrunconfigurationwidget.h b/src/plugins/nim/project/nimrunconfigurationwidget.h index 9c47bf1d067..7e5e096bf0a 100644 --- a/src/plugins/nim/project/nimrunconfigurationwidget.h +++ b/src/plugins/nim/project/nimrunconfigurationwidget.h @@ -39,9 +39,7 @@ public: explicit NimRunConfigurationWidget(NimRunConfiguration *rc, QWidget *parent = 0); private: - void updateUi(); - NimRunConfiguration* m_rc; }; -} +} // namespace Nim diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.cpp b/src/plugins/projectexplorer/runsettingspropertiespage.cpp index 88fb230f05e..d3104be154e 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.cpp +++ b/src/plugins/projectexplorer/runsettingspropertiespage.cpp @@ -39,6 +39,7 @@ #include <projectexplorer/buildmanager.h> #include <utils/algorithm.h> #include <utils/qtcassert.h> +#include <utils/utilsicons.h> #include <QVariant> #include <QAction> @@ -184,6 +185,16 @@ RunSettingsWidget::RunSettingsWidget(Target *target) : m_runLayout->setMargin(0); m_runLayout->setSpacing(5); + m_disabledIcon = new QLabel; + m_disabledIcon->setPixmap(Utils::Icons::WARNING.pixmap()); + m_disabledText = new QLabel; + auto disabledHBox = new QHBoxLayout; + disabledHBox->addWidget(m_disabledIcon); + disabledHBox->addWidget(m_disabledText); + disabledHBox->addStretch(255); + + m_runLayout->addLayout(disabledHBox); + m_addRunMenu = new QMenu(m_addRunToolButton); m_addRunToolButton->setMenu(m_addRunMenu); RunConfiguration *rc = m_target->activeRunConfiguration(); @@ -485,9 +496,12 @@ void RunSettingsWidget::setConfigurationWidget(RunConfiguration *rc) return; m_runConfigurationWidget = rc->createConfigurationWidget(); m_runConfiguration = rc; - if (m_runConfigurationWidget) + if (m_runConfigurationWidget) { m_runLayout->addWidget(m_runConfigurationWidget); - + updateEnabledState(); + connect(m_runConfiguration, &RunConfiguration::enabledChanged, + m_runConfigurationWidget, [this]() { updateEnabledState(); }); + } addRunControlWidgets(); } @@ -561,3 +575,15 @@ void RunSettingsWidget::removeSubWidgets() } m_subWidgets.clear(); } + +void RunSettingsWidget::updateEnabledState() +{ + const bool enable = m_runConfiguration ? m_runConfiguration->isEnabled() : false; + const QString reason = m_runConfiguration ? m_runConfiguration->disabledReason() : QString(); + + m_runConfigurationWidget->setEnabled(enable); + + m_disabledIcon->setVisible(!enable && !reason.isEmpty()); + m_disabledText->setVisible(!enable && !reason.isEmpty()); + m_disabledText->setText(reason); +} diff --git a/src/plugins/projectexplorer/runsettingspropertiespage.h b/src/plugins/projectexplorer/runsettingspropertiespage.h index 839a1e56887..5a551f94213 100644 --- a/src/plugins/projectexplorer/runsettingspropertiespage.h +++ b/src/plugins/projectexplorer/runsettingspropertiespage.h @@ -80,6 +80,8 @@ private: void addSubWidget(RunConfigWidget *subWidget); void removeSubWidgets(); + void updateEnabledState(); + Target *m_target; RunConfigurationModel *m_runConfigurationsModel; DeployConfigurationModel *m_deployConfigurationModel; @@ -105,6 +107,8 @@ private: QPushButton *m_removeRunToolButton; QPushButton *m_renameRunButton; QPushButton *m_renameDeployButton; + QLabel *m_disabledIcon; + QLabel *m_disabledText; }; } // namespace Internal diff --git a/src/plugins/pythoneditor/pythoneditorplugin.cpp b/src/plugins/pythoneditor/pythoneditorplugin.cpp index fc84c9636b1..cdc58249946 100644 --- a/src/plugins/pythoneditor/pythoneditorplugin.cpp +++ b/src/plugins/pythoneditor/pythoneditorplugin.cpp @@ -270,8 +270,6 @@ PythonRunConfigurationWidget::PythonRunConfigurationWidget(PythonRunConfiguratio auto vbx = new QVBoxLayout(this); vbx->setMargin(0); vbx->addWidget(m_detailsContainer); - - setEnabled(runConfiguration->isEnabled()); } class PythonRunConfigurationFactory : public IRunConfigurationFactory diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp index e70f239748c..a324b2d2f3b 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.cpp @@ -313,17 +313,6 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc) auto vboxTopLayout = new QVBoxLayout(this); vboxTopLayout->setMargin(0); - auto hl = new QHBoxLayout(); - hl->addStretch(); - m_disabledIcon = new QLabel(this); - m_disabledIcon->setPixmap(Utils::Icons::WARNING.pixmap()); - hl->addWidget(m_disabledIcon); - m_disabledReason = new QLabel(this); - m_disabledReason->setVisible(false); - hl->addWidget(m_disabledReason); - hl->addStretch(); - vboxTopLayout->addLayout(hl); - auto detailsContainer = new Utils::DetailsWidget(this); detailsContainer->setState(Utils::DetailsWidget::NoSummary); vboxTopLayout->addWidget(detailsContainer); @@ -343,23 +332,11 @@ QbsRunConfigurationWidget::QbsRunConfigurationWidget(QbsRunConfiguration *rc) m_rc->extraAspect<TerminalAspect>()->addToMainConfigurationWidget(this, toplayout); - runConfigurationEnabledChange(); - connect(m_rc, &QbsRunConfiguration::targetInformationChanged, this, &QbsRunConfigurationWidget::targetInformationHasChanged, Qt::QueuedConnection); connect(m_rc, &RunConfiguration::enabledChanged, - this, &QbsRunConfigurationWidget::runConfigurationEnabledChange); -} - -void QbsRunConfigurationWidget::runConfigurationEnabledChange() -{ - bool enabled = m_rc->isEnabled(); - m_disabledIcon->setVisible(!enabled); - m_disabledReason->setVisible(!enabled); - m_disabledReason->setText(m_rc->disabledReason()); - - targetInformationHasChanged(); + this, &QbsRunConfigurationWidget::targetInformationHasChanged); } void QbsRunConfigurationWidget::targetInformationHasChanged() diff --git a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h index 8ec444ba3cf..ef303455d6f 100644 --- a/src/plugins/qbsprojectmanager/qbsrunconfiguration.h +++ b/src/plugins/qbsprojectmanager/qbsrunconfiguration.h @@ -113,10 +113,8 @@ private: void setExecutableLineText(const QString &text = QString()); QbsRunConfiguration *m_rc; - bool m_ignoreChange = false; - QLabel *m_disabledIcon; - QLabel *m_disabledReason; QLabel *m_executableLineLabel; + bool m_ignoreChange = false; bool m_isShown = false; }; diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp index 297362547f8..27359726e0e 100644 --- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp +++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.cpp @@ -147,17 +147,6 @@ DesktopQmakeRunConfigurationWidget::DesktopQmakeRunConfigurationWidget(DesktopQm auto vboxTopLayout = new QVBoxLayout(this); vboxTopLayout->setMargin(0); - auto hl = new QHBoxLayout(); - hl->addStretch(); - m_disabledIcon = new QLabel(this); - m_disabledIcon->setPixmap(Utils::Icons::WARNING.pixmap()); - hl->addWidget(m_disabledIcon); - m_disabledReason = new QLabel(this); - m_disabledReason->setVisible(false); - hl->addWidget(m_disabledReason); - hl->addStretch(); - vboxTopLayout->addLayout(hl); - auto detailsContainer = new DetailsWidget(this); detailsContainer->setState(DetailsWidget::NoSummary); vboxTopLayout->addWidget(detailsContainer); @@ -213,8 +202,6 @@ DesktopQmakeRunConfigurationWidget::DesktopQmakeRunConfigurationWidget(DesktopQm this, &DesktopQmakeRunConfigurationWidget::usingLibrarySearchPathToggled); } - runConfigurationEnabledChange(); - connect(qmakeRunConfiguration, &DesktopQmakeRunConfiguration::usingDyldImageSuffixChanged, this, &DesktopQmakeRunConfigurationWidget::usingDyldImageSuffixChanged); connect(qmakeRunConfiguration, &DesktopQmakeRunConfiguration::usingLibrarySearchPathChanged, @@ -222,21 +209,10 @@ DesktopQmakeRunConfigurationWidget::DesktopQmakeRunConfigurationWidget(DesktopQm connect(qmakeRunConfiguration, &DesktopQmakeRunConfiguration::effectiveTargetInformationChanged, this, &DesktopQmakeRunConfigurationWidget::effectiveTargetInformationChanged, Qt::QueuedConnection); - connect(qmakeRunConfiguration, &RunConfiguration::enabledChanged, - this, &DesktopQmakeRunConfigurationWidget::runConfigurationEnabledChange); - Core::VariableChooser::addSupportForChildWidgets(this, m_qmakeRunConfiguration->macroExpander()); effectiveTargetInformationChanged(); } -void DesktopQmakeRunConfigurationWidget::runConfigurationEnabledChange() -{ - bool enabled = m_qmakeRunConfiguration->isEnabled(); - m_disabledIcon->setVisible(!enabled); - m_disabledReason->setVisible(!enabled); - m_disabledReason->setText(m_qmakeRunConfiguration->disabledReason()); -} - void DesktopQmakeRunConfigurationWidget::usingDyldImageSuffixToggled(bool state) { m_ignoreChange = true; diff --git a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h index a7dd10ef142..f72edbf8912 100644 --- a/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h +++ b/src/plugins/qmakeprojectmanager/desktopqmakerunconfiguration.h @@ -120,7 +120,6 @@ public: explicit DesktopQmakeRunConfigurationWidget(DesktopQmakeRunConfiguration *qmakeRunConfiguration); private: - void runConfigurationEnabledChange(); void effectiveTargetInformationChanged(); void usingDyldImageSuffixToggled(bool); void usingDyldImageSuffixChanged(bool); @@ -130,8 +129,6 @@ private: private: DesktopQmakeRunConfiguration *m_qmakeRunConfiguration = nullptr; bool m_ignoreChange = false; - QLabel *m_disabledIcon = nullptr; - QLabel *m_disabledReason = nullptr; QLabel *m_executableLineLabel = nullptr; QCheckBox *m_useQvfbCheck = nullptr; QCheckBox *m_usingDyldImageSuffix = nullptr; diff --git a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp index 8e3442efaf8..1f898bfdc63 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp +++ b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.cpp @@ -58,9 +58,6 @@ public: RemoteLinuxRunConfiguration * const runConfiguration; bool ignoreChange; - QWidget topWidget; - QLabel disabledIcon; - QLabel disabledReason; QLineEdit argsLineEdit; QLineEdit workingDirLineEdit; QLabel localExecutableLabel; @@ -79,17 +76,9 @@ RemoteLinuxRunConfigurationWidget::RemoteLinuxRunConfigurationWidget(RemoteLinux QWidget *parent) : QWidget(parent), d(new RemoteLinuxRunConfigurationWidgetPrivate(runConfiguration)) { - QVBoxLayout *topLayout = new QVBoxLayout(this); - topLayout->setMargin(0); - addDisabledLabel(topLayout); - topLayout->addWidget(&d->topWidget); - QVBoxLayout *mainLayout = new QVBoxLayout(&d->topWidget); + QVBoxLayout *mainLayout = new QVBoxLayout(this); mainLayout->setMargin(0); addGenericWidgets(mainLayout); - - connect(d->runConfiguration, &RemoteLinuxRunConfiguration::enabledChanged, - this, &RemoteLinuxRunConfigurationWidget::runConfigurationEnabledChange); - runConfigurationEnabledChange(); } RemoteLinuxRunConfigurationWidget::~RemoteLinuxRunConfigurationWidget() @@ -102,27 +91,6 @@ void RemoteLinuxRunConfigurationWidget::addFormLayoutRow(QWidget *label, QWidget d->genericWidgetsLayout.addRow(label, field); } -void RemoteLinuxRunConfigurationWidget::addDisabledLabel(QVBoxLayout *topLayout) -{ - QHBoxLayout * const hl = new QHBoxLayout; - hl->addStretch(); - d->disabledIcon.setPixmap(Utils::Icons::WARNING.pixmap()); - hl->addWidget(&d->disabledIcon); - d->disabledReason.setVisible(false); - hl->addWidget(&d->disabledReason); - hl->addStretch(); - topLayout->addLayout(hl); -} - -void RemoteLinuxRunConfigurationWidget::runConfigurationEnabledChange() -{ - bool enabled = d->runConfiguration->isEnabled(); - d->topWidget.setEnabled(enabled); - d->disabledIcon.setVisible(!enabled); - d->disabledReason.setVisible(!enabled); - d->disabledReason.setText(d->runConfiguration->disabledReason()); -} - void RemoteLinuxRunConfigurationWidget::addGenericWidgets(QVBoxLayout *mainLayout) { Utils::DetailsWidget *detailsContainer = new Utils::DetailsWidget(this); diff --git a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h index a25d74220af..0ac60985c6b 100644 --- a/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h +++ b/src/plugins/remotelinux/remotelinuxrunconfigurationwidget.h @@ -49,9 +49,6 @@ public: void addFormLayoutRow(QWidget *label, QWidget *field); - void addDisabledLabel(QVBoxLayout *topLayout); - void runConfigurationEnabledChange(); - private: void argumentsEdited(const QString &args); void updateTargetInformation(); |