aboutsummaryrefslogtreecommitdiffstats
path: root/src/imports/compat/QtAndroidAutomotive/ActivityView/ActivityView.qml
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2023-01-26 14:03:31 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2023-01-26 14:04:33 +0100
commit957bcda3b956008e944f1335cce43c84cc838907 (patch)
treeb328abe00339c531be3a04c2ee0ab55b6be4d8d2 /src/imports/compat/QtAndroidAutomotive/ActivityView/ActivityView.qml
parent5d7345c937e795806ce12884026eee56bfadf19b (diff)
Rename compatilbity to compat
This shortens the path a bit further (Windows builds). Change-Id: If5494806675350bd3983535820b0776d2ab80d94 Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/imports/compat/QtAndroidAutomotive/ActivityView/ActivityView.qml')
-rw-r--r--src/imports/compat/QtAndroidAutomotive/ActivityView/ActivityView.qml212
1 files changed, 212 insertions, 0 deletions
diff --git a/src/imports/compat/QtAndroidAutomotive/ActivityView/ActivityView.qml b/src/imports/compat/QtAndroidAutomotive/ActivityView/ActivityView.qml
new file mode 100644
index 0000000..d02fd13
--- /dev/null
+++ b/src/imports/compat/QtAndroidAutomotive/ActivityView/ActivityView.qml
@@ -0,0 +1,212 @@
+/****************************************************************************
+**
+** Copyright (C) 2022 The Qt Company Ltd.
+** Contact: https://www.qt.io/licensing/
+**
+** This file is part of Qt Android Automotive compatibility.
+**
+** $QT_BEGIN_LICENSE:GPL$
+** Commercial License Usage
+** Licensees holding valid commercial Qt licenses may use this file in
+** accordance with the commercial license agreement provided with the
+** Software or, alternatively, in accordance with the terms contained in
+** a written agreement between you and The Qt Company. For licensing terms
+** and conditions see https://www.qt.io/terms-conditions. For further
+** information use the contact form at https://www.qt.io/contact-us.
+**
+** GNU General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU
+** General Public License version 3 or (at your option) any later version
+** approved by the KDE Free Qt Foundation. The licenses are as published by
+** the Free Software Foundation and appearing in the file LICENSE.GPL3
+** included in the packaging of this file. Please review the following
+** information to ensure the GNU General Public License requirements will
+** be met: https://www.gnu.org/licenses/gpl-3.0.html.
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+import QtQuick
+import QtQuick.Controls
+
+Item {
+ id: root
+
+ width: 480
+ height: 640
+
+ property alias radius: rect.radius
+ property string packageName: "some.package.name"
+ property string className
+ readonly property alias status: internal.status
+ property alias placeholder: placeholderItem.children
+ property bool usePlaceholder: false
+
+ onUsePlaceholderChanged: {
+ if (placeholder) {
+ placeholder.visible = usePlaceholder
+ avMock.visible = !usePlaceholder
+ } else {
+ avMock.visible = true
+ }
+ }
+
+ onPlaceholderChanged: {
+ if (!placeholder)
+ avMock.visible = true
+ }
+
+ enum Status {
+ NotInitialized,
+ Ready,
+ Starting,
+ Started
+ }
+
+ QtObject {
+ id: internal
+
+ property var status: ActivityView.NotInitialized
+ property real fontPointSize: 20
+
+ function enumToString(val) {
+ switch (val) {
+ case ActivityView.NotInitialized: return "NotInitialized"
+ case ActivityView.Ready: return "Ready"
+ case ActivityView.Starting: return "Starting"
+ case ActivityView.Started: return "Started"
+ }
+ return "Unknown"
+ }
+ }
+
+ component StatusButton: Rectangle {
+ id: button
+
+ color: highlighted ? "lightGray" : "gray"
+ radius: 5
+ clip: true
+ width: btnText.width
+ height: btnText.height
+
+ property int statusId: 0
+ property bool highlighted: false
+ signal clicked(int value)
+
+ Label {
+ id: btnText
+
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ font.pointSize: internal.fontPointSize
+
+ text: " " + internal.enumToString(statusId) + " "
+ }
+
+ MouseArea {
+ anchors.fill: parent
+ onClicked: button.clicked(statusId)
+ }
+ }
+
+ Item {
+ id: placeholderItem
+ anchors.fill: parent
+ }
+
+ Item {
+ id: avMock
+
+ anchors.fill: parent
+
+ Rectangle {
+ id: rect
+
+ anchors.fill: parent
+ color: "#AAAAAA"
+ radius: 0
+ border.color: "#888888"
+ border.width: 2
+ clip: true
+
+ Image {
+ id: icon
+
+ anchors.centerIn: parent
+ anchors.verticalCenterOffset: - statusArea.height / 2
+
+ source: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAIAAAACAAQMAAAD58POIAAAABlBMV
+ EUAAAA+Pj4LNneDAAAAAXRSTlMAQObYZgAAAAlwSFlzAAALEwAACxMBAJqcGAAAASNJREFUSMft1
+ TFuwzAMBVApAqIlgNZu6hF6A/UovYm99VjV1mu46AUyelDNilJgftkx0gbtZg4C/BCFNETRSnE88
+ 3JQEi+8HAEel/DEywngYV624DTv24KjMrHmvsRBEfUIxhGdI4B+I/rqESgHgmHALZbhDOAZRoDAM
+ AF0DARQniGNrhDbrERDmxXBpZwmBSnEj7mQ0Y9LSFLXBkipXf3TaVE51E5b0Lev8hOI7cveBcP9s
+ Aw4U1c2JNkSYjkDO0PHv3b0OkPpAC/wcYF3gXQNgsDnDjv8AdxuuqZP07VOdtDrZdrZCZqfr5BOA
+ j7ikJIr9i9w+2avJsxqBq3nWKjPE871wTZzfYffQ2zBUTTNx3MFlnrdjGiTz6j5AOvcsF09yG/q3
+ /z/4fD/YgAAAABJRU5ErkJggg=="
+ }
+
+ Label {
+ id: packageLabel
+
+ anchors.top: icon.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: 5
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ font.pointSize: internal.fontPointSize
+ text: root.packageName
+ }
+ }
+
+ Rectangle {
+ id: statusArea
+
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.top: statusFlow.top
+ anchors.bottom: statusFlow.bottom
+ anchors.topMargin: -5
+ anchors.bottomMargin: -5
+ color: "black"
+ opacity: 0.5
+ radius: rect.radius
+ }
+
+ Label {
+ id: statusLabel
+
+ anchors.top: statusFlow.top
+ anchors.left: parent.left
+
+ text: " " + "status:" + " "
+ color: "lightGray"
+ horizontalAlignment: Text.AlignHCenter
+ verticalAlignment: Text.AlignVCenter
+ font.pointSize: internal.fontPointSize
+ }
+
+ Flow {
+ id: statusFlow
+
+ anchors.bottom: parent.bottom
+ anchors.left: parent.left
+ anchors.right: parent.right
+ anchors.margins: 5
+ anchors.leftMargin: statusLabel.width
+ spacing: 5
+
+ Repeater {
+ model: [ActivityView.NotInitialized, ActivityView.Ready, ActivityView.Starting,
+ ActivityView.Started]
+
+ delegate: StatusButton {
+ statusId: modelData
+ onClicked: (value) => internal.status = value
+ highlighted: modelData === internal.status
+ }
+ }
+ }
+ }
+}