From 43e3c21a0bad9141b6c35cc4ee4a58b4d824462a Mon Sep 17 00:00:00 2001 From: Pierre-Yves Siret Date: Fri, 20 Dec 2019 01:51:39 +0100 Subject: Add Q_GADGET Wrapper for QQmlProperty This enable exposing a QQmlProperty as a value type to QML code. Only object and name are exposed as a properties to keep it simple. We might want later to expose the property of a Binding or a Behavior as a property for complex usecases. This permits exposing it as one self contained value instead of a pair of unrelated object and name. Task-number: QTBUG-70964 Task-number: QTBUG-73892 Change-Id: I3a46212446f43f3a7e301943cb49d3a48c377de3 Reviewed-by: Ulf Hermann --- src/qml/qml/qqmlvaluetype.cpp | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'src/qml/qml/qqmlvaluetype.cpp') diff --git a/src/qml/qml/qqmlvaluetype.cpp b/src/qml/qml/qqmlvaluetype.cpp index a4737b3da9..90a10c8d9a 100644 --- a/src/qml/qml/qqmlvaluetype.cpp +++ b/src/qml/qml/qqmlvaluetype.cpp @@ -48,6 +48,8 @@ #endif #include +Q_DECLARE_METATYPE(QQmlProperty) + QT_BEGIN_NAMESPACE namespace { @@ -143,7 +145,8 @@ const QMetaObject *QQmlValueTypeFactoryImpl::metaObjectForMetaType(int t) if (t == qMetaTypeId()) return &QQmlItemSelectionRangeValueType::staticMetaObject; #endif - + if (t == qMetaTypeId()) + return &QQmlPropertyValueType::staticMetaObject; if (const QMetaObject *mo = QQml_valueTypeProvider()->metaObjectForMetaType(t)) return mo; break; @@ -580,6 +583,16 @@ void QQmlEasingValueType::setBezierCurve(const QVariantList &customCurveVariant) v = newEasingCurve; } +QObject *QQmlPropertyValueType::object() const +{ + return v.object(); +} + +QString QQmlPropertyValueType::name() const +{ + return v.name(); +} + QVariantList QQmlEasingValueType::bezierCurve() const { QVariantList rv; -- cgit v1.2.3 From c6899f16389458766904d8d913054f09076e06dd Mon Sep 17 00:00:00 2001 From: Olivier Goffart Date: Tue, 3 Dec 2019 20:24:38 +0100 Subject: Replace QVariant::type with QVariant::userType as type is going to be deprecated. This change was done automatically with the help of clazy. In addition, ColumnRoleMetadata was changed to take an int instead of a QVariant::Type Change-Id: Ibc02d7b52e7d931a56c19fdebc4788b5e6df2a39 Reviewed-by: Lars Knoll --- src/qml/qml/qqmlvaluetype.cpp | 24 ++++++++++++------------ 1 file changed, 12 insertions(+), 12 deletions(-) (limited to 'src/qml/qml/qqmlvaluetype.cpp') diff --git a/src/qml/qml/qqmlvaluetype.cpp b/src/qml/qml/qqmlvaluetype.cpp index 90a10c8d9a..cb3f572e1f 100644 --- a/src/qml/qml/qqmlvaluetype.cpp +++ b/src/qml/qml/qqmlvaluetype.cpp @@ -64,7 +64,7 @@ struct QQmlValueTypeFactoryImpl const QMetaObject *metaObjectForMetaType(int); QQmlValueType *valueType(int); - QQmlValueType *valueTypes[QVariant::UserType]; + QQmlValueType *valueTypes[QMetaType::User]; QHash userTypes; QMutex mutex; @@ -73,7 +73,7 @@ struct QQmlValueTypeFactoryImpl QQmlValueTypeFactoryImpl::QQmlValueTypeFactoryImpl() { - std::fill_n(valueTypes, int(QVariant::UserType), &invalidValueType); + std::fill_n(valueTypes, int(QMetaType::User), &invalidValueType); #if QT_CONFIG(qml_itemmodel) // See types wrapped in qqmlmodelindexvaluetype_p.h @@ -120,24 +120,24 @@ bool QQmlValueTypeFactoryImpl::isValueType(int idx) const QMetaObject *QQmlValueTypeFactoryImpl::metaObjectForMetaType(int t) { switch (t) { - case QVariant::Point: + case QMetaType::QPoint: return &QQmlPointValueType::staticMetaObject; - case QVariant::PointF: + case QMetaType::QPointF: return &QQmlPointFValueType::staticMetaObject; - case QVariant::Size: + case QMetaType::QSize: return &QQmlSizeValueType::staticMetaObject; - case QVariant::SizeF: + case QMetaType::QSizeF: return &QQmlSizeFValueType::staticMetaObject; - case QVariant::Rect: + case QMetaType::QRect: return &QQmlRectValueType::staticMetaObject; - case QVariant::RectF: + case QMetaType::QRectF: return &QQmlRectFValueType::staticMetaObject; - case QVariant::EasingCurve: + case QMetaType::QEasingCurve: return &QQmlEasingValueType::staticMetaObject; #if QT_CONFIG(qml_itemmodel) - case QVariant::ModelIndex: + case QMetaType::QModelIndex: return &QQmlModelIndexValueType::staticMetaObject; - case QVariant::PersistentModelIndex: + case QMetaType::QPersistentModelIndex: return &QQmlPersistentModelIndexValueType::staticMetaObject; #endif default: @@ -160,7 +160,7 @@ const QMetaObject *QQmlValueTypeFactoryImpl::metaObjectForMetaType(int t) QQmlValueType *QQmlValueTypeFactoryImpl::valueType(int idx) { - if (idx >= (int)QVariant::UserType) { + if (idx >= (int)QMetaType::User) { // Protect the hash with a mutex mutex.lock(); -- cgit v1.2.3