diff options
author | hjk <hjk@qt.io> | 2023-06-01 11:13:02 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2023-06-07 14:17:40 +0000 |
commit | 49e17591ea1d069e412f22e8ef40616ee9dfeeb4 (patch) | |
tree | 7af7d3cfa5d6b2f32371e8b4d842142d4085704f | |
parent | 24df1f11834a0e82b5b050c0255af8658afa5bf7 (diff) |
ProjectExplorer: Use aspects as direct members in MakeStep
Less indirection.
Change-Id: Ie0086f7f2365512694fb3de77d3efc838e6e95ed
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/libs/utils/aspects.cpp | 2 | ||||
-rw-r--r-- | src/plugins/projectexplorer/makestep.cpp | 103 | ||||
-rw-r--r-- | src/plugins/projectexplorer/makestep.h | 22 | ||||
-rw-r--r-- | src/plugins/remotelinux/makeinstallstep.cpp | 14 |
4 files changed, 63 insertions, 78 deletions
diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index 999385e1ca..5ba4922d66 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -2347,7 +2347,7 @@ void IntegersAspect::setDefaultValue(const QList<int> &value) */ TextDisplay::TextDisplay(AspectContainer *container) - : BaseAspect(container) + : BaseAspect(container), d(new Internal::TextDisplayPrivate) {} /*! diff --git a/src/plugins/projectexplorer/makestep.cpp b/src/plugins/projectexplorer/makestep.cpp index ee9ffea832..abc0853dc2 100644 --- a/src/plugins/projectexplorer/makestep.cpp +++ b/src/plugins/projectexplorer/makestep.cpp @@ -46,65 +46,58 @@ MakeStep::MakeStep(BuildStepList *parent, Id id) setCommandLineProvider([this] { return effectiveMakeCommand(Execution); }); - m_makeCommandAspect = addAspect<FilePathAspect>(); - m_makeCommandAspect->setSettingsKey(id.withSuffix(MAKE_COMMAND_SUFFIX).toString()); - m_makeCommandAspect->setExpectedKind(PathChooser::ExistingCommand); - m_makeCommandAspect->setBaseFileName(PathChooser::homePath()); - m_makeCommandAspect->setHistoryCompleter("PE.MakeCommand.History"); - - m_userArgumentsAspect = addAspect<StringAspect>(); - m_userArgumentsAspect->setSettingsKey(id.withSuffix(MAKE_ARGUMENTS_SUFFIX).toString()); - m_userArgumentsAspect->setLabelText(Tr::tr("Make arguments:")); - m_userArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay); - - m_userJobCountAspect = addAspect<IntegerAspect>(); - m_userJobCountAspect->setSettingsKey(id.withSuffix(JOBCOUNT_SUFFIX).toString()); - m_userJobCountAspect->setLabel(Tr::tr("Parallel jobs:")); - m_userJobCountAspect->setRange(1, 999); - m_userJobCountAspect->setValue(defaultJobCount()); - m_userJobCountAspect->setDefaultValue(defaultJobCount()); + m_makeCommandAspect.setSettingsKey(id.withSuffix(MAKE_COMMAND_SUFFIX).toString()); + m_makeCommandAspect.setExpectedKind(PathChooser::ExistingCommand); + m_makeCommandAspect.setBaseFileName(PathChooser::homePath()); + m_makeCommandAspect.setHistoryCompleter("PE.MakeCommand.History"); + + m_userArgumentsAspect.setSettingsKey(id.withSuffix(MAKE_ARGUMENTS_SUFFIX).toString()); + m_userArgumentsAspect.setLabelText(Tr::tr("Make arguments:")); + m_userArgumentsAspect.setDisplayStyle(StringAspect::LineEditDisplay); + + m_jobCountAspect.setSettingsKey(id.withSuffix(JOBCOUNT_SUFFIX).toString()); + m_jobCountAspect.setLabel(Tr::tr("Parallel jobs:")); + m_jobCountAspect.setRange(1, 999); + m_jobCountAspect.setValue(defaultJobCount()); + m_jobCountAspect.setDefaultValue(defaultJobCount()); const QString text = Tr::tr("Override MAKEFLAGS"); - m_overrideMakeflagsAspect = addAspect<BoolAspect>(); - m_overrideMakeflagsAspect->setSettingsKey(id.withSuffix(OVERRIDE_MAKEFLAGS_SUFFIX).toString()); - m_overrideMakeflagsAspect->setLabel(text, BoolAspect::LabelPlacement::AtCheckBox); + m_overrideMakeflagsAspect.setSettingsKey(id.withSuffix(OVERRIDE_MAKEFLAGS_SUFFIX).toString()); + m_overrideMakeflagsAspect.setLabel(text, BoolAspect::LabelPlacement::AtCheckBox); - m_nonOverrideWarning = addAspect<TextDisplay>(); - m_nonOverrideWarning->setText("<html><body><p>" + + m_nonOverrideWarning.setText("<html><body><p>" + Tr::tr("<code>MAKEFLAGS</code> specifies parallel jobs. Check \"%1\" to override.") .arg(text) + "</p></body></html>"); - m_nonOverrideWarning->setIconType(InfoLabel::Warning); + m_nonOverrideWarning.setIconType(InfoLabel::Warning); - m_disabledForSubdirsAspect = addAspect<BoolAspect>(); - m_disabledForSubdirsAspect->setSettingsKey(id.withSuffix(".disabledForSubdirs").toString()); - m_disabledForSubdirsAspect->setLabel(Tr::tr("Disable in subdirectories:")); - m_disabledForSubdirsAspect->setToolTip(Tr::tr("Runs this step only for a top-level build.")); + m_disabledForSubdirsAspect.setSettingsKey(id.withSuffix(".disabledForSubdirs").toString()); + m_disabledForSubdirsAspect.setLabel(Tr::tr("Disable in subdirectories:")); + m_disabledForSubdirsAspect.setToolTip(Tr::tr("Runs this step only for a top-level build.")); - m_buildTargetsAspect = addAspect<MultiSelectionAspect>(); - m_buildTargetsAspect->setSettingsKey(id.withSuffix(BUILD_TARGETS_SUFFIX).toString()); - m_buildTargetsAspect->setLabelText(Tr::tr("Targets:")); + m_buildTargetsAspect.setSettingsKey(id.withSuffix(BUILD_TARGETS_SUFFIX).toString()); + m_buildTargetsAspect.setLabelText(Tr::tr("Targets:")); const auto updateMakeLabel = [this] { const FilePath defaultMake = defaultMakeCommand(); const QString labelText = defaultMake.isEmpty() ? Tr::tr("Make:") : Tr::tr("Override %1:").arg(defaultMake.toUserOutput()); - m_makeCommandAspect->setLabelText(labelText); + m_makeCommandAspect.setLabelText(labelText); }; updateMakeLabel(); - connect(m_makeCommandAspect, &StringAspect::changed, this, updateMakeLabel); + connect(&m_makeCommandAspect, &StringAspect::changed, this, updateMakeLabel); } void MakeStep::setSelectedBuildTarget(const QString &buildTarget) { - m_buildTargetsAspect->setValue({buildTarget}); + m_buildTargetsAspect.setValue({buildTarget}); } void MakeStep::setAvailableBuildTargets(const QStringList &buildTargets) { - m_buildTargetsAspect->setAllValues(buildTargets); + m_buildTargetsAspect.setAllValues(buildTargets); } bool MakeStep::init() @@ -183,7 +176,7 @@ bool MakeStep::isJobCountSupported() const bool MakeStep::jobCountOverridesMakeflags() const { - return m_overrideMakeflagsAspect->value(); + return m_overrideMakeflagsAspect(); } static std::optional<int> argsJobCount(const QString &str) @@ -216,12 +209,12 @@ bool MakeStep::makeflagsJobCountMismatch() const if (!env.hasKey(MAKEFLAGS)) return false; std::optional<int> makeFlagsJobCount = argsJobCount(env.expandedValueForKey(MAKEFLAGS)); - return makeFlagsJobCount.has_value() && *makeFlagsJobCount != m_userJobCountAspect->value(); + return makeFlagsJobCount.has_value() && *makeFlagsJobCount != m_jobCountAspect(); } bool MakeStep::enabledForSubDirs() const { - return !m_disabledForSubdirsAspect->value(); + return !m_disabledForSubdirsAspect(); } bool MakeStep::makeflagsContainsJobCount() const @@ -255,7 +248,7 @@ Environment MakeStep::makeEnvironment() const void MakeStep::setMakeCommand(const FilePath &command) { - m_makeCommandAspect->setFilePath(command); + m_makeCommandAspect.setFilePath(command); } int MakeStep::defaultJobCount() @@ -269,17 +262,17 @@ QStringList MakeStep::jobArguments() const || (makeflagsContainsJobCount() && !jobCountOverridesMakeflags())) { return {}; } - return {"-j" + QString::number(m_userJobCountAspect->value())}; + return {"-j" + QString::number(m_jobCountAspect())}; } QString MakeStep::userArguments() const { - return m_userArgumentsAspect->value(); + return m_userArgumentsAspect(); } void MakeStep::setUserArguments(const QString &args) { - m_userArgumentsAspect->setValue(args); + m_userArgumentsAspect.setValue(args); } QStringList MakeStep::displayArguments() const @@ -289,7 +282,7 @@ QStringList MakeStep::displayArguments() const FilePath MakeStep::makeCommand() const { - return m_makeCommandAspect->filePath(); + return m_makeCommandAspect(); } FilePath MakeStep::makeExecutable() const @@ -306,7 +299,7 @@ CommandLine MakeStep::effectiveMakeCommand(MakeCommandType type) const cmd.addArgs(displayArguments()); cmd.addArgs(userArguments(), CommandLine::Raw); cmd.addArgs(jobArguments()); - cmd.addArgs(m_buildTargetsAspect->value()); + cmd.addArgs(m_buildTargetsAspect.value()); return cmd; } @@ -316,7 +309,7 @@ QWidget *MakeStep::createConfigWidget() Layouting::Form builder; builder.addRow({m_makeCommandAspect}); builder.addRow({m_userArgumentsAspect}); - builder.addRow({m_userJobCountAspect, m_overrideMakeflagsAspect, m_nonOverrideWarning}); + builder.addRow({m_jobCountAspect, m_overrideMakeflagsAspect, m_nonOverrideWarning}); if (m_disablingForSubDirsSupported) builder.addRow({m_disabledForSubdirsAspect}); builder.addRow({m_buildTargetsAspect}); @@ -350,23 +343,23 @@ QWidget *MakeStep::createConfigWidget() auto updateDetails = [this] { const bool jobCountVisible = isJobCountSupported(); - m_userJobCountAspect->setVisible(jobCountVisible); - m_overrideMakeflagsAspect->setVisible(jobCountVisible); + m_jobCountAspect.setVisible(jobCountVisible); + m_overrideMakeflagsAspect.setVisible(jobCountVisible); const bool jobCountEnabled = !userArgsContainsJobCount(); - m_userJobCountAspect->setEnabled(jobCountEnabled); - m_overrideMakeflagsAspect->setEnabled(jobCountEnabled); - m_nonOverrideWarning->setVisible(makeflagsJobCountMismatch() + m_jobCountAspect.setEnabled(jobCountEnabled); + m_overrideMakeflagsAspect.setEnabled(jobCountEnabled); + m_nonOverrideWarning.setVisible(makeflagsJobCountMismatch() && !jobCountOverridesMakeflags()); }; updateDetails(); - connect(m_makeCommandAspect, &StringAspect::changed, widget, updateDetails); - connect(m_userArgumentsAspect, &StringAspect::changed, widget, updateDetails); - connect(m_userJobCountAspect, &IntegerAspect::changed, widget, updateDetails); - connect(m_overrideMakeflagsAspect, &BoolAspect::changed, widget, updateDetails); - connect(m_buildTargetsAspect, &BaseAspect::changed, widget, updateDetails); + connect(&m_makeCommandAspect, &StringAspect::changed, widget, updateDetails); + connect(&m_userArgumentsAspect, &StringAspect::changed, widget, updateDetails); + connect(&m_jobCountAspect, &IntegerAspect::changed, widget, updateDetails); + connect(&m_overrideMakeflagsAspect, &BoolAspect::changed, widget, updateDetails); + connect(&m_buildTargetsAspect, &BaseAspect::changed, widget, updateDetails); connect(ProjectExplorerPlugin::instance(), &ProjectExplorerPlugin::settingsChanged, widget, updateDetails); @@ -382,7 +375,7 @@ QWidget *MakeStep::createConfigWidget() QStringList MakeStep::availableTargets() const { - return m_buildTargetsAspect->allValues(); + return m_buildTargetsAspect.allValues(); } } // namespace ProjectExplorer diff --git a/src/plugins/projectexplorer/makestep.h b/src/plugins/projectexplorer/makestep.h index 2f12894ea6..d26820d90c 100644 --- a/src/plugins/projectexplorer/makestep.h +++ b/src/plugins/projectexplorer/makestep.h @@ -59,26 +59,18 @@ protected: void supportDisablingForSubdirs() { m_disablingForSubDirsSupported = true; } virtual QStringList displayArguments() const; - Utils::StringAspect *makeCommandAspect() const { return m_makeCommandAspect; } - Utils::MultiSelectionAspect *buildTargetsAspect() const { return m_buildTargetsAspect; } - Utils::StringAspect *userArgumentsAspect() const { return m_userArgumentsAspect; } - Utils::BoolAspect *overrideMakeflagsAspect() const { return m_overrideMakeflagsAspect; } - Utils::TextDisplay *nonOverrideWarning() const { return m_nonOverrideWarning; } - Utils::IntegerAspect *jobCountAspect() const { return m_userJobCountAspect; } - Utils::BoolAspect *disabledForSubdirsAspect() const { return m_disabledForSubdirsAspect; } - + Utils::FilePathAspect m_makeCommandAspect{this}; + Utils::MultiSelectionAspect m_buildTargetsAspect{this}; + Utils::StringAspect m_userArgumentsAspect{this}; + Utils::BoolAspect m_overrideMakeflagsAspect{this}; + Utils::TextDisplay m_nonOverrideWarning{this}; + Utils::IntegerAspect m_jobCountAspect{this}; + Utils::BoolAspect m_disabledForSubdirsAspect{this}; private: static int defaultJobCount(); QStringList jobArguments() const; - Utils::MultiSelectionAspect *m_buildTargetsAspect = nullptr; - Utils::StringAspect *m_makeCommandAspect = nullptr; - Utils::StringAspect *m_userArgumentsAspect = nullptr; - Utils::IntegerAspect *m_userJobCountAspect = nullptr; - Utils::BoolAspect *m_overrideMakeflagsAspect = nullptr; - Utils::BoolAspect *m_disabledForSubdirsAspect = nullptr; - Utils::TextDisplay *m_nonOverrideWarning = nullptr; bool m_disablingForSubDirsSupported = false; }; diff --git a/src/plugins/remotelinux/makeinstallstep.cpp b/src/plugins/remotelinux/makeinstallstep.cpp index 42f0467c94..a93fccba41 100644 --- a/src/plugins/remotelinux/makeinstallstep.cpp +++ b/src/plugins/remotelinux/makeinstallstep.cpp @@ -41,13 +41,13 @@ const char CustomCommandLineAspectId[] = "RemoteLinux.MakeInstall.CustomCommandL MakeInstallStep::MakeInstallStep(BuildStepList *parent, Id id) : MakeStep(parent, id) { - makeCommandAspect()->setVisible(false); - buildTargetsAspect()->setVisible(false); - userArgumentsAspect()->setVisible(false); - overrideMakeflagsAspect()->setVisible(false); - nonOverrideWarning()->setVisible(false); - jobCountAspect()->setVisible(false); - disabledForSubdirsAspect()->setVisible(false); + m_makeCommandAspect.setVisible(false); + m_buildTargetsAspect.setVisible(false); + m_userArgumentsAspect.setVisible(false); + m_overrideMakeflagsAspect.setVisible(false); + m_nonOverrideWarning.setVisible(false); + m_jobCountAspect.setVisible(false); + m_disabledForSubdirsAspect.setVisible(false); // FIXME: Hack, Part#1: If the build device is not local, start with a temp dir // inside the build dir. On Docker that's typically shared with the host. |