aboutsummaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMichael Brasser <michael.brasser@live.com>2013-03-26 20:29:10 -0500
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-02 10:29:34 +0200
commit3e0bcbff98346385ec32bc951cd958d1c1bfb371 (patch)
tree6c23d33d60396e73134b9cadb3f2abe08d7bea80 /examples
parent5eae605a475db96ed16d81101e00e736efe9f202 (diff)
Update EtcProvider example to support configurable base url.
Change-Id: Idb047bc7bf2c9f1c62c4749cb416bdf267e66e17 Reviewed-by: Gunnar Sletta <gunnar.sletta@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/quick/textureprovider/etcprovider.cpp16
-rw-r--r--examples/quick/textureprovider/etcprovider.h6
-rw-r--r--examples/quick/textureprovider/main.cpp4
3 files changed, 22 insertions, 4 deletions
diff --git a/examples/quick/textureprovider/etcprovider.cpp b/examples/quick/textureprovider/etcprovider.cpp
index 507965ca9a..52c2c17cfe 100644
--- a/examples/quick/textureprovider/etcprovider.cpp
+++ b/examples/quick/textureprovider/etcprovider.cpp
@@ -44,6 +44,7 @@
#include <QFile>
#include <QDebug>
#include <qopenglfunctions.h>
+#include <qqmlfile.h>
//#define ETC_DEBUG
@@ -168,10 +169,14 @@ QQuickTextureFactory *EtcProvider::requestTexture(const QString &id, QSize *size
size->setHeight(0);
size->setWidth(0);
- // resolve paths relative to qrc file
- QFile file(QLatin1String(":/textureprovider/") + id);
+ QUrl url = QUrl(id);
+ if (url.isRelative() && !m_baseUrl.isEmpty())
+ url = m_baseUrl.resolved(url);
+ QString path = QQmlFile::urlToLocalFileOrQrc(url);
+
+ QFile file(path);
#ifdef ETC_DEBUG
- qDebug() << "requestTexture opening file: " << id;
+ qDebug() << "requestTexture opening file: " << path;
#endif
if (file.open(QIODevice::ReadOnly)) {
ret = new QEtcTextureFactory;
@@ -200,3 +205,8 @@ QQuickTextureFactory *EtcProvider::requestTexture(const QString &id, QSize *size
return ret;
}
+
+void EtcProvider::setBaseUrl(const QUrl &base)
+{
+ m_baseUrl = base;
+}
diff --git a/examples/quick/textureprovider/etcprovider.h b/examples/quick/textureprovider/etcprovider.h
index 24570e90e9..b7f2f3d67d 100644
--- a/examples/quick/textureprovider/etcprovider.h
+++ b/examples/quick/textureprovider/etcprovider.h
@@ -45,6 +45,7 @@
#include <qopengl.h>
#include <QQuickImageProvider>
#include <QtQuick/QSGTexture>
+#include <QUrl>
class EtcProvider : public QQuickImageProvider
{
@@ -54,6 +55,11 @@ public:
{}
QQuickTextureFactory *requestTexture(const QString &id, QSize *size, const QSize &requestedSize);
+
+ void setBaseUrl(const QUrl &base);
+
+private:
+ QUrl m_baseUrl;
};
class EtcTexture : public QSGTexture
diff --git a/examples/quick/textureprovider/main.cpp b/examples/quick/textureprovider/main.cpp
index d9d4fb0d38..6397de874b 100644
--- a/examples/quick/textureprovider/main.cpp
+++ b/examples/quick/textureprovider/main.cpp
@@ -48,7 +48,9 @@ int main(int argc, char* argv[])
QGuiApplication app(argc,argv);
QQuickView view;
- view.engine()->addImageProvider("etc", new EtcProvider());
+ EtcProvider *provider = new EtcProvider();
+ provider->setBaseUrl(QUrl("qrc:///textureprovider/"));
+ view.engine()->addImageProvider("etc", provider);
view.setSource(QUrl("qrc:///textureprovider/textureprovider.qml"));
view.show();