/****************************************************************************
**
-** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
-** All rights reserved.
-** Contact: Nokia Corporation (qt-info@nokia.com)
+** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies).
+** Contact: http://www.qt-project.org/
**
** This file is part of the test suite of the Qt Toolkit.
**
**
**
**
+**
** $QT_END_LICENSE$
**
****************************************************************************/
#include <QtDeclarative/qdeclarativescriptstring.h>
#include <QtDeclarative/qdeclarativecomponent.h>
-#include <private/qv8gccallback_p.h>
#include <private/qdeclarativeengine_p.h>
#include <private/qv8engine_p.h>
Q_PROPERTY(int value READ value WRITE setValue)
Q_PROPERTY(int console READ console CONSTANT)
Q_PROPERTY(QString stringProperty READ stringProperty WRITE setStringProperty NOTIFY stringChanged)
+ Q_PROPERTY(QUrl urlProperty READ urlProperty WRITE setUrlProperty NOTIFY urlChanged)
Q_PROPERTY(QObject *objectProperty READ objectProperty WRITE setObjectProperty NOTIFY objectChanged)
Q_PROPERTY(QDeclarativeListProperty<QObject> objectListProperty READ objectListProperty CONSTANT)
Q_PROPERTY(int resettableProperty READ resettableProperty WRITE setResettableProperty RESET resetProperty)
emit stringChanged();
}
+ QUrl urlProperty() const { return m_url; }
+ void setUrlProperty(const QUrl &url)
+ {
+ if (url == m_url)
+ return;
+ m_url = url;
+ emit urlChanged();
+ }
+
QObject *objectProperty() const { return m_object; }
void setObjectProperty(QObject *obj) {
if (obj == m_object)
int value;
};
QVariant variant() const { return m_variant; }
+ QJSValue qjsvalue() const { return m_qjsvalue; }
int intProperty() const { return m_intProperty; }
void setIntProperty(int i) { m_intProperty = i; emit intChanged(); }
void basicSignal();
void argumentSignal(int a, QString b, qreal c, MyEnum2 d, Qt::MouseButtons e);
void stringChanged();
+ void urlChanged();
void objectChanged();
void anotherBasicSignal();
void thirdBasicSignal();
void signalWithUnknownType(const MyQmlObject::MyType &arg);
void signalWithVariant(const QVariant &arg);
+ void signalWithQJSValue(const QJSValue &arg);
void intChanged();
public slots:
void setString(const QString &s) { m_string = s; }
void myinvokable(MyQmlObject *o) { myinvokableObject = o; }
void variantMethod(const QVariant &v) { m_variant = v; }
+ void qjsvalueMethod(const QJSValue &v) { m_qjsvalue = v; }
void v8function(QDeclarativeV8Function*);
private:
QObject *m_object;
QString m_string;
+ QUrl m_url;
QList<QObject *> m_objectQList;
int m_value;
int m_resetProperty;
QRegExp m_regExp;
QVariant m_variant;
+ QJSValue m_qjsvalue;
int m_intProperty;
};
{
CircularReferenceObject *retn = new CircularReferenceObject(parent);
retn->m_dtorCount = m_dtorCount;
+ retn->m_engine = m_engine;
return retn;
}
m_referenced = other;
}
- static void callback(QV8GCCallback::Referencer *r, QV8GCCallback::Node *n)
+ static void callback(QV8GCCallback::Node *n)
{
CircularReferenceObject *cro = static_cast<CircularReferenceObject*>(n);
if (cro->m_referenced) {
- r->addRelationship(cro, cro->m_referenced);
+ cro->m_engine->addRelationshipForGC(cro, cro->m_referenced);
}
}
+ void setEngine(QDeclarativeEngine* declarativeEngine)
+ {
+ m_engine = QDeclarativeEnginePrivate::get(declarativeEngine)->v8engine();
+ }
+
private:
QObject *m_referenced;
int *m_dtorCount;
+ QV8Engine* m_engine;
};
Q_DECLARE_METATYPE(CircularReferenceObject*)
public:
CircularReferenceHandle(QObject *parent = 0)
- : QObject(parent), QV8GCCallback::Node(gccallback), m_dtorCount(0)
+ : QObject(parent), QV8GCCallback::Node(gccallback), m_dtorCount(0), m_engine(0)
{
QV8GCCallback::addGcCallbackNode(this);
}
{
CircularReferenceHandle *retn = new CircularReferenceHandle(parent);
retn->m_dtorCount = m_dtorCount;
+ retn->m_engine = m_engine;
return retn;
}
crh->m_referenced.Clear();
}
- static void gccallback(QV8GCCallback::Referencer *r, QV8GCCallback::Node *n)
+ static void gccallback(QV8GCCallback::Node *n)
{
CircularReferenceHandle *crh = static_cast<CircularReferenceHandle*>(n);
- r->addRelationship(crh, crh->m_referenced);
+ crh->m_engine->addRelationshipForGC(crh, crh->m_referenced);
+ }
+
+ void setEngine(QDeclarativeEngine* declarativeEngine)
+ {
+ m_engine = QDeclarativeEnginePrivate::get(declarativeEngine)->v8engine();
}
private:
v8::Persistent<v8::Value> m_referenced;
int *m_dtorCount;
+ QV8Engine* m_engine;
};
Q_DECLARE_METATYPE(CircularReferenceHandle*)
Q_PROPERTY (QList<bool> boolListProperty READ boolListProperty WRITE setBoolListProperty NOTIFY boolListPropertyChanged)
Q_PROPERTY (QList<QString> stringListProperty READ stringListProperty WRITE setStringListProperty NOTIFY stringListPropertyChanged)
Q_PROPERTY (QList<QUrl> urlListProperty READ urlListProperty WRITE setUrlListProperty NOTIFY urlListPropertyChanged)
-
Q_PROPERTY (QStringList qstringListProperty READ qstringListProperty WRITE setQStringListProperty NOTIFY qstringListPropertyChanged)
+
Q_PROPERTY (QList<QPoint> pointListProperty READ pointListProperty WRITE setPointListProperty NOTIFY pointListPropertyChanged)
+ Q_PROPERTY (QList<QVariant> variantListProperty READ variantListProperty WRITE setVariantListProperty NOTIFY variantListPropertyChanged)
public:
MySequenceConversionObject()
m_boolList << true << false << true << false;
m_stringList << QLatin1String("first") << QLatin1String("second") << QLatin1String("third") << QLatin1String("fourth");
m_urlList << QUrl("http://www.example1.com") << QUrl("http://www.example2.com") << QUrl("http://www.example3.com");
-
m_qstringList << QLatin1String("first") << QLatin1String("second") << QLatin1String("third") << QLatin1String("fourth");
+
m_pointList << QPoint(1, 2) << QPoint(3, 4) << QPoint(5, 6);
+ m_variantList << QVariant(QLatin1String("one")) << QVariant(true) << QVariant(3);
}
~MySequenceConversionObject() {}
void setQStringListProperty(const QStringList &list) { m_qstringList = list; emit qstringListPropertyChanged(); }
QList<QPoint> pointListProperty() const { return m_pointList; }
void setPointListProperty(const QList<QPoint> &list) { m_pointList = list; emit pointListPropertyChanged(); }
+ QList<QVariant> variantListProperty() const { return m_variantList; }
+ void setVariantListProperty(const QList<QVariant> &list) { m_variantList = list; emit variantListPropertyChanged(); }
// now for "copy resource" sequences:
Q_INVOKABLE QList<int> generateIntSequence() const { QList<int> retn; retn << 1 << 2 << 3; return retn; }
void urlListPropertyChanged();
void qstringListPropertyChanged();
void pointListPropertyChanged();
+ void variantListPropertyChanged();
private:
QList<int> m_intList;
QList<bool> m_boolList;
QList<QString> m_stringList;
QList<QUrl> m_urlList;
+ QStringList m_qstringList;
- QStringList m_qstringList; // not a supported sequence type, but QStringList support is hardcoded.
QList<QPoint> m_pointList; // not a supported sequence type
+ QList<QVariant> m_variantList; // not a supported sequence type, but QVariantList support is hardcoded.
};
class MyDeleteObject : public QObject