summaryrefslogtreecommitdiffstats
path: root/src/declarative/util/qmlscript.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/declarative/util/qmlscript.cpp')
-rw-r--r--src/declarative/util/qmlscript.cpp21
1 files changed, 16 insertions, 5 deletions
diff --git a/src/declarative/util/qmlscript.cpp b/src/declarative/util/qmlscript.cpp
index 7e33502..d986b7a 100644
--- a/src/declarative/util/qmlscript.cpp
+++ b/src/declarative/util/qmlscript.cpp
@@ -152,11 +152,22 @@ void QmlScript::setSource(const QString &source)
return;
d->source = source;
d->url = qmlContext(this)->resolvedUrl(source);
- QNetworkRequest req(d->url);
- req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
- d->reply = qmlEngine(this)->networkAccessManager()->get(req);
- QObject::connect(d->reply, SIGNAL(finished()),
- this, SLOT(replyFinished()));
+
+#ifndef QT_NO_LOCALFILE_OPTIMIZED_QML
+ if (d->url.scheme() == QLatin1String("file")) {
+ QFile file(d->url.toLocalFile());
+ file.open(QIODevice::ReadOnly);
+ QByteArray ba = file.readAll();
+ d->addScriptToEngine(QString::fromUtf8(ba), d->source);
+ } else
+#endif
+ {
+ QNetworkRequest req(d->url);
+ req.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache);
+ d->reply = qmlEngine(this)->networkAccessManager()->get(req);
+ QObject::connect(d->reply, SIGNAL(finished()),
+ this, SLOT(replyFinished()));
+ }
}
void QmlScript::replyFinished()