summaryrefslogtreecommitdiffstats
path: root/src/declarative/qml
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/qml')
-rw-r--r--src/declarative/qml/qml.h10
-rw-r--r--src/declarative/qml/qmlbinding.cpp13
-rw-r--r--src/declarative/qml/qmlbinding.h6
-rw-r--r--src/declarative/qml/qmlbinding_p.h4
-rw-r--r--src/declarative/qml/qmlbindingoptimizations_p.h2
-rw-r--r--src/declarative/qml/qmlboundsignal_p.h2
-rw-r--r--src/declarative/qml/qmlcompiler.cpp7
-rw-r--r--src/declarative/qml/qmlcompiler_p.h4
-rw-r--r--src/declarative/qml/qmlcomponent.cpp16
-rw-r--r--src/declarative/qml/qmlcomponent.h4
-rw-r--r--src/declarative/qml/qmlcomponent_p.h6
-rw-r--r--src/declarative/qml/qmlcompositetypemanager.cpp4
-rw-r--r--src/declarative/qml/qmlcompositetypemanager_p.h4
-rw-r--r--src/declarative/qml/qmlcontext.cpp2
-rw-r--r--src/declarative/qml/qmlcontext_p.h2
-rw-r--r--src/declarative/qml/qmlcustomparser_p.h4
-rw-r--r--src/declarative/qml/qmldom.cpp100
-rw-r--r--src/declarative/qml/qmldom.h6
-rw-r--r--src/declarative/qml/qmldom_p.h22
-rw-r--r--src/declarative/qml/qmlengine.cpp18
-rw-r--r--src/declarative/qml/qmlengine_p.h9
-rw-r--r--src/declarative/qml/qmlenginedebug.cpp4
-rw-r--r--src/declarative/qml/qmlexpression.h2
-rw-r--r--src/declarative/qml/qmlinfo.cpp4
-rw-r--r--src/declarative/qml/qmlintegercache.cpp2
-rw-r--r--src/declarative/qml/qmllist.h2
-rw-r--r--src/declarative/qml/qmlmetaproperty.cpp2
-rw-r--r--src/declarative/qml/qmlmetatype.h10
-rw-r--r--src/declarative/qml/qmlobjectscriptclass.cpp2
-rw-r--r--src/declarative/qml/qmlparser_p.h2
-rw-r--r--src/declarative/qml/qmlpropertycache.cpp2
-rw-r--r--src/declarative/qml/qmlproxymetaobject_p.h2
-rw-r--r--src/declarative/qml/qmlscriptparser.cpp15
-rw-r--r--src/declarative/qml/qmlscriptparser_p.h2
-rw-r--r--src/declarative/qml/qmlsqldatabase.cpp2
-rw-r--r--src/declarative/qml/qmlvaluetype_p.h4
-rw-r--r--src/declarative/qml/qmlvme.cpp2
-rw-r--r--src/declarative/qml/qmlvme_p.h2
-rw-r--r--src/declarative/qml/qmlvmemetaobject.cpp11
-rw-r--r--src/declarative/qml/qmlvmemetaobject_p.h5
-rw-r--r--src/declarative/qml/qmlwatcher.cpp6
-rw-r--r--src/declarative/qml/qmlxmlhttprequest.cpp166
42 files changed, 213 insertions, 281 deletions
diff --git a/src/declarative/qml/qml.h b/src/declarative/qml/qml.h
index bb7ae24..2c03aad 100644
--- a/src/declarative/qml/qml.h
+++ b/src/declarative/qml/qml.h
@@ -46,11 +46,11 @@
#include <QtCore/qstringlist.h>
#include <QtCore/qurl.h>
#include <QtCore/qmetaobject.h>
-#include <QtDeclarative/qmlmetatype.h>
-#include <QtDeclarative/qmlmetaproperty.h>
-#include <QtDeclarative/qmlparserstatus.h>
-#include <QtDeclarative/qmlpropertyvaluesource.h>
-#include <QtDeclarative/qmllist.h>
+#include <qmlmetatype.h>
+#include <qmlmetaproperty.h>
+#include <qmlparserstatus.h>
+#include <qmlpropertyvaluesource.h>
+#include <qmllist.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlbinding.cpp b/src/declarative/qml/qmlbinding.cpp
index b0a4d6e..ef92308 100644
--- a/src/declarative/qml/qmlbinding.cpp
+++ b/src/declarative/qml/qmlbinding.cpp
@@ -175,7 +175,18 @@ void QmlBinding::update(QmlMetaProperty::WriteFlags flags)
bool isUndefined = false;
QVariant value = this->value(&isUndefined);
- if (!isUndefined && data->property.object() &&
+ if (isUndefined && !data->error.isValid()) {
+
+ QUrl url = data->url;
+ int line = data->line;
+ if (url.isEmpty()) url = QUrl(QLatin1String("<Unknown File>"));
+
+ data->error.setUrl(url);
+ data->error.setLine(line);
+ data->error.setColumn(-1);
+ data->error.setDescription(QLatin1String("Unable to assign [undefined] to ") + QLatin1String(QMetaType::typeName(data->property.propertyType())));
+
+ } else if (!isUndefined && data->property.object() &&
!data->property.write(value, flags)) {
QUrl url = data->url;
diff --git a/src/declarative/qml/qmlbinding.h b/src/declarative/qml/qmlbinding.h
index 8814e77..8fbe441 100644
--- a/src/declarative/qml/qmlbinding.h
+++ b/src/declarative/qml/qmlbinding.h
@@ -43,9 +43,9 @@
#define QMLBINDING_H
#include <QtCore/QObject>
-#include <QtDeclarative/qml.h>
-#include <QtDeclarative/qmlpropertyvaluesource.h>
-#include <QtDeclarative/qmlexpression.h>
+#include <qml.h>
+#include <qmlpropertyvaluesource.h>
+#include <qmlexpression.h>
#include <QtCore/QMetaProperty>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlbinding_p.h b/src/declarative/qml/qmlbinding_p.h
index e4de239..30a31ab 100644
--- a/src/declarative/qml/qmlbinding_p.h
+++ b/src/declarative/qml/qmlbinding_p.h
@@ -53,8 +53,8 @@
// We mean it.
//
-#include <QtDeclarative/qmlbinding.h>
-#include <QtDeclarative/qmlmetaproperty.h>
+#include <qmlbinding.h>
+#include <qmlmetaproperty.h>
#include "qmlexpression_p.h"
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlbindingoptimizations_p.h b/src/declarative/qml/qmlbindingoptimizations_p.h
index 5a00eb2..2cdc07d 100644
--- a/src/declarative/qml/qmlbindingoptimizations_p.h
+++ b/src/declarative/qml/qmlbindingoptimizations_p.h
@@ -54,7 +54,7 @@
//
#include <private/qmlexpression_p.h>
-#include <QtDeclarative/qmlbinding.h>
+#include <qmlbinding.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlboundsignal_p.h b/src/declarative/qml/qmlboundsignal_p.h
index 35679fd..e801892 100644
--- a/src/declarative/qml/qmlboundsignal_p.h
+++ b/src/declarative/qml/qmlboundsignal_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include <QtDeclarative/qmlexpression.h>
+#include <qmlexpression.h>
#include <private/qobject_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlcompiler.cpp b/src/declarative/qml/qmlcompiler.cpp
index 8e92eb4..2cb44a3 100644
--- a/src/declarative/qml/qmlcompiler.cpp
+++ b/src/declarative/qml/qmlcompiler.cpp
@@ -69,7 +69,7 @@
#include <private/qmlexpression_p.h>
#include "qmlmetaproperty_p.h"
#include "qmlrewrite_p.h"
-#include <QtDeclarative/qmlscriptstring.h>
+#include <qmlscriptstring.h>
#include <private/qmlglobal_p.h>
#include "qmlscriptparser_p.h"
@@ -2340,6 +2340,7 @@ bool QmlCompiler::compileAlias(QMetaObjectBuilder &builder,
QByteArray typeName;
int propIdx = -1;
+ int flags = 0;
bool writable = false;
if (alias.count() == 2) {
propIdx = idObject->metaObject()->indexOfProperty(alias.at(1).toUtf8().constData());
@@ -2359,8 +2360,12 @@ bool QmlCompiler::compileAlias(QMetaObjectBuilder &builder,
typeName += "*";
}
+ if (typeName.endsWith('*'))
+ flags |= QML_ALIAS_FLAG_PTR;
+
data.append((const char *)&idObject->idIndex, sizeof(idObject->idIndex));
data.append((const char *)&propIdx, sizeof(propIdx));
+ data.append((const char *)&flags, sizeof(flags));
builder.addSignal(prop.name + "Changed()");
QMetaPropertyBuilder propBuilder =
diff --git a/src/declarative/qml/qmlcompiler_p.h b/src/declarative/qml/qmlcompiler_p.h
index 51c165e..8f28ac9 100644
--- a/src/declarative/qml/qmlcompiler_p.h
+++ b/src/declarative/qml/qmlcompiler_p.h
@@ -55,8 +55,8 @@
#include <QtCore/qbytearray.h>
#include <QtCore/qset.h>
-#include <QtDeclarative/qml.h>
-#include <QtDeclarative/qmlerror.h>
+#include <qml.h>
+#include <qmlerror.h>
#include <private/qmlinstruction_p.h>
#include <private/qmlcompositetypemanager_p.h>
#include <private/qmlparser_p.h>
diff --git a/src/declarative/qml/qmlcomponent.cpp b/src/declarative/qml/qmlcomponent.cpp
index 3c142a7..e31a1b5 100644
--- a/src/declarative/qml/qmlcomponent.cpp
+++ b/src/declarative/qml/qmlcomponent.cpp
@@ -236,7 +236,9 @@ QmlComponent::Status QmlComponent::status() const
}
/*!
- Returns true if the component is in the Null state, false otherwise.
+ \property QmlComponent::isNull
+
+ Is true if the component is in the Null state, false otherwise.
Equivalent to status() == QmlComponent::Null.
*/
@@ -246,7 +248,9 @@ bool QmlComponent::isNull() const
}
/*!
- Returns true if the component is in the Ready state, false otherwise.
+ \property QmlComponent::isReady
+
+ Is true if the component is in the Ready state, false otherwise.
Equivalent to status() == QmlComponent::Ready.
*/
@@ -256,7 +260,9 @@ bool QmlComponent::isReady() const
}
/*!
- Returns true if the component is in the Error state, false otherwise.
+ \property QmlComponent::isError
+
+ Is true if the component is in the Error state, false otherwise.
Equivalent to status() == QmlComponent::Error.
*/
@@ -266,7 +272,9 @@ bool QmlComponent::isError() const
}
/*!
- Returns true if the component is in the Loading state, false otherwise.
+ \property QmlComponent::isLoading
+
+ Is true if the component is in the Loading state, false otherwise.
Equivalent to status() == QmlComponent::Loading.
*/
diff --git a/src/declarative/qml/qmlcomponent.h b/src/declarative/qml/qmlcomponent.h
index bfb4d53..835bdc5 100644
--- a/src/declarative/qml/qmlcomponent.h
+++ b/src/declarative/qml/qmlcomponent.h
@@ -45,8 +45,8 @@
#include <QtCore/qobject.h>
#include <QtCore/qstring.h>
#include <QtScript/qscriptvalue.h>
-#include <QtDeclarative/qml.h>
-#include <QtDeclarative/qmlerror.h>
+#include <qml.h>
+#include <qmlerror.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlcomponent_p.h b/src/declarative/qml/qmlcomponent_p.h
index e69f541..61a8a10 100644
--- a/src/declarative/qml/qmlcomponent_p.h
+++ b/src/declarative/qml/qmlcomponent_p.h
@@ -60,9 +60,9 @@
#include <private/qmlengine_p.h>
#include <private/qmlcompositetypemanager_p.h>
#include <private/qbitfield_p.h>
-#include <QtDeclarative/qmlerror.h>
-#include <QtDeclarative/qmlcomponent.h>
-#include <QtDeclarative/qml.h>
+#include <qmlerror.h>
+#include <qmlcomponent.h>
+#include <qml.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlcompositetypemanager.cpp b/src/declarative/qml/qmlcompositetypemanager.cpp
index 3c4982b..7dbe788 100644
--- a/src/declarative/qml/qmlcompositetypemanager.cpp
+++ b/src/declarative/qml/qmlcompositetypemanager.cpp
@@ -42,12 +42,12 @@
#include <private/qmlcompositetypedata_p.h>
#include <private/qmlcompositetypemanager_p.h>
#include <private/qmlscriptparser_p.h>
-#include <QtDeclarative/qmlengine.h>
+#include <qmlengine.h>
#include <QtNetwork/qnetworkreply.h>
#include <private/qmlengine_p.h>
#include <QtCore/qdebug.h>
#include <QtCore/qfile.h>
-#include <QtDeclarative/qmlcomponent.h>
+#include <qmlcomponent.h>
#include <private/qmlcomponent_p.h>
#include <private/qmlcompiler_p.h>
diff --git a/src/declarative/qml/qmlcompositetypemanager_p.h b/src/declarative/qml/qmlcompositetypemanager_p.h
index af028df..0abbfb5 100644
--- a/src/declarative/qml/qmlcompositetypemanager_p.h
+++ b/src/declarative/qml/qmlcompositetypemanager_p.h
@@ -56,8 +56,8 @@
#include <QtCore/qglobal.h>
#include <private/qmlscriptparser_p.h>
#include <private/qmlrefcount_p.h>
-#include <QtDeclarative/qmlerror.h>
-#include <QtDeclarative/qmlengine.h>
+#include <qmlerror.h>
+#include <qmlengine.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlcontext.cpp b/src/declarative/qml/qmlcontext.cpp
index 105c673..42f467b 100644
--- a/src/declarative/qml/qmlcontext.cpp
+++ b/src/declarative/qml/qmlcontext.cpp
@@ -49,7 +49,7 @@
#include <QtCore/qdebug.h>
#include <private/qmlbindingoptimizations_p.h>
#include <private/qscriptdeclarativeclass_p.h>
-#include <QtDeclarative/qmlinfo.h>
+#include <qmlinfo.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlcontext_p.h b/src/declarative/qml/qmlcontext_p.h
index 22d981f..a9c25a3 100644
--- a/src/declarative/qml/qmlcontext_p.h
+++ b/src/declarative/qml/qmlcontext_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include <QtDeclarative/qmlcontext.h>
+#include <qmlcontext.h>
#include <private/qobject_p.h>
#include <private/qmldeclarativedata_p.h>
#include <QtCore/qhash.h>
diff --git a/src/declarative/qml/qmlcustomparser_p.h b/src/declarative/qml/qmlcustomparser_p.h
index 74bed25..88a264f 100644
--- a/src/declarative/qml/qmlcustomparser_p.h
+++ b/src/declarative/qml/qmlcustomparser_p.h
@@ -55,8 +55,8 @@
#include <QtCore/qbytearray.h>
#include <QtCore/qxmlstream.h>
-#include <QtDeclarative/qmlmetatype.h>
-#include <QtDeclarative/qmlerror.h>
+#include <qmlmetatype.h>
+#include <qmlerror.h>
#include <private/qmlparser_p.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmldom.cpp b/src/declarative/qml/qmldom.cpp
index 39d6730..f4a137c 100644
--- a/src/declarative/qml/qmldom.cpp
+++ b/src/declarative/qml/qmldom.cpp
@@ -57,13 +57,6 @@ QmlDomDocumentPrivate::QmlDomDocumentPrivate()
{
}
-QmlDomDocumentPrivate::QmlDomDocumentPrivate(const QmlDomDocumentPrivate &other)
-: QSharedData(other), root(0)
-{
- root = other.root;
- if (root) root->addref();
-}
-
QmlDomDocumentPrivate::~QmlDomDocumentPrivate()
{
if (root) root->release();
@@ -141,7 +134,7 @@ QList<QmlDomImport> QmlDomDocument::imports() const
/*!
Loads a QmlDomDocument from \a data. \a data should be valid QML
data. On success, true is returned. If the \a data is malformed, false
- is returned and QmlDomDocument::loadError() contains an error description.
+ is returned and QmlDomDocument::errors() contains an error description.
\sa QmlDomDocument::loadError()
*/
@@ -160,7 +153,8 @@ bool QmlDomDocument::load(QmlEngine *engine, const QByteArray &data, const QUrl
td->release();
component->release();
return false;
- } else if(td->status == QmlCompositeTypeData::Waiting) {
+ } else if(td->status == QmlCompositeTypeData::Waiting ||
+ td->status == QmlCompositeTypeData::WaitingResources) {
QmlError error;
error.setDescription(QLatin1String("QmlDomDocument supports local types only"));
d->errors << error;
@@ -234,13 +228,6 @@ QmlDomPropertyPrivate::QmlDomPropertyPrivate()
{
}
-QmlDomPropertyPrivate::QmlDomPropertyPrivate(const QmlDomPropertyPrivate &other)
-: QSharedData(other), property(0)
-{
- property = other.property;
- if (property) property->addref();
-}
-
QmlDomPropertyPrivate::~QmlDomPropertyPrivate()
{
if (property) property->release();
@@ -251,13 +238,6 @@ QmlDomDynamicPropertyPrivate::QmlDomDynamicPropertyPrivate():
{
}
-QmlDomDynamicPropertyPrivate::QmlDomDynamicPropertyPrivate(const QmlDomDynamicPropertyPrivate &other)
-: QSharedData(other), valid(other.valid)
-{
- property = other.property;
- if (valid && property.defaultValue) property.defaultValue->addref();
-}
-
QmlDomDynamicPropertyPrivate::~QmlDomDynamicPropertyPrivate()
{
if (valid && property.defaultValue) property.defaultValue->release();
@@ -307,6 +287,15 @@ QmlDomProperty &QmlDomProperty::operator=(const QmlDomProperty &other)
}
/*!
+ Returns true if this is a valid QmlDomProperty, false otherwise.
+*/
+bool QmlDomProperty::isValid() const
+{
+ return d->property != 0;
+}
+
+
+/*!
Return the name of this property.
\qml
@@ -482,7 +471,7 @@ int QmlDomDynamicProperty::propertyType() const
return QMetaType::type("QColor");
case QmlParser::Object::DynamicProperty::Date:
- return QMetaType::type("QDateTime");
+ return QMetaType::type("QDate");
case QmlParser::Object::DynamicProperty::Int:
return QMetaType::type("int");
@@ -507,6 +496,14 @@ int QmlDomDynamicProperty::propertyType() const
return -1;
}
+QByteArray QmlDomDynamicProperty::propertyTypeName() const
+{
+ if (isValid())
+ return d->property.customType;
+
+ return QByteArray();
+}
+
/*!
Return true if this property is used as a default property in the QML
document.
@@ -539,6 +536,7 @@ QmlDomProperty QmlDomDynamicProperty::defaultValue() const
if (isValid() && d->property.defaultValue) {
rp.d->property = d->property.defaultValue;
+ rp.d->propertyName = propertyName();
rp.d->property->addref();
}
@@ -570,18 +568,10 @@ int QmlDomDynamicProperty::length() const
}
QmlDomObjectPrivate::QmlDomObjectPrivate()
-: object(0), isVirtualComponent(false)
+: object(0)
{
}
-QmlDomObjectPrivate::QmlDomObjectPrivate(const QmlDomObjectPrivate &other)
-: QSharedData(other), object(0), isVirtualComponent(false)
-{
- object = other.object;
- if (object) object->addref();
- isVirtualComponent = other.isVirtualComponent;
-}
-
QmlDomObjectPrivate::~QmlDomObjectPrivate()
{
if (object) object->release();
@@ -665,16 +655,6 @@ QmlDomObject::QmlDomObject()
}
/*!
- Construct a new QmlDomObject with the specified \a objectType.
-*/
-QmlDomObject::QmlDomObject(const QByteArray &objectType)
-: d(new QmlDomObjectPrivate)
-{
- Q_UNUSED(objectType);
- qWarning("QmlDomObject::QmlDomObject(const QByteArray &): Not implemented");
-}
-
-/*!
Create a copy of \a other QmlDomObject.
*/
QmlDomObject::QmlDomObject(const QmlDomObject &other)
@@ -785,7 +765,7 @@ QList<QmlDomProperty> QmlDomObject::properties() const
{
QList<QmlDomProperty> rv;
- if (!d->object)
+ if (!d->object || isComponent())
return rv;
QmlDomObjectPrivate::Properties properties = d->properties();
@@ -853,6 +833,9 @@ QmlDomDynamicProperty QmlDomObject::dynamicProperty(const QByteArray &name) cons
{
QmlDomDynamicProperty p;
+ if (!isValid())
+ return p;
+
for (int i = 0; i < d->object->dynamicProperties.size(); ++i) {
if (d->object->dynamicProperties.at(i).name == name) {
p.d = new QmlDomDynamicPropertyPrivate;
@@ -900,8 +883,7 @@ QByteArray QmlDomObject::customTypeData() const
*/
bool QmlDomObject::isComponent() const
{
- return d->isVirtualComponent ||
- (d->object && d->object->typeName == "Qt/Component");
+ return (d->object && d->object->typeName == "Qt/Component");
}
/*!
@@ -958,13 +940,6 @@ QmlDomBasicValuePrivate::QmlDomBasicValuePrivate()
{
}
-QmlDomBasicValuePrivate::QmlDomBasicValuePrivate(const QmlDomBasicValuePrivate &other)
-: QSharedData(other), value(0)
-{
- value = other.value;
- if (value) value->addref();
-}
-
QmlDomBasicValuePrivate::~QmlDomBasicValuePrivate()
{
if (value) value->release();
@@ -1250,15 +1225,6 @@ QmlDomValuePrivate::QmlDomValuePrivate()
{
}
-QmlDomValuePrivate::QmlDomValuePrivate(const QmlDomValuePrivate &other)
-: QSharedData(other), property(0), value(0)
-{
- property = other.property;
- value = other.value;
- if (property) property->addref();
- if (value) value->addref();
-}
-
QmlDomValuePrivate::~QmlDomValuePrivate()
{
if (property) property->release();
@@ -1754,10 +1720,7 @@ Item {
QmlDomObject QmlDomComponent::componentRoot() const
{
QmlDomObject rv;
- if (d->isVirtualComponent) {
- rv.d->object = d->object;
- rv.d->object->addref();
- } else if (d->object) {
+ if (d->object) {
QmlParser::Object *obj = 0;
if (d->object->defaultProperty &&
d->object->defaultProperty->values.count() == 1 &&
@@ -1778,11 +1741,6 @@ QmlDomImportPrivate::QmlDomImportPrivate()
{
}
-QmlDomImportPrivate::QmlDomImportPrivate(const QmlDomImportPrivate &other)
-: QSharedData(other)
-{
-}
-
QmlDomImportPrivate::~QmlDomImportPrivate()
{
}
diff --git a/src/declarative/qml/qmldom.h b/src/declarative/qml/qmldom.h
index 8c43c4a..ad28d0d 100644
--- a/src/declarative/qml/qmldom.h
+++ b/src/declarative/qml/qmldom.h
@@ -44,7 +44,7 @@
#include <QtCore/qlist.h>
#include <QtCore/qshareddata.h>
-#include <QtDeclarative/qmlerror.h>
+#include <qmlerror.h>
QT_BEGIN_HEADER
@@ -92,6 +92,8 @@ public:
~QmlDomProperty();
QmlDomProperty &operator=(const QmlDomProperty &);
+ bool isValid() const;
+
QByteArray propertyName() const;
QList<QByteArray> propertyNameParts() const;
@@ -121,6 +123,7 @@ public:
QByteArray propertyName() const;
int propertyType() const;
+ QByteArray propertyTypeName() const;
bool isDefaultProperty() const;
@@ -139,7 +142,6 @@ class Q_DECLARATIVE_EXPORT QmlDomObject
{
public:
QmlDomObject();
- QmlDomObject(const QByteArray &);
QmlDomObject(const QmlDomObject &);
~QmlDomObject();
QmlDomObject &operator=(const QmlDomObject &);
diff --git a/src/declarative/qml/qmldom_p.h b/src/declarative/qml/qmldom_p.h
index 4b4de80..cb0d884 100644
--- a/src/declarative/qml/qmldom_p.h
+++ b/src/declarative/qml/qmldom_p.h
@@ -62,7 +62,8 @@ class QmlDomDocumentPrivate : public QSharedData
{
public:
QmlDomDocumentPrivate();
- QmlDomDocumentPrivate(const QmlDomDocumentPrivate &);
+ QmlDomDocumentPrivate(const QmlDomDocumentPrivate &o)
+ : QSharedData(o) { qFatal("Not impl"); }
~QmlDomDocumentPrivate();
QList<QmlError> errors;
@@ -75,7 +76,8 @@ class QmlDomObjectPrivate : public QSharedData
{
public:
QmlDomObjectPrivate();
- QmlDomObjectPrivate(const QmlDomObjectPrivate &);
+ QmlDomObjectPrivate(const QmlDomObjectPrivate &o)
+ : QSharedData(o) { qFatal("Not impl"); }
~QmlDomObjectPrivate();
typedef QList<QPair<QmlParser::Property *, QByteArray> > Properties;
@@ -83,14 +85,14 @@ public:
Properties properties(QmlParser::Property *) const;
QmlParser::Object *object;
- bool isVirtualComponent;
};
class QmlDomPropertyPrivate : public QSharedData
{
public:
QmlDomPropertyPrivate();
- QmlDomPropertyPrivate(const QmlDomPropertyPrivate &);
+ QmlDomPropertyPrivate(const QmlDomPropertyPrivate &o)
+ : QSharedData(o) { qFatal("Not impl"); }
~QmlDomPropertyPrivate();
QByteArray propertyName;
@@ -101,7 +103,8 @@ class QmlDomDynamicPropertyPrivate : public QSharedData
{
public:
QmlDomDynamicPropertyPrivate();
- QmlDomDynamicPropertyPrivate(const QmlDomDynamicPropertyPrivate &);
+ QmlDomDynamicPropertyPrivate(const QmlDomDynamicPropertyPrivate &o)
+ : QSharedData(o) { qFatal("Not impl"); }
~QmlDomDynamicPropertyPrivate();
bool valid;
@@ -112,7 +115,8 @@ class QmlDomValuePrivate : public QSharedData
{
public:
QmlDomValuePrivate();
- QmlDomValuePrivate(const QmlDomValuePrivate &);
+ QmlDomValuePrivate(const QmlDomValuePrivate &o)
+ : QSharedData(o) { qFatal("Not impl"); }
~QmlDomValuePrivate();
QmlParser::Property *property;
@@ -123,7 +127,8 @@ class QmlDomBasicValuePrivate : public QSharedData
{
public:
QmlDomBasicValuePrivate();
- QmlDomBasicValuePrivate(const QmlDomBasicValuePrivate &);
+ QmlDomBasicValuePrivate(const QmlDomBasicValuePrivate &o)
+ : QSharedData(o) { qFatal("Not impl"); }
~QmlDomBasicValuePrivate();
QmlParser::Value *value;
@@ -133,7 +138,8 @@ class QmlDomImportPrivate : public QSharedData
{
public:
QmlDomImportPrivate();
- QmlDomImportPrivate(const QmlDomImportPrivate &);
+ QmlDomImportPrivate(const QmlDomImportPrivate &o)
+ : QSharedData(o) { qFatal("Not impl"); }
~QmlDomImportPrivate();
enum Type { Library, File };
diff --git a/src/declarative/qml/qmlengine.cpp b/src/declarative/qml/qmlengine.cpp
index 177818f..b6f3bde 100644
--- a/src/declarative/qml/qmlengine.cpp
+++ b/src/declarative/qml/qmlengine.cpp
@@ -86,8 +86,9 @@
#include <private/qmlsqldatabase_p.h>
#include <private/qmltypenamescriptclass_p.h>
#include <private/qmllistscriptclass_p.h>
-#include <QtDeclarative/qmlscriptstring.h>
+#include <qmlscriptstring.h>
#include <private/qmlglobal_p.h>
+#include <QtCore/qcryptographichash.h>
#ifdef Q_OS_WIN // for %APPDATA%
#include "qt_windows.h"
@@ -150,6 +151,7 @@ QmlEnginePrivate::QmlEnginePrivate(QmlEngine *e)
qtObject.setProperty(QLatin1String("closestAngle"), scriptEngine.newFunction(QmlEnginePrivate::closestAngle, 2));
qtObject.setProperty(QLatin1String("playSound"), scriptEngine.newFunction(QmlEnginePrivate::playSound, 1));
qtObject.setProperty(QLatin1String("openUrlExternally"),scriptEngine.newFunction(desktopOpenUrl, 1));
+ qtObject.setProperty(QLatin1String("md5"),scriptEngine.newFunction(md5, 1));
scriptEngine.globalObject().setProperty(QLatin1String("createQmlObject"),
scriptEngine.newFunction(QmlEnginePrivate::createQmlObject, 1));
@@ -816,6 +818,18 @@ QScriptValue QmlEnginePrivate::desktopOpenUrl(QScriptContext *ctxt, QScriptEngin
return e->newVariant(QVariant(ret));
}
+QScriptValue QmlEnginePrivate::md5(QScriptContext *ctxt, QScriptEngine *e)
+{
+ QByteArray data;
+
+ if (ctxt->argumentCount() >= 1)
+ data = ctxt->argument(0).toString().toUtf8();
+
+ QByteArray result = QCryptographicHash::hash(data, QCryptographicHash::Md5);
+
+ return QScriptValue(QLatin1String(result.toHex()));
+}
+
QScriptValue QmlEnginePrivate::closestAngle(QScriptContext *ctxt, QScriptEngine *e)
{
if(ctxt->argumentCount() < 2)
@@ -1140,7 +1154,7 @@ QmlEnginePrivate::Imports::~Imports()
delete d;
}
-#include <QtDeclarative/qmlmetatype.h>
+#include <qmlmetatype.h>
#include <private/qmltypenamecache_p.h>
static QmlTypeNameCache *cacheForNamespace(QmlEngine *engine, const QmlEnginePrivate::ImportedNamespace &set, QmlTypeNameCache *cache)
{
diff --git a/src/declarative/qml/qmlengine_p.h b/src/declarative/qml/qmlengine_p.h
index 3c60b5c..2e880bb 100644
--- a/src/declarative/qml/qmlengine_p.h
+++ b/src/declarative/qml/qmlengine_p.h
@@ -64,12 +64,12 @@
#include <private/qmlclassfactory_p.h>
#include <private/qmlcompositetypemanager_p.h>
#include <private/qpodvector_p.h>
-#include <QtDeclarative/qml.h>
+#include <qml.h>
#include <private/qmlbasicscript_p.h>
#include <private/qmlvaluetype_p.h>
-#include <QtDeclarative/qmlcontext.h>
-#include <QtDeclarative/qmlengine.h>
-#include <QtDeclarative/qmlexpression.h>
+#include <qmlcontext.h>
+#include <qmlengine.h>
+#include <qmlexpression.h>
#include <QtScript/qscriptengine.h>
#include <private/qmlmetaproperty_p.h>
#include <private/qmlpropertycache_p.h>
@@ -272,6 +272,7 @@ public:
static QScriptValue closestAngle(QScriptContext*, QScriptEngine*);
static QScriptValue playSound(QScriptContext*, QScriptEngine*);
static QScriptValue desktopOpenUrl(QScriptContext*, QScriptEngine*);
+ static QScriptValue md5(QScriptContext*, QScriptEngine*);
static QScriptEngine *getScriptEngine(QmlEngine *e) { return &e->d_func()->scriptEngine; }
static QmlEngine *getEngine(QScriptEngine *e) { return static_cast<QmlScriptEngine*>(e)->p->q_func(); }
diff --git a/src/declarative/qml/qmlenginedebug.cpp b/src/declarative/qml/qmlenginedebug.cpp
index 7e09fe6..6871236 100644
--- a/src/declarative/qml/qmlenginedebug.cpp
+++ b/src/declarative/qml/qmlenginedebug.cpp
@@ -43,8 +43,8 @@
#include "qmlboundsignal_p.h"
#include <QtCore/qdebug.h>
#include <QtCore/qmetaobject.h>
-#include <QtDeclarative/qmlengine.h>
-#include <QtDeclarative/qmlmetatype.h>
+#include <qmlengine.h>
+#include <qmlmetatype.h>
#include <qmlmetaproperty.h>
#include <qmlbinding.h>
#include "qmlcontext_p.h"
diff --git a/src/declarative/qml/qmlexpression.h b/src/declarative/qml/qmlexpression.h
index 9b123be..cbea58a 100644
--- a/src/declarative/qml/qmlexpression.h
+++ b/src/declarative/qml/qmlexpression.h
@@ -44,7 +44,7 @@
#include <QtCore/qobject.h>
#include <QtCore/qvariant.h>
-#include <QtDeclarative/qmlerror.h>
+#include <qmlerror.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlinfo.cpp b/src/declarative/qml/qmlinfo.cpp
index 9a19b80..bbd6022 100644
--- a/src/declarative/qml/qmlinfo.cpp
+++ b/src/declarative/qml/qmlinfo.cpp
@@ -41,13 +41,13 @@
#include "qmlinfo.h"
#include <private/qmldeclarativedata_p.h>
-#include <QtDeclarative/qmlcontext.h>
+#include <qmlcontext.h>
#include <QtGui/qapplication.h>
QT_BEGIN_NAMESPACE
/*!
- \fn void qmlInfo(const QString& message, const QObject *object)
+ \fn QmlInfo qmlInfo(const QObject *object)
\brief Prints warnings messages that include the file and line number for QML types.
diff --git a/src/declarative/qml/qmlintegercache.cpp b/src/declarative/qml/qmlintegercache.cpp
index d1927b3..1103ef2 100644
--- a/src/declarative/qml/qmlintegercache.cpp
+++ b/src/declarative/qml/qmlintegercache.cpp
@@ -41,7 +41,7 @@
#include "qmlintegercache_p.h"
#include <private/qmlengine_p.h>
-#include <QtDeclarative/qmlmetatype.h>
+#include <qmlmetatype.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmllist.h b/src/declarative/qml/qmllist.h
index c631d9e..e51b078 100644
--- a/src/declarative/qml/qmllist.h
+++ b/src/declarative/qml/qmllist.h
@@ -42,7 +42,7 @@
#ifndef QMLLIST_H
#define QMLLIST_H
-#include <QtDeclarative/qmlprivate.h>
+#include <qmlprivate.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlmetaproperty.cpp b/src/declarative/qml/qmlmetaproperty.cpp
index 4ad9aac..8bde318 100644
--- a/src/declarative/qml/qmlmetaproperty.cpp
+++ b/src/declarative/qml/qmlmetaproperty.cpp
@@ -50,7 +50,7 @@
#include "qmlboundsignal_p.h"
#include <math.h>
#include <QtCore/qdebug.h>
-#include <QtDeclarative/qmlengine.h>
+#include <qmlengine.h>
#include <private/qmlengine_p.h>
#include <private/qmldeclarativedata_p.h>
diff --git a/src/declarative/qml/qmlmetatype.h b/src/declarative/qml/qmlmetatype.h
index 1f493f8..99d6743 100644
--- a/src/declarative/qml/qmlmetatype.h
+++ b/src/declarative/qml/qmlmetatype.h
@@ -45,10 +45,10 @@
#include <QtCore/qglobal.h>
#include <QtCore/qvariant.h>
#include <QtCore/qbitarray.h>
-#include <QtDeclarative/qmlprivate.h>
-#include <QtDeclarative/qmlparserstatus.h>
-#include <QtDeclarative/qmlpropertyvaluesource.h>
-#include <QtDeclarative/qmlpropertyvalueinterceptor.h>
+#include <qmlprivate.h>
+#include <qmlparserstatus.h>
+#include <qmlpropertyvaluesource.h>
+#include <qmlpropertyvalueinterceptor.h>
QT_BEGIN_HEADER
@@ -220,7 +220,7 @@ int qmlRegisterExtendedType(const char *typeName)
attachedMo = QmlPrivate::attachedPropertiesMetaObject<T>();
}
- return QmlMetaType::registerType(ids, QmlPrivate::list_nocreate_op<T>, 0, 0, 0, 0, 0,
+ return QmlMetaType::registerType(ids, QmlPrivate::list_nocreate_op<T>, 0, 0, 0, 0,
&T::staticMetaObject, attached, attachedMo,
QmlPrivate::StaticCastSelector<T,QmlParserStatus>::cast(),
QmlPrivate::StaticCastSelector<T,QObject>::cast(),
diff --git a/src/declarative/qml/qmlobjectscriptclass.cpp b/src/declarative/qml/qmlobjectscriptclass.cpp
index c5641e5..1a6f724 100644
--- a/src/declarative/qml/qmlobjectscriptclass.cpp
+++ b/src/declarative/qml/qmlobjectscriptclass.cpp
@@ -46,7 +46,7 @@
#include <private/qmldeclarativedata_p.h>
#include <private/qmltypenamescriptclass_p.h>
#include <private/qmllistscriptclass_p.h>
-#include <QtDeclarative/qmlbinding.h>
+#include <qmlbinding.h>
#include <QtCore/qtimer.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlparser_p.h b/src/declarative/qml/qmlparser_p.h
index 4f080e5..2ece51f 100644
--- a/src/declarative/qml/qmlparser_p.h
+++ b/src/declarative/qml/qmlparser_p.h
@@ -56,7 +56,7 @@
#include <QtCore/QByteArray>
#include <QtCore/QList>
#include <QtCore/qstring.h>
-#include <QtDeclarative/qml.h>
+#include <qml.h>
#include <private/qmlrefcount_p.h>
#include <private/qobject_p.h>
diff --git a/src/declarative/qml/qmlpropertycache.cpp b/src/declarative/qml/qmlpropertycache.cpp
index 339bdef..b7a5fad 100644
--- a/src/declarative/qml/qmlpropertycache.cpp
+++ b/src/declarative/qml/qmlpropertycache.cpp
@@ -41,7 +41,7 @@
#include "qmlpropertycache_p.h"
#include <private/qmlengine_p.h>
-#include <QtDeclarative/qmlbinding.h>
+#include <qmlbinding.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlproxymetaobject_p.h b/src/declarative/qml/qmlproxymetaobject_p.h
index 8ab3b6c..7f9163c 100644
--- a/src/declarative/qml/qmlproxymetaobject_p.h
+++ b/src/declarative/qml/qmlproxymetaobject_p.h
@@ -57,7 +57,7 @@
#include <QtCore/QObject>
#include <private/qmetaobjectbuilder_p.h>
#include <private/qobject_p.h>
-#include <QtDeclarative/qml.h>
+#include <qml.h>
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlscriptparser.cpp b/src/declarative/qml/qmlscriptparser.cpp
index 526894e..b622c24 100644
--- a/src/declarative/qml/qmlscriptparser.cpp
+++ b/src/declarative/qml/qmlscriptparser.cpp
@@ -342,10 +342,17 @@ ProcessAST::defineObjectBinding_helper(AST::UiQualifiedId *propertyName,
Value *v = new Value;
v->object = obj;
v->location = obj->location;
- if (state.property)
+ if (state.property) {
state.property->addValue(v);
- else
- state.object->getDefaultProperty()->addValue(v);
+ } else {
+ Property *defaultProp = state.object->getDefaultProperty();
+ if (defaultProp->location.start.line == -1) {
+ defaultProp->location = v->location;
+ defaultProp->location.end = defaultProp->location.start;
+ defaultProp->location.range.length = 0;
+ }
+ defaultProp->addValue(v);
+ }
}
}
@@ -583,8 +590,8 @@ bool ProcessAST::visit(AST::UiPublicMember *node)
QmlScriptParser::TypeReference *typeRef =
_parser->findOrCreateType(memberType);
typeRef->refObjects.append(_stateStack.top().object);
- property.customType = memberType.toUtf8();
}
+ property.customType = memberType.toUtf8();
property.name = name.toUtf8();
property.location = location(node->firstSourceLocation(),
node->lastSourceLocation());
diff --git a/src/declarative/qml/qmlscriptparser_p.h b/src/declarative/qml/qmlscriptparser_p.h
index d4cdeda..cb3e9e9 100644
--- a/src/declarative/qml/qmlscriptparser_p.h
+++ b/src/declarative/qml/qmlscriptparser_p.h
@@ -54,7 +54,7 @@
#include <QtCore/QList>
#include <QtCore/QUrl>
-#include <QtDeclarative/qmlerror.h>
+#include <qmlerror.h>
#include "qmlparser_p.h"
QT_BEGIN_HEADER
diff --git a/src/declarative/qml/qmlsqldatabase.cpp b/src/declarative/qml/qmlsqldatabase.cpp
index 01d0590..c7d2e12 100644
--- a/src/declarative/qml/qmlsqldatabase.cpp
+++ b/src/declarative/qml/qmlsqldatabase.cpp
@@ -40,7 +40,7 @@
****************************************************************************/
#include <QtCore/qobject.h>
-#include <QtDeclarative/qmlengine.h>
+#include <qmlengine.h>
#include <private/qmlengine_p.h>
#include <QtScript/qscriptvalue.h>
#include <QtScript/qscriptvalueiterator.h>
diff --git a/src/declarative/qml/qmlvaluetype_p.h b/src/declarative/qml/qmlvaluetype_p.h
index e7566f9..2af261d 100644
--- a/src/declarative/qml/qmlvaluetype_p.h
+++ b/src/declarative/qml/qmlvaluetype_p.h
@@ -62,7 +62,7 @@
QT_BEGIN_NAMESPACE
-class Q_AUTOTEST_EXPORT QmlValueType : public QObject
+class Q_DECLARATIVE_EXPORT QmlValueType : public QObject
{
Q_OBJECT
public:
@@ -73,7 +73,7 @@ public:
virtual void setValue(QVariant) = 0;
};
-class Q_AUTOTEST_EXPORT QmlValueTypeFactory
+class Q_DECLARATIVE_EXPORT QmlValueTypeFactory
{
public:
QmlValueTypeFactory();
diff --git a/src/declarative/qml/qmlvme.cpp b/src/declarative/qml/qmlvme.cpp
index f3d0f65..da09288 100644
--- a/src/declarative/qml/qmlvme.cpp
+++ b/src/declarative/qml/qmlvme.cpp
@@ -67,7 +67,7 @@
#include <private/qmlbinding_p.h>
#include <private/qmlcontext_p.h>
#include <private/qmlbindingoptimizations_p.h>
-#include <QtDeclarative/qmlscriptstring.h>
+#include <qmlscriptstring.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlvme_p.h b/src/declarative/qml/qmlvme_p.h
index ab58b6a..a15bd08 100644
--- a/src/declarative/qml/qmlvme_p.h
+++ b/src/declarative/qml/qmlvme_p.h
@@ -55,7 +55,7 @@
#include <QtCore/QString>
#include <QtCore/QStack>
-#include <QtDeclarative/qmlerror.h>
+#include <qmlerror.h>
#include <private/qbitfield_p.h>
QT_BEGIN_NAMESPACE
diff --git a/src/declarative/qml/qmlvmemetaobject.cpp b/src/declarative/qml/qmlvmemetaobject.cpp
index 5315089..ed28d78 100644
--- a/src/declarative/qml/qmlvmemetaobject.cpp
+++ b/src/declarative/qml/qmlvmemetaobject.cpp
@@ -210,17 +210,18 @@ int QmlVMEMetaObject::metaCall(QMetaObject::Call c, int _id, void **a)
if (id < metaData->aliasCount) {
- if (!ctxt) return -1;
QmlVMEMetaData::AliasData *d = metaData->aliasData() + id;
+
+ if (d->flags & QML_ALIAS_FLAG_PTR && c == QMetaObject::ReadProperty)
+ *reinterpret_cast<void **>(a[0]) = 0;
+
+ if (!ctxt) return -1;
QmlContextPrivate *ctxtPriv =
(QmlContextPrivate *)QObjectPrivate::get(ctxt);
QObject *target = ctxtPriv->idValues[d->contextIdx].data();
- if (!target) {
- if (d->propertyIdx == -1)
- *reinterpret_cast<QObject **>(a[0]) = target;
+ if (!target)
return -1;
- }
if (c == QMetaObject::ReadProperty && !aConnected.testBit(id)) {
int sigIdx = methodOffset + id + metaData->propertyCount;
diff --git a/src/declarative/qml/qmlvmemetaobject_p.h b/src/declarative/qml/qmlvmemetaobject_p.h
index 9262b19..f78cfaa 100644
--- a/src/declarative/qml/qmlvmemetaobject_p.h
+++ b/src/declarative/qml/qmlvmemetaobject_p.h
@@ -53,7 +53,7 @@
// We mean it.
//
-#include <QtDeclarative/qml.h>
+#include <qml.h>
#include <QtCore/QMetaObject>
#include <QtCore/QBitArray>
#include <QtCore/QPair>
@@ -61,6 +61,8 @@
QT_BEGIN_NAMESPACE
+#define QML_ALIAS_FLAG_PTR 0x00000001
+
struct QmlVMEMetaData
{
short propertyCount;
@@ -71,6 +73,7 @@ struct QmlVMEMetaData
struct AliasData {
int contextIdx;
int propertyIdx;
+ int flags;
};
struct PropertyData {
diff --git a/src/declarative/qml/qmlwatcher.cpp b/src/declarative/qml/qmlwatcher.cpp
index 2737bf9..889ac78 100644
--- a/src/declarative/qml/qmlwatcher.cpp
+++ b/src/declarative/qml/qmlwatcher.cpp
@@ -41,10 +41,10 @@
#include <QtCore/qmetaobject.h>
#include <QtCore/qdebug.h>
-#include <QtDeclarative/qmlexpression.h>
+#include <qmlexpression.h>
#include <private/qmldebugservice_p.h>
-#include <QtDeclarative/qmlcontext.h>
-#include <QtDeclarative/qml.h>
+#include <qmlcontext.h>
+#include <qml.h>
#include "qmlwatcher_p.h"
diff --git a/src/declarative/qml/qmlxmlhttprequest.cpp b/src/declarative/qml/qmlxmlhttprequest.cpp
index a6cdfb1..848533c 100644
--- a/src/declarative/qml/qmlxmlhttprequest.cpp
+++ b/src/declarative/qml/qmlxmlhttprequest.cpp
@@ -40,7 +40,7 @@
****************************************************************************/
#include <QtCore/qobject.h>
-#include <QtDeclarative/qmlengine.h>
+#include <qmlengine.h>
#include <private/qmlengine_p.h>
#include <QtScript/qscriptvalue.h>
#include <QtScript/qscriptcontext.h>
@@ -131,10 +131,10 @@ public:
QList<NodeImpl *> attributes;
};
-class DocumentImpl : public QmlRefCount
+class DocumentImpl : public NodeImpl
{
public:
- DocumentImpl() : root(0) { }
+ DocumentImpl() : root(0) { type = Document; }
virtual ~DocumentImpl() {
if (root) D(root);
}
@@ -158,12 +158,13 @@ public:
NamedNodeMap();
NamedNodeMap(const NamedNodeMap &);
- NamedNodeMap &operator=(const NamedNodeMap &);
~NamedNodeMap();
bool isNull();
NodeImpl *d;
QList<NodeImpl *> *list;
+private:
+ NamedNodeMap &operator=(const NamedNodeMap &);
};
class NamedNodeMapClass : public QScriptClass
@@ -180,7 +181,6 @@ class NodeList
public:
// JS API
static QScriptValue length(QScriptContext *context, QScriptEngine *engine);
- static QScriptValue item(QScriptContext *context, QScriptEngine *engine);
// C++ API
static QScriptValue prototype(QScriptEngine *);
@@ -188,11 +188,12 @@ public:
NodeList();
NodeList(const NodeList &);
- NodeList &operator=(const NodeList &);
~NodeList();
bool isNull();
NodeImpl *d;
+private:
+ NodeList &operator=(const NodeList &);
};
class NodeListClass : public QScriptClass
@@ -232,11 +233,13 @@ public:
Node();
Node(const Node &o);
- Node &operator=(const Node &);
~Node();
bool isNull() const;
NodeImpl *d;
+
+private:
+ Node &operator=(const Node &);
};
class Element : public Node
@@ -301,31 +304,29 @@ public:
// C++ API
static QScriptValue prototype(QScriptEngine *);
static QScriptValue load(QScriptEngine *engine, const QString &data);
-
- Document();
- Document(const Document &);
- Document &operator=(const Document &);
- ~Document();
- bool isNull() const;
-
- DocumentImpl *d;
-private:
- Document(DocumentImpl *);
};
-};
+}; // namespace
Q_DECLARE_METATYPE(Node);
Q_DECLARE_METATYPE(NodeList);
Q_DECLARE_METATYPE(NamedNodeMap);
-Q_DECLARE_METATYPE(Document);
QScriptValue Node::nodeName(QScriptContext *context, QScriptEngine *engine)
{
Node node = qscriptvalue_cast<Node>(context->thisObject());
if (node.isNull()) return engine->undefinedValue();
- return QScriptValue(node.d->name);
+ switch (node.d->type) {
+ case NodeImpl::Document:
+ return QScriptValue(QLatin1String("#document"));
+ case NodeImpl::CDATA:
+ return QScriptValue(QLatin1String("#cdata-section"));
+ case NodeImpl::Text:
+ return QScriptValue(QLatin1String("#text"));
+ default:
+ return QScriptValue(node.d->name);
+ }
}
QScriptValue Node::nodeValue(QScriptContext *context, QScriptEngine *engine)
@@ -465,12 +466,11 @@ QScriptValue Node::create(QScriptEngine *engine, NodeImpl *data)
case NodeImpl::Entity:
case NodeImpl::EntityReference:
case NodeImpl::Notation:
+ case NodeImpl::ProcessingInstruction:
+ return QScriptValue();
case NodeImpl::CDATA:
instance.setPrototype(CDATA::prototype(engine));
break;
- case NodeImpl::ProcessingInstruction:
- instance.setPrototype(Node::prototype(engine));
- break;
case NodeImpl::Text:
instance.setPrototype(Text::prototype(engine));
break;
@@ -556,8 +556,7 @@ QScriptValue Text::isElementContentWhitespace(QScriptContext *context, QScriptEn
Node node = qscriptvalue_cast<Node>(context->thisObject());
if (node.isNull()) return engine->undefinedValue();
- // ### implement
- return QScriptValue(false);
+ return node.d->data.trimmed().isEmpty();
}
QScriptValue Text::wholeText(QScriptContext *context, QScriptEngine *engine)
@@ -565,8 +564,7 @@ QScriptValue Text::wholeText(QScriptContext *context, QScriptEngine *engine)
Node node = qscriptvalue_cast<Node>(context->thisObject());
if (node.isNull()) return engine->undefinedValue();
- // ### implement
- return QScriptValue(QString());
+ return node.d->data;
}
QScriptValue Text::prototype(QScriptEngine *engine)
@@ -646,6 +644,7 @@ QScriptValue Document::load(QScriptEngine *engine, const QString &data)
attr->name = a.name().toString();
attr->data = a.value().toString();
attr->parent = node;
+ A(attr->parent);
node->attributes.append(attr);
}
}
@@ -681,7 +680,9 @@ QScriptValue Document::load(QScriptEngine *engine, const QString &data)
QScriptValue instance = engine->newObject();
instance.setPrototype(Document::prototype(engine));
- return engine->newVariant(instance, qVariantFromValue(Document(document)));
+ Node documentNode;
+ documentNode.d = document;
+ return engine->newVariant(instance, qVariantFromValue(documentNode));
}
Node::Node()
@@ -695,14 +696,6 @@ Node::Node(const Node &o)
if (d) A(d);
}
-Node &Node::operator=(const Node &o)
-{
- if (o.d) A(o.d);
- if (d) D(d);
- d = o.d;
- return *this;
-}
-
Node::~Node()
{
if (d) D(d);
@@ -761,15 +754,6 @@ NamedNodeMap::NamedNodeMap(const NamedNodeMap &o)
if (d) A(d);
}
-NamedNodeMap &NamedNodeMap::operator=(const NamedNodeMap &o)
-{
- if (o.d) A(o.d);
- if (d) D(d);
- d = o.d;
- list = o.list;
- return *this;
-}
-
NamedNodeMap::~NamedNodeMap()
{
if (d) D(d);
@@ -780,20 +764,6 @@ bool NamedNodeMap::isNull()
return d == 0;
}
-QScriptValue NodeList::item(QScriptContext *context, QScriptEngine *engine)
-{
- NodeList list = qscriptvalue_cast<NodeList>(context->thisObject().data());
- if (list.isNull() || context->argumentCount() != 1)
- return engine->undefinedValue();
-
- qint32 index = context->argument(0).toInt32();
-
- if (index >= list.d->children.count())
- return engine->undefinedValue(); // ### Exception
- else
- return Node::create(engine, list.d->children.at(index));
-}
-
QScriptValue NodeList::length(QScriptContext *context, QScriptEngine *engine)
{
NodeList list = qscriptvalue_cast<NodeList>(context->thisObject().data());
@@ -807,7 +777,6 @@ QScriptValue NodeList::prototype(QScriptEngine *engine)
QScriptValue proto = engine->newObject();
proto.setProperty(QLatin1String("length"), engine->newFunction(length), QScriptValue::ReadOnly | QScriptValue::PropertyGetter);
- proto.setProperty(QLatin1String("item"), engine->newFunction(item, 1), QScriptValue::ReadOnly);
return proto;
}
@@ -842,14 +811,6 @@ NodeList::NodeList(const NodeList &o)
if (d) A(d);
}
-NodeList &NodeList::operator=(const NodeList &o)
-{
- if (o.d) A(o.d);
- if (d) D(d);
- d = o.d;
- return *this;
-}
-
NodeList::~NodeList()
{
if (d) D(d);
@@ -920,81 +881,36 @@ QScriptValue NodeListClass::property(const QScriptValue &object, const QScriptSt
return Node::create(engine(), list.d->children.at(id));
}
-Document::Document()
-: d(0)
-{
-}
-
-Document::Document(DocumentImpl *data)
-: d(data)
-{
-}
-
-Document::Document(const Document &o)
-: Node(o), d(o.d)
-{
- if (d) A(d);
-}
-
-Document &Document::operator=(const Document &o)
-{
- if (o.d) A(o.d);
- if (d) D(d);
- d = o.d;
- return *this;
-}
-
-Document::~Document()
-{
- if (d) D(d);
-}
-
-bool Document::isNull() const
-{
- return d == 0;
-}
-
QScriptValue Document::documentElement(QScriptContext *context, QScriptEngine *engine)
{
- Document document = qscriptvalue_cast<Document>(context->thisObject());
- if (document.isNull()) return engine->undefinedValue();
-
- if (!document.d->root) return engine->nullValue();
+ Node document = qscriptvalue_cast<Node>(context->thisObject());
+ if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue();
- return Node::create(engine, document.d->root);
+ return Node::create(engine, static_cast<DocumentImpl *>(document.d)->root);
}
QScriptValue Document::xmlStandalone(QScriptContext *context, QScriptEngine *engine)
{
- Document document = qscriptvalue_cast<Document>(context->thisObject());
- if (document.isNull()) return engine->undefinedValue();
-
- if (context->argumentCount())
- document.d->isStandalone = context->argument(0).toBool();
+ Node document = qscriptvalue_cast<Node>(context->thisObject());
+ if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue();
- return QScriptValue(document.d->isStandalone);
+ return QScriptValue(static_cast<DocumentImpl *>(document.d)->isStandalone);
}
QScriptValue Document::xmlVersion(QScriptContext *context, QScriptEngine *engine)
{
- Document document = qscriptvalue_cast<Document>(context->thisObject());
- if (document.isNull()) return engine->undefinedValue();
+ Node document = qscriptvalue_cast<Node>(context->thisObject());
+ if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue();
- if (context->argumentCount())
- document.d->version = context->argument(0).toString();
-
- return QScriptValue(document.d->version);
+ return QScriptValue(static_cast<DocumentImpl *>(document.d)->version);
}
QScriptValue Document::xmlEncoding(QScriptContext *context, QScriptEngine *engine)
{
- Document document = qscriptvalue_cast<Document>(context->thisObject());
- if (document.isNull()) return engine->undefinedValue();
-
- if (context->argumentCount())
- document.d->encoding = context->argument(0).toString();
+ Node document = qscriptvalue_cast<Node>(context->thisObject());
+ if (document.isNull() || document.d->type != NodeImpl::Document) return engine->undefinedValue();
- return QScriptValue(document.d->encoding);
+ return QScriptValue(static_cast<DocumentImpl *>(document.d)->encoding);
}
class QmlXMLHttpRequest : public QObject