From d0e544716f90eff4e3d6a9490d1c6d86a1bba047 Mon Sep 17 00:00:00 2001 From: Marius Vlad Date: Sat, 6 Aug 2022 11:12:19 +0300 Subject: [PATCH] homescreenhandler: Include homescreen handler Signed-off-by: Marius Vlad --- app/HVAC.qml | 33 +++++++++++++++++++++++++++++++++ app/app.pro | 8 ++++++-- app/homescreenhandler.cpp | 46 ++++++++++++++++++++++++++++++++++++++++++++++ app/homescreenhandler.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ app/main.cpp | 13 +++++++++++++ 5 files changed, 142 insertions(+), 2 deletions(-) create mode 100644 app/homescreenhandler.cpp create mode 100644 app/homescreenhandler.h diff --git a/app/HVAC.qml b/app/HVAC.qml index 4e27e2d..c8dc7bb 100644 --- a/app/HVAC.qml +++ b/app/HVAC.qml @@ -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 { diff --git a/app/app.pro b/app/app.pro index 14e7c44..6a1340d 100644 --- a/app/app.pro +++ b/app/app.pro @@ -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 index 0000000..53129fa --- /dev/null +++ b/app/homescreenhandler.cpp @@ -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 +#include +#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 index 0000000..7ca9cd0 --- /dev/null +++ b/app/homescreenhandler.h @@ -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 +#include +#include +#include + +#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 diff --git a/app/main.cpp b/app/main.cpp index e4f87bf..e506dc1 100644 --- a/app/main.cpp +++ b/app/main.cpp @@ -20,6 +20,8 @@ #include #include #include +#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", 1, 0, "Translator"); engine.load(QUrl(QStringLiteral("qrc:/HVAC.qml"))); -- 2.16.6