summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorMartin Jones <martin.jones@nokia.com>2009-07-02 04:53:00 (GMT)
committerMartin Jones <martin.jones@nokia.com>2009-07-02 04:53:00 (GMT)
commit740e84dea8a0fb323f6fa4775b6b750ff98a3365 (patch)
tree8272e66091017370486f8cf702e46dc96d933477 /examples
parent9fdcef95dfb369ef490d5be8e4621485d11cddda (diff)
downloadQt-740e84dea8a0fb323f6fa4775b6b750ff98a3365.zip
Qt-740e84dea8a0fb323f6fa4775b6b750ff98a3365.tar.gz
Qt-740e84dea8a0fb323f6fa4775b6b750ff98a3365.tar.bz2
Make loader handle dummy data and get source URL right.
Diffstat (limited to 'examples')
-rw-r--r--examples/declarative/loader/Browser.qml2
-rw-r--r--examples/declarative/loader/main.cpp59
2 files changed, 57 insertions, 4 deletions
diff --git a/examples/declarative/loader/Browser.qml b/examples/declarative/loader/Browser.qml
index af5538e..640ea0c 100644
--- a/examples/declarative/loader/Browser.qml
+++ b/examples/declarative/loader/Browser.qml
@@ -21,7 +21,7 @@ Rect {
if (folders.isFolder(index)) {
folders.folder = filePath;
} else {
- Shell.qml = filePath;
+ qmlLauncher.launch(filePath);
}
}
}
diff --git a/examples/declarative/loader/main.cpp b/examples/declarative/loader/main.cpp
index 31bff07..23125ce 100644
--- a/examples/declarative/loader/main.cpp
+++ b/examples/declarative/loader/main.cpp
@@ -1,18 +1,71 @@
#include <QApplication>
#include <QUrl>
+#include <QFileInfo>
+#include <QDir>
+#include <QmlContext>
+#include <QmlComponent>
#include <qfxview.h>
+QFxView *canvas = 0;
+
+class QmlLauncher : public QObject
+{
+ Q_OBJECT
+public:
+ QmlLauncher() {}
+
+ Q_INVOKABLE void launch(const QString &fileName)
+ {
+ QUrl url(fileName);
+ QFileInfo fi(fileName);
+ if (fi.exists()) {
+ url = QUrl::fromLocalFile(fi.absoluteFilePath());
+ QmlContext *ctxt = canvas->rootContext();
+ QDir dir(fi.path()+"/dummydata", "*.qml");
+ QStringList list = dir.entryList();
+ for (int i = 0; i < list.size(); ++i) {
+ QString qml = list.at(i);
+ QFile f(dir.filePath(qml));
+ f.open(QIODevice::ReadOnly);
+ QByteArray data = f.readAll();
+ QmlComponent comp(canvas->engine());
+ comp.setData(data, QUrl());
+ QObject *dummyData = comp.create();
+
+ if(comp.isError()) {
+ QList<QmlError> errors = comp.errors();
+ foreach (const QmlError &error, errors) {
+ qWarning() << error;
+ }
+ }
+
+ if (dummyData) {
+ qml.truncate(qml.length()-4);
+ ctxt->setContextProperty(qml, dummyData);
+ dummyData->setParent(this);
+ }
+ }
+ }
+
+ canvas->setUrl(fileName);
+ canvas->execute();
+ }
+};
+
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
- QFxView *canvas = new QFxView;
+ QmlLauncher *launcher = new QmlLauncher;
+
+ canvas = new QFxView;
+ QmlContext *ctxt = canvas->rootContext();
+ ctxt->setContextProperty("qmlLauncher", launcher);
canvas->setUrl(QUrl("qrc:/loader.qml"));
canvas->execute();
- canvas->resize(210,240);
canvas->show();
return app.exec();
}
-
+#include "main.moc"