Browse Source

Adding pause / resume buttons for print monitoring

CURA-1036
Jaime van Kessel 8 years ago
parent
commit
8d8b479216
2 changed files with 172 additions and 0 deletions
  1. 161 0
      resources/qml/MonitorButton.qml
  2. 11 0
      resources/qml/Sidebar.qml

+ 161 - 0
resources/qml/MonitorButton.qml

@@ -0,0 +1,161 @@
+// Copyright (c) 2016 Ultimaker B.V.
+// Cura is released under the terms of the AGPLv3 or higher.
+
+import QtQuick 2.2
+import QtQuick.Controls 1.1
+import QtQuick.Controls.Styles 1.1
+import QtQuick.Layouts 1.1
+
+import UM 1.1 as UM
+import Cura 1.0 as Cura
+
+Rectangle
+{
+    id: base;
+    UM.I18nCatalog { id: catalog; name:"cura"}
+
+    property real progress: Cura.MachineManager.printerOutputDevices[0].progress;
+    property int backendState: UM.Backend.state;
+
+    property bool activity: Printer.getPlatformActivity;
+    property int totalHeight: childrenRect.height + UM.Theme.getSize("default_margin").height
+    property string fileBaseName
+    property string statusText:
+    {
+        return "Printing..."
+    }
+
+    Label
+    {
+        id: statusLabel
+        width: parent.width - 2 * UM.Theme.getSize("default_margin").width
+        anchors.top: parent.top
+        anchors.left: parent.left
+        anchors.leftMargin: UM.Theme.getSize("default_margin").width
+
+        color: "green"
+        font: UM.Theme.getFont("large")
+        text: statusText;
+    }
+
+    Rectangle
+    {
+        id: progressBar
+        width: parent.width - 2 * UM.Theme.getSize("default_margin").width
+        height: UM.Theme.getSize("progressbar").height
+        anchors.top: statusLabel.bottom
+        anchors.topMargin: UM.Theme.getSize("default_margin").height / 4
+        anchors.left: parent.left
+        anchors.leftMargin: UM.Theme.getSize("default_margin").width
+        radius: UM.Theme.getSize("progressbar_radius").width
+        color: UM.Theme.getColor("progressbar_background")
+
+        Rectangle
+        {
+            width: Math.max(parent.width * base.progress)
+            height: parent.height
+            color: "green"
+            radius: UM.Theme.getSize("progressbar_radius").width
+            //visible: base.backendState == 2 ? true : false
+        }
+    }
+
+     Button
+     {
+        id: abortButton
+
+        enabled: true
+        height: UM.Theme.getSize("save_button_save_to_button").height
+
+        anchors.top: progressBar.bottom
+        anchors.topMargin: UM.Theme.getSize("default_margin").height
+        anchors.right: parent.right
+        anchors.rightMargin: UM.Theme.getSize("default_margin").width
+
+        text: catalog.i18nc("@label:", "Abort Job")
+        onClicked: {}
+
+        style: ButtonStyle
+        {
+            background: Rectangle
+            {
+                border.width: UM.Theme.getSize("default_lining").width
+                border.color: !control.enabled ? UM.Theme.getColor("action_button_disabled_border") :
+                                  control.pressed ? UM.Theme.getColor("action_button_active_border") :
+                                  control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border")
+                color: !control.enabled ? UM.Theme.getColor("action_button_disabled") :
+                           control.pressed ? UM.Theme.getColor("action_button_active") :
+                           control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button")
+                Behavior on color { ColorAnimation { duration: 50; } }
+
+                implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("default_margin").width * 2)
+
+                Label
+                {
+                    id: actualLabel
+                    anchors.centerIn: parent
+                    color: !control.enabled ? UM.Theme.getColor("action_button_disabled_text") :
+                               control.pressed ? UM.Theme.getColor("action_button_active_text") :
+                               control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text")
+                    font: UM.Theme.getFont("action_button")
+                    text: control.text;
+                }
+            }
+        label: Item { }
+        }
+     }
+
+     Button
+     {
+        id: pauseButton
+
+        height: UM.Theme.getSize("save_button_save_to_button").height
+
+        anchors.top: progressBar.bottom
+        anchors.topMargin: UM.Theme.getSize("default_margin").height
+        anchors.right: abortButton.left
+        anchors.rightMargin: UM.Theme.getSize("default_margin").width
+
+        text: Cura.MachineManager.printerOutputDevices[0].jobState == "paused" ? catalog.i18nc("@label:", "Resume") : catalog.i18nc("@label:", "Pause")
+        onClicked: { Cura.MachineManager.printerOutputDevices[0].setJobState("printing")}
+
+        style: ButtonStyle
+        {
+            background: Rectangle
+            {
+                border.width: UM.Theme.getSize("default_lining").width
+                border.color: !control.enabled ? UM.Theme.getColor("action_button_disabled_border") :
+                                  control.pressed ? UM.Theme.getColor("action_button_active_border") :
+                                  control.hovered ? UM.Theme.getColor("action_button_hovered_border") : UM.Theme.getColor("action_button_border")
+                color: !control.enabled ? UM.Theme.getColor("action_button_disabled") :
+                           control.pressed ? UM.Theme.getColor("action_button_active") :
+                           control.hovered ? UM.Theme.getColor("action_button_hovered") : UM.Theme.getColor("action_button")
+                Behavior on color { ColorAnimation { duration: 50; } }
+
+                implicitWidth: actualLabel.contentWidth + (UM.Theme.getSize("default_margin").width * 2)
+
+                Label
+                {
+                    id: actualLabel
+                    anchors.centerIn: parent
+                    color: !control.enabled ? UM.Theme.getColor("action_button_disabled_text") :
+                               control.pressed ? UM.Theme.getColor("action_button_active_text") :
+                               control.hovered ? UM.Theme.getColor("action_button_hovered_text") : UM.Theme.getColor("action_button_text")
+                    font: UM.Theme.getFont("action_button")
+                    text: control.text;
+                }
+            }
+        label: Item { }
+        }
+     }
+
+    Rectangle
+    {
+        id: saveRow
+        width: base.width
+        height: saveToButton.height
+        anchors.top: progressBar.bottom
+        anchors.topMargin: UM.Theme.getSize("default_margin").height
+        anchors.left: parent.left
+    }
+}

+ 11 - 0
resources/qml/Sidebar.qml

@@ -330,8 +330,19 @@ Rectangle
         implicitWidth: base.width
         implicitWidth: base.width
         implicitHeight: totalHeight
         implicitHeight: totalHeight
         anchors.bottom: parent.bottom
         anchors.bottom: parent.bottom
+        visible: !monitoringPrint
     }
     }
 
 
+    MonitorButton
+    {
+        id: monitorButton;
+        implicitWidth: base.width
+        implicitHeight: totalHeight
+        anchors.bottom: parent.bottom
+        visible: monitoringPrint
+    }
+
+
     SidebarTooltip
     SidebarTooltip
     {
     {
         id: tooltip;
         id: tooltip;