From ad6d92d1bd2cd90cf8164fd445ad76432314bfab Mon Sep 17 00:00:00 2001 From: Ulf Hermann Date: Fri, 18 Sep 2020 15:27:24 +0200 Subject: Eliminate QQmlValueTypeProvider::createFromString It can be expressed as a special case of create() with a QJSValue. Change-Id: I7342026ad694077d2780dd8a852714fa72dd68d0 Reviewed-by: Fabian Kosmale --- src/quick/util/qquickglobal.cpp | 66 ++++++++++++++++++++++++++--------------- 1 file changed, 42 insertions(+), 24 deletions(-) (limited to 'src/quick/util') diff --git a/src/quick/util/qquickglobal.cpp b/src/quick/util/qquickglobal.cpp index f32d12b6fd..48b882c218 100644 --- a/src/quick/util/qquickglobal.cpp +++ b/src/quick/util/qquickglobal.cpp @@ -289,7 +289,7 @@ public: // Note: The functions in this class provide handling only for the types // that the QML engine will currently actually call them for, so many // appear incompletely implemented. For some functions, the implementation -// would be obvious, but for others (particularly create and createFromString) +// would be obvious, but for others (particularly create) // the exact semantics are unknown. For this reason unused functionality // has been omitted. @@ -546,6 +546,12 @@ public: bool create(int type, const QJSValue ¶ms, QVariant *v) override { switch (type) { + case QMetaType::QColor: + if (params.isString()) { + *v = QVariant(QColor(params.toString())); + return true; + } + break; case QMetaType::QColorSpace: { bool ok = false; auto val = colorSpaceFromObject(params, &ok); @@ -569,6 +575,13 @@ public: *v = QVariant(QVector2D(params.property(0).toNumber(), params.property(1).toNumber())); return true; + } else if (params.isString()) { + bool ok = false; + auto vector = vector2DFromString(params.toString(), &ok); + if (ok) { + *v = QVariant(vector); + return true; + } } break; case QMetaType::QVector3D: @@ -577,6 +590,13 @@ public: params.property(1).toNumber(), params.property(2).toNumber())); return true; + } else if (params.isString()) { + bool ok = false; + auto vector = vector3DFromString(params.toString(), &ok); + if (ok) { + *v = QVariant(vector); + return true; + } } break; case QMetaType::QVector4D: @@ -586,6 +606,13 @@ public: params.property(2).toNumber(), params.property(3).toNumber())); return true; + } else if (params.isString()) { + bool ok = false; + auto vector = vector4DFromString(params.toString(), &ok); + if (ok) { + *v = QVariant(vector); + return true; + } } break; case QMetaType::QQuaternion: @@ -595,6 +622,13 @@ public: params.property(2).toNumber(), params.property(3).toNumber())); return true; + } else if (params.isString()) { + bool ok = false; + auto vector = quaternionFromString(params.toString(), &ok); + if (ok) { + *v = QVariant(vector); + return true; + } } break; case QMetaType::QMatrix4x4: @@ -621,6 +655,13 @@ public: params.property(14).toNumber(), params.property(15).toNumber())); return true; + } else if (params.isString()) { + bool ok = false; + auto vector = matrix4x4FromString(params.toString(), &ok); + if (ok) { + *v = QVariant(vector); + return true; + } } break; default: break; @@ -638,29 +679,6 @@ public: return true; } - bool createFromString(int type, const QString &s, void *data, size_t dataSize) override - { - bool ok = false; - - switch (type) { - case QMetaType::QColor: - return createFromStringTyped(data, dataSize, QColor(s)); - case QMetaType::QVector2D: - return createFromStringTyped(data, dataSize, vector2DFromString(s, &ok)); - case QMetaType::QVector3D: - return createFromStringTyped(data, dataSize, vector3DFromString(s, &ok)); - case QMetaType::QVector4D: - return createFromStringTyped(data, dataSize, vector4DFromString(s, &ok)); - case QMetaType::QQuaternion: - return createFromStringTyped(data, dataSize, quaternionFromString(s, &ok)); - case QMetaType::QMatrix4x4: - return createFromStringTyped(data, dataSize, matrix4x4FromString(s, &ok)); - default: break; - } - - return false; - } - bool variantFromString(int type, const QString &s, QVariant *v) override { bool ok = false; -- cgit v1.2.3