Utils: Introduce aspect ctors referring to an "wrapping" AspectContainer

This removes the need to manual 'registerAspect' calls in most cases.

Whether the containers owns the registered aspects or just references
them is still determined by AspectContainer::setOwnsSubAspects()

Change-Id: Iadd17c919287f625bf5eb4964de4149d4da5a0f9
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
This commit is contained in:
hjk
2023-05-22 11:35:52 +02:00
parent 6d134444ea
commit a4c962aa33
2 changed files with 28 additions and 26 deletions

View File

@@ -92,9 +92,11 @@ public:
/*!
Constructs a BaseAspect.
*/
BaseAspect::BaseAspect()
BaseAspect::BaseAspect(AspectContainer *container)
: d(new Internal::BaseAspectPrivate)
{
if (container)
container->registerAspect(this);
addDataExtractor(this, &BaseAspect::value, &Data::value);
}
@@ -766,8 +768,8 @@ public:
Constructs a StringAspect.
*/
StringAspect::StringAspect()
: d(new Internal::StringAspectPrivate)
StringAspect::StringAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::StringAspectPrivate)
{
setDefaultValue(QString());
setSpan(2, 1); // Default: Label + something
@@ -1359,8 +1361,8 @@ FilePathAspect::FilePathAspect()
The color aspect is displayed using a QtColorButton.
*/
ColorAspect::ColorAspect()
: d(new Internal::ColorAspectPrivate)
ColorAspect::ColorAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::ColorAspectPrivate)
{
setDefaultValue(QColor::fromRgb(0, 0, 0));
setSpan(1, 1);
@@ -1426,8 +1428,8 @@ void ColorAspect::setVolatileValue(const QVariant &val)
*/
BoolAspect::BoolAspect()
: d(new Internal::BoolAspectPrivate)
BoolAspect::BoolAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::BoolAspectPrivate)
{
setDefaultValue(false);
setSpan(2, 1);
@@ -1605,8 +1607,8 @@ CheckableDecider BoolAspect::checkableDecider()
QRadioButtons in a QButtonGroup.
*/
SelectionAspect::SelectionAspect()
: d(new Internal::SelectionAspectPrivate)
SelectionAspect::SelectionAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::SelectionAspectPrivate)
{
setSpan(2, 1);
}
@@ -1808,8 +1810,8 @@ QVariant SelectionAspect::itemValueForIndex(int index) const
checkable items.
*/
MultiSelectionAspect::MultiSelectionAspect()
: d(new Internal::MultiSelectionAspectPrivate(this))
MultiSelectionAspect::MultiSelectionAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::MultiSelectionAspectPrivate(this))
{
setDefaultValue(QStringList());
setSpan(2, 1);
@@ -1915,8 +1917,8 @@ void MultiSelectionAspect::setValue(const QStringList &value)
// IntegerAspect
IntegerAspect::IntegerAspect()
: d(new Internal::IntegerAspectPrivate)
IntegerAspect::IntegerAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::IntegerAspectPrivate)
{
setDefaultValue(qint64(0));
setSpan(2, 1);
@@ -2051,8 +2053,8 @@ void IntegerAspect::setSingleStep(qint64 step)
the display of the spin box.
*/
DoubleAspect::DoubleAspect()
: d(new Internal::DoubleAspectPrivate)
DoubleAspect::DoubleAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::DoubleAspectPrivate)
{
setDefaultValue(double(0));
setSpan(2, 1);
@@ -2206,8 +2208,8 @@ TriState TriState::fromVariant(const QVariant &variant)
that is a list of strings.
*/
StringListAspect::StringListAspect()
: d(new Internal::StringListAspectPrivate)
StringListAspect::StringListAspect(AspectContainer *container)
: BaseAspect(container), d(new Internal::StringListAspectPrivate)
{
setDefaultValue(QStringList());
}

View File

@@ -45,7 +45,7 @@ class QTCREATOR_UTILS_EXPORT BaseAspect : public QObject
Q_OBJECT
public:
BaseAspect();
BaseAspect(AspectContainer *container = nullptr);
~BaseAspect() override;
Id id() const;
@@ -213,7 +213,7 @@ class QTCREATOR_UTILS_EXPORT BoolAspect : public BaseAspect
Q_OBJECT
public:
BoolAspect();
BoolAspect(AspectContainer *container = nullptr);
~BoolAspect() override;
struct Data : BaseAspect::Data
@@ -257,7 +257,7 @@ class QTCREATOR_UTILS_EXPORT ColorAspect : public BaseAspect
Q_OBJECT
public:
ColorAspect();
ColorAspect(AspectContainer *container = nullptr);
~ColorAspect() override;
struct Data : BaseAspect::Data
@@ -282,7 +282,7 @@ class QTCREATOR_UTILS_EXPORT SelectionAspect : public BaseAspect
Q_OBJECT
public:
SelectionAspect();
SelectionAspect(AspectContainer *container = nullptr);
~SelectionAspect() override;
void addToLayout(Layouting::LayoutItem &parent) override;
@@ -336,7 +336,7 @@ class QTCREATOR_UTILS_EXPORT MultiSelectionAspect : public BaseAspect
Q_OBJECT
public:
MultiSelectionAspect();
MultiSelectionAspect(AspectContainer *container = nullptr);
~MultiSelectionAspect() override;
void addToLayout(Layouting::LayoutItem &parent) override;
@@ -359,7 +359,7 @@ class QTCREATOR_UTILS_EXPORT StringAspect : public BaseAspect
Q_OBJECT
public:
StringAspect();
StringAspect(AspectContainer *container = nullptr);
~StringAspect() override;
struct Data : BaseAspect::Data
@@ -456,7 +456,7 @@ class QTCREATOR_UTILS_EXPORT IntegerAspect : public BaseAspect
Q_OBJECT
public:
IntegerAspect();
IntegerAspect(AspectContainer *container = nullptr);
~IntegerAspect() override;
void addToLayout(Layouting::LayoutItem &parent) override;
@@ -494,7 +494,7 @@ class QTCREATOR_UTILS_EXPORT DoubleAspect : public BaseAspect
Q_OBJECT
public:
DoubleAspect();
DoubleAspect(AspectContainer *container = nullptr);
~DoubleAspect() override;
void addToLayout(Layouting::LayoutItem &parent) override;
@@ -563,7 +563,7 @@ class QTCREATOR_UTILS_EXPORT StringListAspect : public BaseAspect
Q_OBJECT
public:
StringListAspect();
StringListAspect(AspectContainer *container = nullptr);
~StringListAspect() override;
void addToLayout(Layouting::LayoutItem &parent) override;