aboutsummaryrefslogtreecommitdiffstats
path: root/demo/CommandsPage.qml
diff options
context:
space:
mode:
authorThomas Vanbesien <tvanbesi@proton.me>2026-03-16 16:19:49 +0100
committerThomas Vanbesien <tvanbesi@proton.me>2026-03-16 16:19:49 +0100
commitfa095de6cc8ec5a5b5c14091f2b3179ad7071876 (patch)
treeaa094011263a83a4c91eb8722c2095344656c838 /demo/CommandsPage.qml
parent7830f0ae98d742467b948ed93c85e122be38fb83 (diff)
downloadQtXpl2-fa095de6cc8ec5a5b5c14091f2b3179ad7071876.tar.gz
QtXpl2-fa095de6cc8ec5a5b5c14091f2b3179ad7071876.zip
EV_ events with Q_GADGET status types, mock periodic emission, tabbed demo UI
Diffstat (limited to 'demo/CommandsPage.qml')
-rw-r--r--demo/CommandsPage.qml183
1 files changed, 183 insertions, 0 deletions
diff --git a/demo/CommandsPage.qml b/demo/CommandsPage.qml
new file mode 100644
index 0000000..2e4437b
--- /dev/null
+++ b/demo/CommandsPage.qml
@@ -0,0 +1,183 @@
+pragma ComponentBehavior: Bound
+
+import QtQuick
+import QtQuick.Controls
+import QtQuick.Layouts
+import Xpl2
+
+ColumnLayout {
+ id: commandsPage
+
+ required property int demoPhCount
+ required property ListModel phModel
+
+ spacing: 12
+
+ // --- JC Version ---
+ GroupBox {
+ Layout.fillWidth: true
+ enabled: Xpl2Client.connected
+ title: "Jetting Controller"
+
+ RowLayout {
+ anchors.fill: parent
+
+ Button {
+ text: "Get JC Version"
+
+ onClicked: Xpl2Client.getJcVersion()
+ }
+
+ Label {
+ text: Xpl2Client.controllerId > 0
+ ? "Controller: %1 | FW: %2 | HW: %3 | PHs: %4".arg(
+ Xpl2Client.controllerId).arg(
+ Xpl2Client.firmwareVersion).arg(
+ Xpl2Client.hardwareVersion).arg(
+ Xpl2Client.printheadCount) : "No version data"
+ }
+ }
+ }
+
+ // --- Control ---
+ GroupBox {
+ Layout.fillWidth: true
+ enabled: Xpl2Client.connected
+ title: "Control"
+
+ GridLayout {
+ anchors.fill: parent
+ columns: 4
+
+ Button {
+ text: "Jetting All On"
+
+ onClicked: Xpl2Client.jettingAllOn()
+ }
+
+ Button {
+ text: "Jetting Off"
+
+ onClicked: Xpl2Client.jettingOff()
+ }
+
+ Button {
+ text: "JC LED On"
+
+ onClicked: Xpl2Client.jcIdLedOn()
+ }
+
+ Button {
+ text: "JC LED Off"
+
+ onClicked: Xpl2Client.jcIdLedOff()
+ }
+
+ Button {
+ text: "JC Calibration"
+
+ onClicked: Xpl2Client.jcCalibration()
+ }
+
+ Button {
+ text: "Reset Fault Codes"
+
+ onClicked: Xpl2Client.jcResetFaultCodes()
+ }
+ }
+ }
+
+ // --- Configuration ---
+ GroupBox {
+ Layout.fillWidth: true
+ enabled: Xpl2Client.connected
+ title: "Configuration"
+
+ GridLayout {
+ anchors.fill: parent
+ columns: 4
+
+ Button {
+ text: "Save All Settings"
+
+ onClicked: Xpl2Client.jcSaveAllPrintheadSettings()
+ }
+
+ Button {
+ text: "Reboot All PHs"
+
+ onClicked: Xpl2Client.jcRebootAllPrintheads()
+ }
+
+ Button {
+ text: "Restart JC"
+
+ onClicked: Xpl2Client.jcRestart()
+ }
+
+ Button {
+ text: "Shutdown JC"
+
+ onClicked: Xpl2Client.jcShutdown()
+ }
+ }
+ }
+
+ // --- Printheads ---
+ GroupBox {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+ enabled: Xpl2Client.connected
+ title: "Printheads (%1)".arg(commandsPage.demoPhCount)
+
+ ColumnLayout {
+ anchors.fill: parent
+
+ Button {
+ text: "Get All PH Versions"
+
+ onClicked: {
+ for (let i = 0; i < commandsPage.phModel.count; ++i)
+ Xpl2Client.getPhVersion(commandsPage.phModel.get(i).phId);
+ }
+ }
+
+ ScrollView {
+ Layout.fillHeight: true
+ Layout.fillWidth: true
+
+ ListView {
+ model: commandsPage.phModel
+ spacing: 4
+
+ delegate: RowLayout {
+ id: phDelegate
+
+ required property int phId
+ required property string versionInfo
+
+ width: ListView.view.width
+
+ Label {
+ Layout.preferredWidth: 50
+ font.bold: true
+ text: "PH %1".arg(phDelegate.phId)
+ }
+
+ Button {
+ text: "Version"
+
+ onClicked: Xpl2Client.getPhVersion(phDelegate.phId)
+ }
+
+ Label {
+ Layout.fillWidth: true
+ elide: Text.ElideRight
+ text: phDelegate.versionInfo || "—"
+ }
+ }
+ }
+ }
+ }
+ }
+}