summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--app/app.pro7
-rw-r--r--app/main.cpp15
-rw-r--r--app/qlibwindowmanager.cpp74
-rw-r--r--app/qlibwindowmanager.h72
4 files changed, 9 insertions, 159 deletions
diff --git a/app/app.pro b/app/app.pro
index 62d547e..65d32cc 100644
--- a/app/app.pro
+++ b/app/app.pro
@@ -1,11 +1,10 @@
TARGET = hvac
-QT = quickcontrols2
+QT = quickcontrols2 qml
-HEADERS = qlibwindowmanager.h
-SOURCES = main.cpp qlibwindowmanager.cpp
+SOURCES = main.cpp
CONFIG += link_pkgconfig
-PKGCONFIG += libhomescreen libwindowmanager
+PKGCONFIG += libhomescreen libwindowmanager qlibwindowmanager qlibhomescreen
RESOURCES += \
hvac.qrc \
diff --git a/app/main.cpp b/app/main.cpp
index 7722a0a..57c731e 100644
--- a/app/main.cpp
+++ b/app/main.cpp
@@ -23,14 +23,13 @@
#include <QtQuickControls2/QQuickStyle>
#include <QQuickWindow>
#include <libhomescreen.hpp>
-#include "qlibwindowmanager.h"
+#include <qlibwindowmanager.h>
int main(int argc, char *argv[])
{
- std::string myname = std::string("HVAC");
+ QString myname = QString("HVAC");
QGuiApplication app(argc, argv);
- app.setApplicationName(myname.c_str());
app.setApplicationVersion(QStringLiteral("0.1.0"));
app.setOrganizationDomain(QStringLiteral("automotivelinux.org"));
app.setOrganizationName(QStringLiteral("AutomotiveGradeLinux"));
@@ -69,29 +68,27 @@ int main(int argc, char *argv[])
exit(EXIT_FAILURE);
}
// Request a surface as described in layers.json windowmanager’s file
- if (qwm->requestSurface(json_object_new_string(myname.c_str())) != 0) {
+ if (qwm->requestSurface(myname) != 0) {
exit(EXIT_FAILURE);
}
- // Create an event callback against an event type. Here a lambda is called when SyncDraw event occurs
+ // Create an event callbnewack against an event type. Here a lambda is called when SyncDraw event occurs
qwm->set_event_handler(QLibWindowmanager::Event_SyncDraw, [qwm, myname](json_object *object) {
fprintf(stderr, "Surface got syncDraw!\n");
- qwm->endDraw(json_object_new_string(myname.c_str()));
+ qwm->endDraw(myname);
});
// HomeScreen
hs->init(port, token.c_str());
// Set the event handler for Event_TapShortcut which will activate the surface for windowmanager
hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [qwm, myname](json_object *object){
- qDebug("object %s", json_object_to_json_string(object));
json_object *appnameJ = nullptr;
if(json_object_object_get_ex(object, "application_name", &appnameJ))
{
const char *appname = json_object_get_string(appnameJ);
- qDebug("appnameJ %s", json_object_to_json_string(appnameJ));
if(myname == appname)
{
qDebug("Surface %s got tapShortcut\n", appname);
- qwm->activateSurface(json_object_new_string(myname.c_str()));
+ qwm->activateSurface(myname);
}
}
});
diff --git a/app/qlibwindowmanager.cpp b/app/qlibwindowmanager.cpp
deleted file mode 100644
index 7ad69f7..0000000
--- a/app/qlibwindowmanager.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2017 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 "qlibwindowmanager.h"
-#include <QDebug>
-#include <unistd.h>
-
-int QLibWindowmanager::init(int port, const QString &token) {
- std::string ctoken = token.toStdString();
- return this->wm->init(port, ctoken.c_str());
-}
-
-int QLibWindowmanager::requestSurface(json_object *label) {
- applabel = json_object_get_string(label);
-
- json_object *obj = json_object_new_object();
- json_object_object_add(obj, wm->kKeyDrawingName, label);
- return this->wm->requestSurface(obj);
-}
-
-int QLibWindowmanager::activateSurface(json_object *label) {
- json_object *obj = json_object_new_object();
- json_object_object_add(obj, wm->kKeyDrawingName, label);
- json_object_object_add(obj, wm->kKeyDrawingArea, json_object_new_string("normal.full"));
-
- return this->wm->activateSurface(obj);
-}
-
-int QLibWindowmanager::deactivateSurface(json_object *label) {
- json_object *obj = json_object_new_object();
- json_object_object_add(obj, wm->kKeyDrawingName, label);
- return this->wm->deactivateSurface(obj);
-}
-
-int QLibWindowmanager::endDraw(json_object *label) {
- json_object *obj = json_object_new_object();
- json_object_object_add(obj, wm->kKeyDrawingName, label);
- return this->wm->endDraw(obj);
- }
-
-void QLibWindowmanager::set_event_handler(enum QEventType et,
- handler_fun f) {
- LibWindowmanager::EventType wet = (LibWindowmanager::EventType)et;
- return this->wm->set_event_handler(wet, std::move(f));
-}
-
-void QLibWindowmanager::slotActivateSurface(){
- if(!isActive){
- qDebug("Let's show HVAC");
- isActive = true;
- this->activateSurface(json_object_new_string(applabel.c_str()));
- }
-}
-
-QLibWindowmanager::QLibWindowmanager(QObject *parent)
- :QObject(parent), isActive(false)
-{
- wm = new LibWindowmanager();
-}
-
-QLibWindowmanager::~QLibWindowmanager() { }
diff --git a/app/qlibwindowmanager.h b/app/qlibwindowmanager.h
deleted file mode 100644
index 07f8479..0000000
--- a/app/qlibwindowmanager.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2017 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 QLIBWINDOWMANAGER_H
-#define QLIBWINDOWMANAGER_H
-
-#include <libwindowmanager.h>
-#include <functional>
-#include <QObject>
-#include <QUrl>
-#include <QVariant>
-#include <string>
-#include <vector>
-
-class QLibWindowmanager : public QObject{
-Q_OBJECT
-public:
- explicit QLibWindowmanager(QObject *parent = nullptr);
- ~QLibWindowmanager();
-
- QLibWindowmanager(const QLibWindowmanager &) = delete;
- QLibWindowmanager &operator=(const QLibWindowmanager &) = delete;
-
-public:
- using handler_fun = std::function<void(json_object *object)>;
-
- enum QEventType {
- Event_Active = 0,
- Event_Inactive,
-
- Event_Visible,
- Event_Invisible,
-
- Event_SyncDraw,
- Event_FlushDraw,
- };
-
- static QLibWindowmanager &instance();
-
- int init(int port, const QString &token);
-
- // WM API
- int requestSurface(json_object *label);
- int activateSurface(json_object *label);
- int deactivateSurface(json_object *label);
- int endDraw(json_object *label);
- void set_event_handler(enum QEventType et, handler_fun f);
-
-public slots:
- void slotActivateSurface();
-
-private:
- LibWindowmanager* wm;
- std::string applabel;
- std::vector<int> surfaceIDs;
- bool isActive;
-
-};
-#endif // LIBWINDOWMANAGER_H