Welcome to mirror list, hosted at ThFree Co, Russian Federation.

MonitorPrintJobProgressBar.qml « qml « resources « UM3NetworkPrinting « plugins - github.com/Ultimaker/Cura.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 5a8a0a42b15faf6a5f95ee9ee52aee05ec2f7876 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// Copyright (c) 2019 Ultimaker B.V.
// Cura is released under the terms of the LGPLv3 or higher.

import QtQuick 2.3
import QtQuick.Controls.Styles 1.3
import QtQuick.Controls 1.4
import UM 1.3 as UM

/**
 * NOTE: For most labels, a fixed height with vertical alignment is used to make
 * layouts more deterministic (like the fixed-size textboxes used in original
 * mock-ups). This is also a stand-in for CSS's 'line-height' property. Denoted
 * with '// FIXED-LINE-HEIGHT:'.
 */
Item
{
    id: base

    // The print job which all other information is derived from
    property var printJob: null

    width: childrenRect.width
    height: UM.Theme.getSize("monitor_text_line").height

    UM.ProgressBar
    {
        id: progressBar
        anchors
        {
            verticalCenter: parent.verticalCenter
            left: parent.left
        }
        value: printJob ? printJob.progress : 0
        width: UM.Theme.getSize("monitor_progress_bar").width
    }

    Label
    {
        id: percentLabel
        anchors
        {
            left: progressBar.right
            leftMargin: UM.Theme.getSize("monitor_margin").width
            verticalCenter: parent.verticalCenter
        }
        text: printJob ? Math.round(printJob.progress * 100) + "%" : "0%"
        color: printJob && printJob.isActive ? UM.Theme.getColor("text") : UM.Theme.getColor("monitor_text_disabled")
        width: contentWidth
        font: UM.Theme.getFont("default") // 12pt, regular

        // FIXED-LINE-HEIGHT:
        height: UM.Theme.getSize("monitor_text_line").height
        verticalAlignment: Text.AlignVCenter
        renderType: Text.NativeRendering
    }
    Label
    {
        id: statusLabel
        anchors
        {
            left: percentLabel.right
            leftMargin: UM.Theme.getSize("monitor_margin").width
            verticalCenter: parent.verticalCenter
        }
        color: UM.Theme.getColor("text")
        font: UM.Theme.getFont("default")
        text:
        {
            if (!printJob)
            {
                return "";
            }
            switch (printJob.state)
            {
                case "wait_cleanup":
                    if (printJob.timeTotal > printJob.timeElapsed)
                    {
                        return catalog.i18nc("@label:status", "Aborted");
                    }
                    return catalog.i18nc("@label:status", "Finished");
                case "finished":
                    return catalog.i18nc("@label:status", "Finished");
                case "sent_to_printer":
                    return catalog.i18nc("@label:status", "Preparing...");
                case "pre_print":
                    return catalog.i18nc("@label:status", "Preparing...");
                case "aborting": // NOTE: Doesn't exist but maybe should someday
                    return catalog.i18nc("@label:status", "Aborting...");
                case "aborted": // NOTE: Unused, see above
                    return catalog.i18nc("@label:status", "Aborted");
                case "pausing":
                    return catalog.i18nc("@label:status", "Pausing...");
                case "paused":
                    return catalog.i18nc("@label:status", "Paused");
                case "resuming":
                    return catalog.i18nc("@label:status", "Resuming...");
                case "queued":
                    return catalog.i18nc("@label:status", "Action required");
                default:
                    return catalog.i18nc("@label:status", "Finishes %1 at %2".arg(OutputDevice.getDateCompleted(printJob.timeRemaining)).arg(OutputDevice.getTimeCompleted(printJob.timeRemaining)));
            }
        }
        width: contentWidth

        // FIXED-LINE-HEIGHT:
        height: UM.Theme.getSize("monitor_text_line").height
        verticalAlignment: Text.AlignVCenter
        renderType: Text.NativeRendering
    }
}