add new features in homescreen-service and homescreen
[src/libhomescreen.git] / sample / template / main.cpp
index 589d314..848d2c5 100644 (file)
@@ -95,24 +95,38 @@ int main(int argc, char *argv[])
         }
 
         // Set event handlers for each event
-        wm->set_event_handler(LibWindowmanager::Event_Active, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Active, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got activated!\n", label);
         });
-        wm->set_event_handler(LibWindowmanager::Event_Inactive, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Inactive, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got deactivated!\n", label);
         });
-        wm->set_event_handler(LibWindowmanager::Event_Visible, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Visible, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got visible!\n", label);
         });
-        wm->set_event_handler(LibWindowmanager::Event_Invisible, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_Invisible, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             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);
+        wm->set_event_handler(LibWindowmanager::Event_SyncDraw, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
+            const char *area = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingArea));
+            fprintf(stderr, "Surface %s got syncDraw! area: %s.\n", label, area);
             // Application should call LibWindowmanager::endDraw() in SyncDraw handler
-            wm->endDraw(label);
+            wm->endDraw(app_name.c_str());
         });
-        wm->set_event_handler(LibWindowmanager::Event_FlushDraw, [](char const *label) {
+        wm->set_event_handler(LibWindowmanager::Event_FlushDraw, [wm](json_object *object) {
+            const char *label = json_object_get_string(
+                json_object_object_get(object, wm->kKeyDrawingName));
             fprintf(stderr, "Surface %s got flushDraw!\n", label);
         });
 
@@ -127,12 +141,16 @@ int main(int argc, char *argv[])
         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());
-            }
+        hs->set_event_handler(LibHomeScreen::Event_ShowWindow, [hs, wm](json_object *object) {
+            qDebug("Surface %s got showWindow\n", myname.c_str());
+            struct json_object *param_obj = json_object_object_get(object, hs->_keyParameter);
+            const char *area = json_object_get_string(
+                json_object_object_get(param_obj, hs->_keyArea));
+            // Application should call LibWindowmanager::activateWindow() in showWindow handler
+            if(area == nullptr)
+                wm->activateWindow(myname.c_str(), hs->_areaNormal);
+            else
+                wm->activateWindow(myname.c_str(), area);
         });
 
         /*