import QtQuick 2.15 import QtQuick.Controls 2.15 import QtQuick.Layouts 1.15 import AntiClipSettings 1.0 Popup { id: root parent: Overlay.overlay anchors.centerIn: Overlay.overlay width: 540 height: 260 modal: true focus: true closePolicy: Popup.CloseOnEscape property bool otaFinished: true property var onClose ColumnLayout { anchors.fill: parent anchors.margins: 10 spacing: 10 RowLayout { Layout.alignment: Qt.AlignRight IconButton { source: "../resources/popup_close.svg" onClicked: { if (otaFinished) { root.close() } else { showMessageDialog(2, "OTA升级", "设备正在升级中,请耐心等待...") } } } } RowLayout { spacing: 10 TextField { id: otaFile Layout.fillWidth: true readOnly: true placeholderText: "请选择升级bin文件" } Button { enabled: otaFinished text: "选择" onClicked: showFileDialog(["OTA文件 (*.bin)"],(path)=>{ otaFile.text = path }) } } RowLayout { spacing: 10 ProgressBar { id: progressBar Layout.fillWidth: true from: 0 to: 100 value: 0.0 } Label { id: progressText text: "0%" verticalAlignment: Text.AlignVCenter } } RowLayout { Label { id: otaMessage text: "请选择升级文件,点击开始按钮升级模组" wrapMode: Text.Wrap horizontalAlignment: Text.AlignHCenter verticalAlignment: Text.AlignVCenter Layout.fillWidth: true } Button { enabled: otaFinished text: "开始" Layout.alignment: Qt.AlignRight onClicked: { otaMessage.color = "black" App.upgradeDevice(otaFile.text) } } } } onClosed: { if (onClose) onClose() } Connections { target: App function onCurrentDeviceOtaProgressChanged(status, progress, message) { if (progress < 0) progress = 0 otaFinished = !status || (progress >= 100) progressBar.value = progress progressText.text = `${progress}%` otaMessage.text = message if (progress >= 100) { otaMessage.color = "green" } } } onVisibleChanged: { if (!visible) { progressBar.value = 0 otaMessage.color = "black" progressText.text = "0%" otaMessage.text = "请选择升级文件,点击开始按钮升级模组" } } }