Files
tactileipc3d/qml/content/ControlPanel.qml
2025-12-18 09:19:39 +08:00

132 lines
4.4 KiB
QML

import QtQuick
import QtQuick3D
import QtQuick.Controls.Material
import QtQuick.Controls
import QtQuick.Layouts
import QtQml
import "."
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: qsTr("Dark mode")
}
GroupBox {
title: qsTr("Render")
Layout.fillWidth: true
ColumnLayout {
anchors.fill: parent
spacing: 10
RowLayout {
Layout.fillWidth: true
Label { text: 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: 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: qsTr("Legend")
checked: backend.showLegend
onCheckedChanged: backend.showLegend = checked
}
}
}
GroupBox {
title: qsTr("Scale")
Layout.fillWidth: true
ColumnLayout {
anchors.fill: parent
spacing: 10
RowLayout {
Layout.fillWidth: true
Label { text: 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: 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 }
}
}