aboutsummaryrefslogtreecommitdiffstats
path: root/demo/Main.qml
blob: db015e3a4617e855fda8a18c7a792e8a0466fe4d (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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
pragma ComponentBehavior: Bound

import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
import Xpl2

ApplicationWindow {
    id: root

    height: 600
    title: "XPL2 Demo"
    visible: true
    width: 800

    Connections {
        function onConnectedChanged() {
            debugConsole.appendLog(Xpl2Client.connected ? "Connected" :
                                                          "Disconnected");
        }

        function onErrorOccurred(error: string) {
            debugConsole.appendLog("ERROR: " + error);
        }

        function onStatusMessage(message: string) {
            debugConsole.appendLog(message);
        }

        target: Xpl2Client
    }

    ColumnLayout {
        anchors.fill: parent
        spacing: 0

        ColumnLayout {
            Layout.fillHeight: true
            Layout.fillWidth: true
            Layout.margins: 16
            spacing: 12

            // --- Connection ---
            GroupBox {
                Layout.fillWidth: true
                title: "Connection"

                RowLayout {
                    anchors.fill: parent

                    Label {
                        text: "Host:"
                    }

                    TextField {
                        id: hostField

                        Layout.fillWidth: true
                        text: Xpl2Client.host

                        onEditingFinished: Xpl2Client.host = text
                    }

                    Button {
                        text: Xpl2Client.connected ? "Disconnect" : "Connect"

                        onClicked: {
                            if (Xpl2Client.connected)
                            Xpl2Client.disconnectFromServer();
                            else
                            Xpl2Client.connectToServer();
                        }
                    }
                }
            }

            // --- Protocol Commands ---
            GroupBox {
                Layout.fillWidth: true
                enabled: Xpl2Client.connected
                title: "Protocol Commands"

                ColumnLayout {
                    anchors.fill: parent

                    RowLayout {
                        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"
                        }
                    }
                }
            }

            // --- Spacer ---
            Item {
                Layout.fillHeight: true
            }
        }

        // --- Debug Console ---
        Rectangle {
            id: debugConsole

            function appendLog(msg: string): void {
                let ts = new Date().toLocaleTimeString(Qt.locale(),
                                                       "HH:mm:ss.zzz");
                debugLog.text += "[" + ts + "] " + msg + "\n";
                debugLog.cursorPosition = debugLog.text.length;
            }

            Layout.fillWidth: true
            Layout.preferredHeight: 160
            border.color: "#444"
            color: "#1e1e1e"
            radius: 4

            ScrollView {
                anchors.fill: parent
                anchors.margins: 4

                TextArea {
                    id: debugLog

                    background: null
                    color: "#cccccc"
                    font.family: "monospace"
                    font.pointSize: 9
                    readOnly: true
                    wrapMode: TextEdit.Wrap
                }
            }
        }
    }
}