blob: 9fe59baa39399ff6e0e65fd10add482879da9c53 (
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
120
121
122
123
124
125
126
127
|
// Copyright (C) 2021 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause
import QtQuick
import QtQuick.Window
import QtQuick.Controls
import QtQuick.Layouts
//! [0]
import SensorModels
//! [0]
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
}
}
}
}
//! [1]
SensorPropertyModel {
id: propertyModel
sensor: availableSensorsModel.get(sensorsView.currentIndex)
}
//! [1]
//! [2]
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
}
//! [2]
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
//! [3]
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
}
}
}
//! [3]
}
}
}
|