QmlDesigner: Remove repeating gradient code

Change-Id: I46ab46fb5a96c9c62933c845936d3ddba3d4bdc8
Reviewed-by: Aleksei German <aleksei.german@qt.io>
This commit is contained in:
Aleksei German
2023-09-13 17:05:23 +02:00
parent 91029f9752
commit 9bf4a084b8

View File

@@ -180,6 +180,16 @@ const ShapeGradientPropertyData *getDefaultGradientData(const QmlDesigner::Prope
return nullptr;
}
template<typename T>
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);
}
}