C
Event Sender: Sending Messages to Applications
// Copyright (C) 2025 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial // This file is part of the Qt Safe Renderer module import QtQuick import QtQuick.Controls Item { id: connectionItem width: 120 height: 35 y: 325 property bool connectionState: clusterDataControl.connectionBool property var telltalesHostPort: clusterDataControl.TELLTALES_HOST_PORT property var clusterPort: clusterDataControl.CLUSTER_PORT RegularExpressionValidator { id: ipValidator regularExpression: /^(\d{1,3}\.){3}\d{1,3}$/ } TextField { id: ipField y: 10 width: connectionItem.width - 20 height: 25 font.pixelSize: 13 text: hostName placeholderText: "127.0.0.1" inputMethodHints: Qt.ImhNoPredictiveText // Disable auto-correction validator: ipValidator anchors.top: parent.top } TextField { id: portField y: ipField.bottom + 10 width: connectionItem.width - 20 height: 25 font.pixelSize: 13 text: backend.selectedExample === 0 ? clusterDataControl.telltalesHostPort : clusterDataControl.clusterPort inputMethodHints: Qt.ImhDigitsOnly validator: IntValidator { bottom: 0; top: 65535 } anchors.top: ipField.bottom } QtObject { id: backend property int selectedExample: 0 property string selectedExampleText: "Telltales" } ComboBox { id: exampleComboBox width: connectionItem.width - 30 height: 30 y: -30 model: ["Telltales", "Qt Cluster"] currentIndex: backend.selectedExample onCurrentIndexChanged: { backend.selectedExample = currentIndex; backend.selectedExampleText = currentText; portField.text = currentIndex === 0 ? clusterDataControl.telltalesHostPort : clusterDataControl.clusterPort; updateStatusTextAndColor(); } } Button { id: connectButton x: 100 y: portField.right + 10 width: connectionItem.width - 20 height: ipField.height + portField.height text: "Connect" enabled: ipField.acceptableInput && portField.acceptableInput onClicked: { clusterDataControl.establishConnection(ipField.text, portField.text) } } Text { id: statusValueText y: -24 x: 105 width: 80 height: 30 text: "Not Connected" font.pixelSize: 14 horizontalAlignment: Text.AlignHCenter color: "#e41e25" } function updateStatusTextAndColor() { var telltalesState = clusterDataControl.telltalesConnectionState; var clusterState = clusterDataControl.clusterConnectionState; var selectedExample = backend.selectedExample; if (selectedExample === 0) { // Telltales if (telltalesState === 2) { // Connected statusValueText.text = "Connected"; statusValueText.color = "#41cd52"; } else if (telltalesState === 1) { // Connecting statusValueText.text = "Connecting.."; statusValueText.color = "blue"; } else { // Disconnected statusValueText.text = "Not Connected"; statusValueText.color = "#e41e25"; } } else if (selectedExample === 1) { // Qt Cluster if (clusterState === 2) { // Connected statusValueText.text = "Connected"; statusValueText.color = "#41cd52"; } else if (clusterState === 1) { // Connecting statusValueText.text = "Connecting.."; statusValueText.color = "blue"; } else { // Disconnected statusValueText.text = "Not Connected"; statusValueText.color = "#e41e25"; } } } Component.onCompleted: { clusterDataControl.telltalesConnectionStateChanged.connect(updateStatusTextAndColor); clusterDataControl.clusterConnectionStateChanged.connect(updateStatusTextAndColor); updateStatusTextAndColor(); } Connections { target: clusterDataControl function onTelltalesConnectionStateChanged() { updateStatusTextAndColor(); } function onClusterConnectionStateChanged() { updateStatusTextAndColor(); } } }