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);
}
void KitAspect::addToInnerLayout(Layouting::Layout &parentItem)
void KitAspect::addToInnerLayout(Layouting::Layout &layout)
{
for (const Private::ListAspect &la : std::as_const(d->listAspects)) {
addMutableAction(la.comboBox);
parentItem.addItem(la.comboBox);
}
addListAspectsToLayout(layout);
}
void KitAspect::addListAspectSpec(const ListAspectSpec &listAspectSpec)
@@ -228,7 +225,7 @@ QList<QComboBox *> KitAspect::comboBoxes() const
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() + ':');
label->setToolTip(d->factory->description());
@@ -237,7 +234,18 @@ void KitAspect::addToLayoutImpl(Layouting::Layout &layout)
});
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()) {
d->manageButton = createSubWidget<QPushButton>(msgManage());
connect(d->manageButton, &QPushButton::clicked, [this] {
@@ -245,7 +253,15 @@ void KitAspect::addToLayoutImpl(Layouting::Layout &layout)
});
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)

View File

@@ -132,12 +132,16 @@ public:
// For layouting purposes only.
QList<QComboBox *> comboBoxes() const;
virtual void addToInnerLayout(Layouting::Layout &parentItem);
virtual void addToInnerLayout(Layouting::Layout &layout);
protected:
virtual void makeReadOnly();
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.
// It will be exposed via a QComboBox.
class ListAspectSpec