diff options
author | Marius Vlad <marius.vlad@collabora.com> | 2021-01-06 15:58:18 +0200 |
---|---|---|
committer | Marius Vlad <marius.vlad@collabora.com> | 2021-01-07 00:12:10 +0200 |
commit | f386507d3c6996e39fcd459d032b9e0cf6f0f563 (patch) | |
tree | 26d6c1a15bff8a3d946cdb0234375eeae0473fb4 | |
parent | a37400d73417dc02511813833b8f4d9b91e40a11 (diff) |
main: Add different QMLs for doing screenshotskoi_10.93.0koi_10.92.0koi/10.93.0koi/10.92.010.93.010.92.0
A better of way trying to verify that we have the homescreen
up-and-running would be to load-up a reference image which doesn't
change depending on time or other things loaded up (weather for
instance).
Alternatively, a possible solution would be to have a totally different
application that basically does the same thing as homescreen. Instead of
doing that, use an environment variable to choose up what QMLs to load
instead of the original application. Modifying the env variable then
re-starting the application is sufficient to have the screenshot for CI.
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
Change-Id: Ie1478bb75f23c36e3c24c9e8d3e2d7c4848dd779
-rw-r--r-- | homescreen/qml/background_demo.qml | 11 | ||||
-rw-r--r-- | homescreen/qml/bottompanel_demo.qml | 12 | ||||
-rw-r--r-- | homescreen/qml/qml.qrc | 3 | ||||
-rw-r--r-- | homescreen/qml/toppanel_demo.qml | 12 | ||||
-rw-r--r-- | homescreen/src/main.cpp | 43 |
5 files changed, 70 insertions, 11 deletions
diff --git a/homescreen/qml/background_demo.qml b/homescreen/qml/background_demo.qml new file mode 100644 index 0000000..e3a99a1 --- /dev/null +++ b/homescreen/qml/background_demo.qml @@ -0,0 +1,11 @@ +import QtQuick 2.13 +import QtQuick.Window 2.13 + +Window { + id: background + width: Screen.width + height: Screen.height + flags: Qt.FramelessWindowHint + visible: true + color: 'red' +} diff --git a/homescreen/qml/bottompanel_demo.qml b/homescreen/qml/bottompanel_demo.qml new file mode 100644 index 0000000..27c00df --- /dev/null +++ b/homescreen/qml/bottompanel_demo.qml @@ -0,0 +1,12 @@ +import QtQuick 2.2 +import QtQuick.Window 2.11 +import QtQuick.Layouts 1.1 + +Window { + visible: true + flags: Qt.FramelessWindowHint + width: Screen.width + height: 216 + title: 'HomeScreen bottom' + color: 'green' +} diff --git a/homescreen/qml/qml.qrc b/homescreen/qml/qml.qrc index 801d0f4..7a0be7c 100644 --- a/homescreen/qml/qml.qrc +++ b/homescreen/qml/qml.qrc @@ -13,5 +13,8 @@ <file>background.qml</file> <file>toppanel.qml</file> <file>bottompanel.qml</file> + <file>background_demo.qml</file> + <file>toppanel_demo.qml</file> + <file>bottompanel_demo.qml</file> </qresource> </RCC> diff --git a/homescreen/qml/toppanel_demo.qml b/homescreen/qml/toppanel_demo.qml new file mode 100644 index 0000000..2546d7c --- /dev/null +++ b/homescreen/qml/toppanel_demo.qml @@ -0,0 +1,12 @@ +import QtQuick 2.2 +import QtQuick.Window 2.11 +import QtQuick.Layouts 1.1 + +Window { + visible: true + flags: Qt.FramelessWindowHint + width: Screen.width + height: 216 + title: 'HomeScreen top' + color: 'blue' +} diff --git a/homescreen/src/main.cpp b/homescreen/src/main.cpp index 8c7bb22..376644f 100644 --- a/homescreen/src/main.cpp +++ b/homescreen/src/main.cpp @@ -138,21 +138,40 @@ static void load_agl_shell_app(QPlatformNativeInterface *native, QQmlApplicationEngine *engine, struct agl_shell *agl_shell, QUrl &bindingAddress, - const char *screen_name) + const char *screen_name, bool is_demo) { struct wl_surface *bg, *top, *bottom; struct wl_output *output; QObject *qobj_bg, *qobj_top, *qobj_bottom; QScreen *screen = nullptr; - QQmlComponent bg_comp(engine, QUrl("qrc:/background.qml")); - qInfo() << bg_comp.errors(); + if (is_demo) { + QQmlComponent bg_comp(engine, QUrl("qrc:/background_demo.qml")); + qInfo() << bg_comp.errors(); - QQmlComponent top_comp(engine, QUrl("qrc:/toppanel.qml")); - qInfo() << top_comp.errors(); + QQmlComponent top_comp(engine, QUrl("qrc:/toppanel_demo.qml")); + qInfo() << top_comp.errors(); - QQmlComponent bot_comp(engine, QUrl("qrc:/bottompanel.qml")); - qInfo() << bot_comp.errors(); + QQmlComponent bot_comp(engine, QUrl("qrc:/bottompanel_demo.qml")); + qInfo() << bot_comp.errors(); + + top = create_component(native, &top_comp, screen, &qobj_top); + bottom = create_component(native, &bot_comp, screen, &qobj_bottom); + bg = create_component(native, &bg_comp, screen, &qobj_bg); + } else { + QQmlComponent bg_comp(engine, QUrl("qrc:/background.qml")); + qInfo() << bg_comp.errors(); + + QQmlComponent top_comp(engine, QUrl("qrc:/toppanel.qml")); + qInfo() << top_comp.errors(); + + QQmlComponent bot_comp(engine, QUrl("qrc:/bottompanel.qml")); + qInfo() << bot_comp.errors(); + + top = create_component(native, &top_comp, screen, &qobj_top); + bottom = create_component(native, &bot_comp, screen, &qobj_bottom); + bg = create_component(native, &bg_comp, screen, &qobj_bg); + } if (!screen_name) screen = qApp->primaryScreen(); @@ -163,9 +182,6 @@ load_agl_shell_app(QPlatformNativeInterface *native, "first screen " << qApp->screens().first()->name(); output = getWlOutput(native, screen); - top = create_component(native, &top_comp, screen, &qobj_top); - bottom = create_component(native, &bot_comp, screen, &qobj_bottom); - bg = create_component(native, &bg_comp, screen, &qobj_bg); /* engine.rootObjects() works only if we had a load() */ StatusBarModel *statusBar = qobj_top->findChild<StatusBarModel *>("statusBar"); @@ -192,11 +208,16 @@ int main(int argc, char *argv[]) setenv("QT_QPA_PLATFORM", "wayland", 1); QGuiApplication a(argc, argv); const char *screen_name; + bool is_demo_val = false; QPlatformNativeInterface *native = qApp->platformNativeInterface(); struct agl_shell *agl_shell = nullptr; screen_name = getenv("HOMESCREEN_START_SCREEN"); + const char *is_demo = getenv("HOMESCREEN_DEMO_CI"); + if (is_demo && strcmp(is_demo, "1") == 0) + is_demo_val = true; + QCoreApplication::setOrganizationDomain("LinuxFoundation"); QCoreApplication::setOrganizationName("AutomotiveGradeLinux"); QCoreApplication::setApplicationName("HomeScreen"); @@ -269,7 +290,7 @@ int main(int argc, char *argv[]) /* instead of loading main.qml we load one-by-one each of the QMLs, * divided now between several surfaces: panels, background. */ - load_agl_shell_app(native, &engine, agl_shell, bindingAddress, screen_name); + load_agl_shell_app(native, &engine, agl_shell, bindingAddress, screen_name, is_demo_val); return a.exec(); } |