Files
gotify-tray-customized/venv/lib/python3.12/site-packages/PyQt6/Qt6/qml/QtQuick3D/LightmapperOutputWindow.qml
kdusek 5138303016
Some checks failed
build / build-win64 (push) Waiting to run
build / build-macos (push) Waiting to run
build / build-pip (push) Failing after 16s
Fix tray visibility and message reception issues
- Disable sound initialization to prevent hanging
- Add missing import re in utils.py
- Fix settings loading for QSettings
- Update file paths to use PROJECT_ROOT
- Revert to working API paths and listener from commit efdc63e
2025-12-07 22:39:07 +01:00

115 lines
3.1 KiB
QML

// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
pragma ComponentBehavior: Bound
import QtQuick
import QtQuick.Controls
import QtQuick.Layouts
Pane {
id: root
anchors.fill: parent
property double totalProgress: 0
property int totalTimeRemaining: -1
property string stage : "Preparing..."
function clearText() {
textArea.clear();
}
function update(payload) {
if ("message" in payload && typeof payload.message === "string" && payload.message) {
textArea.insert(textArea.length, payload.message + "\n");
}
if ("totalProgress" in payload && typeof payload.totalProgress === "number") {
root.totalProgress = payload.totalProgress;
}
if ("totalTimeRemaining" in payload && typeof payload.totalTimeRemaining === "number") {
root.totalTimeRemaining = payload.totalTimeRemaining;
}
if ("stage" in payload && typeof payload.stage === "string") {
root.stage = payload.stage;
}
}
function formatDuration(milliseconds, showMilliseconds = true) {
if (milliseconds < 0)
return " Estimating..."
const partSeconds = Math.floor(milliseconds / 1000) % 60;
const partMinutes = Math.floor(milliseconds / 60000) % 60;
const partHours = Math.floor(milliseconds / 3600000) % 60;
if (partHours > 0) {
return partHours + "h " + partMinutes + "m " + partSeconds + "s";
}
if (partMinutes > 0) {
return partMinutes + "m " + partSeconds + "s";
}
if (partSeconds > 0) {
return partSeconds + "s";
}
return "0s";
}
ColumnLayout {
anchors.fill: parent
RowLayout {
Label {
padding: 0
text: root.stage
}
Item {
Layout.fillWidth: true
}
Label {
padding: 0
text: (root.totalProgress * 100).toFixed(0) + "%"
}
}
ProgressBar {
Layout.fillWidth: true
value: root.totalProgress
}
RowLayout {
Label {
padding: 0
text: totalTimeRemaining > 0 ? "Remaining: " + root.formatDuration(root.totalTimeRemaining) : ""
}
Item {
Layout.fillWidth: true
}
}
Frame {
Layout.fillWidth: true
Layout.fillHeight: true
ScrollView {
width: parent.width
height: parent.height
id: scroll
TextArea {
id: textArea
width: parent.width
height: parent.height
readOnly: true
placeholderText: qsTr("Qt Lightmapper")
font.pixelSize: 12
wrapMode: Text.WordWrap
}
}
}
Button {
objectName: "cancelButton"
Layout.fillWidth: true
text: "Cancel"
}
}
}