summaryrefslogtreecommitdiffstats
path: root/tests/manual/sensor_explorer_qml/sensor_explorer.qml
blob: e80fb0a40714e455e524191ce4a95a6944455a9d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only

import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtQuick.Layouts

import SensorModels

Window {
    id: window
    width: 400
    height: 600

    AvailableSensorsModel {
        id: availableSensorsModel
    }

    ColumnLayout {

        GroupBox {
            id: availableSensorsModelGroup
            title: qsTr("Available Sensors")
            Layout.preferredWidth: window.width - 4 // 4 = 2x2 margins
            Layout.preferredHeight: window.height * 0.4
            Layout.margins: 2

            ListView {
                id: sensorsView
                anchors.fill: parent
                currentIndex: -1 // no initial selection
                spacing: 1
                clip: true
                model: availableSensorsModel
                delegate: Item {
                    id: sensorRow
                    width: sensorsView.width
                    height: 30
                    property color rowColor: {
                        if (sensorsView.currentIndex == index)
                            return "lightsteelblue" // highlight
                        return (index % 2 == 0) ? "#CCCCCC" : "#AAAAAA"
                    }
                    RowLayout {
                        spacing: 1
                        anchors.fill: parent
                        Rectangle {
                            color: sensorRow.rowColor
                            Layout.preferredWidth:  sensorRow.width * 0.8
                            Layout.preferredHeight: sensorRow.height
                            Text {
                                anchors.centerIn: parent
                                text: display.type + "::" + display.identifier
                            }
                        }
                        Rectangle {
                            color: sensorRow.rowColor
                            Layout.preferredWidth:  sensorRow.width * 0.2
                            Layout.preferredHeight: sensorRow.height
                            Text {
                                anchors.centerIn: parent
                                text: display.active ? qsTr("Active") : qsTr("Inactive")
                            }
                        }
                    }
                    MouseArea {
                        anchors.fill: parent
                        onClicked: sensorsView.currentIndex = index
                    }
                }
            }
        }

        SensorPropertyModel {
            id: propertyModel
            sensor: availableSensorsModel.get(sensorsView.currentIndex)
        }

        Button {
            id: activateButton
            Layout.preferredHeight: 30
            Layout.alignment: Qt.AlignCenter
            enabled: propertyModel.sensor
            text: !propertyModel.sensor ? qsTr("Select sensor")
                                        : (propertyModel.sensor.active ? qsTr("Deactivate sensor")
                                                                       : qsTr("Activate sensor"))
            onClicked: propertyModel.sensor.active = !propertyModel.sensor.active
        }

        GroupBox {
            title: qsTr("Selected sensor's properties")
            Layout.preferredWidth: window.width  - 4 // 4 = 2x2 margins
            Layout.preferredHeight: window.height * 0.55 - activateButton.height
            Layout.margins: 2
            enabled: sensorsView.currentIndex != -1

            TableView {
                id: propertyView
                anchors.fill: parent
                model: propertyModel
                columnSpacing: 1
                rowSpacing: 1
                boundsMovement: Flickable.StopAtBounds
                clip: true

                delegate: Rectangle {
                    implicitHeight: 30
                    implicitWidth: propertyView.width * 0.5
                    color: (model.row % 2 == 0) ? "#CCCCCC" : "#AAAAAA"
                    Text {
                        anchors.centerIn: parent
                        text: display
                    }
                }
            }
        }
    }
}