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 = "请选择升级文件,点击开始按钮升级模组"
        }
    }
}