aboutsummaryrefslogtreecommitdiffstats
path: root/src/declarative/util/qdeclarativelistmodel_p_p.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/util/qdeclarativelistmodel_p_p.h')
-rw-r--r--src/declarative/util/qdeclarativelistmodel_p_p.h59
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();