summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--CMakeLists.txt11
-rw-r--r--QtLauncher/QtImageProviders/imageproviders.cpp4
-rw-r--r--QtLauncher/applicationsmodel.cpp14
-rw-r--r--main.cpp3
-rw-r--r--metadata/calqlatr/demo.xml7
-rw-r--r--metadata/calqlatr/preview.pngbin0 -> 15143 bytes
-rw-r--r--metadata/calqlatrexample/demo.xml7
-rw-r--r--metadata/calqlatrexample/preview.pngbin0 -> 15143 bytes
-rw-r--r--metadata/coffee/demo.xml7
-rw-r--r--metadata/coffee/preview.pngbin0 -> 22852 bytes
-rw-r--r--metadata/robotarm/demo.xml7
-rw-r--r--metadata/robotarm/preview.pngbin0 -> 28840 bytes
-rw-r--r--metadata/samegame/demo.xml7
-rw-r--r--metadata/samegame/preview.pngbin0 -> 45216 bytes
-rw-r--r--metadata/stocqt/demo.xml7
-rw-r--r--metadata/stocqt/preview.pngbin0 -> 37743 bytes
-rw-r--r--metadata/thermostat/demo.xml7
-rw-r--r--metadata/thermostat/preview.pngbin0 -> 35478 bytes
-rw-r--r--metadata/todolist/demo.xml7
-rw-r--r--metadata/todolist/preview.pngbin0 -> 14260 bytes
20 files changed, 82 insertions, 6 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 5ea404a..55ce69d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -19,6 +19,17 @@ qt_add_executable(${PROJECT_NAME}
main.cpp
)
+
+# Collect metadata
+file(GLOB_RECURSE metadata_glob
+ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
+ metadata/*)
+list(APPEND metadata ${metadata_glob})
+
+qt_add_resources(${PROJECT_NAME} "metadata"
+ FILES ${metadata}
+)
+
if(NOT DEFINED USE_SHARED_BUILD)
target_compile_definitions(${PROJECT_NAME} PRIVATE USE_STATIC_BUILD_FLAG)
endif()
diff --git a/QtLauncher/QtImageProviders/imageproviders.cpp b/QtLauncher/QtImageProviders/imageproviders.cpp
index 6dcd038..726f29e 100644
--- a/QtLauncher/QtImageProviders/imageproviders.cpp
+++ b/QtLauncher/QtImageProviders/imageproviders.cpp
@@ -62,7 +62,7 @@ QPixmap QtImageProvider::requestPixmap(const QString &id, QSize *size, const QSi
Q_UNUSED(requestedSize);
QString idd = id;
- idd.remove("file://");
+ idd.remove("file:");
if (idd.endsWith("_missing"))
idd = ":/qt/qml/QtLauncher/QtImageProviders/thumbnail.png";
@@ -89,7 +89,7 @@ QPixmap QtSquareImageProvider::requestPixmap(const QString &id, QSize *size, con
QString idd = id;
- idd.remove("file://");
+ idd.remove("file:");
idd.remove("gradient/");
if (idd.endsWith("_missing"))
diff --git a/QtLauncher/applicationsmodel.cpp b/QtLauncher/applicationsmodel.cpp
index a706255..c077a16 100644
--- a/QtLauncher/applicationsmodel.cpp
+++ b/QtLauncher/applicationsmodel.cpp
@@ -12,6 +12,7 @@
#include <QJsonDocument>
#include <QJsonObject>
#include <QXmlStreamReader>
+#include <QLibraryInfo>
static bool appOrder(const AppData& a, const AppData& b)
{
@@ -23,7 +24,7 @@ static bool appOrder(const AppData& a, const AppData& b)
void IndexingThread::run()
{
QList<AppData> results;
- QList<QString> roots = root.split(":");
+ QList<QString> roots = {root, ":metadata"};
foreach (const QString &root, roots) {
QDirIterator it(root, QDir::Dirs | QDir::NoDotDot);
while (it.hasNext()) {
@@ -71,6 +72,9 @@ void IndexingThread::parseDemo(QString path, QList<AppData> &results) {
data.priority = xml.attributes().value("priority").toInt();
data.binary = xml.attributes().value("binary").toString();
+ QFileInfo binary(data.binary);
+ if (!binary.isAbsolute())
+ data.binary = QLibraryInfo::path(QLibraryInfo::ExamplesPath) + "/" + data.binary;
data.arguments = xml.attributes().value("arguments").toString();
data.scalable = xml.attributes().value("scalable").toInt();
@@ -93,8 +97,12 @@ void IndexingThread::parseDemo(QString path, QList<AppData> &results) {
break;
case QXmlStreamReader::EndElement:
- if (xml.name().toString().toLower() == "application")
- results << data;
+ if (xml.name().toString().toLower() == "application") {
+ if (QFileInfo::exists(data.binary))
+ results << data;
+ else
+ qInfo() << "Demo not found:" << data.binary;
+ }
break;
default:
diff --git a/main.cpp b/main.cpp
index 2ce7f18..80f57a3 100644
--- a/main.cpp
+++ b/main.cpp
@@ -9,6 +9,7 @@
#include <QtGui/QFontDatabase>
#include <QtGui/QGuiApplication>
#include <QtQml/QQmlApplicationEngine>
+#include <QtCore/QLibraryInfo>
#if defined(USE_STATIC_BUILD_FLAG)
#include <QtQml/QQmlEngineExtensionPlugin>
@@ -64,7 +65,7 @@ int main(int argc, char **argv)
}
if (appsRoot.isEmpty()) {
- appsRoot = "/usr/share/examples/boot2qt-launcher-demos";
+ appsRoot = QLibraryInfo::path(QLibraryInfo::ExamplesPath);
}
qInfo() << "Applications Root:" << appsRoot;
diff --git a/metadata/calqlatr/demo.xml b/metadata/calqlatr/demo.xml
new file mode 100644
index 0000000..b881dfc
--- /dev/null
+++ b/metadata/calqlatr/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="Calqlatr" priority="2" scalable="1" icon="preview.png" binary="demos/calqlatr/bin/calqlatr">
+ <description>
+ A Qt Quick app designed for landscape and portrait devices that uses custom components, responsive layouts, and JavaScript for the application logic.
+ </description>
+</application>
diff --git a/metadata/calqlatr/preview.png b/metadata/calqlatr/preview.png
new file mode 100644
index 0000000..9490814
--- /dev/null
+++ b/metadata/calqlatr/preview.png
Binary files differ
diff --git a/metadata/calqlatrexample/demo.xml b/metadata/calqlatrexample/demo.xml
new file mode 100644
index 0000000..00951c5
--- /dev/null
+++ b/metadata/calqlatrexample/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="Calqlatr" priority="2" scalable="1" icon="preview.png" binary="demos/calqlatr/bin/calqlatrexample">
+ <description>
+ A Qt Quick app designed for landscape and portrait devices that uses custom components, responsive layouts, and JavaScript for the application logic.
+ </description>
+</application>
diff --git a/metadata/calqlatrexample/preview.png b/metadata/calqlatrexample/preview.png
new file mode 100644
index 0000000..9490814
--- /dev/null
+++ b/metadata/calqlatrexample/preview.png
Binary files differ
diff --git a/metadata/coffee/demo.xml b/metadata/coffee/demo.xml
new file mode 100644
index 0000000..2363722
--- /dev/null
+++ b/metadata/coffee/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="Coffee Machine" priority="5" scalable="1" icon="preview.png" binary="demos/coffee/bin/coffeemachine">
+ <description>
+ A Qt Quick application with a state-based custom user interface.
+ </description>
+</application>
diff --git a/metadata/coffee/preview.png b/metadata/coffee/preview.png
new file mode 100644
index 0000000..7435373
--- /dev/null
+++ b/metadata/coffee/preview.png
Binary files differ
diff --git a/metadata/robotarm/demo.xml b/metadata/robotarm/demo.xml
new file mode 100644
index 0000000..628f27b
--- /dev/null
+++ b/metadata/robotarm/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="Robot Arm" priority="7" scalable="1" icon="preview.png" binary="demos/robotarm/bin/RobotArmApp">
+ <description>
+ This example demonstrates adding a C++ backend to a 3D project created in Qt Design Studio. The example itself consists of an interactive industrial robot arm in a Qt Quick 3D scene. The 2D UI to control the robot arm is implement using Qt Quick Controls.
+ </description>
+</application>
diff --git a/metadata/robotarm/preview.png b/metadata/robotarm/preview.png
new file mode 100644
index 0000000..17efae1
--- /dev/null
+++ b/metadata/robotarm/preview.png
Binary files differ
diff --git a/metadata/samegame/demo.xml b/metadata/samegame/demo.xml
new file mode 100644
index 0000000..5ba5ed9
--- /dev/null
+++ b/metadata/samegame/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="Same Game" priority="5" scalable="0" icon="preview.png" binary="demos/samegame/bin/samegame">
+ <description>
+ Same Game demonstrates a QML game with custom types and logic written in JavaScript. The game uses various Qt Quick features such as particles, animation, and loading images.
+ </description>
+</application>
diff --git a/metadata/samegame/preview.png b/metadata/samegame/preview.png
new file mode 100644
index 0000000..2ddf43e
--- /dev/null
+++ b/metadata/samegame/preview.png
Binary files differ
diff --git a/metadata/stocqt/demo.xml b/metadata/stocqt/demo.xml
new file mode 100644
index 0000000..f034de1
--- /dev/null
+++ b/metadata/stocqt/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="Qt Quick Demo - StocQt" priority="7" scalable="1" icon="preview.png" binary="demos/stocqt/bin/appStocQt">
+ <description>
+ The StocQt application presents a trend chart for the first stock in the list of NASDAQ-100 stocks. It allows the user to choose another stock from the list, and fetches the required data from the offline dataset using XMLHttpRequest.
+ </description>
+</application>
diff --git a/metadata/stocqt/preview.png b/metadata/stocqt/preview.png
new file mode 100644
index 0000000..6caf3d2
--- /dev/null
+++ b/metadata/stocqt/preview.png
Binary files differ
diff --git a/metadata/thermostat/demo.xml b/metadata/thermostat/demo.xml
new file mode 100644
index 0000000..fb208c9
--- /dev/null
+++ b/metadata/thermostat/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="Thermostat" priority="8" scalable="1" icon="preview.png" binary="demos/thermostat/bin/ThermostatApp">
+ <description>
+ A user interface for a home thermostat, implemented in Qt Quick. It demonstrates how to create responsive applications that scale from large desktop displays to mobile and small embedded displays.
+ </description>
+</application>
diff --git a/metadata/thermostat/preview.png b/metadata/thermostat/preview.png
new file mode 100644
index 0000000..20ecf62
--- /dev/null
+++ b/metadata/thermostat/preview.png
Binary files differ
diff --git a/metadata/todolist/demo.xml b/metadata/todolist/demo.xml
new file mode 100644
index 0000000..9b9a66c
--- /dev/null
+++ b/metadata/todolist/demo.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<application title="To Do List" priority="5" scalable="1" icon="preview.png" binary="demos/todolist/bin/ToDoListApp">
+ <description>
+ A QML implementation of to do list application that demonstrates how to create application thats looks native on any platform.
+ </description>
+</application>
diff --git a/metadata/todolist/preview.png b/metadata/todolist/preview.png
new file mode 100644
index 0000000..ffe90c2
--- /dev/null
+++ b/metadata/todolist/preview.png
Binary files differ