diff --git a/plugins/UM3NetworkPrinting/ClusterControlItem.qml b/plugins/UM3NetworkPrinting/ClusterControlItem.qml index f2e2b601f2..194337cca0 100644 --- a/plugins/UM3NetworkPrinting/ClusterControlItem.qml +++ b/plugins/UM3NetworkPrinting/ClusterControlItem.qml @@ -6,11 +6,13 @@ import Cura 1.0 as Cura Component { - Item + Rectangle { id: base property var manager: Cura.MachineManager.printerOutputDevices[0] anchors.fill: parent + color: UM.Theme.getColor("viewport_background") + property var lineColor: "#DCDCDC" // TODO: Should be linked to theme. property var cornerRadius: 4 * screenScaleFactor // TODO: Should be linked to theme. @@ -27,24 +29,17 @@ Component id: activePrintersLabel font: UM.Theme.getFont("large") anchors.horizontalCenter: parent.horizontalCenter + anchors.topMargin: UM.Theme.getSize("default_margin").height + anchors.top: parent.top text: Cura.MachineManager.printerOutputDevices[0].name } - Label - { - id: printerGroupLabel - anchors.top: activePrintersLabel.bottom - text: catalog.i18nc("@label", "PRINTER GROUP") - anchors.horizontalCenter: parent.horizontalCenter - font: UM.Theme.getFont("very_small") - opacity: 0.65 - } Rectangle { id: printJobArea border.width: UM.Theme.getSize("default_lining").width border.color: lineColor - anchors.top: printerGroupLabel.bottom + anchors.top: activePrintersLabel.bottom anchors.topMargin: UM.Theme.getSize("default_margin").height anchors.left: parent.left anchors.leftMargin: UM.Theme.getSize("default_margin").width @@ -240,4 +235,4 @@ Component } } } -} \ No newline at end of file +} diff --git a/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml b/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml index 48fb0a33fc..497b762ea9 100644 --- a/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml +++ b/plugins/UM3NetworkPrinting/ClusterMonitorItem.qml @@ -10,8 +10,8 @@ Component Rectangle { width: maximumWidth - height: maximumHeight - color: "#FFFFFF" // TODO; Should not be hardcoded. + height: maximumHeight + color: UM.Theme.getColor("viewport_background") property var emphasisColor: "#44c0ff" //TODO: should be linked to theme. property var lineColor: "#DCDCDC" // TODO: Should be linked to theme. diff --git a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py index 94bd6bc9a3..29ef75820e 100644 --- a/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py +++ b/plugins/UM3NetworkPrinting/NetworkClusterPrinterOutputDevice.py @@ -17,6 +17,7 @@ from UM.Logger import Logger from UM.Message import Message from UM.OutputDevice import OutputDeviceError from UM.i18n import i18nCatalog +from UM.Qt.Duration import Duration, DurationFormat from . import NetworkPrinterOutputDevice @@ -685,3 +686,7 @@ class NetworkClusterPrinterOutputDevice(NetworkPrinterOutputDevice.NetworkPrinte self._reply.abort() self._reply = None Application.getInstance().showPrintMonitor.emit(False) + + @pyqtSlot(int, result=str) + def formatDuration(self, seconds): + return Duration(seconds).getDisplayString(DurationFormat.Format.Short) diff --git a/plugins/UM3NetworkPrinting/OpenPanelButton.qml b/plugins/UM3NetworkPrinting/OpenPanelButton.qml index 3915c1f9eb..a06a97f8f9 100644 --- a/plugins/UM3NetworkPrinting/OpenPanelButton.qml +++ b/plugins/UM3NetworkPrinting/OpenPanelButton.qml @@ -14,5 +14,58 @@ Button { tooltip: catalog.i18nc("@info:tooltip", "Opens the print jobs page with your default web browser.") text: catalog.i18nc("@action:button", "View print jobs") - style: UM.Theme.styles.sidebar_action_button + // FIXME: This button style is copied and duplicated from SaveButton.qml + style: ButtonStyle { + background: Rectangle + { + border.width: UM.Theme.getSize("default_lining").width + border.color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled_border"); + else if(control.pressed) + return UM.Theme.getColor("print_button_ready_pressed_border"); + else if(control.hovered) + return UM.Theme.getColor("print_button_ready_hovered_border"); + else + return UM.Theme.getColor("print_button_ready_border"); + } + color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled"); + else if(control.pressed) + return UM.Theme.getColor("print_button_ready_pressed"); + else if(control.hovered) + return UM.Theme.getColor("print_button_ready_hovered"); + else + return UM.Theme.getColor("print_button_ready"); + } + + Behavior on color { ColorAnimation { duration: 50; } } + + implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("sidebar_margin").width * 2) + + Label { + id: actualLabel + anchors.centerIn: parent + color: + { + if(!control.enabled) + return UM.Theme.getColor("action_button_disabled_text"); + else if(control.pressed) + return UM.Theme.getColor("print_button_ready_text"); + else if(control.hovered) + return UM.Theme.getColor("print_button_ready_text"); + else + return UM.Theme.getColor("print_button_ready_text"); + } + font: UM.Theme.getFont("action_button") + text: control.text; + } + } + label: Item { } + } + + } diff --git a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml index e548c9e9d7..0500221990 100644 --- a/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/PrinterInfoBlock.qml @@ -14,14 +14,7 @@ Rectangle function getPrettyTime(time) { - var hours = Math.floor(time / 3600) - time -= hours * 3600 - var minutes = Math.floor(time / 60); - time -= minutes * 60 - var seconds = Math.floor(time); - - var finalTime = strPadLeft(hours, "0", 2) + ':' + strPadLeft(minutes,'0',2)+ ':' + strPadLeft(seconds,'0',2); - return finalTime; + return OutputDevice.formatDuration(time) } function formatPrintJobPercent(printJob) @@ -143,14 +136,14 @@ Rectangle anchors.right: printProgressArea.left anchors.rightMargin: UM.Theme.getSize("default_margin").width color: emphasisColor - UM.RecolorImage + + Image { - anchors.verticalCenter: parent.verticalCenter - anchors.horizontalCenter: parent.horizontalCenter + width: 40 * screenScaleFactor + height: width + anchors.right: parent.right + anchors.rightMargin: parent.rightMargin source: "camera-icon.svg" - width: sourceSize.width - height: sourceSize.height * width / sourceSize.width - color: "white" } } @@ -217,6 +210,9 @@ Rectangle //border.color: lineColor height: 40 * screenScaleFactor anchors.left: parent.left + property var showPercent: { + return printJob != null && (["printing", "post_print", "pre_print", "sent_to_printer"].indexOf(printJob.status) !== -1); + } Label { @@ -266,6 +262,10 @@ Rectangle return ""; } } + if (printer.status == "printing") + { + return catalog.i18nc("@label:status", "Printing") + } return catalog.i18nc("@label:status", "Available"); } @@ -273,6 +273,7 @@ Rectangle font: UM.Theme.getFont("small") } + Label { id: progressText @@ -282,10 +283,44 @@ Rectangle anchors.top: statusText.top text: formatPrintJobPercent(printJob) - visible: printJob != null && (["printing", "post_print", "pre_print", "sent_to_printer"].indexOf(printJob.status) !== -1) + visible: printProgressTitleBar.showPercent opacity: 0.65 font: UM.Theme.getFont("very_small") } + + Image + { + width: statusText.height * screenScaleFactor + height: width + anchors.right: parent.right + anchors.rightMargin: UM.Theme.getSize("default_margin").width + anchors.top: statusText.top + + visible: ! printProgressTitleBar.showPercent + + source: { + if ( ! printer.enabled) + { + return "blocked-icon.svg"; + } + if (printJob != null) + { + if(printJob.status === "queued") + { + if (printJob.configuration_changes_required != null && printJob.configuration_changes_required.length !== 0) + { + return "action-required-icon.svg"; + } + } + else if (printJob.status === "wait_cleanup") + { + return "checkmark-icon.svg"; + } + } + return ""; // We're not going to show it, so it will not be resolved as a url. + } + } + Rectangle { //TODO: This will become a progress bar in the future @@ -308,7 +343,7 @@ Rectangle width: parent.width - 2 * UM.Theme.getSize("default_margin").width - visible: showExtended + visible: printProgressArea.showExtended Label // Status detail { diff --git a/plugins/UM3NetworkPrinting/action-required-icon.svg b/plugins/UM3NetworkPrinting/action-required-icon.svg new file mode 100644 index 0000000000..e7768849c6 --- /dev/null +++ b/plugins/UM3NetworkPrinting/action-required-icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/plugins/UM3NetworkPrinting/blocked-icon.svg b/plugins/UM3NetworkPrinting/blocked-icon.svg new file mode 100644 index 0000000000..03bbe24e16 --- /dev/null +++ b/plugins/UM3NetworkPrinting/blocked-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/plugins/UM3NetworkPrinting/camera-icon.svg b/plugins/UM3NetworkPrinting/camera-icon.svg index 2aafc4b6f4..29adfa5875 100644 --- a/plugins/UM3NetworkPrinting/camera-icon.svg +++ b/plugins/UM3NetworkPrinting/camera-icon.svg @@ -1,3 +1,6 @@ - - - + + + + + + \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/checkmark-icon.svg b/plugins/UM3NetworkPrinting/checkmark-icon.svg new file mode 100644 index 0000000000..9d4507e551 --- /dev/null +++ b/plugins/UM3NetworkPrinting/checkmark-icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/resources/qml/Cura.qml b/resources/qml/Cura.qml index b1644ff303..9fecf23ca9 100755 --- a/resources/qml/Cura.qml +++ b/resources/qml/Cura.qml @@ -386,8 +386,6 @@ UM.MainWindow visible: opacity > 0 opacity: base.showPrintMonitor ? 1 : 0 - Behavior on opacity { NumberAnimation { duration: 100; } } - MouseArea { anchors.fill: parent acceptedButtons: Qt.AllButtons diff --git a/resources/themes/cura-dark/theme.json b/resources/themes/cura-dark/theme.json index 187896aa28..f39fe96c37 100644 --- a/resources/themes/cura-dark/theme.json +++ b/resources/themes/cura-dark/theme.json @@ -16,7 +16,7 @@ "secondary": [241, 242, 242, 255], "topbar_background_color": [0, 0, 0, 0], - "topbar_background_color_monitoring": [39, 44, 48, 255], + "topbar_background_color_monitoring": [0, 0, 0, 0], "topbar_button_text_active": [255, 255, 255, 255], "topbar_button_text_inactive": [128, 128, 128, 255], diff --git a/resources/themes/cura-light/theme.json b/resources/themes/cura-light/theme.json index 62e22e4f0d..74b6bfb7ab 100644 --- a/resources/themes/cura-light/theme.json +++ b/resources/themes/cura-light/theme.json @@ -68,7 +68,7 @@ "secondary": [245, 245, 245, 255], "topbar_background_color": [255, 255, 255, 0], - "topbar_background_color_monitoring": [255, 255, 255, 255], + "topbar_background_color_monitoring": [255, 255, 255, 0], "topbar_button_text_active": [0, 0, 0, 255], "topbar_button_text_inactive": [128, 128, 128, 255],