diff options
author | Martin Smith <martin.smith@nokia.com> | 2010-07-13 09:33:02 (GMT) |
---|---|---|
committer | Martin Smith <martin.smith@nokia.com> | 2010-07-13 09:33:02 (GMT) |
commit | e305732c0df93332a514a957b08e0ce283cb747f (patch) | |
tree | 603522227e5d4e9f2994408afd5d5523951ba648 /src/declarative/qml/qdeclarativeengine.cpp | |
parent | c93c9bbfe94cd271aeda9e2730d343e3eee31ec5 (diff) | |
parent | a296749eaea94ae4ed36086b632d32c87d3d99c9 (diff) | |
download | Qt-e305732c0df93332a514a957b08e0ce283cb747f.zip Qt-e305732c0df93332a514a957b08e0ce283cb747f.tar.gz Qt-e305732c0df93332a514a957b08e0ce283cb747f.tar.bz2 |
Fixing merge conflicts.
Merge branch '4.7-upstream' into 4.7
Conflicts:
doc/src/declarative/advtutorial.qdoc
src/declarative/graphicsitems/qdeclarativeloader.cpp
src/declarative/graphicsitems/qdeclarativetextedit.cpp
src/declarative/qml/qdeclarativeengine.cpp
src/declarative/util/qdeclarativexmllistmodel.cpp
Diffstat (limited to 'src/declarative/qml/qdeclarativeengine.cpp')
-rw-r--r-- | src/declarative/qml/qdeclarativeengine.cpp | 70 |
1 files changed, 42 insertions, 28 deletions
diff --git a/src/declarative/qml/qdeclarativeengine.cpp b/src/declarative/qml/qdeclarativeengine.cpp index 1ce668c..905a62c 100644 --- a/src/declarative/qml/qdeclarativeengine.cpp +++ b/src/declarative/qml/qdeclarativeengine.cpp @@ -151,6 +151,7 @@ void QDeclarativeEnginePrivate::defineModule() } /*! +\keyword QmlGlobalQtObject \qmlclass Qt QDeclarativeEnginePrivate \brief The QML global Qt object provides useful enums and functions from Qt. @@ -620,24 +621,16 @@ QNetworkAccessManager *QDeclarativeEngine::networkAccessManager() const /*! Sets the \a provider to use for images requested via the \e - image: url scheme, with host \a providerId. + image: url scheme, with host \a providerId. The QDeclarativeEngine + takes ownership of \a provider. - QDeclarativeImageProvider allows images to be provided to QML - asynchronously. The image request will be run in a low priority - thread. This allows potentially costly image loading to be done in - the background, without affecting the performance of the UI. + Image providers enable support for pixmap and threaded image + requests. See the QDeclarativeImageProvider documentation for details on + implementing and using image providers. Note that images loaded from a QDeclarativeImageProvider are cached by QPixmapCache, similar to any image loaded by QML. - The QDeclarativeEngine assumes ownership of the provider. - - This example creates a provider with id \e colors: - - \snippet examples/declarative/cppextensions/imageprovider/imageprovider.cpp 0 - - \snippet examples/declarative/cppextensions/imageprovider/imageprovider-example.qml 0 - \sa removeImageProvider() */ void QDeclarativeEngine::addImageProvider(const QString &providerId, QDeclarativeImageProvider *provider) @@ -671,16 +664,35 @@ void QDeclarativeEngine::removeImageProvider(const QString &providerId) delete d->imageProviders.take(providerId); } +QDeclarativeImageProvider::ImageType QDeclarativeEnginePrivate::getImageProviderType(const QUrl &url) +{ + QMutexLocker locker(&mutex); + QDeclarativeImageProvider *provider = imageProviders.value(url.host()); + if (provider) + return provider->imageType(); + return static_cast<QDeclarativeImageProvider::ImageType>(-1); +} + QImage QDeclarativeEnginePrivate::getImageFromProvider(const QUrl &url, QSize *size, const QSize& req_size) { QMutexLocker locker(&mutex); QImage image; QDeclarativeImageProvider *provider = imageProviders.value(url.host()); if (provider) - image = provider->request(url.path().mid(1), size, req_size); + image = provider->requestImage(url.path().mid(1), size, req_size); return image; } +QPixmap QDeclarativeEnginePrivate::getPixmapFromProvider(const QUrl &url, QSize *size, const QSize& req_size) +{ + QMutexLocker locker(&mutex); + QPixmap pixmap; + QDeclarativeImageProvider *provider = imageProviders.value(url.host()); + if (provider) + pixmap = provider->requestPixmap(url.path().mid(1), size, req_size); + return pixmap; +} + /*! Return the base URL for this engine. The base URL is only used to resolve components when a relative URL is passed to the @@ -1259,11 +1271,12 @@ QScriptValue QDeclarativeEnginePrivate::formatDate(QScriptContext*ctxt, QScriptE QDate date = ctxt->argument(0).toDateTime().date(); Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; if (argCount == 2) { - if (ctxt->argument(1).isString()) { - QString format = ctxt->argument(1).toString(); + QScriptValue formatArg = ctxt->argument(1); + if (formatArg.isString()) { + QString format = formatArg.toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); - } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); + } else if (formatArg.isNumber()) { + enumFormat = Qt::DateFormat(formatArg.toUInt32()); } else { return ctxt->throwError(QLatin1String("Qt.formatDate(): Invalid date format")); } @@ -1286,11 +1299,12 @@ QScriptValue QDeclarativeEnginePrivate::formatTime(QScriptContext*ctxt, QScriptE QTime date = ctxt->argument(0).toDateTime().time(); Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; if (argCount == 2) { - if (ctxt->argument(1).isString()) { - QString format = ctxt->argument(1).toString(); + QScriptValue formatArg = ctxt->argument(1); + if (formatArg.isString()) { + QString format = formatArg.toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); - } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); + } else if (formatArg.isNumber()) { + enumFormat = Qt::DateFormat(formatArg.toUInt32()); } else { return ctxt->throwError(QLatin1String("Qt.formatTime(): Invalid time format")); } @@ -1376,11 +1390,12 @@ QScriptValue QDeclarativeEnginePrivate::formatDateTime(QScriptContext*ctxt, QScr QDateTime date = ctxt->argument(0).toDateTime(); Qt::DateFormat enumFormat = Qt::DefaultLocaleShortDate; if (argCount == 2) { - if (ctxt->argument(1).isString()) { - QString format = ctxt->argument(1).toString(); + QScriptValue formatArg = ctxt->argument(1); + if (formatArg.isString()) { + QString format = formatArg.toString(); return engine->newVariant(qVariantFromValue(date.toString(format))); - } else if (ctxt->argument(1).isNumber()) { - enumFormat = Qt::DateFormat(ctxt->argument(1).toUInt32()); + } else if (formatArg.isNumber()) { + enumFormat = Qt::DateFormat(formatArg.toUInt32()); } else { return ctxt->throwError(QLatin1String("Qt.formatDateTime(): Invalid datetime format")); } @@ -1728,8 +1743,7 @@ void QDeclarativeEnginePrivate::warning(QDeclarativeEnginePrivate *engine, const /*! \qmlmethod Qt::quit() This function causes the QDeclarativeEngine::quit() signal to be emitted. -Within the \l {Qt Declarative UI Runtime}{qml} application this causes the -launcher application to exit. +Within the \l {QML Viewer}, this causes the launcher application to exit. */ QScriptValue QDeclarativeEnginePrivate::quit(QScriptContext * /*ctxt*/, QScriptEngine *e) |