import QtCore import QtQuick import QtQuick.Controls import QtQuick.Layouts import QtQuick.Dialogs import Analyser Popup { id: root parent: Overlay.overlay anchors.centerIn: Overlay.overlay width: 500 height: 200 modal: true focus: true closePolicy: Popup.CloseOnEscape property var onClose ColumnLayout { anchors.fill: parent anchors.margins: 10 spacing: 10 RowLayout { Layout.alignment: Qt.AlignRight Button { text: "关闭" onClicked: root.close() } } RowLayout { spacing: 10 TextField { id: otaFile Layout.fillWidth: true placeholderText: "请选择升级文件或将文件拖入工具中" } Button { text: "选择" onClicked: fileDialog.open() } } RowLayout { spacing: 10 ProgressBar { id: progressBar Layout.fillWidth: true from: 0 to: 100 value: 0.0 } Text { id: progressText text: "0%" verticalAlignment: Text.AlignVCenter } } RowLayout { Text { id: otaMessage text: "请选择升级文件,点击开始按钮升级模组" wrapMode: Text.Wrap horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter Layout.fillWidth: true } Button { text: "开始" Layout.alignment: Qt.AlignRight onClicked: { otaMessage.color = "black" enabled = !App.startOta(otaFile.text) } } } } onClosed: { if (onClose) onClose() } FileDialog { id: fileDialog nameFilters: ["OTA文件 (*.Pkg)"] currentFolder: StandardPaths.standardLocations( StandardPaths.DesktopLocation)[0] onAccepted: { var fileUrl = fileDialog.selectedFile.toString() var localFilePath = fileUrl.startsWith( "file:///") ? fileUrl.substring(8) : fileUrl otaFile.text = localFilePath } } Connections { target: App function onUpdateFinished() { otaMessage.text = "OTA升级完成" otaMessage.color = "green" } function onOtaMessage(message) { otaMessage.text = message } function onOtaProgressChanged(progress) { progressBar.value = progress progressText.text = `${progress}%` } } }