2024-08-13 09:54:41 +08:00
|
|
|
import QtQuick
|
2024-08-13 20:06:10 +08:00
|
|
|
import QtQuick.Controls
|
2024-08-14 20:01:38 +08:00
|
|
|
import QtQuick.Layouts
|
2024-08-21 09:26:06 +08:00
|
|
|
import QtQuick.Dialogs
|
2024-08-13 20:06:10 +08:00
|
|
|
import AntiClipSettings
|
2024-08-13 09:54:41 +08:00
|
|
|
|
2024-08-13 20:06:10 +08:00
|
|
|
ApplicationWindow {
|
2024-08-21 09:26:06 +08:00
|
|
|
id: window
|
2024-08-16 16:24:15 +08:00
|
|
|
width: 1000
|
|
|
|
height: 640
|
2024-08-13 09:54:41 +08:00
|
|
|
visible: true
|
2024-08-21 16:03:49 +08:00
|
|
|
title: qsTr("T009上位机工具")
|
2024-08-13 20:06:10 +08:00
|
|
|
|
2024-08-14 20:01:38 +08:00
|
|
|
header: ToolBar {
|
|
|
|
RowLayout {
|
|
|
|
anchors.fill: parent
|
2024-08-21 16:03:49 +08:00
|
|
|
ToolButton {
|
2024-08-14 20:01:38 +08:00
|
|
|
text: "搜索设备"
|
2024-08-16 16:24:15 +08:00
|
|
|
onClicked: {
|
|
|
|
deviceList.currentIndex = -1
|
2024-08-21 09:26:06 +08:00
|
|
|
App.startSearchDevice()
|
2024-08-16 16:24:15 +08:00
|
|
|
}
|
2024-08-14 20:01:38 +08:00
|
|
|
}
|
2024-08-21 16:03:49 +08:00
|
|
|
Label {
|
2024-08-20 09:29:49 +08:00
|
|
|
text: `设备总数: ${deviceList.count}`
|
|
|
|
}
|
2024-08-21 16:03:49 +08:00
|
|
|
Label {
|
2024-08-14 20:01:38 +08:00
|
|
|
Layout.alignment: Qt.AlignRight
|
2024-08-21 16:03:49 +08:00
|
|
|
Layout.preferredWidth: 280
|
|
|
|
text: App.currentFirmware.length > 0 ? `当前设备版本号: ${App.currentFirmware}` : ""
|
2024-08-14 20:01:38 +08:00
|
|
|
}
|
2024-08-13 20:06:10 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-16 16:24:15 +08:00
|
|
|
ListView {
|
2024-08-13 20:06:10 +08:00
|
|
|
id: deviceList
|
|
|
|
anchors.top: parent.top
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
anchors.left: parent.left
|
2024-08-16 16:24:15 +08:00
|
|
|
width: 420
|
|
|
|
clip: true
|
|
|
|
model: App.devices
|
|
|
|
delegate: Rectangle {
|
|
|
|
width: deviceList.width
|
|
|
|
height: 40
|
|
|
|
color: ListView.isCurrentItem ? "#aaddff" : (index % 2 == 0 ? "#ffffff" : "#eeeeee")
|
|
|
|
Row {
|
|
|
|
anchors.fill: parent
|
|
|
|
spacing: 10
|
|
|
|
Text {
|
2024-08-20 09:29:49 +08:00
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
2024-08-16 16:24:15 +08:00
|
|
|
text: deviceId
|
|
|
|
}
|
|
|
|
Item {}
|
|
|
|
Text {
|
2024-08-20 09:29:49 +08:00
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
2024-08-16 16:24:15 +08:00
|
|
|
text: ip
|
|
|
|
}
|
2024-08-20 09:29:49 +08:00
|
|
|
Rectangle {
|
|
|
|
anchors.verticalCenter: parent.verticalCenter
|
2024-08-21 09:26:06 +08:00
|
|
|
color: onlineStatus ? "green" : "black"
|
2024-08-20 09:29:49 +08:00
|
|
|
width: 10
|
|
|
|
height: 10
|
|
|
|
radius: 5
|
|
|
|
}
|
2024-08-16 16:24:15 +08:00
|
|
|
}
|
|
|
|
MouseArea {
|
|
|
|
anchors.fill: parent
|
|
|
|
onClicked: {
|
|
|
|
deviceList.currentIndex = index
|
|
|
|
}
|
|
|
|
onDoubleClicked: {
|
|
|
|
networkPopup.open()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
onCurrentIndexChanged: {
|
2024-08-21 09:26:06 +08:00
|
|
|
// deviceVersion.text = App.devices.get(deviceList.currentIndex).softwareVersion;
|
2024-08-20 09:29:49 +08:00
|
|
|
App.connectToDevice(deviceList.currentIndex)
|
2024-08-16 16:24:15 +08:00
|
|
|
}
|
|
|
|
ProgressBar {
|
|
|
|
anchors.left: parent.left
|
|
|
|
anchors.right: parent.right
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
visible: App.devices.isSearching
|
|
|
|
from: 0
|
|
|
|
to: 100
|
|
|
|
value: App.devices.searchProgress
|
|
|
|
height: 25
|
|
|
|
}
|
2024-08-13 20:06:10 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
DeviceView {
|
|
|
|
anchors.top: parent.top
|
|
|
|
anchors.bottom: parent.bottom
|
|
|
|
anchors.left: deviceList.right
|
|
|
|
anchors.right: parent.right
|
2024-08-22 10:48:28 +08:00
|
|
|
enabled: App.currentDeviceConnected&&(deviceList.currentIndex >= 0)
|
2024-08-16 16:24:15 +08:00
|
|
|
openDoorAreaWay: App.currentOpenDoorAreaWay
|
2024-08-13 20:06:10 +08:00
|
|
|
openDoorAreaPoints: App.currentOpenDoorAreaPoints
|
2024-08-14 20:01:38 +08:00
|
|
|
shieldedAreaEnabled: App.currentShieldedAreaEnabled
|
|
|
|
shieldedAreaPoints: App.currentShieldedAreaPoints
|
|
|
|
antiClipAreaEnabled: App.currentAntiClipAreaEnabled
|
|
|
|
antiClipAreaPoints: App.currentAntiClipAreaPoints
|
|
|
|
}
|
|
|
|
|
2024-08-16 16:24:15 +08:00
|
|
|
NetworkSettingPopup {
|
|
|
|
id: networkPopup
|
|
|
|
visible: false
|
|
|
|
width: 500
|
|
|
|
}
|
|
|
|
|
2024-08-19 09:33:04 +08:00
|
|
|
OtaPopup {
|
|
|
|
id: otaPopup
|
|
|
|
}
|
|
|
|
|
2024-08-21 09:26:06 +08:00
|
|
|
FolderDialog {
|
|
|
|
id: folderDialog
|
|
|
|
onAccepted: {
|
|
|
|
App.collector.path = folderDialog.selectedFolder
|
|
|
|
App.collector.start(App.devices.get(deviceList.currentIndex).ip)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2024-08-14 20:01:38 +08:00
|
|
|
footer: RowLayout {
|
|
|
|
width: parent.width
|
|
|
|
Item {}
|
|
|
|
Button {
|
2024-08-21 09:26:06 +08:00
|
|
|
text: App.collector.enabled ? "停止采集" : "数据采集"
|
|
|
|
onClicked: {
|
|
|
|
if (App.collector.enabled) {
|
|
|
|
App.collector.stop()
|
|
|
|
} else {
|
|
|
|
if (deviceList.currentIndex < 0) {
|
|
|
|
showMessageDialog(2, "数据采集", "请先选择设备")
|
|
|
|
return
|
2024-08-22 10:48:28 +08:00
|
|
|
} else if(!App.currentDeviceConnected){
|
|
|
|
showMessageDialog(2, "数据采集", "设备已离线,请重新连接设备!")
|
|
|
|
return
|
2024-08-21 09:26:06 +08:00
|
|
|
}
|
|
|
|
if (App.collector.path.length <= 0) {
|
|
|
|
folderDialog.open()
|
|
|
|
} else {
|
|
|
|
App.collector.start(App.devices.get(
|
|
|
|
deviceList.currentIndex).ip)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2024-08-14 20:01:38 +08:00
|
|
|
}
|
|
|
|
Item {}
|
|
|
|
Button {
|
|
|
|
text: "升级"
|
2024-08-21 09:26:06 +08:00
|
|
|
onClicked: {
|
|
|
|
if (deviceList.currentIndex < 0) {
|
2024-08-22 10:48:28 +08:00
|
|
|
showMessageDialog(2, "OTA升级", "请先选择设备!")
|
|
|
|
return
|
|
|
|
}else if(!App.currentDeviceConnected){
|
|
|
|
showMessageDialog(2, "OTA升级", "设备已离线,请重新连接设备!")
|
2024-08-21 09:26:06 +08:00
|
|
|
return
|
|
|
|
}
|
|
|
|
otaPopup.open()
|
|
|
|
}
|
2024-08-14 20:01:38 +08:00
|
|
|
}
|
|
|
|
Item {}
|
|
|
|
spacing: (parent.width - (2 * 100)) / 3
|
2024-08-13 20:06:10 +08:00
|
|
|
}
|
2024-08-21 09:26:06 +08:00
|
|
|
|
|
|
|
function showMessageDialog(type, title, message) {
|
|
|
|
let component = Qt.createComponent("MessageDialog.qml")
|
|
|
|
if (component.status === Component.Ready) {
|
|
|
|
let dialog = component.createObject(window, {
|
|
|
|
"type": type,
|
|
|
|
"height": 200,
|
|
|
|
"titleText": title,
|
|
|
|
"text": message
|
|
|
|
})
|
|
|
|
dialog.open()
|
|
|
|
}
|
|
|
|
}
|
2024-08-22 10:48:28 +08:00
|
|
|
Connections {
|
|
|
|
target: App
|
|
|
|
function onNewMessage(type, title, message) {
|
|
|
|
showMessageDialog(type, title, message)
|
|
|
|
}
|
|
|
|
}
|
2024-08-13 09:54:41 +08:00
|
|
|
}
|