aboutsummaryrefslogtreecommitdiffstats
path: root/homescreen/qml/SystemUI.qml
diff options
context:
space:
mode:
Diffstat (limited to 'homescreen/qml/SystemUI.qml')
-rw-r--r--homescreen/qml/SystemUI.qml258
1 files changed, 258 insertions, 0 deletions
diff --git a/homescreen/qml/SystemUI.qml b/homescreen/qml/SystemUI.qml
new file mode 100644
index 0000000..1e1c6be
--- /dev/null
+++ b/homescreen/qml/SystemUI.qml
@@ -0,0 +1,258 @@
+/*
+ * Copyright (C) 2016 The Qt Company Ltd.
+ * Copyright (C) 2016, 2017 Mentor Graphics Development (Deutschland) GmbH
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import QtQuick 2.2
+import QtQuick.Window 2.1
+import QtQuick.Layouts 1.1
+import QtQuick.Controls 2.1
+import QtWayland.Compositor 1.0
+import HomeScreen 1.0
+import QtGraphicalEffects 1.0
+
+Window {
+ id: root
+ visible: true
+ flags: Qt.FramelessWindowHint
+ width: container.width * container.scale
+ height: container.height * container.scale
+ title: 'HomeScreen'
+ property alias applicationStack: applicationStack
+
+ property var app2item: new Object
+ property string appLaunching
+
+ Component {
+ id: chrome
+ ShellSurfaceItem {
+ onSurfaceDestroyed: destroy()
+ }
+ }
+
+ function show(shellSurface) {
+ var a2i = root.app2item
+ var item = chrome.createObject(root, {"shellSurface": shellSurface})
+ a2i[appLaunching] = item
+ root.app2item = a2i
+ shellSurface.sendConfigure(Qt.size(applicationStack.width, applicationStack.height), WlShellSurface.NoneEdge)
+ if (applicationStack.depth == 1) {
+ applicationStack.push(item)
+ } else {
+ applicationStack.replace(item)
+ }
+ appLaunching = ''
+ }
+
+ ApplicationLauncher {
+ id: launcher
+
+ function show(app) {
+ if (current === app) return
+ if (app.length > 0) {
+ if (root.appLaunching.length > 0)
+ return
+ if (app2item[app]) {
+ if (applicationStack.depth == 1) {
+ applicationStack.push(app2item[app])
+ } else {
+ applicationStack.replace(app2item[app])
+ }
+ current = app
+ } else {
+ root.appLaunching = app
+ if (launch(app) < 0) {
+ root.appLaunching = ''
+ }
+ }
+ } else if (applicationStack.depth > 1) {
+ applicationStack.pop()
+ current = ''
+ }
+ }
+ }
+
+ Component {
+ id: home
+ Home {
+ width: parent.width
+ height: parent.height
+ }
+ }
+
+ Transition {
+ id: inTransition
+ NumberAnimation {
+ properties: "opacity, scale"
+ from: 0
+ to:1
+ duration: 250
+ }
+ }
+ Transition {
+ id: outTransition
+ NumberAnimation {
+ properties: "opacity"
+ from: 1
+ to:0
+ duration: 250
+ }
+ NumberAnimation {
+ properties: "scale"
+ from: 1
+ to:5
+ duration: 250
+ }
+ }
+
+ Image {
+ id: container
+ anchors.centerIn: parent
+ width: 1080
+ height: 1920
+ rotation: 270
+ source: './images/AGL_HMI_Background_NoCar-01.png'
+
+ ColumnLayout {
+ anchors.fill: parent
+ spacing: 0
+ TopArea {
+ id: topArea
+ Layout.fillWidth: true
+ Layout.preferredHeight: 218
+ }
+
+ Item {
+ id: applicationArea
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.preferredHeight: 1920 - 218 - 215
+ clip: true
+ StackView {
+ id: applicationStack
+ anchors.fill: parent
+ initialItem: home
+
+ pushEnter: inTransition
+ pushExit: outTransition
+ replaceEnter: inTransition
+ replaceExit: outTransition
+ popEnter: inTransition
+ popExit: outTransition
+ }
+ }
+
+ MediaArea {
+ id: mediaArea
+ Layout.fillWidth: true
+ Layout.fillHeight: true
+ Layout.preferredHeight: 215
+ MouseArea {
+ z: 100
+ anchors.fill: parent
+ onClicked: {
+ notificationLayer.shown = true
+ }
+ }
+ }
+ }
+ }
+
+ MouseArea {
+ id: notificationLayer
+ property bool shown: false
+ anchors.fill: container
+ scale: container.scale
+ visible: opacity > 0
+ opacity: 0
+ rotation: 270
+ z: 100
+
+ onClicked: shown = false
+
+ Rectangle {
+ anchors.fill: parent
+ color: 'black'
+ opacity: 0.75
+ }
+
+ states: [
+ State {
+ name: "notify"
+ when: notificationLayer.shown
+ PropertyChanges {
+ target: notificationLayer
+ opacity: 1.0
+ }
+ PropertyChanges {
+ target: timer
+ running: true
+ }
+ }
+ ]
+
+ transitions: [
+ Transition {
+ NumberAnimation {
+ properties: 'opacity'
+ duration: 250
+ easing.type: Easing.OutExpo
+ }
+ }
+ ]
+
+ Column {
+ anchors.centerIn: parent
+ spacing: 20
+ Rectangle {
+ width: 600
+ height: 250
+ radius: 20
+ color: 'white'
+
+ Label {
+ anchors.centerIn: parent
+ text: "Message 1"
+ font.pixelSize: 96
+ color: 'blue'
+ antialiasing: true
+ }
+ }
+ Rectangle {
+ width: 600
+ height: 250
+ radius: 20
+ color: 'white'
+
+ Label {
+ anchors.centerIn: parent
+ text: "Restart"
+ font.pixelSize: 96
+ color: 'red'
+ antialiasing: true
+ MouseArea {
+ anchors.fill: parent
+ onClicked: Qt.quit()
+ }
+ }
+ }
+ Timer {
+ id: timer
+ interval: 3000
+ onTriggered: notificationLayer.shown = false
+ }
+ }
+ }
+}