diff options
author | Alan Alpert <aalpert@rim.com> | 2013-02-28 17:03:43 -0800 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-05-07 19:41:26 +0200 |
commit | 223313479bf8ec80158ba0f6cba4dd5e74d92718 (patch) | |
tree | bc39fb195736657dec6a09106ad9609253074d77 /src/qml/qml/qqmlcontext.cpp | |
parent | 40d90b50c555a968f1ae540527199042fbcf1a32 (diff) |
Add a URL interceptor to the QML engine
Allows for custom file handling to a greater extent than the
QNetworkAccessManager.
Change-Id: Ifd3946bf33530c40ca2edeeb9f441f712e4941f6
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
Diffstat (limited to 'src/qml/qml/qqmlcontext.cpp')
-rw-r--r-- | src/qml/qml/qqmlcontext.cpp | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/src/qml/qml/qqmlcontext.cpp b/src/qml/qml/qqmlcontext.cpp index e0a16d1f44..7fa2472335 100644 --- a/src/qml/qml/qqmlcontext.cpp +++ b/src/qml/qml/qqmlcontext.cpp @@ -48,6 +48,7 @@ #include "qqmlengine_p.h" #include "qqmlengine.h" #include "qqmlinfo.h" +#include "qqmlabstracturlinterceptor_p.h" #include <private/qv4bindings_p.h> #include <private/qv8bindings_p.h> @@ -431,6 +432,7 @@ QUrl QQmlContextData::resolvedUrl(const QUrl &src) { QQmlContextData *ctxt = this; + QUrl resolved; if (src.isRelative() && !src.isEmpty()) { if (ctxt) { while(ctxt) { @@ -441,14 +443,20 @@ QUrl QQmlContextData::resolvedUrl(const QUrl &src) } if (ctxt) - return ctxt->url.resolved(src); + resolved = ctxt->url.resolved(src); else if (engine) - return engine->baseUrl().resolved(src); + resolved = engine->baseUrl().resolved(src); } - return QUrl(); } else { - return src; + resolved = src; } + + if (resolved.isEmpty()) //relative but no ctxt + return resolved; + + if (engine && engine->urlInterceptor()) + resolved = engine->urlInterceptor()->intercept(resolved, QQmlAbstractUrlInterceptor::UrlString); + return resolved; } |