解决部分BUG。
This commit is contained in:
parent
66c187ed1c
commit
f4c6a048f5
@ -17,7 +17,7 @@ Application::Application(int &argc, char **argv)
|
||||
font.setPointSize(16);
|
||||
m_app->setFont(font);
|
||||
m_app->setApplicationName(APPLICATION_NAME);
|
||||
m_app->setApplicationVersion(QString("v%1_%2 build: %3 %4").arg(APP_VERSION, GIT_COMMIT_ID, __DATE__, __TIME__));
|
||||
m_app->setApplicationVersion(QString("v%1").arg(APP_VERSION));
|
||||
m_player->open();
|
||||
}
|
||||
|
||||
@ -145,8 +145,12 @@ void Application::updateNetworkInfomation(bool dhcp, const QString &ip, const QS
|
||||
const QString &dns) {
|
||||
if (!m_device.expired()) {
|
||||
auto device = m_device.lock();
|
||||
if (device->isConnected()) {
|
||||
device->updateNetworkInfomation(dhcp, ip, netmask, gateway, dns);
|
||||
emit newMessage(1, "网络设置", "设置成功,请等待设备重新上线!");
|
||||
} else {
|
||||
emit newMessage(2, "网络设置", "设备已离线!");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1,7 +1,7 @@
|
||||
cmake_minimum_required(VERSION 3.16)
|
||||
|
||||
project(AntiClipSettings VERSION 0.1 LANGUAGES C CXX)
|
||||
set(APPLICATION_NAME "T009")
|
||||
project(AntiClipSettings VERSION 1.1 LANGUAGES C CXX)
|
||||
set(APPLICATION_NAME "T009上位机工具")
|
||||
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
@ -9,6 +9,9 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(Projects_ROOT E:/Projects)
|
||||
set(Libraries_ROOT ${Projects_ROOT}/Libraries)
|
||||
|
||||
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Qml Quick Network QuickControls2)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Qml Quick Network QuickControls2)
|
||||
|
||||
if (Qt6_FOUND)
|
||||
qt_standard_project_setup(REQUIRES 6.5)
|
||||
set(BOOST_ROOT ${Libraries_ROOT}/boost_1_86_0_msvc2022_64bit)
|
||||
@ -29,8 +32,6 @@ set(FFmpeg_INCLUDE_DIR ${FFmpeg_ROOT}/include)
|
||||
set(FFmpeg_LIB_DIR ${FFmpeg_ROOT}/lib)
|
||||
|
||||
find_package(Boost REQUIRED COMPONENTS json)
|
||||
find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Qml Quick Network QuickControls2)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Qml Quick Network QuickControls2)
|
||||
|
||||
execute_process(
|
||||
COMMAND D:/msys64/usr/bin/git rev-parse --short HEAD
|
||||
|
@ -37,7 +37,7 @@ void DataCollection::setPath(const QString &path) {
|
||||
if (m_path != p) {
|
||||
m_path = p;
|
||||
emit pathChanged();
|
||||
LOG(info) << "set data path: " << m_path.toStdWString();
|
||||
LOG(info) << "set data path: " << m_path.toStdString();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -600,6 +600,7 @@ void DeviceConnection::onDisconnected() {
|
||||
m_otaProgress = -1;
|
||||
emit otaProgressChanged(false, m_otaProgress, "网络断开,设备升级失败!");
|
||||
}
|
||||
m_h264Socket->close();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -99,6 +99,14 @@ std::shared_ptr<DeviceConnection> DeviceListModel::device(int index) {
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool DeviceListModel::deviceConnected(int index) {
|
||||
bool ret = false;
|
||||
if (index >= 0 && index < m_devices.size()) {
|
||||
ret = m_devices.at(index)->isConnected();
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
void DeviceListModel::startSearchDevice() {
|
||||
if (m_timerId >= 0) {
|
||||
LOG(error) << "app is searching device.";
|
||||
|
@ -31,6 +31,7 @@ public:
|
||||
QHash<int, QByteArray> roleNames() const final;
|
||||
Q_INVOKABLE QVariantMap get(int index) const;
|
||||
std::shared_ptr<DeviceConnection> device(int index);
|
||||
Q_INVOKABLE bool deviceConnected(int index);
|
||||
void startSearchDevice();
|
||||
bool isSearching() const;
|
||||
float searchProgress() const;
|
||||
|
@ -7,7 +7,7 @@ Item {
|
||||
id: root
|
||||
property alias enabled: shieldedRow.enabled
|
||||
property int dargWidth: 12
|
||||
property color openDoorAreaColor: "green"
|
||||
property color openDoorAreaColor: "#0FF40D" // 绿色
|
||||
property var openDoorAreaPoints: []
|
||||
property int openDoorAreaWay: 0
|
||||
property color shieldedAreaColor: "yellow"
|
||||
|
@ -7,6 +7,7 @@ Column {
|
||||
property alias text: input.text
|
||||
property bool valid: false
|
||||
property bool canEmpty: false
|
||||
property var regularExpression : /^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/
|
||||
TextField {
|
||||
height: 36
|
||||
width: 350
|
||||
@ -30,8 +31,7 @@ Column {
|
||||
root.valid = root.canEmpty
|
||||
return root.valid
|
||||
}
|
||||
var regex = /^(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/
|
||||
root.valid = regex.test(input.text)
|
||||
root.valid = root.regularExpression.test(input.text)
|
||||
if (!root.valid) {
|
||||
hint.text = "参数配置无效"
|
||||
} else {
|
||||
|
64
qml/Main.qml
64
qml/Main.qml
@ -1,22 +1,20 @@
|
||||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Layouts 1.15
|
||||
import QtQuick.Dialogs
|
||||
import AntiClipSettings 1.0
|
||||
import Qt.labs.platform 1.1 as Labs
|
||||
|
||||
|
||||
ApplicationWindow {
|
||||
id: window
|
||||
width: 1000
|
||||
height: 640
|
||||
visible: true
|
||||
title: qsTr("T009上位机工具")
|
||||
title: qsTr(Qt.application.name + " " + Qt.application.version)
|
||||
|
||||
header: ToolBar {
|
||||
RowLayout {
|
||||
anchors.fill: parent
|
||||
ToolButton {
|
||||
Button {
|
||||
Material.background: Material.Blue
|
||||
text: "搜索设备"
|
||||
onClicked: {
|
||||
deviceList.currentIndex = -1
|
||||
@ -42,6 +40,12 @@ ApplicationWindow {
|
||||
width: 420
|
||||
clip: true
|
||||
model: App.devices
|
||||
Label {
|
||||
id: emptyHint
|
||||
visible: false
|
||||
anchors.centerIn: parent
|
||||
text: qsTr("未搜索到设备")
|
||||
}
|
||||
delegate: Rectangle {
|
||||
width: deviceList.width
|
||||
height: 40
|
||||
@ -72,7 +76,11 @@ ApplicationWindow {
|
||||
deviceList.currentIndex = index
|
||||
}
|
||||
onDoubleClicked: {
|
||||
if(App.devices.deviceConnected(index)){
|
||||
networkPopup.open()
|
||||
} else {
|
||||
showMessageDialog(2, "网络设置", "设备已离线!")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -97,7 +105,7 @@ ApplicationWindow {
|
||||
anchors.bottom: parent.bottom
|
||||
anchors.left: deviceList.right
|
||||
anchors.right: parent.right
|
||||
enabled: App.currentDeviceConnected&&(deviceList.currentIndex >= 0)
|
||||
enabled: App.currentDeviceConnected && (deviceList.currentIndex >= 0)
|
||||
openDoorAreaWay: App.currentOpenDoorAreaWay
|
||||
openDoorAreaPoints: App.currentOpenDoorAreaPoints
|
||||
shieldedAreaEnabled: App.currentShieldedAreaEnabled
|
||||
@ -116,14 +124,6 @@ ApplicationWindow {
|
||||
id: otaPopup
|
||||
}
|
||||
|
||||
Labs.FolderDialog {
|
||||
id: folderDialog
|
||||
onAccepted: {
|
||||
App.collector.path = folderDialog.selectedFolder
|
||||
App.collector.start(App.devices.get(deviceList.currentIndex).ip)
|
||||
}
|
||||
}
|
||||
|
||||
footer: RowLayout {
|
||||
width: parent.width
|
||||
Item {}
|
||||
@ -136,12 +136,15 @@ ApplicationWindow {
|
||||
if (deviceList.currentIndex < 0) {
|
||||
showMessageDialog(2, "数据采集", "请先选择设备")
|
||||
return
|
||||
} else if(!App.currentDeviceConnected){
|
||||
} else if (!App.currentDeviceConnected) {
|
||||
showMessageDialog(2, "数据采集", "设备已离线,请重新连接设备!")
|
||||
return
|
||||
}
|
||||
if (App.collector.path.length <= 0) {
|
||||
folderDialog.open()
|
||||
showFolderDialog((folder)=>{
|
||||
App.collector.path = folder
|
||||
App.collector.start(App.devices.get(deviceList.currentIndex).ip)
|
||||
})
|
||||
} else {
|
||||
App.collector.start(App.devices.get(
|
||||
deviceList.currentIndex).ip)
|
||||
@ -156,7 +159,7 @@ ApplicationWindow {
|
||||
if (deviceList.currentIndex < 0) {
|
||||
showMessageDialog(2, "OTA升级", "请先选择设备!")
|
||||
return
|
||||
}else if(!App.currentDeviceConnected){
|
||||
} else if (!App.currentDeviceConnected) {
|
||||
showMessageDialog(2, "OTA升级", "设备已离线,请重新连接设备!")
|
||||
return
|
||||
}
|
||||
@ -179,10 +182,37 @@ ApplicationWindow {
|
||||
dialog.open()
|
||||
}
|
||||
}
|
||||
|
||||
function showFolderDialog(onSelected){
|
||||
var dialog = Qt.createQmlObject("import QtQuick.Dialogs; FolderDialog {}",window,"myDynamicSnippet");
|
||||
if (dialog) {
|
||||
dialog.visible = true;
|
||||
dialog.accepted.connect(function() {
|
||||
onSelected(dialog.selectedFolder)
|
||||
dialog.destroy();
|
||||
});
|
||||
dialog.rejected.connect(function() {
|
||||
dialog.destroy();
|
||||
});
|
||||
} else {
|
||||
console.error("Failed to create FolderDialog object");
|
||||
}
|
||||
}
|
||||
|
||||
Connections {
|
||||
target: App
|
||||
function onNewMessage(type, title, message) {
|
||||
showMessageDialog(type, title, message)
|
||||
}
|
||||
}
|
||||
Connections {
|
||||
target: App.devices
|
||||
function onIsSearchingChanged() {
|
||||
if (App.devices.isSearching) {
|
||||
emptyHint.visible = false
|
||||
} else if (!App.devices.isSearching && (App.devices.rowCount() <= 0)) {
|
||||
emptyHint.visible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -15,6 +15,10 @@ Popup {
|
||||
}
|
||||
contentItem: ColumnLayout {
|
||||
anchors.centerIn: parent
|
||||
Label {
|
||||
Layout.alignment: Qt.AlignCenter
|
||||
text: "有线网络设置"
|
||||
}
|
||||
|
||||
Row {
|
||||
spacing: 10
|
||||
@ -59,6 +63,7 @@ Popup {
|
||||
height: inputHeight
|
||||
width: 350
|
||||
text: App.currentNetworkInfomation.ip
|
||||
regularExpression: /^(22[0-3]|2[01][0-9]|1[0-9]{2}|[1-9][0-9]?|1[0-9]{2})\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/;
|
||||
}
|
||||
}
|
||||
|
||||
@ -101,6 +106,7 @@ Popup {
|
||||
width: 350
|
||||
height: inputHeight
|
||||
text: App.currentNetworkInfomation.gateway
|
||||
regularExpression: /^(22[0-3]|2[01][0-9]|1[0-9]{2}|[1-9][0-9]?|1[0-9]{2})\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])$/;
|
||||
canEmpty: true
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user