aboutsummaryrefslogtreecommitdiffstats
path: root/sample/template
diff options
context:
space:
mode:
Diffstat (limited to 'sample/template')
-rw-r--r--sample/template/README28
-rw-r--r--sample/template/main.cpp207
-rw-r--r--sample/template/smhandler.cpp157
-rw-r--r--sample/template/smhandler.h58
-rw-r--r--sample/template/wmhandler.cpp36
-rw-r--r--sample/template/wmhandler.h47
6 files changed, 0 insertions, 533 deletions
diff --git a/sample/template/README b/sample/template/README
deleted file mode 100644
index 3012b79..0000000
--- a/sample/template/README
+++ /dev/null
@@ -1,28 +0,0 @@
-==========
- Overview
-==========
- This is the templete that is useful for implementation of Qt application
- by using HomeScreen, WindowManager and SoundManager.
-
-
-===========
- Structure
-===========
- - main.cpp
- The templete for implementation main function for Qt application.
-
- - wmhandler.cpp
- - wmhandler.h
- These file is implemented "slot"
- that is needed by Qt application that uses WindowManager.
- These file should be modified according to Qt application.
-
- - smhandler.cpp
- - smhandler.h
- These file is implemented "signal" and "slot"
- that is needed by Qt application that uses SoundManager.
- These file should be modified according to Qt application.
-
- - README
- This document.
-
diff --git a/sample/template/main.cpp b/sample/template/main.cpp
deleted file mode 100644
index ccbe935..0000000
--- a/sample/template/main.cpp
+++ /dev/null
@@ -1,207 +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 <QtCore/QDebug>
-#include <QtCore/QCommandLineParser>
-#include <QtCore/QUrlQuery>
-#include <QtCore/QSettings>
-#include <QtGui/QGuiApplication>
-#include <QtQml/QQmlApplicationEngine>
-#include <QtQml/QQmlContext>
-#include <QtQuickControls2/QQuickStyle>
-#include <QQuickWindow>
-
-#include <libhomescreen/libhomescreen.hpp>
-#include "wmhandler.h"
-#include "smhandler.h"
-
-
-static LibHomeScreen* hs;
-static LibWindowmanager* wm;
-static LibSMWrapper* smw;
-static WmHandler* wmh;
-
-static std::string myname = std::string("Templete");
-
-
-static void onRep(struct json_object* reply_contents);
-static void onEv(const std::string& event, struct json_object* event_contents);
-
-
-int main(int argc, char *argv[])
-{
- QGuiApplication app(argc, argv);
- QQmlApplicationEngine engine;
- QQmlContext* context = engine.rootContext();
- QObject* root;
- QQuickWindow* window;
-
- QQuickStyle::setStyle("AGL");
-
- /*
- * Set argument and option
- */
- QCommandLineParser parser;
- parser.addPositionalArgument("port", app.translate("main", "port for binding"));
- parser.addPositionalArgument("secret", app.translate("main", "secret for binding"));
- parser.addHelpOption();
- parser.addVersionOption();
- parser.process(app);
- QStringList positionalArguments = parser.positionalArguments();
-
- if (positionalArguments.length() == 2) {
- /*
- * Get argument
- */
- int port = positionalArguments.takeFirst().toInt();
- QString secret = positionalArguments.takeFirst();
- std::string token = secret.toStdString();
-
-
- /*
- * Get instance
- */
- hs = new LibHomeScreen();
- wm = new LibWindowmanager();
- smw = new LibSMWrapper(port, secret);
- wmh = new WmHandler();
-
-
- /*
- * Set WindowManager
- */
- // Initialize
- if(wm->init(port, token.c_str()) != 0){
- exit(EXIT_FAILURE);
- }
-
- // Application should call requestSurface at first
- if (wm->requestSurface(myname.c_str()) != 0) {
- exit(EXIT_FAILURE);
- }
-
- // Set event handlers for each event
- wm->set_event_handler(LibWindowmanager::Event_Active, [](char const *label) {
- fprintf(stderr, "Surface %s got activated!\n", label);
- });
- wm->set_event_handler(LibWindowmanager::Event_Inactive, [](char const *label) {
- fprintf(stderr, "Surface %s got deactivated!\n", label);
- });
- wm->set_event_handler(LibWindowmanager::Event_Visible, [](char const *label) {
- fprintf(stderr, "Surface %s got visible!\n", label);
- });
- wm->set_event_handler(LibWindowmanager::Event_Invisible, [](char const *label) {
- fprintf(stderr, "Surface %s got invisible!\n", label);
- });
- wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm](char const *label) {
- fprintf(stderr, "Surface %s got syncDraw!\n", label);
- // Application should call LibWindowmanager::endDraw() in SyncDraw handler
- wm->endDraw(label);
- });
- wm->set_event_handler(LibWindowmanager::Event_FlushDraw, [](char const *label) {
- fprintf(stderr, "Surface %s got flushDraw!\n", label);
- });
-
- // Initialize WmHandler
- wmh->init(wm, myname.c_str());
-
-
- /*
- * Set HomeScreen
- */
- // Initialize
- hs->init(port, token.c_str());
-
- // Set event handler
- hs->set_event_handler(LibHomeScreen::Event_TapShortcut, [wm](const char* appname) {
- if(myname == appname) {
- qDebug("Surface %s got tapShortcut\n", appname);
- // Application should call LibWindowmanager::endDraw() in TapShortcut handler
- wm->activateSurface(myname.c_str());
- }
- });
-
- // Run event loop for HomeScreen
- hs->runEventloop();
-
-
- /*
- * Set SoundManager
- */
- smw->wrapper_registerCallback(onEv, onRep);
- smw->subscribe(QString("newMainConnection"));
- smw->subscribe(QString("mainConnectionStateChanged"));
- smw->subscribe(QString("removedMainConnection"));
- smw->subscribe(QString("asyncSetSourceState"));
- smw->subscribe(QString("asyncConnect"));
- smw->run_eventloop();
-
- // Set context property for SoundManager
- context->setContextProperty("smw", smw);
-
-
- /*
- * Load qml
- */
- engine.load(QUrl(QStringLiteral("qrc:/QmlForThisApp.qml")));
-
-
- /*
- * Set slot for WindowManager and SoundManager
- */
- root = engine.rootObjects().first();
- window = qobject_cast<QQuickWindow *>(root);
-
- // Set slot for calling LibWindowmanager::activateSurface() when loading qml have completed
- QObject::connect(window, SIGNAL(frameSwapped()),
- wmh, SLOT(slotActivateSurface()));
-
- // Set slot for SoundManager
- QObject::connect(smw, SIGNAL(smEvent(QVariant, QVariant)),
- root, SLOT(slotEvent(QVariant, QVariant)));
- QObject::connect(smw, SIGNAL(smReply(QVariant)),
- root, SLOT(slotReply(QVariant)));
- }
-
- return app.exec();
-}
-
-static void onRep(struct json_object* reply_contents)
-{
- qDebug("%s is called", __FUNCTION__);
- QString str = QString(json_object_get_string(reply_contents));
- QJsonParseError error;
- QJsonDocument jdoc = QJsonDocument::fromJson(str.toUtf8(), &error);
- QJsonObject jobj = jdoc.object();
-
- smw->emit_reply(jobj);
- json_object_put(reply_contents);
-}
-
-static void onEv(const std::string& event, struct json_object* event_contents)
-{
- qDebug("%s is called", __FUNCTION__);
- const QString event_name = QString(event.c_str());
- QString str = QString(json_object_get_string(event_contents));
- QJsonParseError error;
- QJsonDocument jdoc = QJsonDocument::fromJson(str.toUtf8(), &error);
- const QJsonObject jobj = jdoc.object();
- smw->emit_event(event_name, jobj);
-
- json_object_put(event_contents);
-}
-
diff --git a/sample/template/smhandler.cpp b/sample/template/smhandler.cpp
deleted file mode 100644
index 54b94d8..0000000
--- a/sample/template/smhandler.cpp
+++ /dev/null
@@ -1,157 +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 "libsmwrapper.h"
-using namespace std;
-
-static int create_json_object(const QJsonObject& obj, struct json_object* jobj);
-static bool put_val_to_jobj(const char* key, const QJsonValue& val, struct json_object* jobj);
-static bool put_array_to_jobj(const char* key, const QJsonArray& qarray, struct json_object* jobj);
-
-LibSMWrapper::LibSMWrapper(QObject *parent) :
- QObject(parent)
-{
- /* This is not enabled */
- //libsm = new LibSoundmanager();
-}
-
-LibSMWrapper::LibSMWrapper(const int port, const QString& token, QObject *parent) :
- QObject(parent)
-{
- libsm = new LibSoundmanager(port, token.toStdString());
-}
-
-LibSMWrapper::~LibSMWrapper()
-{
- delete libsm;
-}
-
-int LibSMWrapper::call(const QString &verb, const QString &arg)
-{
- // translate QJsonObject to struct json_object
- struct json_object* jobj = json_object_new_object();
- QJsonDocument jsonDoc = QJsonDocument::fromJson(arg.toUtf8());
- const QJsonObject jsonObj = jsonDoc.object();
- int ret = create_json_object(jsonObj, jobj);
- if(ret < 0)
- {
- return -1;
- }
- return libsm->call(verb.toStdString().c_str(), jobj);
-}
-
-static int create_json_object(const QJsonObject& obj, struct json_object* jobj)
-{
- try{
- for(auto itr = obj.begin(); itr != obj.end();++itr)
- {
- string key = itr.key().toStdString();
- //const char* key = itr.key().toStdString().c_str(); // Do not code like this. string is removed if size is over 16!!
-
- bool ret = put_val_to_jobj(key.c_str(), itr.value(),jobj);
- if(!ret){
- /*This is not implemented*/
- qDebug("JsonArray can't parse for now");
- return -1;
- // ToDo
- // For now, array may not be inputted for soundmanager
- // But use case absolutely exists
- /*QJsonArray qarray = itr.value().toArray();
- ret = put_array_to_jobj(key, qarray, jobj);*/
- }
- }
- }
- catch(...){
- qDebug("Json parse error occured");
- return -1;
- }
- return 0;
-}
-
-static bool put_val_to_jobj(const char* key, const QJsonValue& val, struct json_object* jobj)
-{
- if(val.isArray()){
- return false; // Array can't input
- }
- if(val.isString()){
- string value = val.toString().toStdString();
- json_object_object_add(jobj, key, json_object_new_string(value.c_str()));
- }
- else{
- const int value = val.toInt();
- json_object_object_add(jobj, key, json_object_new_int(value));
- }
- return true;
-}
-
-static bool put_array_to_jobj(const char* key, const QJsonArray& qarray, struct json_object* jobj)
-{
- // ToDo Fix this !!
-/* struct json_object* jarray = json_object_new_array();
-
- bool ret;
- for(auto jitr = qarray.begin(); jitr != qarray.end(); ++jitr){
- struct json_object* tmp = json_object_new_object();
- ret = put_val_to_jobj(key,jitr,tmp);
- if(!ret)
- {
- put_array_to_jobj(key,jitr,tmp);
- }
- json_object_array_add(jarray, tmp);
- }
- json_object_object_add(jobj, key, jarray);
- return true;*/
-}
-
-void LibSMWrapper::wrapper_registerCallback(
- void (*event_func)(const string& event, struct json_object* event_contents),
- void (*reply_func)(struct json_object* reply_contents))
-{
- libsm->register_callback(event_func, reply_func);
-}
-
-void LibSMWrapper::subscribe(const QString event_name)
-{
- std::string str = event_name.toStdString();
- libsm->subscribe(str);
-}
-
-void LibSMWrapper::unsubscribe(const QString event_name)
-{
- std::string str = event_name.toStdString();
- libsm->unsubscribe(str);
-}
-
-void LibSMWrapper::run_eventloop()
-{
- libsm->run_eventloop();
-}
-
-void LibSMWrapper::print(const QString &str)
-{
- qDebug("%s is called", str.toStdString().c_str());
-}
-
-void LibSMWrapper::emit_event(const QString &event, const QJsonObject &msg)
-{
- qDebug("emit smEvent signal @%s", __FUNCTION__);
- emit smEvent(event, msg);
-}
-void LibSMWrapper::emit_reply(const QJsonObject &msg)
-{
- qDebug("emit smReply signal @%s", __FUNCTION__);
- emit smReply(msg);
-} \ No newline at end of file
diff --git a/sample/template/smhandler.h b/sample/template/smhandler.h
deleted file mode 100644
index 3954a29..0000000
--- a/sample/template/smhandler.h
+++ /dev/null
@@ -1,58 +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 SIGNALER_H
-#define SIGNALER_H
-
- #include <QObject>
- #include <QVariant>
- #include <QJsonDocument>
- #include <QtCore/QJsonObject>
- #include <libsoundmanager/libsoundmanager.hpp>
- #include <QString>
- #include <string>
-
-
-class LibSMWrapper : public QObject
-{
- Q_OBJECT
-public: // method
- explicit LibSMWrapper(QObject *parent = nullptr);
- LibSMWrapper(const int port, const QString& token, QObject *parent = nullptr);
- ~LibSMWrapper();
-
- void wrapper_registerCallback(
- void (*event_func)(const std::string& event, struct json_object* event_contents),
- void (*reply_func)(struct json_object* reply_contents)
- );
- void subscribe(const QString event_name);
- void unsubscribe(const QString event_name);
- void run_eventloop();
-
- void emit_event(const QString &event, const QJsonObject &msg);
- void emit_reply(const QJsonObject &msg);
-public slots:
- int call(const QString &verb, const QString &arg);
- void print(const QString &str);
-signals:
- void smEvent(const QVariant &event, const QVariant &msg);
- void smReply(const QVariant &msg);
-
-private:
- LibSoundmanager* libsm;
-};
-
-
-#endif /*SIGNALER_H*/ \ No newline at end of file
diff --git a/sample/template/wmhandler.cpp b/sample/template/wmhandler.cpp
deleted file mode 100644
index 761915f..0000000
--- a/sample/template/wmhandler.cpp
+++ /dev/null
@@ -1,36 +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 "wmhandler.h"
-#include <unistd.h>
-
-
-void WmHandler::init(LibWindowmanager *p_wm, std::string applabel)
-{
- mp_wm = p_wm;
- m_applabel = applabel;
-}
-
-void WmHandler::slotActivateSurface() {
- mp_wm->activateSurface(m_applabel.c_str());
-}
-
-WmHandler::WmHandler(QObject *parent)
- :QObject(parent)
-{
-}
-
-WmHandler::~WmHandler() { }
diff --git a/sample/template/wmhandler.h b/sample/template/wmhandler.h
deleted file mode 100644
index 5442d8e..0000000
--- a/sample/template/wmhandler.h
+++ /dev/null
@@ -1,47 +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 WMHANDLER_H
-#define WMHANDLER_H
-#include <QObject>
-#include <QUrl>
-#include <QVariant>
-#include <string>
-#include <vector>
-#include <functional>
-#include <libwindowmanager.h>
-
-class WmHandler : public QObject {
-Q_OBJECT
-public:
- explicit WmHandler(QObject *parent = nullptr);
- ~WmHandler();
-
- WmHandler(const WmHandler &) = delete;
- WmHandler &operator=(const WmHandler &) = delete;
-
-public:
- static WmHandler &instance();
- void init(LibWindowmanager *p_wm, std::string applabel);
-
-public slots:
- void slotActivateSurface();
-
-private:
- LibWindowmanager* mp_wm;
- std::string m_applabel;
-};
-#endif // WMHANDLER_H