Files
Button/qml/settings/UpdatePage.qml
T
2026-06-17 04:55:15 +03:00

93 lines
3.2 KiB
QML

import QtQuick 2.12
import QtQuick.Controls 2.12
import QtQuick.Layouts 1.12
import "../components"
Item {
id: page
property var status: ({ state: "idle" })
function stateText(s) {
switch (s) {
case "staging": return "Распаковка пакета…"
case "switching": return "Переключение версии…"
case "health_check": return "Проверка работоспособности…"
case "success": return "Обновление успешно применено"
case "rolledback": return "Запуск новой версии не удался — выполнен откат"
case "rollback_done": return "Откат выполнен"
case "error": return "Ошибка обновления"
default: return "Готово к обновлению"
}
}
function reload() {
status = systemInfo.updateStatus()
systemInfo.refresh()
}
Component.onCompleted: reload()
Timer {
interval: 2500
running: true
repeat: true
onTriggered: page.reload()
}
ColumnLayout {
anchors.fill: parent
anchors.margins: 8
spacing: 12
RowLayout {
Layout.fillWidth: true
Button { text: "\u2190 Назад"; onClicked: page.StackView.view.pop() }
Label {
Layout.fillWidth: true
text: "Обновление ПО"
font.bold: true
font.pixelSize: 16
color: settingsContainer.darkMode ? "white" : "black"
horizontalAlignment: Text.AlignHCenter
}
Button { text: "\u21BB"; onClicked: page.reload() }
}
Text {
Layout.fillWidth: true
text: "Текущая версия: " + systemInfo.currentVersion
color: settingsContainer.darkMode ? "white" : "black"
font.pixelSize: 14
}
Rectangle {
Layout.fillWidth: true
Layout.preferredHeight: stTxt.implicitHeight + 20
radius: 6
color: settingsContainer.darkMode ? "#40222c58" : "#40ffffff"
border.color: settingsContainer.darkMode ? "#80ffffff" : "#80000000"
border.width: 1
Text {
id: stTxt
anchors.fill: parent
anchors.margins: 10
text: "Статус: " + page.stateText(page.status.state)
+ (page.status.message ? "\n" + page.status.message : "")
color: settingsContainer.darkMode ? "white" : "black"
wrapMode: Text.Wrap
}
}
Text {
Layout.fillWidth: true
text: "Загрузка нового пакета ПО выполняется через веб-конфигуратор. После применения выполняется проверка запуска; при ошибке произойдёт автоматический откат на предыдущую версию."
color: settingsContainer.darkMode ? "#cccccc" : "#444444"
font.pixelSize: 12
wrapMode: Text.Wrap
}
Item { Layout.fillHeight: true }
}
}