diff options
Diffstat (limited to 'src/declarative/qml')
-rw-r--r-- | src/declarative/qml/qdeclarativeenginedebug.cpp | 4 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativemetaproperty.cpp | 43 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativemetaproperty.h | 7 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativemetaproperty_p.h | 27 | ||||
-rw-r--r-- | src/declarative/qml/qdeclarativepropertycache_p.h | 2 |
5 files changed, 49 insertions, 34 deletions
diff --git a/src/declarative/qml/qdeclarativeenginedebug.cpp b/src/declarative/qml/qdeclarativeenginedebug.cpp index 6a81e52..2ae0b54 100644 --- a/src/declarative/qml/qdeclarativeenginedebug.cpp +++ b/src/declarative/qml/qdeclarativeenginedebug.cpp @@ -45,6 +45,7 @@ #include "qdeclarativeengine.h" #include "qdeclarativemetatype_p.h" #include "qdeclarativemetaproperty.h" +#include "qdeclarativemetaproperty_p.h" #include "qdeclarativebinding_p.h" #include "qdeclarativecontext_p.h" #include "qdeclarativewatcher_p.h" @@ -108,7 +109,8 @@ QDeclarativeEngineDebugServer::propertyData(QObject *obj, int propIdx) rv.valueTypeName = QString::fromUtf8(prop.typeName()); rv.name = QString::fromUtf8(prop.name()); rv.hasNotifySignal = prop.hasNotifySignal(); - QDeclarativeAbstractBinding *binding = QDeclarativeMetaProperty(obj, rv.name).binding(); + QDeclarativeAbstractBinding *binding = + QDeclarativeMetaPropertyPrivate::binding(QDeclarativeMetaProperty(obj, rv.name)); if (binding) rv.binding = binding->expression(); diff --git a/src/declarative/qml/qdeclarativemetaproperty.cpp b/src/declarative/qml/qdeclarativemetaproperty.cpp index e94ce8c..3bbc337 100644 --- a/src/declarative/qml/qdeclarativemetaproperty.cpp +++ b/src/declarative/qml/qdeclarativemetaproperty.cpp @@ -502,22 +502,23 @@ QMetaMethod QDeclarativeMetaProperty::method() const Returns the binding associated with this property, or 0 if no binding exists. */ -QDeclarativeAbstractBinding *QDeclarativeMetaProperty::binding() const +QDeclarativeAbstractBinding * +QDeclarativeMetaPropertyPrivate::binding(const QDeclarativeMetaProperty &that) { - if (!isProperty() || (type() & Attached) || !d->object) + if (!that.isProperty() || (that.type() & QDeclarativeMetaProperty::Attached) || !that.d->object) return 0; - QDeclarativeDeclarativeData *data = QDeclarativeDeclarativeData::get(d->object); + QDeclarativeDeclarativeData *data = QDeclarativeDeclarativeData::get(that.d->object); if (!data) return 0; - if (!data->hasBindingBit(d->core.coreIndex)) + if (!data->hasBindingBit(that.d->core.coreIndex)) return 0; QDeclarativeAbstractBinding *binding = data->bindings; while (binding) { // ### This wont work for value types - if (binding->propertyIndex() == d->core.coreIndex) + if (binding->propertyIndex() == that.d->core.coreIndex) return binding; binding = binding->m_nextBinding; } @@ -538,15 +539,17 @@ QDeclarativeAbstractBinding *QDeclarativeMetaProperty::binding() const the binding sets the intial value, it will use these flags for the write). */ QDeclarativeAbstractBinding * -QDeclarativeMetaProperty::setBinding(QDeclarativeAbstractBinding *newBinding, QDeclarativeMetaProperty::WriteFlags flags) const +QDeclarativeMetaPropertyPrivate::setBinding(const QDeclarativeMetaProperty &that, + QDeclarativeAbstractBinding *newBinding, + QDeclarativeMetaProperty::WriteFlags flags) { - if (!isProperty() || (type() & Attached) || !d->object) { + if (!that.isProperty() || (that.type() & QDeclarativeMetaProperty::Attached) || !that.d->object) { if (newBinding) newBinding->destroy(); return 0; } - return d->setBinding(d->object, d->core, newBinding, flags); + return that.d->setBinding(that.d->object, that.d->core, newBinding, flags); } QDeclarativeAbstractBinding * @@ -577,22 +580,24 @@ QDeclarativeMetaPropertyPrivate::setBinding(QObject *object, const QDeclarativeP return 0; } + /*! Returns the expression associated with this signal property, or 0 if no signal expression exists. */ -QDeclarativeExpression *QDeclarativeMetaProperty::signalExpression() const +QDeclarativeExpression * +QDeclarativeMetaPropertyPrivate::signalExpression(const QDeclarativeMetaProperty &that) { - if (!(type() & SignalProperty)) + if (!(that.type() & QDeclarativeMetaProperty::SignalProperty)) return 0; - const QObjectList &children = d->object->children(); + const QObjectList &children = that.d->object->children(); for (int ii = 0; ii < children.count(); ++ii) { QObject *child = children.at(ii); QDeclarativeBoundSignal *signal = QDeclarativeBoundSignal::cast(child); - if (signal && signal->index() == coreIndex()) + if (signal && signal->index() == that.coreIndex()) return signal->expression(); } @@ -606,25 +611,27 @@ QDeclarativeExpression *QDeclarativeMetaProperty::signalExpression() const Ownership of \a expr transfers to QML. Ownership of the return value is assumed by the caller. */ -QDeclarativeExpression *QDeclarativeMetaProperty::setSignalExpression(QDeclarativeExpression *expr) const +QDeclarativeExpression * +QDeclarativeMetaPropertyPrivate::setSignalExpression(const QDeclarativeMetaProperty &that, + QDeclarativeExpression *expr) { - if (!(type() & SignalProperty)) { + if (!(that.type() & QDeclarativeMetaProperty::SignalProperty)) { delete expr; return 0; } - const QObjectList &children = d->object->children(); + const QObjectList &children = that.d->object->children(); for (int ii = 0; ii < children.count(); ++ii) { QObject *child = children.at(ii); QDeclarativeBoundSignal *signal = QDeclarativeBoundSignal::cast(child); - if (signal && signal->index() == coreIndex()) + if (signal && signal->index() == that.coreIndex()) return signal->setExpression(expr); } if (expr) { - QDeclarativeBoundSignal *signal = new QDeclarativeBoundSignal(d->object, method(), d->object); + QDeclarativeBoundSignal *signal = new QDeclarativeBoundSignal(that.d->object, that.method(), that.d->object); return signal->setExpression(expr); } else { return 0; @@ -758,7 +765,7 @@ bool QDeclarativeMetaPropertyPrivate::writeValueProperty(const QVariant &value, { // Remove any existing bindings on this property if (!(flags & QDeclarativeMetaProperty::DontRemoveBinding)) { - QDeclarativeAbstractBinding *binding = q->setBinding(0); + QDeclarativeAbstractBinding *binding = setBinding(*q, 0); if (binding) binding->destroy(); } diff --git a/src/declarative/qml/qdeclarativemetaproperty.h b/src/declarative/qml/qdeclarativemetaproperty.h index 4dd6668..9a3a793 100644 --- a/src/declarative/qml/qdeclarativemetaproperty.h +++ b/src/declarative/qml/qdeclarativemetaproperty.h @@ -121,13 +121,6 @@ public: QMetaProperty property() const; - QDeclarativeAbstractBinding *binding() const; - QDeclarativeAbstractBinding *setBinding(QDeclarativeAbstractBinding *, - QDeclarativeMetaProperty::WriteFlags flags = QDeclarativeMetaProperty::DontRemoveBinding) const; - - QDeclarativeExpression *signalExpression() const; - QDeclarativeExpression *setSignalExpression(QDeclarativeExpression *) const; - static QDeclarativeMetaProperty createProperty(QObject *, const QString &, QDeclarativeContext *context=0); int coreIndex() const; diff --git a/src/declarative/qml/qdeclarativemetaproperty_p.h b/src/declarative/qml/qdeclarativemetaproperty_p.h index 9fd5ed2..b769e42 100644 --- a/src/declarative/qml/qdeclarativemetaproperty_p.h +++ b/src/declarative/qml/qdeclarativemetaproperty_p.h @@ -64,7 +64,7 @@ QT_BEGIN_NAMESPACE class QDeclarativeContext; class QDeclarativeEnginePrivate; -class QDeclarativeMetaPropertyPrivate +class Q_AUTOTEST_EXPORT QDeclarativeMetaPropertyPrivate { public: QDeclarativeMetaPropertyPrivate() @@ -105,19 +105,32 @@ public: bool writeValueProperty(const QVariant &, QDeclarativeMetaProperty::WriteFlags); static const QMetaObject *rawMetaObjectForType(QDeclarativeEnginePrivate *, int); - static bool writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, const QVariant &value, int flags); - static bool write(QObject *, const QDeclarativePropertyCache::Data &, const QVariant &, QDeclarativeContext *, - QDeclarativeMetaProperty::WriteFlags flags = 0); - static QDeclarativeAbstractBinding *setBinding(QObject *, const QDeclarativePropertyCache::Data &, QDeclarativeAbstractBinding *, - QDeclarativeMetaProperty::WriteFlags flags = QDeclarativeMetaProperty::DontRemoveBinding); + static bool writeEnumProperty(const QMetaProperty &prop, int idx, QObject *object, + const QVariant &value, int flags); + static bool write(QObject *, const QDeclarativePropertyCache::Data &, const QVariant &, + QDeclarativeContext *, QDeclarativeMetaProperty::WriteFlags flags = 0); + static QDeclarativeAbstractBinding *setBinding(QObject *, const QDeclarativePropertyCache::Data &, + QDeclarativeAbstractBinding *, + QDeclarativeMetaProperty::WriteFlags flags = QDeclarativeMetaProperty::DontRemoveBinding); static QByteArray saveValueType(const QMetaObject *, int, const QMetaObject *, int); static QByteArray saveProperty(const QMetaObject *, int); - static QDeclarativeMetaProperty restore(const QByteArray &, QObject *, QDeclarativeContext * = 0); + static QDeclarativeMetaProperty restore(const QByteArray &, QObject *, QDeclarativeContext *); static bool equal(const QMetaObject *, const QMetaObject *); static bool canConvert(const QMetaObject *from, const QMetaObject *to); + + + // "Public" (to QML) methods + static QDeclarativeAbstractBinding *binding(const QDeclarativeMetaProperty &that); + static QDeclarativeAbstractBinding *setBinding(const QDeclarativeMetaProperty &that, + QDeclarativeAbstractBinding *, + QDeclarativeMetaProperty::WriteFlags flags = QDeclarativeMetaProperty::DontRemoveBinding); + static QDeclarativeExpression *signalExpression(const QDeclarativeMetaProperty &that); + static QDeclarativeExpression *setSignalExpression(const QDeclarativeMetaProperty &that, + QDeclarativeExpression *) ; + }; QT_END_NAMESPACE diff --git a/src/declarative/qml/qdeclarativepropertycache_p.h b/src/declarative/qml/qdeclarativepropertycache_p.h index 7f4b174..68e6e6b 100644 --- a/src/declarative/qml/qdeclarativepropertycache_p.h +++ b/src/declarative/qml/qdeclarativepropertycache_p.h @@ -58,7 +58,7 @@ #include <QtCore/qvector.h> -#include <private/qscriptdeclarativeclass_p.h> +#include <QtScript/private/qscriptdeclarativeclass_p.h> QT_BEGIN_NAMESPACE |