diff --git a/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml b/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml index bfde2ea7cd..3dfabdfb86 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/ClusterControlItem.qml @@ -69,7 +69,8 @@ Component // Skeleton loading Column { - id: dummies + id: skeletonLoader + visible: printerList.count === 0; anchors { top: printingLabel.bottom @@ -97,12 +98,11 @@ Component id: printerScrollView anchors { - top: dummies.bottom + top: printingLabel.bottom + topMargin: UM.Theme.getSize("default_margin").height left: parent.left right: parent.right - topMargin: UM.Theme.getSize("default_margin").height - bottom: parent.bottom - bottomMargin: UM.Theme.getSize("default_margin").height + bottom: parent.bottom; } style: UM.Theme.styles.scrollview diff --git a/plugins/UM3NetworkPrinting/resources/qml/HorizontalLine.qml b/plugins/UM3NetworkPrinting/resources/qml/HorizontalLine.qml index a15fb81963..fcf2330fe7 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/HorizontalLine.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/HorizontalLine.qml @@ -2,20 +2,8 @@ import QtQuick 2.3 import QtQuick.Controls 2.0 import UM 1.3 as UM -Item { - id: root; - property var enabled: true; +Rectangle { + color: UM.Theme.getColor("monitor_tab_lining_inactive"); // TODO: Maybe theme separately? Maybe not. + height: UM.Theme.getSize("default_lining").height; width: parent.width; - height: childrenRect.height; - - Rectangle { - anchors { - left: parent.left; - leftMargin: UM.Theme.getSize("default_margin").width; - right: parent.right; - rightMargin: UM.Theme.getSize("default_margin").width; - } - color: root.enabled ? UM.Theme.getColor("monitor_lining_inactive") : UM.Theme.getColor("monitor_lining_active"); - height: UM.Theme.getSize("default_lining").height; - } } \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml index 74c4bb030c..8d523c322a 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenu.qml @@ -9,7 +9,9 @@ import UM 1.3 as UM Item { id: root; + property var printJob: null; + property var running: isRunning(printJob); Button { id: button; @@ -36,164 +38,165 @@ Item { Popup { id: popup; + background: Item { + height: popup.height; + width: popup.width; + + DropShadow { + anchors.fill: pointedRectangle; + color: "#3F000000"; // 25% shadow + radius: 5; + source: pointedRectangle; + transparentBorder: true; + verticalOffset: 2; + } + + Item { + id: pointedRectangle + width: parent.width - 10 * screenScaleFactor; // Because of the shadow + height: parent.height - 10 * screenScaleFactor; // Because of the shadow + anchors.horizontalCenter: parent.horizontalCenter; + anchors.verticalCenter: parent.verticalCenter; + + Rectangle { + id: point + anchors.right: bloop.right; + anchors.rightMargin: 24; + color: UM.Theme.getColor("setting_control"); + height: 14 * screenScaleFactor; + transform: Rotation { + angle: 45; + } + width: 14 * screenScaleFactor; + y: 1; + } + + Rectangle { + id: bloop + anchors { + bottom: parent.bottom; + bottomMargin: 8 * screenScaleFactor; // Because of the shadow + top: parent.top; + topMargin: 8 * screenScaleFactor; // Because of the shadow + point + } + color: UM.Theme.getColor("setting_control"); + width: parent.width; + } + } + } clip: true; closePolicy: Popup.CloseOnPressOutside; + contentItem: Column { + id: popupOptions; + anchors { + top: parent.top; + topMargin: UM.Theme.getSize("default_margin").height + 10 * screenScaleFactor; // Account for the point of the box + } + height: childrenRect.height + spacing * popupOptions.children.length + UM.Theme.getSize("default_margin").height; + spacing: Math.floor(UM.Theme.getSize("default_margin").height / 2); + width: parent.width; + + PrintJobContextMenuItem { + enabled: printJob && !running ? OutputDevice.queuedPrintJobs[0].key != printJob.key : false; + onClicked: { + sendToTopConfirmationDialog.visible = true; + popup.close(); + } + text: catalog.i18nc("@label", "Move to top"); + } + + PrintJobContextMenuItem { + enabled: printJob && !running; + onClicked: { + deleteConfirmationDialog.visible = true; + popup.close(); + } + text: catalog.i18nc("@label", "Delete"); + } + + PrintJobContextMenuItem { + enabled: printJob && running; + onClicked: { + if (printJob.state == "paused") { + printJob.setState("print"); + } else if(printJob.state == "printing") { + printJob.setState("pause"); + } + popup.close(); + } + text: printJob && printJob.state == "paused" ? catalog.i18nc("@label", "Resume") : catalog.i18nc("@label", "Pause"); + } + + PrintJobContextMenuItem { + enabled: printJob && running; + onClicked: { + abortConfirmationDialog.visible = true; + popup.close(); + } + text: catalog.i18nc("@label", "Abort"); + } + } + enter: Transition { + NumberAnimation { + duration: 75; + property: "visible"; + } + } + exit: Transition { + NumberAnimation { + duration: 75; + property: "visible"; + } + } height: contentItem.height + 2 * padding; + onClosed: visible = false; + onOpened: visible = true; padding: 5 * screenScaleFactor; // Because shadow transformOrigin: Popup.Top; visible: false; width: 182 * screenScaleFactor; x: (button.width - width) + 26 * screenScaleFactor; y: button.height + 5 * screenScaleFactor; // Because shadow - contentItem: Item { - width: popup.width - height: childrenRect.height + 36 * screenScaleFactor - anchors.topMargin: 10 * screenScaleFactor - anchors.bottomMargin: 10 * screenScaleFactor - Button { - id: sendToTopButton - text: catalog.i18nc("@label", "Move to top") - onClicked: - { - sendToTopConfirmationDialog.visible = true; - popup.close(); - } - width: parent.width - enabled: printJob ? OutputDevice.queuedPrintJobs[0].key != printJob.key : false; - visible: enabled - anchors.top: parent.top - anchors.topMargin: 18 * screenScaleFactor - height: visible ? 39 * screenScaleFactor : 0 * screenScaleFactor - hoverEnabled: true - background: Rectangle - { - opacity: sendToTopButton.down || sendToTopButton.hovered ? 1 : 0 - color: UM.Theme.getColor("viewport_background") - } - contentItem: Label - { - text: sendToTopButton.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter - } - } + } - MessageDialog - { - id: sendToTopConfirmationDialog - title: catalog.i18nc("@window:title", "Move print job to top") - icon: StandardIcon.Warning - text: printJob ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to move %1 to the top of the queue?").arg(printJob.name) : ""; - standardButtons: StandardButton.Yes | StandardButton.No - Component.onCompleted: visible = false - onYes: { - if (printJob) { - OutputDevice.sendJobToTop(printJob.key) - } - } - } + MessageDialog { + id: sendToTopConfirmationDialog; + Component.onCompleted: visible = false; + icon: StandardIcon.Warning; + onYes: OutputDevice.sendJobToTop(printJob.key); + standardButtons: StandardButton.Yes | StandardButton.No; + text: printJob ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to move %1 to the top of the queue?").arg(printJob.name) : ""; + title: catalog.i18nc("@window:title", "Move print job to top"); + } - Button - { - id: deleteButton - text: catalog.i18nc("@label", "Delete") - onClicked: - { - deleteConfirmationDialog.visible = true; - popup.close(); - } - width: parent.width - height: 39 * screenScaleFactor - anchors.top: sendToTopButton.bottom - hoverEnabled: true - background: Rectangle - { - opacity: deleteButton.down || deleteButton.hovered ? 1 : 0 - color: UM.Theme.getColor("viewport_background") - } - contentItem: Label - { - text: deleteButton.text - horizontalAlignment: Text.AlignLeft - verticalAlignment: Text.AlignVCenter - } - } + MessageDialog { + id: deleteConfirmationDialog; + Component.onCompleted: visible = false; + icon: StandardIcon.Warning; + onYes: OutputDevice.deleteJobFromQueue(printJob.key); + standardButtons: StandardButton.Yes | StandardButton.No; + text: printJob ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to delete %1?").arg(printJob.name) : ""; + title: catalog.i18nc("@window:title", "Delete print job"); + } - MessageDialog - { - id: deleteConfirmationDialog - title: catalog.i18nc("@window:title", "Delete print job") - icon: StandardIcon.Warning - text: printJob ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to delete %1?").arg(printJob.name) : ""; - standardButtons: StandardButton.Yes | StandardButton.No - Component.onCompleted: visible = false - onYes: OutputDevice.deleteJobFromQueue(printJob.key) - } - } - - background: Item - { - width: popup.width - height: popup.height - - DropShadow - { - anchors.fill: pointedRectangle - radius: 5 - color: "#3F000000" // 25% shadow - source: pointedRectangle - transparentBorder: true - verticalOffset: 2 - } - - Item - { - id: pointedRectangle - width: parent.width - 10 * screenScaleFactor // Because of the shadow - height: parent.height - 10 * screenScaleFactor // Because of the shadow - anchors.horizontalCenter: parent.horizontalCenter - anchors.verticalCenter: parent.verticalCenter - - Rectangle - { - id: point - height: 14 * screenScaleFactor - width: 14 * screenScaleFactor - color: UM.Theme.getColor("setting_control") - transform: Rotation { angle: 45} - anchors.right: bloop.right - anchors.rightMargin: 24 - y: 1 - } - - Rectangle - { - id: bloop - color: UM.Theme.getColor("setting_control") - width: parent.width - anchors.top: parent.top - anchors.topMargin: 8 * screenScaleFactor // Because of the shadow + point - anchors.bottom: parent.bottom - anchors.bottomMargin: 8 * screenScaleFactor // Because of the shadow - } - } - } - - exit: Transition - { - NumberAnimation { property: "visible"; duration: 75; } - } - enter: Transition - { - NumberAnimation { property: "visible"; duration: 75; } - } - - onClosed: visible = false - onOpened: visible = true + MessageDialog { + id: abortConfirmationDialog; + Component.onCompleted: visible = false; + icon: StandardIcon.Warning; + onYes: printJob.setState("abort"); + standardButtons: StandardButton.Yes | StandardButton.No; + text: printJob ? catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to abort %1?").arg(printJob.name) : ""; + title: catalog.i18nc("@window:title", "Abort print"); } // Utils function switchPopupState() { - popup.visible ? popup.close() : popup.open() + popup.visible ? popup.close() : popup.open(); + } + function isRunning(job) { + if (!job) { + return false; + } + return ["paused", "printing", "pre_print"].indexOf(job.state) !== -1; } } diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml new file mode 100644 index 0000000000..e20f5fd1a1 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintJobContextMenuItem.qml @@ -0,0 +1,20 @@ +import QtQuick 2.2 +import QtQuick.Controls 2.0 +import QtQuick.Controls.Styles 1.4 +import UM 1.3 as UM + +Button { + background: Rectangle { + opacity: parent.down || parent.hovered ? 1 : 0; + color: UM.Theme.getColor("viewport_background"); // TODO: Theme! + } + contentItem: Label { + text: parent.text + horizontalAlignment: Text.AlignLeft; + verticalAlignment: Text.AlignVCenter; + } + height: 39 * screenScaleFactor; // TODO: Theme! + hoverEnabled: true; + visible: enabled; + width: parent.width; +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobPreview.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobPreview.qml new file mode 100644 index 0000000000..7fae974d8f --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintJobPreview.qml @@ -0,0 +1,68 @@ +import QtQuick 2.3 +import QtQuick.Dialogs 1.1 +import QtQuick.Controls 2.0 +import QtQuick.Controls.Styles 1.3 +import QtGraphicalEffects 1.0 +import QtQuick.Controls 1.4 as LegacyControls +import UM 1.3 as UM + +// Includes print job name, owner, and preview + +Item { + property var job: null; + property var useUltibot: false; + height: 100; + width: height; + + // Skeleton + Rectangle { + visible: !job; + anchors.fill: parent; + radius: UM.Theme.getSize("default_margin").width; // TODO: Theme! + color: UM.Theme.getColor("viewport_background"); // TODO: Theme! + } + + // Actual content + Image { + id: previewImage; + visible: job; + source: job ? job.previewImageUrl : ""; + opacity: { + if (job == null) { + return 1.0; + } + var states = ["wait_cleanup", "wait_user_action", "error", "paused"]; + if (states.indexOf(job.state) !== -1) { + return 0.5; + } + return 1.0; + } + anchors.fill: parent; + } + + UM.RecolorImage { + id: ultibotImage; + anchors.centerIn: parent; + source: "../svg/ultibot.svg"; + /* Since print jobs ALWAYS have an image url, we have to check if that image URL errors or + not in order to determine if we show the placeholder (ultibot) image instead. */ + visible: job && previewImage.status == Image.Error; + width: parent.width; + height: parent.height; + sourceSize.width: width; + sourceSize.height: height; + color: UM.Theme.getColor("monitor_tab_placeholder_image"); // TODO: Theme! + } + + UM.RecolorImage { + id: statusImage; + anchors.centerIn: parent; + source: job && job.state == "error" ? "../svg/aborted-icon.svg" : ""; + visible: source != ""; + width: 0.5 * parent.width; + height: 0.5 * parent.height; + sourceSize.width: width; + sourceSize.height: height; + color: "black"; + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrintJobTitle.qml b/plugins/UM3NetworkPrinting/resources/qml/PrintJobTitle.qml new file mode 100644 index 0000000000..604b5ce862 --- /dev/null +++ b/plugins/UM3NetworkPrinting/resources/qml/PrintJobTitle.qml @@ -0,0 +1,53 @@ +// Copyright (c) 2018 Ultimaker B.V. +// Cura is released under the terms of the LGPLv3 or higher. + +import QtQuick 2.3 +import QtQuick.Controls 2.0 +import UM 1.3 as UM + +Column { + property var job: null; + height: childrenRect.height; + spacing: Math.floor( UM.Theme.getSize("default_margin").height / 2); // TODO: Use explicit theme size + width: parent.width; + + Item { + id: jobName; + height: UM.Theme.getSize("monitor_tab_text_line").height; + width: parent.width; + + Rectangle { + visible: !job; + color: UM.Theme.getColor("viewport_background"); // TODO: Use explicit theme color + height: parent.height; + width: parent.width / 3; + } + Label { + visible: job; + text: job ? job.name : ""; + font: UM.Theme.getFont("default_bold"); + elide: Text.ElideRight; + anchors.fill: parent; + } + } + + Item { + id: ownerName; + height: UM.Theme.getSize("monitor_tab_text_line").height; + width: parent.width; + + Rectangle { + visible: !job; + color: UM.Theme.getColor("viewport_background"); // TODO: Use explicit theme color + height: parent.height; + width: parent.width / 2; + } + Label { + visible: job; + text: job ? job.owner : ""; + font: UM.Theme.getFont("default"); + elide: Text.ElideRight; + anchors.fill: parent; + } + } +} \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml index 3eec298bd2..29a90960ba 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrinterCard.qml @@ -49,8 +49,8 @@ Item { // Main card Item { id: mainCard; - // color: "pink"; - height: childrenRect.height; + // I don't know why the extra height is needed but it is in order to look proportional. + height: childrenRect.height + 2; width: parent.width; // Machine icon @@ -201,8 +201,7 @@ Item { anchors.fill: parent; enabled: printer; onClicked: { - console.log(model.index) - if (root.collapsed && model) { + if (model && root.collapsed) { printerList.currentIndex = model.index; } else { printerList.currentIndex = -1; @@ -213,6 +212,9 @@ Item { Connections { target: printerList onCurrentIndexChanged: { + if (!model) { + return; + } root.collapsed = printerList.currentIndex != model.index; } } @@ -221,8 +223,8 @@ Item { // Detailed card PrinterCardDetails { collapsed: root.collapsed; - printer: printer; - visible: printer; + printer: root.printer; + visible: root.printer; } // Progress bar diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterCardDetails.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterCardDetails.qml index 8cc10b5b6b..411c76d97a 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterCardDetails.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrinterCardDetails.qml @@ -7,10 +7,9 @@ import QtQuick.Controls 1.4 as LegacyControls import UM 1.3 as UM Item { - id: root; property var printer: null; - property var printJob: printer.activePrintJob; + property var printJob: printer ? printer.activePrintJob : null; property var collapsed: true; Behavior on height { NumberAnimation { duration: 100 } } @@ -21,350 +20,59 @@ Item { opacity: collapsed ? 0 : 1; Column { - height: childrenRect.height; + id: contentColumn; + anchors { + left: parent.left; + leftMargin: UM.Theme.getSize("default_margin").width; + right: parent.right; + rightMargin: UM.Theme.getSize("default_margin").width; + } + height: childrenRect.height + UM.Theme.getSize("wide_margin").height; + spacing: UM.Theme.getSize("default_margin").height; width: parent.width; - spacing: UM.Theme.getSize("default_margin").height; - - HorizontalLine { enabled: printer.state !== "disabled" } + HorizontalLine {} PrinterInfoBlock { printer: root.printer; printJob: root.printer.activePrintJob; } - HorizontalLine { enabled: printer.state !== "disabled" } + HorizontalLine {} - Rectangle { - color: "orange"; + Row { width: parent.width; - height: 100; + height: childrenRect.height; + + PrintJobTitle { + job: root.printer.activePrintJob; + } + PrintJobContextMenu { + id: contextButton; + anchors { + right: parent.right; + rightMargin: UM.Theme.getSize("wide_margin").width; + } + printJob: root.printer.activePrintJob; + visible: root.printer.activePrintJob; + } } + - Item { - id: jobInfoSection; - - property var job: root.printer ? root.printer.activePrintJob : null; - - Component.onCompleted: { - console.log(job) - } - height: visible ? childrenRect.height + 2 * UM.Theme.getSize("default_margin").height : 0; - width: parent.width; - visible: job && job.state != "queued"; - - anchors.left: parent.left; - // anchors.right: contextButton.left; - // anchors.rightMargin: UM.Theme.getSize("default_margin").width; - - Label { - id: printJobName; - elide: Text.ElideRight; - font: UM.Theme.getFont("default_bold"); - text: job ? job.name : ""; - } - - Label { - id: ownerName; - anchors.top: job.bottom; - elide: Text.ElideRight; - font: UM.Theme.getFont("default"); - opacity: 0.6; - text: job ? job.owner : ""; - width: parent.width; - } + PrintJobPreview { + job: root.printer.activePrintJob; + anchors.horizontalCenter: parent.horizontalCenter; } } + + CameraButton { + id: showCameraButton; + anchors { + bottom: contentColumn.bottom; + bottomMargin: Math.round(1.5 * UM.Theme.getSize("default_margin").height); + left: contentColumn.left; + leftMargin: Math.round(0.5 * UM.Theme.getSize("default_margin").width); + } + iconSource: "../svg/camera-icon.svg"; + } } - - -// Item { -// id: jobInfo; -// property var showJobInfo: { -// return printer.activePrintJob != null && printer.activePrintJob.state != "queued" -// } - -// // anchors { -// // top: jobSpacer.bottom -// // topMargin: 2 * UM.Theme.getSize("default_margin").height -// // left: parent.left -// // right: parent.right -// // margins: UM.Theme.getSize("default_margin").width -// // leftMargin: 2 * UM.Theme.getSize("default_margin").width -// // } - -// height: showJobInfo ? childrenRect.height + 2 * UM.Theme.getSize("default_margin").height : 0; -// visible: showJobInfo; - - -// function switchPopupState() -// { -// popup.visible ? popup.close() : popup.open() -// } - -// Button -// { -// id: contextButton -// text: "\u22EE" //Unicode; Three stacked points. -// width: 35 -// height: width -// anchors -// { -// right: parent.right -// top: parent.top -// } -// hoverEnabled: true - -// background: Rectangle -// { -// opacity: contextButton.down || contextButton.hovered ? 1 : 0 -// width: contextButton.width -// height: contextButton.height -// radius: 0.5 * width -// color: UM.Theme.getColor("viewport_background") -// } -// contentItem: Label -// { -// text: contextButton.text -// color: UM.Theme.getColor("monitor_tab_text_inactive") -// font.pixelSize: 25 -// verticalAlignment: Text.AlignVCenter -// horizontalAlignment: Text.AlignHCenter -// } - -// onClicked: parent.switchPopupState() -// } - -// Popup -// { -// // TODO Change once updating to Qt5.10 - The 'opened' property is in 5.10 but the behavior is now implemented with the visible property -// id: popup -// clip: true -// closePolicy: Popup.CloseOnPressOutside -// x: (parent.width - width) + 26 * screenScaleFactor -// y: contextButton.height - 5 * screenScaleFactor // Because shadow -// width: 182 * screenScaleFactor -// height: contentItem.height + 2 * padding -// visible: false -// padding: 5 * screenScaleFactor // Because shadow - -// transformOrigin: Popup.Top -// contentItem: Item -// { -// width: popup.width -// height: childrenRect.height + 36 * screenScaleFactor -// anchors.topMargin: 10 * screenScaleFactor -// anchors.bottomMargin: 10 * screenScaleFactor -// Button -// { -// id: pauseButton -// text: printer.activePrintJob != null && printer.activePrintJob.state == "paused" ? catalog.i18nc("@label", "Resume") : catalog.i18nc("@label", "Pause") -// onClicked: -// { -// if(printer.activePrintJob.state == "paused") -// { -// printer.activePrintJob.setState("print") -// } -// else if(printer.activePrintJob.state == "printing") -// { -// printer.activePrintJob.setState("pause") -// } -// popup.close() -// } -// width: parent.width -// enabled: printer.activePrintJob != null && ["paused", "printing"].indexOf(printer.activePrintJob.state) >= 0 -// visible: enabled -// anchors.top: parent.top -// anchors.topMargin: 18 * screenScaleFactor -// height: visible ? 39 * screenScaleFactor : 0 * screenScaleFactor -// hoverEnabled: true -// background: Rectangle -// { -// opacity: pauseButton.down || pauseButton.hovered ? 1 : 0 -// color: UM.Theme.getColor("viewport_background") -// } -// contentItem: Label -// { -// text: pauseButton.text -// horizontalAlignment: Text.AlignLeft -// verticalAlignment: Text.AlignVCenter -// } -// } - -// Button -// { -// id: abortButton -// text: catalog.i18nc("@label", "Abort") -// onClicked: -// { -// abortConfirmationDialog.visible = true; -// popup.close(); -// } -// width: parent.width -// height: 39 * screenScaleFactor -// anchors.top: pauseButton.bottom -// hoverEnabled: true -// enabled: printer.activePrintJob != null && ["paused", "printing", "pre_print"].indexOf(printer.activePrintJob.state) >= 0 -// background: Rectangle -// { -// opacity: abortButton.down || abortButton.hovered ? 1 : 0 -// color: UM.Theme.getColor("viewport_background") -// } -// contentItem: Label -// { -// text: abortButton.text -// horizontalAlignment: Text.AlignLeft -// verticalAlignment: Text.AlignVCenter -// } -// } - -// MessageDialog -// { -// id: abortConfirmationDialog -// title: catalog.i18nc("@window:title", "Abort print") -// icon: StandardIcon.Warning -// text: catalog.i18nc("@label %1 is the name of a print job.", "Are you sure you want to abort %1?").arg(printer.activePrintJob.name) -// standardButtons: StandardButton.Yes | StandardButton.No -// Component.onCompleted: visible = false -// onYes: printer.activePrintJob.setState("abort") -// } -// } - -// background: Item -// { -// width: popup.width -// height: popup.height - -// DropShadow -// { -// anchors.fill: pointedRectangle -// radius: 5 -// color: "#3F000000" // 25% shadow -// source: pointedRectangle -// transparentBorder: true -// verticalOffset: 2 -// } - -// Item -// { -// id: pointedRectangle -// width: parent.width - 10 * screenScaleFactor // Because of the shadow -// height: parent.height - 10 * screenScaleFactor // Because of the shadow -// anchors.horizontalCenter: parent.horizontalCenter -// anchors.verticalCenter: parent.verticalCenter - -// Rectangle -// { -// id: point -// height: 14 * screenScaleFactor -// width: 14 * screenScaleFactor -// color: UM.Theme.getColor("setting_control") -// transform: Rotation { angle: 45} -// anchors.right: bloop.right -// anchors.rightMargin: 24 -// y: 1 -// } - -// Rectangle -// { -// id: bloop -// color: UM.Theme.getColor("setting_control") -// width: parent.width -// anchors.top: parent.top -// anchors.topMargin: 8 * screenScaleFactor // Because of the shadow + point -// anchors.bottom: parent.bottom -// anchors.bottomMargin: 8 * screenScaleFactor // Because of the shadow -// } -// } -// } - -// exit: Transition -// { -// // This applies a default NumberAnimation to any changes a state change makes to x or y properties -// NumberAnimation { property: "visible"; duration: 75; } -// } -// enter: Transition -// { -// // This applies a default NumberAnimation to any changes a state change makes to x or y properties -// NumberAnimation { property: "visible"; duration: 75; } -// } - -// onClosed: visible = false -// onOpened: visible = true -// } - -// Image -// { -// id: printJobPreview -// source: printer.activePrintJob != null ? printer.activePrintJob.previewImageUrl : "" -// anchors.top: ownerName.bottom -// anchors.horizontalCenter: parent.horizontalCenter -// width: parent.width / 2 -// height: width -// opacity: -// { -// if(printer.activePrintJob == null) -// { -// return 1.0 -// } - -// switch(printer.activePrintJob.state) -// { -// case "wait_cleanup": -// case "wait_user_action": -// case "paused": -// return 0.5 -// default: -// return 1.0 -// } -// } - - -// } - -// UM.RecolorImage -// { -// id: statusImage -// anchors.centerIn: printJobPreview -// source: -// { -// if(printer.activePrintJob == null) -// { -// return "" -// } -// switch(printer.activePrintJob.state) -// { -// case "paused": -// return "../svg/paused-icon.svg" -// case "wait_cleanup": -// if(printer.activePrintJob.timeElapsed < printer.activePrintJob.timeTotal) -// { -// return "../svg/aborted-icon.svg" -// } -// return "../svg/approved-icon.svg" -// case "wait_user_action": -// return "../svg/aborted-icon.svg" -// default: -// return "" -// } -// } -// visible: source != "" -// width: 0.5 * printJobPreview.width -// height: 0.5 * printJobPreview.height -// sourceSize.width: width -// sourceSize.height: height -// color: "black" -// } - -// CameraButton -// { -// id: showCameraButton -// iconSource: "../svg/camera-icon.svg" -// anchors -// { -// left: parent.left -// bottom: printJobPreview.bottom -// } -// } -// } -// } \ No newline at end of file diff --git a/plugins/UM3NetworkPrinting/resources/qml/PrinterInfoBlock.qml b/plugins/UM3NetworkPrinting/resources/qml/PrinterInfoBlock.qml index 1b3a83d024..d116df8b28 100644 --- a/plugins/UM3NetworkPrinting/resources/qml/PrinterInfoBlock.qml +++ b/plugins/UM3NetworkPrinting/resources/qml/PrinterInfoBlock.qml @@ -24,8 +24,7 @@ Item { anchors { left: parent.left; right: parent.right; - bottom: extrudersInfo.top; - bottomMargin: UM.Theme.getSize("default_margin").height; + } height: childrenRect.height; spacing: Math.round(0.5 * UM.Theme.getSize("default_margin").width); @@ -52,6 +51,8 @@ Item { left: parent.left; right: parent.right; rightMargin: UM.Theme.getSize("default_margin").width; + top: printerFamilyPills.bottom; + topMargin: UM.Theme.getSize("default_margin").height; } height: childrenRect.height; spacing: UM.Theme.getSize("default_margin").width;