From deeb845b9396ac2be958896934f12c9672f863d1 Mon Sep 17 00:00:00 2001 From: hjk Date: Mon, 1 Mar 2021 08:49:15 +0100 Subject: [PATCH] Utils: Introduce an IntegersAspect Change-Id: I71ed382633ec4527fcb99d3de49e81a01e9c1641 Reviewed-by: David Schulz --- src/libs/utils/aspects.cpp | 50 ++++++++++++++++++++++++++++++++++++++ src/libs/utils/aspects.h | 19 +++++++++++++++ 2 files changed, 69 insertions(+) diff --git a/src/libs/utils/aspects.cpp b/src/libs/utils/aspects.cpp index e016d0c4c6c..b6a13dc0fe7 100644 --- a/src/libs/utils/aspects.cpp +++ b/src/libs/utils/aspects.cpp @@ -1862,6 +1862,56 @@ void StringListAspect::removeValues(const QStringList &values) val.removeAll(s); setValue(val); } + +/*! + \class Utils::IntegerListAspect + \inmodule QtCreator + + \brief A string list aspect represents a property of some object + that is a list of strings. +*/ + +IntegersAspect::IntegersAspect() +{ + setDefaultValue({}); +} + +/*! + \reimp +*/ +IntegersAspect::~IntegersAspect() = default; + +/*! + \reimp +*/ +void IntegersAspect::addToLayout(LayoutBuilder &builder) +{ + Q_UNUSED(builder) + // TODO - when needed. +} + +void IntegersAspect::emitChangedValue() +{ + emit valueChanged(value()); +} + +QList IntegersAspect::value() const +{ + return Utils::transform(BaseAspect::value().toList(), + [](QVariant v) { return v.toInt(); }); +} + +void IntegersAspect::setValue(const QList &value) +{ + BaseAspect::setValue(Utils::transform(value, &QVariant::fromValue)); +} + +void IntegersAspect::setDefaultValue(const QList &value) +{ + BaseAspect::setDefaultValue(Utils::transform(value, &QVariant::fromValue)); +} + + /*! \class Utils::TextDisplay diff --git a/src/libs/utils/aspects.h b/src/libs/utils/aspects.h index e5423332688..3f7db9ebf52 100644 --- a/src/libs/utils/aspects.h +++ b/src/libs/utils/aspects.h @@ -467,6 +467,25 @@ private: std::unique_ptr d; }; +class QTCREATOR_UTILS_EXPORT IntegersAspect : public BaseAspect +{ + Q_OBJECT + +public: + IntegersAspect(); + ~IntegersAspect() override; + + void addToLayout(LayoutBuilder &builder) override; + void emitChangedValue() override; + + QList value() const; + void setValue(const QList &value); + void setDefaultValue(const QList &value); + +signals: + void valueChanged(const QList &values); +}; + class QTCREATOR_UTILS_EXPORT TextDisplay : public BaseAspect { Q_OBJECT