app: Add the app state events
[apps/onscreenapp.git] / app / main.cpp
index 007711c..da8710a 100644 (file)
 #include <QtQml/qqml.h>
 #include <QQuickWindow>
 #include <QtQuickControls2/QQuickStyle>
+#include <QVariant>
+#include <QTimer>
+
+#include <json-c/json.h>
 
 #include "eventhandler.h"
 #include "onscreenmodel.h"
 
+/*
+{
+   "application_id": "onscreenapp",
+   "title": "onscreen title",
+   "type": "information",
+   "contents": "message contents",
+   "buttons": ["button_name1"],
+   "replyto":"onstestapp"
+}
+*/
+static struct json_object *
+build_fake_json(void)
+{
+       struct json_object *tmp;
+       struct json_object *obj = json_object_new_object();
+       struct json_object *array = json_object_new_array();
+
+       tmp = json_object_new_string("Big Title");
+       json_object_object_add(obj, "title", tmp);
+
+       tmp = json_object_new_string("Informatin");
+       json_object_object_add(obj, "type", tmp);
+
+       tmp = json_object_new_string("Our message contents");
+       json_object_object_add(obj, "contents", tmp);
+
+       tmp = json_object_new_string("onstestapp");
+       json_object_object_add(obj, "replyto", tmp);
+
+       /* array */
+       tmp = json_object_new_string("Button");
+       json_object_array_add(array, tmp);
+       json_object_object_add(obj, "buttons", array);
+
+       tmp = json_object_new_string(APP_ID);
+       json_object_object_add(obj, "application_id", tmp);
+
+       /* adds the entire object */
+       return obj;
+}
 
 int main(int argc, char *argv[])
 {
     QGuiApplication app(argc, argv);
 
+#if 0
     QCoreApplication::setOrganizationDomain("LinuxFoundation");
     QCoreApplication::setOrganizationName("AutomotiveGradeLinux");
     QCoreApplication::setApplicationName("Onscreenapp");
     QCoreApplication::setApplicationVersion("0.1.0");
+#endif
+
+    // this is necessary to identify app, setApplicationName is only for the
+    // title
+    app.setDesktopFileName(APP_ID);
 
-    QQuickStyle::setStyle("AGL");
+    //QQuickStyle::setStyle("AGL");
 
     QCommandLineParser parser;
     parser.addPositionalArgument("port", app.translate("main", "port for binding"));
@@ -69,11 +119,25 @@ int main(int argc, char *argv[])
 
     QObject *root = engine.rootObjects().first();
     QQuickWindow *window = qobject_cast<QQuickWindow *>(root);
+
     QObject::connect(eventHandler, SIGNAL(updateModel(QVariant)), window, SLOT(setOnScreenModel(QVariant)));
     QObject::connect(eventHandler, SIGNAL(showOnScreen()), window, SLOT(showOnScreen()));
     QObject::connect(eventHandler, SIGNAL(hideOnScreen()), window, SLOT(hideOnScreen()));
 
+
     HMI_DEBUG(APP_ID, "onscreenapp started!");
+
+    /* fake(s) an event */
+#if 0
+    QTimer::singleShot(1000, [eventHandler](){
+               struct json_object *json = build_fake_json();
+               const char *json_str = json_object_to_json_string_ext(json,
+                                       JSON_C_TO_STRING_SPACED | JSON_C_TO_STRING_PRETTY);
+               emit eventHandler->updateModel(QVariant(json_str));
+               emit eventHandler->showOnScreen();
+    });
+#endif
+
     return app.exec();
 }