summaryrefslogtreecommitdiffstats
path: root/src/declarative/util
diff options
context:
space:
mode:
authorDavid Boddie <dboddie@trolltech.com>2010-08-27 16:32:49 (GMT)
committerDavid Boddie <dboddie@trolltech.com>2010-08-27 16:32:49 (GMT)
commit3ca305cf25033477b73121aa6622f8c9115285ec (patch)
tree59edd09384ffca0b5e68a777a032a9aa3f65a9df /src/declarative/util
parent2cac8ca88c9b5b2f9d3040b1543d88ecee52da99 (diff)
parentd3b898e973662707f9644b4fe5f8d18849929723 (diff)
downloadQt-3ca305cf25033477b73121aa6622f8c9115285ec.zip
Qt-3ca305cf25033477b73121aa6622f8c9115285ec.tar.gz
Qt-3ca305cf25033477b73121aa6622f8c9115285ec.tar.bz2
Merge branch '4.7' into qmldocs
Diffstat (limited to 'src/declarative/util')
-rw-r--r--src/declarative/util/qdeclarativefontloader.cpp1
-rw-r--r--src/declarative/util/qdeclarativefontloader_p.h3
-rw-r--r--src/declarative/util/qdeclarativelistmodel.cpp7
-rw-r--r--src/declarative/util/qdeclarativelistmodelworkeragent.cpp16
-rw-r--r--src/declarative/util/qdeclarativelistmodelworkeragent_p.h4
-rw-r--r--src/declarative/util/qdeclarativestategroup.cpp4
-rw-r--r--src/declarative/util/qdeclarativexmllistmodel.cpp2
7 files changed, 25 insertions, 12 deletions
diff --git a/src/declarative/util/qdeclarativefontloader.cpp b/src/declarative/util/qdeclarativefontloader.cpp
index 291583c..1755855 100644
--- a/src/declarative/util/qdeclarativefontloader.cpp
+++ b/src/declarative/util/qdeclarativefontloader.cpp
@@ -130,6 +130,7 @@ void QDeclarativeFontLoader::setSource(const QUrl &url)
d->status = Loading;
emit statusChanged();
+ emit sourceChanged();
#ifndef QT_NO_LOCALFILE_OPTIMIZED_QML
QString lf = QDeclarativeEnginePrivate::urlToLocalFileOrQrc(d->url);
if (!lf.isEmpty()) {
diff --git a/src/declarative/util/qdeclarativefontloader_p.h b/src/declarative/util/qdeclarativefontloader_p.h
index a5fbb8f..0344d99 100644
--- a/src/declarative/util/qdeclarativefontloader_p.h
+++ b/src/declarative/util/qdeclarativefontloader_p.h
@@ -60,7 +60,7 @@ class Q_AUTOTEST_EXPORT QDeclarativeFontLoader : public QObject
Q_DECLARE_PRIVATE(QDeclarativeFontLoader)
Q_ENUMS(Status)
- Q_PROPERTY(QUrl source READ source WRITE setSource)
+ Q_PROPERTY(QUrl source READ source WRITE setSource NOTIFY sourceChanged)
Q_PROPERTY(QString name READ name WRITE setName NOTIFY nameChanged)
Q_PROPERTY(Status status READ status NOTIFY statusChanged)
@@ -82,6 +82,7 @@ private Q_SLOTS:
void replyFinished();
Q_SIGNALS:
+ void sourceChanged();
void nameChanged();
void statusChanged();
};
diff --git a/src/declarative/util/qdeclarativelistmodel.cpp b/src/declarative/util/qdeclarativelistmodel.cpp
index 8f9b725..60d8aa9 100644
--- a/src/declarative/util/qdeclarativelistmodel.cpp
+++ b/src/declarative/util/qdeclarativelistmodel.cpp
@@ -58,9 +58,6 @@ Q_DECLARE_METATYPE(QListModelInterface *)
QT_BEGIN_NAMESPACE
-#define DATA_ROLE_ID 1
-#define DATA_ROLE_NAME "data"
-
QDeclarativeListModelParser::ListInstruction *QDeclarativeListModelParser::ListModelData::instructions() const
{
return (QDeclarativeListModelParser::ListInstruction *)((char *)this + sizeof(ListModelData));
@@ -570,7 +567,7 @@ bool QDeclarativeListModelParser::compileProperty(const QDeclarativeCustomParser
QList<QDeclarativeCustomParserProperty> props = node.properties();
for(int jj = 0; jj < props.count(); ++jj) {
const QDeclarativeCustomParserProperty &nodeProp = props.at(jj);
- if (nodeProp.name() == "") {
+ if (nodeProp.name().isEmpty()) {
error(nodeProp, QDeclarativeListModel::tr("ListElement: cannot contain nested elements"));
return false;
}
@@ -658,7 +655,7 @@ QByteArray QDeclarativeListModelParser::compile(const QList<QDeclarativeCustomPa
for(int ii = 0; ii < customProps.count(); ++ii) {
const QDeclarativeCustomParserProperty &prop = customProps.at(ii);
- if(prop.name() != "") { // isn't default property
+ if(!prop.name().isEmpty()) { // isn't default property
error(prop, QDeclarativeListModel::tr("ListModel: undefined property '%1'").arg(QString::fromUtf8(prop.name())));
return QByteArray();
}
diff --git a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
index 534c923..498de6d 100644
--- a/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
+++ b/src/declarative/util/qdeclarativelistmodelworkeragent.cpp
@@ -187,12 +187,17 @@ void QDeclarativeListModelWorkerAgent::sync()
s->data = data;
s->list = m_copy;
data.changes.clear();
+
+ mutex.lock();
QCoreApplication::postEvent(this, s);
+ syncDone.wait(&mutex);
+ mutex.unlock();
}
bool QDeclarativeListModelWorkerAgent::event(QEvent *e)
{
if (e->type() == QEvent::User) {
+ QMutexLocker locker(&mutex);
Sync *s = static_cast<Sync *>(e);
const QList<Change> &changes = s->data.changes;
@@ -202,13 +207,18 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e)
FlatListModel *orig = m_orig->m_flat;
FlatListModel *copy = s->list->m_flat;
- if (!orig || !copy)
+ if (!orig || !copy) {
+ syncDone.wakeAll();
return QObject::event(e);
-
+ }
+
orig->m_roles = copy->m_roles;
orig->m_strings = copy->m_strings;
orig->m_values = copy->m_values;
+ syncDone.wakeAll();
+ locker.unlock();
+
for (int ii = 0; ii < changes.count(); ++ii) {
const Change &change = changes.at(ii);
switch (change.type) {
@@ -229,6 +239,8 @@ bool QDeclarativeListModelWorkerAgent::event(QEvent *e)
if (cc)
emit m_orig->countChanged();
+ } else {
+ syncDone.wakeAll();
}
}
diff --git a/src/declarative/util/qdeclarativelistmodelworkeragent_p.h b/src/declarative/util/qdeclarativelistmodelworkeragent_p.h
index 1622144..01da374 100644
--- a/src/declarative/util/qdeclarativelistmodelworkeragent_p.h
+++ b/src/declarative/util/qdeclarativelistmodelworkeragent_p.h
@@ -57,6 +57,8 @@
#include <QtScript/qscriptvalue.h>
#include <QtGui/qevent.h>
+#include <QMutex>
+#include <QWaitCondition>
QT_BEGIN_HEADER
@@ -142,6 +144,8 @@ private:
QAtomicInt m_ref;
QDeclarativeListModel *m_orig;
QDeclarativeListModel *m_copy;
+ QMutex mutex;
+ QWaitCondition syncDone;
};
QT_END_NAMESPACE
diff --git a/src/declarative/util/qdeclarativestategroup.cpp b/src/declarative/util/qdeclarativestategroup.cpp
index fc90baa..6d9563e 100644
--- a/src/declarative/util/qdeclarativestategroup.cpp
+++ b/src/declarative/util/qdeclarativestategroup.cpp
@@ -272,7 +272,7 @@ void QDeclarativeStateGroup::componentComplete()
return;
} else if (!d->currentState.isEmpty()) {
QString cs = d->currentState;
- d->currentState = QString();
+ d->currentState.clear();
d->setCurrentStateInternal(cs, true);
}
}
@@ -314,7 +314,7 @@ bool QDeclarativeStateGroupPrivate::updateAutoState()
}
}
if (revert) {
- bool rv = currentState != QString();
+ bool rv = !currentState.isEmpty();
q->setState(QString());
return rv;
} else {
diff --git a/src/declarative/util/qdeclarativexmllistmodel.cpp b/src/declarative/util/qdeclarativexmllistmodel.cpp
index 7b3d4a8..02bf370 100644
--- a/src/declarative/util/qdeclarativexmllistmodel.cpp
+++ b/src/declarative/util/qdeclarativexmllistmodel.cpp
@@ -466,8 +466,6 @@ public:
QList<QDeclarativeXmlListModelRole *> roleObjects;
static void append_role(QDeclarativeListProperty<QDeclarativeXmlListModelRole> *list, QDeclarativeXmlListModelRole *role);
static void clear_role(QDeclarativeListProperty<QDeclarativeXmlListModelRole> *list);
- static void removeAt_role(QDeclarativeListProperty<QDeclarativeXmlListModelRole> *list, int i);
- static void insert_role(QDeclarativeListProperty<QDeclarativeXmlListModelRole> *list, int i, QDeclarativeXmlListModelRole *role);
QList<QList<QVariant> > data;
int redirectCount;
};