registerShortcut
[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.opacity = 0.0
146                     } else {
147                         image.source = './images/normal.png'
148                         container.state = 'normal'
149                         touchArea.switchArea(0)
150                         homescreenHandler.tapShortcut(appName, false)
151                         container.opacity = 1.0
152                     }
153                 }
154             }
155         }
156     }
157
158     Item {
159         id: rebootBtn
160         width: 70
161         height: 70
162         anchors.left: parent.left
163         anchors.top: parent.top
164         z: 1
165         MouseArea {
166             anchors.fill: parent
167             onClicked: {
168                 homescreenHandler.reboot();
169             }
170         }
171     }
172
173     function changeSwitchState(is_navigation) {
174         if(container.state === 'normal') {
175             if(is_navigation) {
176                 switchBtn.enableSwitchBtn = true
177                 image.source = './images/normal.png'
178             } else {
179                 switchBtn.enableSwitchBtn = false
180                 image.source = './images/normal_disable.png'
181             }
182         }
183     }
184
185     Connections {
186         target: homescreenHandler
187         onShowWindow: {
188             container.state = 'normal'
189             image.visible = true
190             touchArea.switchArea(0)
191             container.opacity = 1.0
192         }
193     }
194
195     Connections {
196         target: homescreenHandler
197         onHideWindow: {
198             container.state = 'fullscreen'
199             image.visible = false
200             touchArea.switchArea(1)
201             container.opacity = 0.0
202         }
203     }
204
205     Timer {
206         id:informationTimer
207         interval: 3000
208         running: false
209         repeat: true
210         onTriggered: {
211             bottomInformation.visible = false
212         }
213     }
214
215     Item {
216         id: bottomInformation
217         width: parent.width
218         height: 215
219         anchors.bottom: parent.bottom
220         visible: false
221         Text {
222             id: bottomText
223             anchors.centerIn: parent
224             font.pixelSize: 25
225             font.letterSpacing: 5
226             horizontalAlignment: Text.AlignHCenter
227             color: "white"
228             text: ""
229             z:1
230         }
231     }
232
233     Connections {
234         target: homescreenHandler
235         onShowInformation: {
236             bottomText.text = info
237             bottomInformation.visible = true
238             informationTimer.restart()
239         }
240     }
241
242         Timer {
243         id:notificationTimer
244         interval: 3000
245         running: false
246         repeat: true
247         onTriggered: notificationItem.visible = false
248     }
249
250     Item {
251         id: notificationItem
252         x: 0
253         y: 0
254         z: 1
255         width: 1280
256         height: 100
257         opacity: 0.8
258         visible: false
259
260         Rectangle {
261             width: parent.width
262             height: parent.height
263             anchors.fill: parent
264             color: "gray"
265             Image {
266                 id: notificationIcon
267                 width: 70
268                 height: 70
269                 anchors.left: parent.left
270                 anchors.leftMargin: 20
271                 anchors.verticalCenter: parent.verticalCenter
272                 source: ""
273             }
274
275             Text {
276                 id: notificationtext
277                 font.pixelSize: 25
278                 anchors.left: notificationIcon.right
279                 anchors.leftMargin: 5
280                 anchors.verticalCenter: parent.verticalCenter
281                 color: "white"
282                 text: qsTr("")
283             }
284         }
285     }
286
287     Connections {
288         target: homescreenHandler
289         onShowNotification: {
290             notificationIcon.source = icon_path
291             notificationtext.text = text
292             notificationItem.visible = true
293             notificationTimer.restart()
294         }
295     }
296 }