diff options
author | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-02-25 02:45:38 (GMT) |
---|---|---|
committer | Aaron Kennedy <aaron.kennedy@nokia.com> | 2010-02-25 02:46:48 (GMT) |
commit | a645ab52a7ba10018419b552b8f50ce4b7ad9cd8 (patch) | |
tree | 38b3267a4258331ffe22508949869b07f0887c33 /src/declarative/qml | |
parent | 35f6b95744164e635fb8a03e34b2dd6177a50ccf (diff) | |
download | Qt-a645ab52a7ba10018419b552b8f50ce4b7ad9cd8.zip Qt-a645ab52a7ba10018419b552b8f50ce4b7ad9cd8.tar.gz Qt-a645ab52a7ba10018419b552b8f50ce4b7ad9cd8.tar.bz2 |
Move private QDeclarativeMetaProperty functions into the private class
We don't want to allow manipulation of bindings and signal properties through
the public API. Equivalents of the public functions now exist in
QDeclarativeMetaPropertyPrivate for internal use.
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 |