import QtQuick import QtQuick.Controls.Material import QtQuick.Controls import QtQuick.Layouts import QtQml import "." import TactileIPC 1.0 Pane { id: root Material.theme: darkModeToggle.checked ? Material.Dark : Material.Light Material.accent: Material.Green leftPadding: 18 rightPadding: 18 topPadding: 18 bottomPadding: 18 ColumnLayout { anchors.fill: parent spacing: 14 Toggle { id: darkModeToggle text: Qt.binding(function() { I18n.retranslateToken return qsTr("Dark mode") }) } GroupBox { title: Qt.binding(function() { I18n.retranslateToken return qsTr("Render") }) Layout.fillWidth: true ColumnLayout { anchors.fill: parent spacing: 10 RowLayout { Layout.fillWidth: true Label { text: Qt.binding(function() { I18n.retranslateToken return qsTr("Mode") }) Layout.alignment: Qt.AlignVCenter } ComboBox { id: renderModeBox Layout.fillWidth: true model: ["dataViz", "realistic"] Component.onCompleted: currentIndex = Backend.renderMode === "realistic" ? 1 : 0 onActivated: Backend.renderMode = currentText Connections { target: Backend function onRenderModeChanged() { renderModeBox.currentIndex = Backend.renderMode === "realistic" ? 1 : 0 } } } } RowLayout { Layout.fillWidth: true Label { text: Qt.binding(function() { I18n.retranslateToken return qsTr("Labels") }) Layout.alignment: Qt.AlignVCenter } ComboBox { id: labelModeBox Layout.fillWidth: true model: ["off", "hover", "always"] Component.onCompleted: { if (Backend.labelMode === "always") labelModeBox.currentIndex = 2 else if (Backend.labelMode === "hover") labelModeBox.currentIndex = 1 else labelModeBox.currentIndex = 0 } onActivated: Backend.labelMode = currentText Connections { target: Backend function onLabelModeChanged() { if (Backend.labelMode === "always") labelModeBox.currentIndex = 2 else if (Backend.labelMode === "hover") labelModeBox.currentIndex = 1 else labelModeBox.currentIndex = 0 } } } } Toggle { id: legendToggle text: Qt.binding(function() { I18n.retranslateToken return qsTr("Legend") }) checked: Backend.showLegend onCheckedChanged: Backend.showLegend = checked } } } GroupBox { title: Qt.binding(function() { I18n.retranslateToken return qsTr("Scale") }) Layout.fillWidth: true ColumnLayout { anchors.fill: parent spacing: 10 RowLayout { Layout.fillWidth: true Label { text: Qt.binding(function() { I18n.retranslateToken return qsTr("Min") }) Layout.alignment: Qt.AlignVCenter } SpinBox { id: minBox Layout.fillWidth: true from: -999999 to: 999999 value: Backend.minValue onValueModified: Backend.minValue = value } } RowLayout { Layout.fillWidth: true Label { text: Qt.binding(function() { I18n.retranslateToken return qsTr("Max") }) Layout.alignment: Qt.AlignVCenter } SpinBox { id: maxBox Layout.fillWidth: true from: -999999 to: 999999 value: Backend.maxValue onValueModified: Backend.maxValue = value } } Legend { Layout.alignment: Qt.AlignHCenter visible: Backend.showLegend minValue: Backend.minValue maxValue: Backend.maxValue } } } Item { Layout.fillHeight: true } } }