Serial-Studio/assets/qml/JsonEditor/JsonDatasetDelegate.qml

187 lines
5.8 KiB
QML
Raw Normal View History

2021-09-17 01:41:50 -05:00
/*
* Copyright (c) 2020-2021 Alex Spataru <https://github.com/alex-spataru>
*
* Permission is hereby granted, free of charge, to any person obtaining a copy
* of this software and associated documentation files (the "Software"), to deal
* in the Software without restriction, including without limitation the rights
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
* copies of the Software, and to permit persons to whom the Software is
* furnished to do so, subject to the following conditions:
*
* The above copyright notice and this permission notice shall be included in
* all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
* THE SOFTWARE.
*/
import QtQuick 2.12
import QtQuick.Layouts 1.12
import QtQuick.Controls 2.12
import "../Widgets" as Widgets
Widgets.Window {
id: root
2021-09-17 19:44:59 -05:00
//
// Window properties
//
2021-09-17 17:45:05 -05:00
headerDoubleClickEnabled: false
2021-09-17 01:41:50 -05:00
icon.source: "qrc:/icons/dataset.svg"
borderColor: Cpp_ThemeManager.datasetWindowBorder
palette.window: Cpp_ThemeManager.datasetWindowBackground
2021-09-17 17:45:05 -05:00
title: qsTr("Dataset %1 - %2").arg(dataset + 1).arg(Cpp_JSON_Editor.datasetTitle(group, dataset))
2021-09-17 19:44:59 -05:00
//
// Delete dataset button
//
altButtonEnabled: true
altButtonIcon.source: "qrc:/icons/close.svg"
onAltButtonClicked: Cpp_JSON_Editor.deleteDataset(group, dataset)
2021-09-17 17:45:05 -05:00
//
// Custom properties
//
property int group
property int dataset
property bool showGroupWidget
//
// User interface
//
2021-09-17 01:41:50 -05:00
GridLayout {
2021-09-17 17:45:05 -05:00
x: 0
2021-09-17 01:41:50 -05:00
columns: 2
2021-09-17 17:45:05 -05:00
anchors.fill: parent
2021-09-17 01:41:50 -05:00
rowSpacing: app.spacing
columnSpacing: app.spacing
2021-09-17 17:45:05 -05:00
anchors.margins: app.spacing * 2
2021-09-17 01:41:50 -05:00
2021-09-17 17:45:05 -05:00
//
// Dataset title
//
2021-09-17 01:41:50 -05:00
Label {
text: qsTr("Title:")
2021-09-17 17:45:05 -05:00
} TextField {
2021-09-17 01:41:50 -05:00
Layout.fillWidth: true
2021-09-17 17:45:05 -05:00
text: Cpp_JSON_Editor.datasetTitle(group, dataset)
2021-09-17 01:41:50 -05:00
placeholderText: qsTr("Sensor reading, uptime, etc...")
2021-09-17 17:45:05 -05:00
onTextChanged: {
Cpp_JSON_Editor.setDatasetTitle(group, dataset, text)
root.title = qsTr("Dataset %1 - %2").arg(dataset + 1).arg(Cpp_JSON_Editor.datasetTitle(group, dataset))
}
2021-09-17 01:41:50 -05:00
}
2021-09-17 17:45:05 -05:00
//
// Dataset units
//
2021-09-17 01:41:50 -05:00
Label {
text: qsTr("Units:")
2021-09-17 17:45:05 -05:00
} TextField {
2021-09-17 01:41:50 -05:00
Layout.fillWidth: true
2021-09-17 17:45:05 -05:00
text: Cpp_JSON_Editor.datasetUnits(group, dataset)
2021-09-17 01:41:50 -05:00
placeholderText: qsTr("Volts, meters, seconds, etc...")
2021-09-17 17:45:05 -05:00
onTextChanged: Cpp_JSON_Editor.setDatasetUnits(group, dataset, text)
2021-09-17 01:41:50 -05:00
}
2021-09-17 17:45:05 -05:00
//
// Frame index
//
2021-09-17 01:41:50 -05:00
Label {
text: qsTr("Frame index:")
2021-09-17 19:44:59 -05:00
} TextField {
2021-09-17 01:41:50 -05:00
Layout.fillWidth: true
2021-09-17 19:44:59 -05:00
text: Cpp_JSON_Editor.datasetIndex(group, dataset)
onTextChanged: Cpp_JSON_Editor.setDatasetIndex(group, dataset, text)
validator: IntValidator {
bottom: 1
top: 100
}
2021-09-17 01:41:50 -05:00
}
2021-09-17 17:45:05 -05:00
//
// Dataset graph
//
2021-09-17 01:41:50 -05:00
Label {
2021-09-17 17:45:05 -05:00
text: qsTr("Generate graph:")
} Switch {
Layout.leftMargin: -app.spacing
checked: Cpp_JSON_Editor.datasetGraph(group, dataset)
onCheckedChanged: Cpp_JSON_Editor.setDatasetGraph(group, dataset, checked)
2021-09-17 01:41:50 -05:00
}
2021-09-17 17:45:05 -05:00
//
// Dataset widget (user selectable or group-level constant)
//
Label {
text: qsTr("Widget:")
} ComboBox {
2021-09-17 01:41:50 -05:00
id: widget
2021-09-17 17:45:05 -05:00
visible: !showGroupWidget
Layout.fillWidth: true
model: Cpp_JSON_Editor.availableDatasetLevelWidgets()
currentIndex: Cpp_JSON_Editor.datasetWidgetIndex(group, dataset)
onCurrentIndexChanged: {
if (visible)
Cpp_JSON_Editor.setDatasetWidget(group, dataset, currentIndex)
}
} TextField {
readOnly: true
2021-09-17 01:41:50 -05:00
Layout.fillWidth: true
2021-09-17 17:45:05 -05:00
visible: showGroupWidget
text: Cpp_JSON_Editor.datasetWidget(group, dataset)
2021-09-17 01:41:50 -05:00
}
2021-09-17 17:45:05 -05:00
//
// Widget minimum value
//
2021-09-17 01:41:50 -05:00
Label {
text: qsTr("Min value:")
visible: widget.currentIndex == 1 || widget.currentIndex == 2
2021-09-17 17:45:05 -05:00
} TextField {
2021-09-17 01:41:50 -05:00
id: min
Layout.fillWidth: true
2021-09-17 17:45:05 -05:00
text: Cpp_JSON_Editor.datasetWidgetMin(group, dataset)
2021-09-17 01:41:50 -05:00
visible: widget.currentIndex == 1 || widget.currentIndex == 2
2021-09-17 17:45:05 -05:00
onTextChanged: Cpp_JSON_Editor.setDatasetWidgetMin(group, dataset, text)
validator: DoubleValidator {
bottom: 0
top: parseFloat(max.text)
}
2021-09-17 01:41:50 -05:00
}
2021-09-17 17:45:05 -05:00
//
// Widget maximum value
//
2021-09-17 01:41:50 -05:00
Label {
text: qsTr("Max value:")
visible: widget.currentIndex == 1 || widget.currentIndex == 2
2021-09-17 17:45:05 -05:00
} TextField {
2021-09-17 01:41:50 -05:00
id: max
Layout.fillWidth: true
2021-09-17 17:45:05 -05:00
text: Cpp_JSON_Editor.datasetWidgetMax(group, dataset)
2021-09-17 01:41:50 -05:00
visible: widget.currentIndex == 1 || widget.currentIndex == 2
2021-09-17 17:45:05 -05:00
onTextChanged: Cpp_JSON_Editor.setDatasetWidgetMax(group, dataset, text)
validator: DoubleValidator {
bottom: parseFloat(min.text)
}
}
//
// Vertical spacer
//
Item {
Layout.fillHeight: true
} Item {
Layout.fillHeight: true
2021-09-17 01:41:50 -05:00
}
}
}