forked from qt-creator/qt-creator
Utils: Remove BaseAspect base from AspectContainer again
Turns out to get into the way more often than it helps, e.g. 'setAutoApply' operated on the base class' m_autoAspect flag instead of spreading it over the items in the container. Change-Id: I2711f2a488d1a6c30ec21d3fc481563cec6e55d4 Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
@@ -41,7 +41,6 @@
|
||||
#include <QComboBox>
|
||||
#include <QDebug>
|
||||
#include <QFormLayout>
|
||||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QListWidget>
|
||||
@@ -2018,8 +2017,6 @@ class AspectContainerPrivate
|
||||
{
|
||||
public:
|
||||
QList<BaseAspect *> m_items; // Not owned
|
||||
|
||||
QPointer<QGroupBox> m_groupBox; // Not owned, owned by configuration widget
|
||||
};
|
||||
|
||||
} // Internal
|
||||
@@ -2039,40 +2036,20 @@ AspectContainer::~AspectContainer() = default;
|
||||
void AspectContainer::registerAspect(BaseAspect *aspect)
|
||||
{
|
||||
d->m_items.append(aspect);
|
||||
connect(aspect, &BaseAspect::changed, this, &BaseAspect::changed);
|
||||
}
|
||||
|
||||
/*!
|
||||
Adds all visible sub-aspects to \a builder.
|
||||
*/
|
||||
void AspectContainer::addToLayout(LayoutBuilder &builder)
|
||||
void AspectContainer::registerAspects(const AspectContainer &aspects)
|
||||
{
|
||||
if (!d->m_groupBox) {
|
||||
d->m_groupBox = createSubWidget<QGroupBox>();
|
||||
d->m_groupBox->setTitle(displayName());
|
||||
for (BaseAspect *aspect : qAsConst(aspects.d->m_items))
|
||||
d->m_items.append(aspect);
|
||||
}
|
||||
|
||||
LayoutBuilder innerBuilder(d->m_groupBox);
|
||||
for (BaseAspect *aspect : qAsConst(d->m_items)) {
|
||||
if (aspect->isVisible())
|
||||
aspect->addToLayout(innerBuilder);
|
||||
}
|
||||
|
||||
builder.addItem(d->m_groupBox.data());
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
void AspectContainer::fromMap(const QVariantMap &map)
|
||||
{
|
||||
for (BaseAspect *aspect : qAsConst(d->m_items))
|
||||
aspect->fromMap(map);
|
||||
}
|
||||
|
||||
/*!
|
||||
\reimp
|
||||
*/
|
||||
void AspectContainer::toMap(QVariantMap &map) const
|
||||
{
|
||||
for (BaseAspect *aspect : qAsConst(d->m_items))
|
||||
|
@@ -506,13 +506,11 @@ private:
|
||||
std::unique_ptr<Internal::TextDisplayPrivate> d;
|
||||
};
|
||||
|
||||
class QTCREATOR_UTILS_EXPORT AspectContainer : public BaseAspect
|
||||
class QTCREATOR_UTILS_EXPORT AspectContainer
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AspectContainer();
|
||||
~AspectContainer() override;
|
||||
~AspectContainer();
|
||||
|
||||
template <class Aspect, typename ...Args>
|
||||
Aspect *addAspect(Args && ...args)
|
||||
@@ -522,18 +520,17 @@ public:
|
||||
return aspect;
|
||||
}
|
||||
void registerAspect(BaseAspect *aspect);
|
||||
void registerAspects(const AspectContainer &aspects);
|
||||
|
||||
void addToLayout(LayoutBuilder &builder) override;
|
||||
void fromMap(const QVariantMap &map);
|
||||
void toMap(QVariantMap &map) const;
|
||||
|
||||
void fromMap(const QVariantMap &map) override;
|
||||
void toMap(QVariantMap &map) const override;
|
||||
void readSettings(const QSettings *settings);
|
||||
void writeSettings(QSettings *settings) const;
|
||||
|
||||
void readSettings(const QSettings *settings) override;
|
||||
void writeSettings(QSettings *settings) const override;
|
||||
|
||||
void apply() override;
|
||||
void cancel() override;
|
||||
void finish() override;
|
||||
void apply();
|
||||
void cancel();
|
||||
void finish();
|
||||
|
||||
void reset();
|
||||
void fromMap(const QString &prefix, const QVariantMap &map);
|
||||
|
@@ -677,12 +677,12 @@ DebuggerSettings::DebuggerSettings()
|
||||
all.registerAspect(&breakOnCatch); // ??
|
||||
|
||||
// Collect all
|
||||
all.registerAspect(&page1);
|
||||
all.registerAspect(&page2);
|
||||
all.registerAspect(&page3);
|
||||
all.registerAspect(&page4);
|
||||
all.registerAspect(&page5);
|
||||
all.registerAspect(&page6);
|
||||
all.registerAspects(page1);
|
||||
all.registerAspects(page2);
|
||||
all.registerAspects(page3);
|
||||
all.registerAspects(page4);
|
||||
all.registerAspects(page5);
|
||||
all.registerAspects(page6);
|
||||
|
||||
all.forEachAspect([](BaseAspect *aspect) {
|
||||
aspect->setAutoApply(false);
|
||||
|
@@ -83,9 +83,7 @@ MakeStep::MakeStep(BuildStepList *parent, Id id)
|
||||
m_userArgumentsAspect->setLabelText(tr("Make arguments:"));
|
||||
m_userArgumentsAspect->setDisplayStyle(StringAspect::LineEditDisplay);
|
||||
|
||||
m_jobCountContainer = addAspect<AspectContainer>();
|
||||
|
||||
m_userJobCountAspect = m_jobCountContainer->addAspect<IntegerAspect>();
|
||||
m_userJobCountAspect = addAspect<IntegerAspect>();
|
||||
m_userJobCountAspect->setSettingsKey(id.withSuffix(JOBCOUNT_SUFFIX).toString());
|
||||
m_userJobCountAspect->setLabel(tr("Parallel jobs:"));
|
||||
m_userJobCountAspect->setRange(1, 999);
|
||||
@@ -93,11 +91,11 @@ MakeStep::MakeStep(BuildStepList *parent, Id id)
|
||||
m_userJobCountAspect->setDefaultValue(defaultJobCount());
|
||||
|
||||
const QString text = tr("Override MAKEFLAGS");
|
||||
m_overrideMakeflagsAspect = m_jobCountContainer->addAspect<BoolAspect>();
|
||||
m_overrideMakeflagsAspect = addAspect<BoolAspect>();
|
||||
m_overrideMakeflagsAspect->setSettingsKey(id.withSuffix(OVERRIDE_MAKEFLAGS_SUFFIX).toString());
|
||||
m_overrideMakeflagsAspect->setLabel(text, BoolAspect::LabelPlacement::AtCheckBox);
|
||||
|
||||
m_nonOverrideWarning = m_jobCountContainer->addAspect<TextDisplay>();
|
||||
m_nonOverrideWarning = addAspect<TextDisplay>();
|
||||
m_nonOverrideWarning->setToolTip("<html><body><p>" +
|
||||
tr("<code>MAKEFLAGS</code> specifies parallel jobs. Check \"%1\" to override.")
|
||||
.arg(text) + "</p></body></html>");
|
||||
@@ -353,7 +351,7 @@ QWidget *MakeStep::createConfigWidget()
|
||||
LayoutBuilder builder(widget);
|
||||
builder.addRow(m_makeCommandAspect);
|
||||
builder.addRow(m_userArgumentsAspect);
|
||||
builder.addRow(m_jobCountContainer);
|
||||
builder.addRow({m_userJobCountAspect, m_overrideMakeflagsAspect, m_nonOverrideWarning});
|
||||
if (m_disablingForSubDirsSupported)
|
||||
builder.addRow(m_disabledForSubdirsAspect);
|
||||
builder.addRow(m_buildTargetsAspect);
|
||||
|
@@ -95,7 +95,6 @@ private:
|
||||
QStringList m_availableTargets; // FIXME: Unused, remove in 4.15.
|
||||
Utils::StringAspect *m_makeCommandAspect = nullptr;
|
||||
Utils::StringAspect *m_userArgumentsAspect = nullptr;
|
||||
Utils::AspectContainer *m_jobCountContainer = nullptr;
|
||||
Utils::IntegerAspect *m_userJobCountAspect = nullptr;
|
||||
Utils::BoolAspect *m_overrideMakeflagsAspect = nullptr;
|
||||
Utils::BoolAspect *m_disabledForSubdirsAspect = nullptr;
|
||||
|
Reference in New Issue
Block a user