summaryrefslogtreecommitdiffstats
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
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
-rw-r--r--homescreen/qml/background_demo.qml11
-rw-r--r--homescreen/qml/bottompanel_demo.qml12
-rw-r--r--homescreen/qml/qml.qrc3
-rw-r--r--homescreen/qml/toppanel_demo.qml12
-rw-r--r--homescreen/src/main.cpp43
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();
}