summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorScott Murray <scott.murray@konsulko.com>2021-02-01 18:13:28 -0500
committerScott Murray <scott.murray@konsulko.com>2021-02-01 18:17:28 -0500
commitb587bf9d453f29656c2a52bc486881c0e3cb67c6 (patch)
tree6796d301c402308f385fa94c455b83093bacd109
parent3b0e548c3adae12e72cc6d6dc22f5ecc475aa7c2 (diff)
Add a onCompleted hook in Main.qml to set it's x and y coordinates to center the window, and rework instantiation of the qml in main.cpp so that the resulting x and y values can be queried and used in a call to set_window_props to actually position the window. Bug-AGL: SPEC-3784 Signed-off-by: Scott Murray <scott.murray@konsulko.com> Change-Id: I46e2dfac7c62c9afd379fd6bf7b7fa3277422cbc
-rw-r--r--app/Main.qml6
-rw-r--r--app/main.cpp13
2 files changed, 18 insertions, 1 deletions
diff --git a/app/Main.qml b/app/Main.qml
index 4011107..0b60d5c 100644
--- a/app/Main.qml
+++ b/app/Main.qml
@@ -29,6 +29,12 @@ Window {
visible: true
flags: Qt.FramelessWindowHint
+ Component.onCompleted: {
+ // Center window
+ root.x = root.screen.virtualX + root.screen.width / 2 - root.width / 2;
+ root.y = root.screen.virtualY + root.screen.height / 2 - root.height / 2;
+ }
+
BodyTemplateDialog {
id: bodyTemplate
anchors.centerIn: parent
diff --git a/app/main.cpp b/app/main.cpp
index 3c8792c..3751862 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -24,6 +24,8 @@
#include <QtQml/QQmlContext>
#include <QtQml/qqml.h>
#include <QQuickWindow>
+#include <QQmlComponent>
+#include <QQmlProperty>
#include <QtQuickControls2/QQuickStyle>
#include <qpa/qplatformnativeinterface.h>
@@ -291,7 +293,16 @@ int main(int argc, char *argv[])
QQmlContext *context = engine.rootContext();
context->setContextProperty("homescreen", aglShell);
context->setContextProperty("GuiMetadata", new GuiMetadata(bindingAddress, context));
- engine.load(QUrl(QStringLiteral("qrc:/Main.qml")));
+ QQmlComponent component(&engine,
+ QUrl(QStringLiteral("qrc:/Main.qml")));
+ QObject *object = component.create();
+
+ // Update window position based on component (x, y)
+ int x = QQmlProperty::read(object, "x").toInt();
+ int y = QQmlProperty::read(object, "y").toInt();
+ aglShell->set_window_props(nullptr, my_app_id,
+ AGL_SHELL_DESKTOP_APP_ROLE_POPUP,
+ x, y, 0, 0, 0, 0);
// Create app framework client to handle events when window is not visible
AfbClient client(port, token.toStdString());