/*
* Copyright (C) 2016 The Qt Company Ltd.
* Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
- * Copyright (c) 2018 TOYOTA MOTOR CORPORATION
+ * Copyright (c) 2018,2019 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-import QtQuick 2.6
-import QtQuick.Window 2.1
+import QtQuick 2.13
import QtQuick.Layouts 1.1
import QtQuick.Controls 2.0
+import QtQuick.Window 2.13
+import QtGraphicalEffects 1.0
import AppModel 1.0
-Window {
- visible: true
- flags: Qt.FramelessWindowHint
- width: container.width * container.scale
- height: container.height * container.scale
+ApplicationWindow {
- property int pid: -1
+ id: root
+ //width: container.width
+ //height: container.height
+ flags: Qt.FramelessWindowHint
+ visible: true
Item {
id: container
anchors.centerIn: parent
- width: 1080
- height: 1487
- scale: screenInfo.scale_factor()
+ width: Window.width
+ height: Window.height
Image {
- anchors.centerIn: parent
- source: './images/AGL_HMI_Blue_Background_Car-01.png'
+ anchors.centerIn: parent
+ source: './images/AGL_HMI_Blue_Background_Car-01.png'
}
- GridView {
- id: grid
- anchors {
- topMargin: 60; bottomMargin: 0
- leftMargin: 60; rightMargin: 60
- fill: parent
- }
- contentHeight: 320
- flickableDirection: Flickable.AutoFlickDirection
- snapMode: GridView.SnapOneRow
- visible: true
- cellWidth: 320
- cellHeight: 320
- interactive: false
+ GridView {
+ id: grid
+ anchors {
+ topMargin: 60; bottomMargin: 60
+ leftMargin: 60; rightMargin: 60
+ fill: parent
+ }
+ contentHeight: 320
+ // change this HorizontalFlick or see Flickable documentation
+ // for other possible combinations
+ flickableDirection: Flickable.VerticalFlick
+ snapMode: GridView.SnapOneRow
+ visible: true
+ cellWidth: 320
+ cellHeight: 320
+ interactive: apps_len > 12 ? true : false
- model: ApplicationModel { id: applicationModel }
- delegate: IconItem {
- width: grid.cellWidth
- height: grid.cellHeight
- }
+ // the follow makes it display from left to right to allow
+ // horizontal scrolling to work
+ //verticalLayoutDirection: Grid.TopToBottom
+ //layoutDirection: Qt.LeftToRight
+ //flow: Grid.TopToBottom
+
+ // uncomment this out if you want to highlight the currently selected item
+ //highlight: Rectangle { width: 80; height: 80; color: "steelblue"; opacity: 0.3 }
+
+ model: ApplicationModel
+ delegate: Item {
+ width: grid.cellWidth
+ height: grid.cellHeight
- MouseArea {
- id: loc
- anchors.fill: parent
- property string currentId: ''
- property int newIndex: -1
- property int index: grid.indexAt(loc.mouseX, loc.mouseY)
- x: 62
- y: 264
- onPressAndHold: currentId = applicationModel.id(newIndex = index)
- onReleased: {
- if (currentId === '') {
- pid = launcher.launch(applicationModel.id(loc.index))
- if (1 < pid) {
+ Text {
+ color: "white"
+ anchors.top: myIcon.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: 20
+ font.pixelSize: 25
+ font.letterSpacing: 5
+ wrapMode: Text.WordWrap
+ horizontalAlignment: Text.AlignHCenter
+ text: qsTr(model.name.toUpperCase())
+ }
+
+ Image {
+ id: myIcon
+ anchors.top: parent.top
+ anchors.topMargin: 20
+ anchors.horizontalCenter: parent.horizontalCenter
+ // make the image/icons smaller than the grid cell size as
+ // the text below/above current cell not be on top of the
+ // current icon
+ width: 220
+ height: 220
+ source: model.icon
+ antialiasing: true
+ property string initial: model.name.substring(0,1).toUpperCase()
+
+ Item {
+ id: title
+ width: 125
+ height: 125
+ anchors.centerIn: parent
+ Label {
+ style: Text.Outline
+ styleColor: '#00ADDC'
+ color: 'transparent'
+ font.pixelSize: 125
+ anchors.centerIn: parent
+ anchors.horizontalCenterOffset: model.index / 3 - 1
+ anchors.verticalCenterOffset: model.index % 3 - 1
+ text: model.icon === 'blank' ? myIcon.initial : ''
+ }
+
+ layer.enabled: true
+ layer.effect: LinearGradient {
+ gradient: Gradient {
+ GradientStop { position: -0.5; color: "#6BFBFF" }
+ GradientStop { position: +1.5; color: "#00ADDC" }
+ }
+ }
}
- else {
- console.warn("app cannot be launched!")
+ }
+
+ MouseArea {
+ id: loc
+ anchors.fill: parent
+ property string currentApp: ''
+ onClicked: {
+ parent.GridView.view.currentIndex = index
+ currentApp = ApplicationModel.appid(parent.GridView.view.currentIndex)
+ console.debug("Launcher: Starting app " + currentApp)
+ applauncher.startApplication(currentApp)
+ console.debug("Launcher: Started app " + currentApp)
}
- } else {
- currentId = ''
}
- homescreenHandler.tapShortcut(applicationModel.name(loc.index))
- }
- onPositionChanged: {
- if (loc.currentId === '') return
- if (index < 0) return
- if (index === newIndex) return
- applicationModel.move(newIndex, newIndex = index)
}
}
}
}
-}