change onscreenapp
[apps/onscreenapp.git] / app / main.qml
index 758115b..99d50f8 100644 (file)
@@ -19,6 +19,7 @@ import QtQuick.Window 2.2
 import QtQuick.Layouts 1.1
 import QtQuick.Controls 2.0
 import AGL.Demo.Controls 1.0
+import OnScreenModel 1.0
 
 Window {
     id: root
@@ -30,29 +31,95 @@ Window {
     height: 1488
     color: '#00000000'
 
-    function qmlLoader(url) {
-        console.log(qsTr('onscreenapp >>> qmlLoader load ' + url));
-        osLoader.source = url;
-    }
+    Onscreen {
+        id: ons
+        anchors.centerIn: parent
+        visible: true
+        scale: 0
+
+        property string dsp_sts: "hide"
+        property string dsp_title: ""
+        property string dsp_icon: ""
+        property string dsp_contents: ""
+        property int btnNum: 0
+        property string btn1Name: ""
+        property string btn2Name: ""
+        property string btn3Name: ""
 
-    function qmlOnScreenParameter(text) {
-        console.log(qsTr('onscreenapp >>> qmlOnScreenParameter.' + text));
-        if (osLoader.status == Loader.Ready) {
-            // call qmlOnScreenParameter in qml to post parameter which from application
-            if (osLoader.item && osLoader.item.qmlOnScreenParameter) {
-                osLoader.item.qmlOnScreenParameter(text);
+        states: [
+            State {
+                name: 'active'
+                when: ons.dsp_sts == "show"
+                PropertyChanges {
+                    target: ons
+                    scale: 1
+                    z: 1
+                }
+            },
+            State {
+                name: 'inactive'
+                when: ons.dsp_sts == "hide"
+                PropertyChanges {
+                    target: ons
+                    scale: 0
+                    z: -1
+                }
+            }
+        ]
+        transitions: Transition {
+            NumberAnimation {
+                properties: 'scale';
+                duration: 300;
+                easing.type: Easing.Linear
+                alwaysRunToEnd: true
             }
         }
-        else {
-            console.log("osLoader.status is not ready")
+    }
+
+    OnScreenModel {
+        id: onscreenModel
+    }
+
+    Timer {
+        id: ons_timer
+        interval: 3000
+        onTriggered: {
+            hideOnScreen();
+            clearOnScreenModel();
         }
     }
 
-    Loader {
-        objectName: "loaderObject"
-        id: osLoader
-        anchors.centerIn: parent
-        width: childrenRect.width
-        height: childrenRect.height
+    Connections {
+        target: ons
+        onScaleChanged : {
+            if(ons.scale == 0) {
+                console.log(qsTr('hide animation finished'));
+                eventHandler.deactivateWindow();
+            }
+        }
+    }
+
+    function showOnScreen() {
+        console.log(qsTr('show onscreenapp'));
+        ons.dsp_title = onscreenModel.getTitle()
+        ons.dsp_icon = "../images/" + onscreenModel.getType() + ".svg"
+        ons.dsp_contents = onscreenModel.getContents()
+        ons.btnNum = onscreenModel.buttonNum()
+        ons.btn1Name = onscreenModel.buttonName(0)
+        ons.btn2Name = onscreenModel.buttonName(1)
+        ons.btn3Name = onscreenModel.buttonName(2)
+        ons_timer.running =  ons.btnNum > 0 ? false : true
+        ons.dsp_sts = "show"
+    }
+
+    function hideOnScreen() {
+        console.log(qsTr('hide onscreenapp'));
+        ons.dsp_sts = "hide"
+        ons_timer.running = false
+    }
+
+    function setOnScreenModel(data) {
+        console.log(qsTr('onscreenapp >>> setModel status: ' + data));
+        onscreenModel.setModel(data)
     }
 }