diff options
Diffstat (limited to 'src/declarative/util/qdeclarativelistmodel_p_p.h')
-rw-r--r-- | src/declarative/util/qdeclarativelistmodel_p_p.h | 59 |
1 files changed, 28 insertions, 31 deletions
diff --git a/src/declarative/util/qdeclarativelistmodel_p_p.h b/src/declarative/util/qdeclarativelistmodel_p_p.h index 84a6e90c24..b7fbd0e2ca 100644 --- a/src/declarative/util/qdeclarativelistmodel_p_p.h +++ b/src/declarative/util/qdeclarativelistmodel_p_p.h @@ -67,7 +67,6 @@ QT_BEGIN_NAMESPACE QT_MODULE(Declarative) class QDeclarativeOpenMetaObject; -class QScriptEngine; class QDeclarativeListModelWorkerAgent; struct ModelNode; class FlatListScriptClass; @@ -87,24 +86,25 @@ public: int count() const; void clear(); void remove(int index); - bool insert(int index, const QScriptValue&); - QScriptValue get(int index) const; - void set(int index, const QScriptValue&, QList<int> *roles); + bool insert(int index, v8::Handle<v8::Value>); + v8::Handle<v8::Value> get(int index) const; + void set(int index, v8::Handle<v8::Value>, QList<int> *roles); void setProperty(int index, const QString& property, const QVariant& value, QList<int> *roles); void move(int from, int to, int count); private: friend class QDeclarativeListModelWorkerAgent; friend class QDeclarativeListModel; - friend class FlatListScriptClass; + friend class QDeclarativeListModelV8Data; friend class FlatNodeData; - bool addValue(const QScriptValue &value, QHash<int, QVariant> *row, QList<int> *roles); + bool addValue(v8::Handle<v8::Value> value, QHash<int, QVariant> *row, QList<int> *roles); void insertedNode(int index); void removedNode(int index); void moveNodes(int from, int to, int n); - QScriptEngine *m_scriptEngine; + QV8Engine *engine() const; + QV8Engine *m_engine; QHash<int, QString> m_roles; QHash<QString, int> m_strings; QList<QHash<int, QVariant> > m_values; @@ -116,6 +116,7 @@ private: }; +#if 0 /* Created when get() is called on a FlatListModel. This allows changes to the object returned by get() to be tracked, and passed onto the model. @@ -133,12 +134,13 @@ public: private: FlatListModel *m_model; }; +#endif /* FlatNodeData and FlatNodeObjectData allow objects returned by get() to still point to the correct list index if move(), insert() or remove() are called. */ -struct FlatNodeObjectData; +class QV8ListModelResource; class FlatNodeData { public: @@ -147,31 +149,26 @@ public: ~FlatNodeData(); - void addData(FlatNodeObjectData *data); - void removeData(FlatNodeObjectData *data); + void addData(QV8ListModelResource *data); + void removeData(QV8ListModelResource *data); int index; private: - QSet<FlatNodeObjectData*> objects; + QSet<QV8ListModelResource*> objects; }; -struct FlatNodeObjectData : public QScriptDeclarativeClass::Object +class QV8ListModelResource : public QV8ObjectResource { - FlatNodeObjectData(FlatNodeData *data) : nodeData(data) { - nodeData->addData(this); - } - - ~FlatNodeObjectData() { - if (nodeData) - nodeData->removeData(this); - } + V8_RESOURCE_TYPE(ListModelType); +public: + QV8ListModelResource(FlatListModel *model, FlatNodeData *data, QV8Engine *engine); + ~QV8ListModelResource(); + FlatListModel *model; FlatNodeData *nodeData; }; - - class NestedListModel { public: @@ -187,9 +184,9 @@ public: int count() const; void clear(); void remove(int index); - bool insert(int index, const QScriptValue&); - QScriptValue get(int index) const; - void set(int index, const QScriptValue&, QList<int> *roles); + bool insert(int index, v8::Handle<v8::Value>); + v8::Handle<v8::Value> get(int index) const; + void set(int index, v8::Handle<v8::Value>, QList<int> *roles); void setProperty(int index, const QString& property, const QVariant& value, QList<int> *roles); void move(int from, int to, int count); @@ -200,6 +197,7 @@ public: bool m_ownsRoot; QDeclarativeListModel *m_listModel; + QV8Engine *engine() const; private: friend struct ModelNode; mutable QStringList roleStrings; @@ -212,7 +210,7 @@ class ModelObject : public QObject { Q_OBJECT public: - ModelObject(ModelNode *node, NestedListModel *model, QScriptEngine *seng); + ModelObject(ModelNode *node, NestedListModel *model, QV8Engine *eng); void setValue(const QByteArray &name, const QVariant &val); void setNodeUpdatesEnabled(bool enable); @@ -226,7 +224,7 @@ private: class ModelNodeMetaObject : public QDeclarativeOpenMetaObject { public: - ModelNodeMetaObject(QScriptEngine *seng, ModelObject *object); + ModelNodeMetaObject(QV8Engine *eng, ModelObject *object); bool m_enabled; @@ -234,11 +232,10 @@ protected: void propertyWritten(int index); private: - QScriptEngine *m_seng; + QV8Engine *m_engine; ModelObject *m_obj; }; - /* A ModelNode is created for each item in a NestedListModel. */ @@ -255,8 +252,8 @@ struct ModelNode QDeclarativeListModel *model(const NestedListModel *model); ModelObject *object(const NestedListModel *model); - bool setObjectValue(const QScriptValue& valuemap, bool writeToCache = true); - void setListValue(const QScriptValue& valuelist); + bool setObjectValue(v8::Handle<v8::Value> valuemap, bool writeToCache = true); + void setListValue(v8::Handle<v8::Value> valuelist); bool setProperty(const QString& prop, const QVariant& val); void changedProperty(const QString &name) const; void updateListIndexes(); |