onscreenapp, ontestapp: Initial conversion to agl-compositor
[apps/onscreenapp.git] / sample / app / main.qml
index b9f415b..b545c53 100644 (file)
@@ -7,8 +7,8 @@ import AGL.Demo.Controls 1.0
 ApplicationWindow {
     id: root
     visible: true
-    width: 1080
-    height: 1487
+    width: Screen.width
+    height: Screen.height
 
     property string onsId: qsTr("onscreenapp")
     property string onsTitle: qsTr("One Button title")
@@ -19,6 +19,15 @@ ApplicationWindow {
     property string onsButton3: qsTr("")
     property string postmsg: qsTr("")
     property string btndata: qsTr("")
+    property int pid: -1
+    property bool onscreen_role_set: false
+
+    property string mapp_id: ''
+    property string mapp_data_msg: ''
+
+    // position of the pop-up
+    property int x: 200
+    property int y: 200
 
     Label {
         id: title
@@ -37,24 +46,24 @@ ApplicationWindow {
         anchors.horizontalCenter: title.horizontalCenter
 
         // show received reply information area
-        Flickable {
-             id: flickable
-             width: 800
-             height: 320
-             Layout.alignment: Qt.AlignCenter
-             flickableDirection: Flickable.VerticalFlick
-             boundsBehavior: Flickable.StopAtBounds
-
-             TextArea.flickable: TextArea {
-                 id: output
-                 text: "show received reply information area\n...\n...\n...\n...\n"
-                 font.pixelSize: 24
-                 wrapMode: TextArea.Wrap
-                 color: '#00ADDC'
-             }
-
-             ScrollBar.vertical: ScrollBar { }
-         }
+        //Flickable {
+        //     id: flickable
+        //     width: 400
+        //     height: 220
+        //     Layout.alignment: Qt.AlignCenter
+        //     flickableDirection: Flickable.VerticalFlick
+        //     boundsBehavior: Flickable.StopAtBounds
+
+        //     TextArea.flickable: TextArea {
+        //         id: output
+        //         text: "show received reply information area\n...\n...\n...\n...\n"
+        //         font.pixelSize: 12
+        //         wrapMode: TextArea.Wrap
+        //         color: '#00ADDC'
+        //     }
+
+        //     ScrollBar.vertical: ScrollBar { }
+        // }
 
         // select onscreen type area
         GroupBox {
@@ -316,6 +325,26 @@ ApplicationWindow {
         onsButton3 = qsTr("")
     }
 
+    Timer {
+               id: activate_timer
+               interval: 500
+               running: false
+               repeat: false
+               onTriggered: {
+                       console.log("calling eventHandler.showWindow for " + mapp_id + " and data msg " + mapp_data_msg)
+                       eventHandler.showWindow(mapp_id, mapp_data_msg)
+                       mapp_id = ''
+                       mapp_data_msg = ''
+               }
+    }
+
+
+    function armTimer(app_id, msg) {
+       mapp_id = app_id
+       mapp_data_msg = msg
+       activate_timer.running = true
+    }
+
     function postMessage() {
         console.log("poster pressed")
         btndata = ""
@@ -339,11 +368,42 @@ ApplicationWindow {
         else
             postmsg += "}"
 
-        eventHandler.showWindow(onsId, postmsg);
+       if (!onscreen_role_set) {
+               console.log("onscreen_role_set is not set")
+               eventHandler.set_window_popup(onsId, x, y)
+               console.log("setting for popup for " + onsId)
+               onscreen_role_set = true
+       }
+
+       // if the application is not already started, start it
+       if (pid === -1) {
+               // if the application is not started, then the first time
+               // we start we also display it using the default policy engine
+               pid = eventHandler.start(onsId, postmsg)
+               console.log("calling eventHandler.start for " + onsId + " with pid " + pid)
+
+               // this is necessary jus the first time as we don't queue the
+               // 'activate_app' event and pass it over once onscreenapp is
+               // started. It is implementation detail in case it is required
+               console.log("calling armTimer for " + onsId)
+               armTimer(onsId, postmsg)
+       } else {
+               // onscreenapp is already start we just need to activate + pass the data
+               if (!eventHandler.is_running(onsId) && pid > 0) {
+                       // this is mostly for testing, in case onscreenapp died
+                       // unexpectedly
+                       eventHandler.set_window_popup(onsId, x, y)
+                       pid = eventHandler.start(onsId, postmsg)
+                       armTimer(onsId, postmsg)
+               } else {
+                       eventHandler.showWindow(onsId, postmsg)
+               }
+       }
+
     }
 
     function qmlOnReplyShowWindow(text) {
         console.log("onstestapp received:",text);
-        output.text = text;
+        //output.text = text;
     }
 }