add vui button
[apps/homescreen.git] / homescreen / qml / main.qml
1 /*
2  * Copyright (C) 2016 The Qt Company Ltd.
3  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
4  *
5  * Licensed under the Apache License, Version 2.0 (the "License");
6  * you may not use this file except in compliance with the License.
7  * You may obtain a copy of the License at
8  *
9  *      http://www.apache.org/licenses/LICENSE-2.0
10  *
11  * Unless required by applicable law or agreed to in writing, software
12  * distributed under the License is distributed on an "AS IS" BASIS,
13  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  * See the License for the specific language governing permissions and
15  * limitations under the License.
16  */
17
18 import QtQuick 2.2
19 import QtQuick.Window 2.1
20 import QtQuick.Layouts 1.1
21 import HomeScreen 1.0
22
23 Window {
24     visible: true
25     flags: Qt.FramelessWindowHint
26     width: container.width * container.scale
27     height: container.height * container.scale
28     title: 'HomeScreen'
29     color: "#00000000"
30
31     Image {
32         id: container
33         anchors.centerIn: parent
34         width: 1080
35         height: 1920
36         scale: screenInfo.scale_factor()
37         source: './images/AGL_HMI_Blue_Background_NoCar-01.png'
38
39         ColumnLayout {
40             anchors.fill: parent
41             spacing: 0
42             TopArea {
43                 id: topArea
44                 Layout.fillWidth: true
45                 Layout.preferredHeight: 218
46             }
47
48             Item {
49                 id: applicationArea
50                 Layout.fillWidth: true
51                 Layout.fillHeight: true
52                 Layout.preferredHeight: 1920 - 218 - 215
53
54                 visible: true
55             }
56
57             MediaArea {
58                 id: mediaArea
59                 Layout.fillWidth: true
60                 Layout.fillHeight: true
61                 Layout.preferredHeight: 215
62             }
63         }
64
65
66         state: "normal"
67
68         states: [
69             State {
70                 name: "normal"
71                 PropertyChanges {
72                     target: topArea
73                     y: 0
74                 }
75                 PropertyChanges {
76                     target: applicationArea
77                     y: 218
78                 }
79                 PropertyChanges {
80                     target: mediaArea
81                     y: 1705
82                 }
83             },
84             State {
85                 name: "fullscreen"
86                 PropertyChanges {
87                     target: topArea
88                     y: -220
89                 }
90                 PropertyChanges {
91                     target: applicationArea
92                     y: -1490
93                 }
94                 PropertyChanges {
95                     target: mediaArea
96                     y: 2135
97                 }
98             }
99         ]
100         transitions: Transition {
101             NumberAnimation {
102                 target: topArea
103                 property: "y"
104                 easing.type: "OutQuad"
105                 duration: 250
106             }
107             NumberAnimation {
108                 target: mediaArea
109                 property: "y"
110                 easing.type: "OutQuad"
111                 duration: 250
112             }
113         }
114
115     }
116     Item {
117         id: switchBtn
118         width: 70
119         height: 70
120         anchors.right: parent.right
121         anchors.top: parent.top
122         z: 1
123         property bool enableSwitchBtn: true
124         Image {
125             anchors.right: parent.right
126             anchors.rightMargin: 20
127             anchors.top: parent.top
128             anchors.topMargin: 25
129             width: 35
130             height: 35
131             id: image
132             source: './images/normal.png'
133         }
134
135         MouseArea {
136             anchors.fill: parent
137             onClicked: {
138                 if(switchBtn.enableSwitchBtn) {
139                     var appName = homescreenHandler.getCurrentApplication()
140                     if (container.state === 'normal') {
141                         image.source = './images/fullscreen.png'
142                         container.state = 'fullscreen'
143                         touchArea.switchArea(1)
144                         homescreenHandler.tapShortcut(appName, true)
145                         container.visible = false
146                         voiceBtn.visible = false
147                     } else {
148                         image.source = './images/normal.png'
149                         container.state = 'normal'
150                         touchArea.switchArea(0)
151                         homescreenHandler.tapShortcut(appName, false)
152                         container.visible = true
153                         voiceBtn.visible = true
154                     }
155                 }
156             }
157         }
158     }
159
160     Item {
161         id: rebootBtn
162         width: 70
163         height: 70
164         anchors.left: parent.left
165         anchors.top: parent.top
166         z: 1
167         MouseArea {
168             anchors.fill: parent
169             onClicked: {
170                 homescreenHandler.reboot();
171             }
172         }
173     }
174
175     function changeSwitchState(is_navigation) {
176         if(container.state === 'normal') {
177             if(is_navigation) {
178                 switchBtn.enableSwitchBtn = true
179                 image.source = './images/normal.png'
180             } else {
181                 switchBtn.enableSwitchBtn = false
182                 image.source = './images/normal_disable.png'
183             }
184         }
185     }
186
187     Connections {
188         target: homescreenHandler
189         onShowWindow: {
190             container.state = 'normal'
191             image.visible = true
192             touchArea.switchArea(0)
193             container.opacity = 1.0
194             voiceBtn.visible = true
195         }
196     }
197
198     Connections {
199         target: homescreenHandler
200         onHideWindow: {
201             container.state = 'fullscreen'
202             image.visible = false
203             touchArea.switchArea(1)
204             container.opacity = 0.0
205             voiceBtn.visible = false
206         }
207     }
208
209     Timer {
210         id:informationTimer
211         interval: 3000
212         running: false
213         repeat: true
214         onTriggered: {
215             bottomInformation.visible = false
216         }
217     }
218
219     Item {
220         id: bottomInformation
221         width: parent.width
222         height: 215
223         anchors.bottom: parent.bottom
224         visible: false
225         Text {
226             id: bottomText
227             anchors.centerIn: parent
228             font.pixelSize: 25
229             font.letterSpacing: 5
230             horizontalAlignment: Text.AlignHCenter
231             color: "white"
232             text: ""
233             z:1
234         }
235     }
236
237     Connections {
238         target: homescreenHandler
239         onShowInformation: {
240             bottomText.text = info
241             bottomInformation.visible = true
242             informationTimer.restart()
243         }
244     }
245
246         Timer {
247         id:notificationTimer
248         interval: 3000
249         running: false
250         repeat: true
251         onTriggered: notificationItem.visible = false
252     }
253
254     Item {
255         id: notificationItem
256         x: 0
257         y: 0
258         z: 1
259         width: 1280
260         height: 100
261         opacity: 0.8
262         visible: false
263
264         Rectangle {
265             width: parent.width
266             height: parent.height
267             anchors.fill: parent
268             color: "gray"
269             Image {
270                 id: notificationIcon
271                 width: 70
272                 height: 70
273                 anchors.left: parent.left
274                 anchors.leftMargin: 20
275                 anchors.verticalCenter: parent.verticalCenter
276                 source: ""
277             }
278
279             Text {
280                 id: notificationtext
281                 font.pixelSize: 25
282                 anchors.left: notificationIcon.right
283                 anchors.leftMargin: 5
284                 anchors.verticalCenter: parent.verticalCenter
285                 color: "white"
286                 text: qsTr("")
287             }
288         }
289     }
290
291     Connections {
292         target: homescreenHandler
293         onShowNotification: {
294             notificationIcon.source = icon_path
295             notificationtext.text = text
296             notificationItem.visible = true
297             notificationTimer.restart()
298         }
299     }
300
301     Connections {
302         target: homescreenVoice
303         onStatusChanged: {
304             voiceBtn.visible = status
305         }
306     }
307
308     Item {
309         id: voiceBtn
310         width: 110
311         height: 110
312         anchors.bottom: parent.bottom
313         anchors.right: parent.right
314         anchors.bottomMargin: 50
315         anchors.rightMargin: 0
316         visible: true
317         Image {
318             id: voiceimage
319             anchors.left: parent.left
320             anchors.top: parent.top
321             width: 110
322             height: 110
323             source: './images/voice.png'
324         }
325         MouseArea {
326             anchors.fill: parent
327             onClicked: {
328                 homescreenVoice.startListening();
329             }
330         }
331     }
332 }