ProjectExplorer: Use new AspectContainer and TextDisplay

... as replacement for OverrideMakeflagsAspect.

Change-Id: Id8a3ccde7bf3b7c62679e927a82ce7d6acd37e66
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
hjk
2020-08-14 08:57:23 +02:00
parent e6c750bd13
commit 61c8a93522
2 changed files with 23 additions and 44 deletions

View File

@@ -67,37 +67,6 @@ const char MAKEFLAGS[] = "MAKEFLAGS";
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal {
class OverrideMakeflagsAspect final : public BoolAspect
{
public:
OverrideMakeflagsAspect() {}
void setWarningVisible(bool on)
{
if (m_nonOverrideWarning)
m_nonOverrideWarning->setVisible(on);
}
void addToLayout(LayoutBuilder &builder) final
{
if (!m_nonOverrideWarning) {
const QString text = tr("Override MAKEFLAGS");
setLabel(text, LabelPlacement::AtCheckBox);
m_nonOverrideWarning = new QLabel;
m_nonOverrideWarning->setToolTip("<html><body><p>" +
tr("<code>MAKEFLAGS</code> specifies parallel jobs. Check \"%1\" to override.")
.arg(text) + "</p></body></html>");
m_nonOverrideWarning->setPixmap(Icons::WARNING.pixmap());
}
BoolAspect::addToLayout(builder);
builder.addItem(m_nonOverrideWarning.data());
}
private:
QPointer<QLabel> m_nonOverrideWarning;
};
class MakeStepConfigWidget : public BuildStepConfigWidget class MakeStepConfigWidget : public BuildStepConfigWidget
{ {
Q_DECLARE_TR_FUNCTIONS(ProjectExplorer::MakeStep) Q_DECLARE_TR_FUNCTIONS(ProjectExplorer::MakeStep)
@@ -123,10 +92,9 @@ MakeStepConfigWidget::MakeStepConfigWidget(MakeStep *makeStep)
m_disableInSubDirsCheckBox->setToolTip(tr("Runs this step only for a top-level build.")); m_disableInSubDirsCheckBox->setToolTip(tr("Runs this step only for a top-level build."));
LayoutBuilder builder(this); LayoutBuilder builder(this);
makeStep->m_makeCommandAspect->addToLayout(builder.startNewRow()); builder.addRow(makeStep->m_makeCommandAspect);
makeStep->m_userArgumentsAspect->addToLayout(builder.startNewRow()); builder.addRow(makeStep->m_userArgumentsAspect);
makeStep->m_userJobCountAspect->addToLayout(builder.startNewRow()); builder.addRow(makeStep->m_jobCountContainer);
makeStep->m_overrideMakeflagsAspect->addToLayout(builder);
builder.startNewRow().addItems(disableInSubDirsLabel, m_disableInSubDirsCheckBox); builder.startNewRow().addItems(disableInSubDirsLabel, m_disableInSubDirsCheckBox);
builder.startNewRow().addItems(m_targetsLabel, m_targetsList); builder.startNewRow().addItems(m_targetsLabel, m_targetsList);
@@ -174,15 +142,25 @@ MakeStep::MakeStep(BuildStepList *parent, Utils::Id id)
m_userArgumentsAspect->setLabelText(tr("Make arguments:")); m_userArgumentsAspect->setLabelText(tr("Make arguments:"));
m_userArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay); m_userArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay);
m_userJobCountAspect = addAspect<IntegerAspect>(); m_jobCountContainer = addAspect<AspectContainer>();
m_userJobCountAspect = m_jobCountContainer->addAspect<IntegerAspect>();
m_userJobCountAspect->setSettingsKey(id.withSuffix(JOBCOUNT_SUFFIX).toString()); m_userJobCountAspect->setSettingsKey(id.withSuffix(JOBCOUNT_SUFFIX).toString());
m_userJobCountAspect->setLabel(tr("Parallel jobs:")); m_userJobCountAspect->setLabel(tr("Parallel jobs:"));
m_userJobCountAspect->setRange(1, 999); m_userJobCountAspect->setRange(1, 999);
m_userJobCountAspect->setValue(defaultJobCount()); m_userJobCountAspect->setValue(defaultJobCount());
m_userJobCountAspect->setDefaultValue(defaultJobCount()); m_userJobCountAspect->setDefaultValue(defaultJobCount());
m_overrideMakeflagsAspect = addAspect<Internal::OverrideMakeflagsAspect>(); const QString text = tr("Override MAKEFLAGS");
m_overrideMakeflagsAspect = m_jobCountContainer->addAspect<BoolAspect>();
m_overrideMakeflagsAspect->setSettingsKey(id.withSuffix(OVERRIDE_MAKEFLAGS_SUFFIX).toString()); m_overrideMakeflagsAspect->setSettingsKey(id.withSuffix(OVERRIDE_MAKEFLAGS_SUFFIX).toString());
m_overrideMakeflagsAspect->setLabel(text, BoolAspect::LabelPlacement::AtCheckBox);
m_nonOverrideWarning = m_jobCountContainer->addAspect<TextDisplay>();
m_nonOverrideWarning->setToolTip("<html><body><p>" +
tr("<code>MAKEFLAGS</code> specifies parallel jobs. Check \"%1\" to override.")
.arg(text) + "</p></body></html>");
m_nonOverrideWarning->setIconType(InfoLabel::Warning);
m_cleanAspect = addAspect<BoolAspect>(); m_cleanAspect = addAspect<BoolAspect>();
m_cleanAspect->setSettingsKey(id.withSuffix(CLEAN_SUFFIX).toString()); m_cleanAspect->setSettingsKey(id.withSuffix(CLEAN_SUFFIX).toString());
@@ -475,8 +453,8 @@ BuildStepConfigWidget *MakeStep::createConfigWidget()
const bool jobCountEnabled = !userArgsContainsJobCount(); const bool jobCountEnabled = !userArgsContainsJobCount();
m_userJobCountAspect->setEnabled(jobCountEnabled); m_userJobCountAspect->setEnabled(jobCountEnabled);
m_overrideMakeflagsAspect->setEnabled(jobCountEnabled); m_overrideMakeflagsAspect->setEnabled(jobCountEnabled);
m_overrideMakeflagsAspect->setWarningVisible(makeflagsJobCountMismatch() m_nonOverrideWarning->setVisible(makeflagsJobCountMismatch()
&& !jobCountOverridesMakeflags()); && !jobCountOverridesMakeflags());
widget->m_disableInSubDirsCheckBox->setChecked(!enabledForSubDirs()); widget->m_disableInSubDirsCheckBox->setChecked(!enabledForSubDirs());
widget->recreateSummary(); widget->recreateSummary();

View File

@@ -33,15 +33,14 @@ namespace Utils { class Environment; }
namespace ProjectExplorer { namespace ProjectExplorer {
namespace Internal { namespace Internal { class MakeStepConfigWidget; }
class MakeStepConfigWidget;
class OverrideMakeflagsAspect;
} // Internal
class AspectContainer;
class BoolAspect; class BoolAspect;
class IntegerAspect; class IntegerAspect;
class StringAspect; class StringAspect;
class StringListAspect; class StringListAspect;
class TextDisplay;
class PROJECTEXPLORER_EXPORT MakeStep : public ProjectExplorer::AbstractProcessStep class PROJECTEXPLORER_EXPORT MakeStep : public ProjectExplorer::AbstractProcessStep
{ {
@@ -106,8 +105,10 @@ private:
QStringList m_availableTargets; QStringList m_availableTargets;
StringAspect *m_makeCommandAspect = nullptr; StringAspect *m_makeCommandAspect = nullptr;
StringAspect *m_userArgumentsAspect = nullptr; StringAspect *m_userArgumentsAspect = nullptr;
AspectContainer *m_jobCountContainer = nullptr;
IntegerAspect *m_userJobCountAspect = nullptr; IntegerAspect *m_userJobCountAspect = nullptr;
Internal::OverrideMakeflagsAspect *m_overrideMakeflagsAspect = nullptr; BoolAspect *m_overrideMakeflagsAspect = nullptr;
TextDisplay *m_nonOverrideWarning = nullptr;
BoolAspect *m_cleanAspect = nullptr; BoolAspect *m_cleanAspect = nullptr;
bool m_disablingForSubDirsSupported = false; bool m_disablingForSubDirsSupported = false;
bool m_enabledForSubDirs = true; bool m_enabledForSubDirs = true;