From 2d4db45fabb68d380b34eb5b2922357ebd26b94c Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Wed, 12 Aug 2009 14:11:22 +1000 Subject: Add QSize/QSizeF value types. --- src/declarative/qml/qmlvaluetype.cpp | 78 ++++++++++++++++++++++++++++++++++++ src/declarative/qml/qmlvaluetype_p.h | 40 ++++++++++++++++++ 2 files changed, 118 insertions(+) diff --git a/src/declarative/qml/qmlvaluetype.cpp b/src/declarative/qml/qmlvaluetype.cpp index b827572..dada8ff 100644 --- a/src/declarative/qml/qmlvaluetype.cpp +++ b/src/declarative/qml/qmlvaluetype.cpp @@ -63,6 +63,10 @@ QmlValueType *QmlValueTypeFactory::valueType(int t) return new QmlPointValueType; case QVariant::PointF: return new QmlPointFValueType; + case QVariant::Size: + return new QmlSizeValueType; + case QVariant::SizeF: + return new QmlSizeFValueType; case QVariant::Rect: return new QmlRectValueType; case QVariant::RectF: @@ -153,6 +157,80 @@ void QmlPointValueType::setY(int y) point.setY(y); } +QmlSizeFValueType::QmlSizeFValueType(QObject *parent) +: QmlValueType(parent) +{ +} + +void QmlSizeFValueType::read(QObject *obj, int idx) +{ + void *a[] = { &size, 0 }; + QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); +} + +void QmlSizeFValueType::write(QObject *obj, int idx) +{ + void *a[] = { &size, 0 }; + QMetaObject::metacall(obj, QMetaObject::WriteProperty, idx, a); +} + +qreal QmlSizeFValueType::width() const +{ + return size.width(); +} + +qreal QmlSizeFValueType::height() const +{ + return size.height(); +} + +void QmlSizeFValueType::setWidth(qreal w) +{ + size.setWidth(w); +} + +void QmlSizeFValueType::setHeight(qreal h) +{ + size.setHeight(h); +} + +QmlSizeValueType::QmlSizeValueType(QObject *parent) +: QmlValueType(parent) +{ +} + +void QmlSizeValueType::read(QObject *obj, int idx) +{ + void *a[] = { &size, 0 }; + QMetaObject::metacall(obj, QMetaObject::ReadProperty, idx, a); +} + +void QmlSizeValueType::write(QObject *obj, int idx) +{ + void *a[] = { &size, 0 }; + QMetaObject::metacall(obj, QMetaObject::WriteProperty, idx, a); +} + +int QmlSizeValueType::width() const +{ + return size.width(); +} + +int QmlSizeValueType::height() const +{ + return size.height(); +} + +void QmlSizeValueType::setWidth(int w) +{ + size.setWidth(w); +} + +void QmlSizeValueType::setHeight(int h) +{ + size.setHeight(h); +} + QmlRectFValueType::QmlRectFValueType(QObject *parent) : QmlValueType(parent) { diff --git a/src/declarative/qml/qmlvaluetype_p.h b/src/declarative/qml/qmlvaluetype_p.h index 0c9e279..8f6700b 100644 --- a/src/declarative/qml/qmlvaluetype_p.h +++ b/src/declarative/qml/qmlvaluetype_p.h @@ -120,6 +120,46 @@ private: QPoint point; }; +class QmlSizeFValueType : public QmlValueType +{ + Q_PROPERTY(qreal width READ width WRITE setWidth); + Q_PROPERTY(qreal height READ height WRITE setHeight); + Q_OBJECT +public: + QmlSizeFValueType(QObject *parent = 0); + + virtual void read(QObject *, int); + virtual void write(QObject *, int); + + qreal width() const; + qreal height() const; + void setWidth(qreal); + void setHeight(qreal); + +private: + QSizeF size; +}; + +class QmlSizeValueType : public QmlValueType +{ + Q_PROPERTY(int width READ width WRITE setWidth); + Q_PROPERTY(int height READ height WRITE setHeight); + Q_OBJECT +public: + QmlSizeValueType(QObject *parent = 0); + + virtual void read(QObject *, int); + virtual void write(QObject *, int); + + int width() const; + int height() const; + void setWidth(int); + void setHeight(int); + +private: + QSize size; +}; + class QmlRectFValueType : public QmlValueType { Q_PROPERTY(qreal x READ x WRITE setX); -- cgit v0.12