2247f518abf3ef3efeef9d47ae09cbd832d885b8
[apps/launcher.git] / launcher / qml / Launcher.qml
1 /*
2  * Copyright (C) 2016 The Qt Company Ltd.
3  * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
4  * Copyright (c) 2018,2019 TOYOTA MOTOR CORPORATION
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  *      http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License.
17  */
18 import QtQuick 2.6
19 import QtQuick.Layouts 1.1
20 import QtQuick.Controls 2.0
21 import AppModel 1.0
22
23 ApplicationWindow {
24     width: container.width * container.scale
25     height: container.height * container.scale
26
27     property int pid: -1
28
29     Item {
30         id: container
31         anchors.centerIn: parent
32         width: 1080
33         height: 1488
34         scale: screenInfo.scale_factor()
35
36         Image {
37           anchors.centerIn: parent
38           source: './images/AGL_HMI_Blue_Background_Car-01.png'
39         }
40
41     GridView {
42         id: grid
43         anchors {
44           topMargin: 60; bottomMargin: 0 
45           leftMargin: 60; rightMargin: 60
46           fill: parent
47         }
48         contentHeight: 320
49         flickableDirection: Flickable.AutoFlickDirection
50         snapMode: GridView.SnapOneRow
51         visible: true
52         cellWidth: 320
53         cellHeight: 320
54         interactive: false
55
56         model: ApplicationModel { id: applicationModel }
57         delegate: IconItem {
58             width: grid.cellWidth
59             height: grid.cellHeight
60         }
61
62         Connections {
63             target: homescreenHandler
64             onAppListUpdate: {
65                 console.warn("applist update in Launcher.qml")
66                 applicationModel.updateApplist(info);
67             }
68         }
69         Connections {
70             target: homescreenHandler
71             onInitAppList: {
72                 console.warn("applist init in Launcher.qml")
73                 applicationModel.initAppList(data);
74             }
75         }
76
77         MouseArea {
78             id: loc
79             anchors.fill: parent
80             property string currentId: ''
81             property int newIndex: -1
82             property int index: grid.indexAt(loc.mouseX, loc.mouseY)
83             x: 62
84             y: 264
85             onPressAndHold: currentId = applicationModel.id(newIndex = index)
86             onReleased: {
87                 if(loc.index < 0) {
88                     return
89                 }
90                 if (currentId === '') {
91                     homescreenHandler.tapShortcut(applicationModel.appid(loc.index))
92                 } else {
93                     currentId = ''
94                 }
95             }
96             onPositionChanged: {
97                 if (loc.currentId === '') return
98                 if (index < 0) return
99                 if (index === newIndex) return
100                     applicationModel.move(newIndex, newIndex = index)
101             }
102         }
103     }
104 }
105 }