From 9bf4a084b8bd96d4e7bf0c47960d2cfd7401e211 Mon Sep 17 00:00:00 2001 From: Aleksei German Date: Wed, 13 Sep 2023 17:05:23 +0200 Subject: [PATCH] QmlDesigner: Remove repeating gradient code Change-Id: I46ab46fb5a96c9c62933c845936d3ddba3d4bdc8 Reviewed-by: Aleksei German --- .../propertyeditor/gradientmodel.cpp | 31 ++++++++----------- 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp b/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp index 490af54e49c..eaf907e8f82 100644 --- a/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp +++ b/src/plugins/qmldesigner/components/propertyeditor/gradientmodel.cpp @@ -180,6 +180,16 @@ const ShapeGradientPropertyData *getDefaultGradientData(const QmlDesigner::Prope return nullptr; } +template +void prepareGradient(const T &array, + const QmlDesigner::ModelNode &gradient, + const QmlDesigner::QmlItemNode &node) +{ + std::for_each(std::begin(array), std::end(array), [&](auto &a) { + gradient.variantProperty(a.name.toByteArray()).setValue(a.getDefaultValue(node)); + }); +} + GradientModel::GradientModel(QObject *parent) : QAbstractListModel(parent) { @@ -583,26 +593,11 @@ void GradientModel::setupGradientProperties(const QmlDesigner::ModelNode &gradie if (m_gradientTypeName == u"Gradient") { gradient.variantProperty("orientation").setEnumeration("Gradient.Vertical"); } else if (m_gradientTypeName == u"LinearGradient") { - std::for_each(std::begin(defaultLinearShapeGradients), - std::end(defaultLinearShapeGradients), - [&](auto &a) { - gradient.variantProperty(a.name.toByteArray()) - .setValue(a.getDefaultValue(m_itemNode)); - }); + prepareGradient(defaultLinearShapeGradients, gradient, m_itemNode); } else if (m_gradientTypeName == u"RadialGradient") { - std::for_each(std::begin(defaultRadialShapeGradients), - std::end(defaultRadialShapeGradients), - [&](auto &a) { - gradient.variantProperty(a.name.toByteArray()) - .setValue(a.getDefaultValue(m_itemNode)); - }); + prepareGradient(defaultRadialShapeGradients, gradient, m_itemNode); } else if (m_gradientTypeName == u"ConicalGradient") { - std::for_each(std::begin(defaultConicalShapeGradients), - std::end(defaultConicalShapeGradients), - [&](auto &a) { - gradient.variantProperty(a.name.toByteArray()) - .setValue(a.getDefaultValue(m_itemNode)); - }); + prepareGradient(defaultConicalShapeGradients, gradient, m_itemNode); } }