ProjectExplorer: Add convenience functions to add parts of a kit aspect

No functional change intended.

Change-Id: Iaea552dbae60a8f0a6423707276e9c6c1e80cf4f
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
This commit is contained in:
hjk
2024-11-18 16:17:34 +01:00
parent abefe66b3e
commit 42eacb967d
2 changed files with 29 additions and 9 deletions

View File

@@ -187,12 +187,9 @@ void KitAspect::makeReadOnly()
la.comboBox->setEnabled(false); la.comboBox->setEnabled(false);
} }
void KitAspect::addToInnerLayout(Layouting::Layout &parentItem) void KitAspect::addToInnerLayout(Layouting::Layout &layout)
{ {
for (const Private::ListAspect &la : std::as_const(d->listAspects)) { addListAspectsToLayout(layout);
addMutableAction(la.comboBox);
parentItem.addItem(la.comboBox);
}
} }
void KitAspect::addListAspectSpec(const ListAspectSpec &listAspectSpec) void KitAspect::addListAspectSpec(const ListAspectSpec &listAspectSpec)
@@ -228,7 +225,7 @@ QList<QComboBox *> KitAspect::comboBoxes() const
return Utils::transform(d->listAspects, &Private::ListAspect::comboBox); return Utils::transform(d->listAspects, &Private::ListAspect::comboBox);
} }
void KitAspect::addToLayoutImpl(Layouting::Layout &layout) void KitAspect::addLabelToLayout(Layouting::Layout &layout)
{ {
auto label = createSubWidget<QLabel>(d->factory->displayName() + ':'); auto label = createSubWidget<QLabel>(d->factory->displayName() + ':');
label->setToolTip(d->factory->description()); label->setToolTip(d->factory->description());
@@ -237,7 +234,18 @@ void KitAspect::addToLayoutImpl(Layouting::Layout &layout)
}); });
layout.addItem(label); layout.addItem(label);
addToInnerLayout(layout); }
void KitAspect::addListAspectsToLayout(Layouting::Layout &layout)
{
for (const Private::ListAspect &la : std::as_const(d->listAspects)) {
addMutableAction(la.comboBox);
layout.addItem(la.comboBox);
}
}
void KitAspect::addManageButtonToLayout(Layouting::Layout &layout)
{
if (d->managingPageId.isValid()) { if (d->managingPageId.isValid()) {
d->manageButton = createSubWidget<QPushButton>(msgManage()); d->manageButton = createSubWidget<QPushButton>(msgManage());
connect(d->manageButton, &QPushButton::clicked, [this] { connect(d->manageButton, &QPushButton::clicked, [this] {
@@ -245,7 +253,15 @@ void KitAspect::addToLayoutImpl(Layouting::Layout &layout)
}); });
layout.addItem(d->manageButton); layout.addItem(d->manageButton);
} }
layout.addItem(Layouting::br); }
void KitAspect::addToLayoutImpl(Layouting::Layout &layout)
{
addLabelToLayout(layout);
addToInnerLayout(layout);
addManageButtonToLayout(layout);
layout.flush();
} }
void KitAspect::addMutableAction(QWidget *child) void KitAspect::addMutableAction(QWidget *child)

View File

@@ -132,12 +132,16 @@ public:
// For layouting purposes only. // For layouting purposes only.
QList<QComboBox *> comboBoxes() const; QList<QComboBox *> comboBoxes() const;
virtual void addToInnerLayout(Layouting::Layout &parentItem); virtual void addToInnerLayout(Layouting::Layout &layout);
protected: protected:
virtual void makeReadOnly(); virtual void makeReadOnly();
virtual Utils::Id settingsPageItemToPreselect() const { return {}; } virtual Utils::Id settingsPageItemToPreselect() const { return {}; }
void addLabelToLayout(Layouting::Layout &layout);
void addListAspectsToLayout(Layouting::Layout &layout);
void addManageButtonToLayout(Layouting::Layout &layout);
// Convenience for aspects that provide a list model from which one value can be chosen. // Convenience for aspects that provide a list model from which one value can be chosen.
// It will be exposed via a QComboBox. // It will be exposed via a QComboBox.
class ListAspectSpec class ListAspectSpec