homescreenhandler: Include homescreen handler sandbox/mvlad/split-t
authorMarius Vlad <marius.vlad@collabora.com>
Sat, 6 Aug 2022 08:12:19 +0000 (11:12 +0300)
committerMarius Vlad <marius.vlad@collabora.com>
Sat, 6 Aug 2022 10:59:33 +0000 (13:59 +0300)
Signed-off-by: Marius Vlad <marius.vlad@collabora.com>
app/HVAC.qml
app/app.pro
app/homescreenhandler.cpp [new file with mode: 0644]
app/homescreenhandler.h [new file with mode: 0644]
app/main.cpp

index 4e27e2d..c8dc7bb 100644 (file)
@@ -148,6 +148,39 @@ ApplicationWindow {
                                        }
                                }
                        }
+
+                       ColumnLayout {
+                               Layout.fillWidth: true
+                               spacing: 20
+                               ToggleButton {
+                                       onImage: './images/HMI_HVAC_Active.svg'
+                                       offImage: './images/HMI_HVAC_Inactive.svg'
+                                       Label {
+                                               anchors.centerIn: parent
+                                               color: parent.checked ? '#00ADDC' : '#848286'
+                                               text: translator.translate(qsTr('Split Right'), translator.language)
+                                               font.pixelSize: parent.height / 4
+                                       }
+                                       onCheckedChanged: {
+                                               console.debug('Split on the right', checked)
+                                               homescreenHandler.setOrientation("hvac", 2)
+                                       }
+                               }
+                               ToggleButton {
+                                       onImage: './images/HMI_HVAC_Active.svg'
+                                       offImage: './images/HMI_HVAC_Inactive.svg'
+                                       Label {
+                                               anchors.centerIn: parent
+                                               color: parent.checked ? '#00ADDC' : '#848286'
+                                               text: translator.translate(qsTr('Split Top'), translator.language)
+                                               font.pixelSize: parent.height / 4
+                                       }
+                                       onCheckedChanged: {
+                                               console.debug('Split on top', checked)
+                                               homescreenHandler.setOrientation("hvac", 3)
+                                       }
+                               }
+                       }
                }
 
                RowLayout {
index 14e7c44..6a1340d 100644 (file)
@@ -1,16 +1,20 @@
 TEMPLATE = app
 TARGET = hvac
-QT = qml quick
+QT = qml quick dbus
 CONFIG += c++11 link_pkgconfig
 
+DBUS_INTERFACES = $$[QT_SYSROOT]/usr/share/dbus-1/interfaces/org.automotivelinux.AppLaunch.xml
+
 PKGCONFIG += qtappfw-hvac qtappfw-vehicle-signals
 
 HEADERS += \
+    homescreenhandler.h \
     translator.h
 
 SOURCES = \
     main.cpp \
-    translator.cpp
+    homescreenhandler.cpp \
+    translator.cpp \
 
 RESOURCES += \
     hvac.qrc \
diff --git a/app/homescreenhandler.cpp b/app/homescreenhandler.cpp
new file mode 100644 (file)
index 0000000..53129fa
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018,2019 TOYOTA MOTOR CORPORATION
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include <QDBusMessage>
+#include <QDBusConnection>
+#include "homescreenhandler.h"
+
+#define APPLAUNCH_DBUS_IFACE     "org.automotivelinux.AppLaunch"
+#define APPLAUNCH_DBUS_OBJECT    "/org/automotivelinux/AppLaunch"
+
+HomescreenHandler::HomescreenHandler(QObject *parent) : QObject(parent)
+{
+    applaunch_iface = new org::automotivelinux::AppLaunch(APPLAUNCH_DBUS_IFACE, APPLAUNCH_DBUS_OBJECT, QDBusConnection::sessionBus(), this);
+}
+
+HomescreenHandler::~HomescreenHandler()
+{
+}
+
+void HomescreenHandler::setOrientation(QString application_id, uint32_t orientation)
+{
+    QDBusPendingReply<> reply = applaunch_iface->split(application_id, orientation);
+    reply.waitForFinished();
+    if (reply.isError()) {
+        fprintf(stderr, "HVAC: Unable to split application '%s': %s",
+                  application_id.toStdString().c_str(),
+                  reply.error().message().toStdString().c_str());
+    }
+
+    fprintf(stderr, "hvac done calling set split for appid %s, orientation %d\n",
+                   application_id.toStdString().c_str(), orientation);
+}
diff --git a/app/homescreenhandler.h b/app/homescreenhandler.h
new file mode 100644 (file)
index 0000000..7ca9cd0
--- /dev/null
@@ -0,0 +1,44 @@
+/*
+ * Copyright (c) 2017 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018,2019 TOYOTA MOTOR CORPORATION
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#ifndef HOMESCREENHANDLER_H
+#define HOMESCREENHANDLER_H
+
+#include <QObject>
+#include <QString>
+#include <QStringList>
+#include <string>
+
+#include "applaunch_interface.h"
+
+using namespace std;
+
+class HomescreenHandler : public QObject
+{
+    Q_OBJECT
+public:
+    explicit HomescreenHandler(QObject *parent = 0);
+    ~HomescreenHandler();
+
+    Q_INVOKABLE void setOrientation(QString application_id, uint32_t orientation);
+    void onRep(struct json_object* reply_contents);
+
+private:
+    org::automotivelinux::AppLaunch *applaunch_iface;
+};
+
+#endif // HOMESCREENHANDLER_H
index e4f87bf..e506dc1 100644 (file)
@@ -20,6 +20,8 @@
 #include <QDebug>
 #include <hvac.h>
 #include <vehiclesignals.h>
+#include "homescreenhandler.h"
+
 
 #include "translator.h"
 
@@ -27,11 +29,22 @@ int main(int argc, char *argv[])
 {
        setenv("QT_QUICK_CONTROLS_STYLE", "AGL", 1);
 
+       HomescreenHandler* homescreenHandler = new HomescreenHandler();
+       if (argc > 1) {
+               int orientation = strtoul(argv[1], NULL, 10);
+
+               fprintf(stderr, "Starting HVAC in tiled orientation %d\n",
+                               orientation);
+               homescreenHandler->setOrientation("hvac", orientation);
+       }
+
        QGuiApplication app(argc, argv);
 
+
        QQmlApplicationEngine engine;
        VehicleSignalsConfig vsConfig("hvac");
        engine.rootContext()->setContextProperty("hvac", new HVAC(new VehicleSignals(vsConfig)));
+       engine.rootContext()->setContextProperty("homescreenHandler", homescreenHandler);
        qmlRegisterType<Translator>("Translator", 1, 0, "Translator");
        engine.load(QUrl(QStringLiteral("qrc:/HVAC.qml")));