summaryrefslogtreecommitdiffstats
path: root/homescreen/src/main.cpp
diff options
context:
space:
mode:
authorMarius Vlad <marius.vlad@collabora.com>2021-01-06 15:58:18 +0200
committerMarius Vlad <marius.vlad@collabora.com>2021-01-07 00:12:10 +0200
commitf386507d3c6996e39fcd459d032b9e0cf6f0f563 (patch)
tree26d6c1a15bff8a3d946cdb0234375eeae0473fb4 /homescreen/src/main.cpp
parenta37400d73417dc02511813833b8f4d9b91e40a11 (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
Diffstat (limited to 'homescreen/src/main.cpp')
-rw-r--r--homescreen/src/main.cpp43
1 files changed, 32 insertions, 11 deletions
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();
}