| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- // 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"
- }
- }
- }
|