Add onscreenapp
[apps/onscreenapp.git] / app / main.qml
diff --git a/app/main.qml b/app/main.qml
new file mode 100644 (file)
index 0000000..99d50f8
--- /dev/null
@@ -0,0 +1,125 @@
+/*
+ * 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.
+ */
+import QtQuick 2.6
+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
+    flags: Qt.FramelessWindowHint
+    visible: true
+    x: 0
+    y:         218
+    width: 1080
+    height: 1488
+    color: '#00000000'
+
+    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: ""
+
+        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
+            }
+        }
+    }
+
+    OnScreenModel {
+        id: onscreenModel
+    }
+
+    Timer {
+        id: ons_timer
+        interval: 3000
+        onTriggered: {
+            hideOnScreen();
+            clearOnScreenModel();
+        }
+    }
+
+    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)
+    }
+}