Use appid between homescreen-service and apps
[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 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.Window 2.1
20 import QtQuick.Layouts 1.1
21 import QtQuick.Controls 2.0
22 import AppModel 1.0
23
24 Window {
25     visible: true
26     flags: Qt.FramelessWindowHint
27     width: container.width * container.scale
28     height: container.height * container.scale
29
30     property int pid: -1
31
32     Item {
33         id: container
34         anchors.centerIn: parent
35         width: 1080
36         height: 1487
37         scale: screenInfo.scale_factor()
38
39         Image {
40           anchors.centerIn: parent
41           source: './images/AGL_HMI_Blue_Background_Car-01.png'
42         }
43
44     GridView {
45         id: grid
46         anchors {
47           topMargin: 60; bottomMargin: 0 
48           leftMargin: 60; rightMargin: 60
49           fill: parent
50         }
51         contentHeight: 320
52         flickableDirection: Flickable.AutoFlickDirection
53         snapMode: GridView.SnapOneRow
54         visible: true
55         cellWidth: 320
56         cellHeight: 320
57         interactive: false
58
59         model: ApplicationModel { id: applicationModel }
60         delegate: IconItem {
61             width: grid.cellWidth
62             height: grid.cellHeight
63         }
64
65         MouseArea {
66             id: loc
67             anchors.fill: parent
68             property string currentId: ''
69             property int newIndex: -1
70             property int index: grid.indexAt(loc.mouseX, loc.mouseY)
71             x: 62
72             y: 264
73             onPressAndHold: currentId = applicationModel.id(newIndex = index)
74             onReleased: {
75                 if (currentId === '') {
76                     pid = launcher.launch(applicationModel.id(loc.index))
77                     if (1 < pid) {
78                     }
79                     else {
80                         console.warn("app cannot be launched!")
81                     }
82                 } else {
83                     currentId = ''
84                 }
85                 homescreenHandler.tapShortcut(applicationModel.appid(loc.index))
86             }
87             onPositionChanged: {
88                 if (loc.currentId === '') return
89                 if (index < 0) return
90                 if (index === newIndex) return
91                     applicationModel.move(newIndex, newIndex = index)
92             }
93         }
94     }
95 }
96 }