import QtQuick 2.2
import QtQuick.Dialogs 1.1
import QtQuick.Controls 2.0
import QtQuick.Controls.Styles 1.4
import QtGraphicalEffects 1.0
import QtQuick.Layouts 1.1
import QtQuick.Dialogs 1.1
import UM 1.3 as UM
// Item
// {
// id: base
// function haveAlert() {
// return printJob.configurationChanges.length !== 0;
// }
// function alertHeight() {
// return haveAlert() ? 230 : 0;
// }
// function alertText() {
// if (printJob.configurationChanges.length === 0) {
// return "";
// }
// var topLine;
// if (materialsAreKnown(printJob)) {
// topLine = catalog.i18nc("@label", "The assigned printer, %1, requires the following configuration change(s):").arg(printJob.assignedPrinter.name);
// } else {
// topLine = catalog.i18nc("@label", "The printer %1 is assigned, but the job contains an unknown material configuration.").arg(printJob.assignedPrinter.name);
// }
// var result = "
" + topLine +"
";
// for (var i=0; i" + text + "";
// }
// return result;
// }
// function materialsAreKnown(printJob) {
// var conf0 = printJob.configuration[0];
// if (conf0 && !conf0.material.material) {
// return false;
// }
// var conf1 = printJob.configuration[1];
// if (conf1 && !conf1.material.material) {
// return false;
// }
// return true;
// }
// function formatBuildPlateType(buildPlateType) {
// var translationText = "";
// switch (buildPlateType) {
// case 'glass':
// translationText = catalog.i18nc("@label", "Glass");
// break;
// case 'aluminum':
// translationText = catalog.i18nc("@label", "Aluminum");
// break;
// default:
// translationText = null;
// }
// return translationText;
// }
// function formatPrintJobName(name) {
// var extensionsToRemove = [
// '.gz',
// '.gcode',
// '.ufp'
// ];
// for (var i = 0; i < extensionsToRemove.length; i++) {
// var extension = extensionsToRemove[i];
// if (name.slice(-extension.length) === extension) {
// name = name.substring(0, name.length - extension.length);
// }
// }
// return name;
// }
// function isPrintJobForcable(printJob) {
// var forcable = true;
// for (var i = 0; i < printJob.configurationChanges.length; i++) {
// var typeOfChange = printJob.configurationChanges[i].typeOfChange;
// if (typeOfChange === 'material_insert' || typeOfChange === 'buildplate_change') {
// forcable = false;
// }
// }
// return forcable;
// }
// property var cardHeight: 175
// height: (cardHeight + alertHeight()) * screenScaleFactor
// property var printJob: null
// property var shadowRadius: 5 * screenScaleFactor
// function getPrettyTime(time)
// {
// return OutputDevice.formatDuration(time)
// }
// width: parent.width
// UM.I18nCatalog
// {
// id: catalog
// name: "cura"
// }
// Rectangle
// {
// id: background
// height: (cardHeight + alertHeight()) * screenScaleFactor
// anchors
// {
// top: parent.top
// topMargin: 3 * screenScaleFactor
// left: parent.left
// leftMargin: base.shadowRadius
// rightMargin: base.shadowRadius
// right: parent.right
// //bottom: parent.bottom - alertHeight() * screenScaleFactor
// bottomMargin: base.shadowRadius
// }
// layer.enabled: true
// layer.effect: DropShadow
// {
// radius: base.shadowRadius
// verticalOffset: 2 * screenScaleFactor
// color: "#3F000000" // 25% shadow
// }
// Rectangle
// {
// height: cardHeight * screenScaleFactor
// anchors
// {
// top: parent.top
// left: parent.left
// right: parent.right
// // bottom: parent.bottom
// }
// Item
// {
// // Content on the left of the infobox
// anchors
// {
// top: parent.top
// bottom: parent.bottom
// left: parent.left
// right: parent.horizontalCenter
// margins: UM.Theme.getSize("wide_margin").width
// rightMargin: UM.Theme.getSize("default_margin").width
// }
// Label
// {
// id: printJobName
// text: printJob.name
// font: UM.Theme.getFont("default_bold")
// width: parent.width
// elide: Text.ElideRight
// }
// Label
// {
// id: ownerName
// anchors.top: printJobName.bottom
// text: printJob.owner
// font: UM.Theme.getFont("default")
// opacity: 0.6
// width: parent.width
// elide: Text.ElideRight
// }
// Image
// {
// id: printJobPreview
// source: printJob.previewImageUrl
// anchors.top: ownerName.bottom
// anchors.horizontalCenter: parent.horizontalCenter
// anchors.bottom: totalTimeLabel.bottom
// width: height
// opacity: printJob.state == "error" ? 0.5 : 1.0
// }
// UM.RecolorImage
// {
// id: statusImage
// anchors.centerIn: printJobPreview
// source: printJob.state == "error" ? "../svg/aborted-icon.svg" : ""
// visible: source != ""
// width: 0.5 * printJobPreview.width
// height: 0.5 * printJobPreview.height
// sourceSize.width: width
// sourceSize.height: height
// color: "black"
// }
// Label
// {
// id: totalTimeLabel
// anchors.bottom: parent.bottom
// anchors.right: parent.right
// font: UM.Theme.getFont("default")
// text: printJob != null ? getPrettyTime(printJob.timeTotal) : ""
// elide: Text.ElideRight
// }
// }
// Item
// {
// // Content on the right side of the infobox.
// anchors
// {
// top: parent.top
// bottom: parent.bottom
// left: parent.horizontalCenter
// right: parent.right
// margins: 2 * UM.Theme.getSize("default_margin").width
// leftMargin: UM.Theme.getSize("default_margin").width
// rightMargin: UM.Theme.getSize("default_margin").width / 2
// }
// Label
// {
// id: targetPrinterLabel
// elide: Text.ElideRight
// font: UM.Theme.getFont("default_bold")
// text:
// {
// if(printJob.assignedPrinter == null)
// {
// if(printJob.state == "error")
// {
// return catalog.i18nc("@label", "Waiting for: Unavailable printer")
// }
// return catalog.i18nc("@label", "Waiting for: First available")
// }
// else
// {
// return catalog.i18nc("@label", "Waiting for: ") + printJob.assignedPrinter.name
// }
// }
// anchors
// {
// left: parent.left
// right: contextButton.left
// rightMargin: UM.Theme.getSize("default_margin").width
// }
// }
// 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_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: sendToTopButton
// text: catalog.i18nc("@label", "Move to top")
// onClicked:
// {
// sendToTopConfirmationDialog.visible = true;
// popup.close();
// }
// width: parent.width
// enabled: OutputDevice.queuedPrintJobs[0].key != printJob.key
// 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: 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: OutputDevice.sendJobToTop(printJob.key)
// }
// 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
// title: catalog.i18nc("@window:title", "Delete print job")
// icon: StandardIcon.Warning
// text: 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
// {
// // 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
// }
// Row
// {
// id: printerFamilyPills
// spacing: 0.5 * UM.Theme.getSize("default_margin").width
// anchors
// {
// left: parent.left
// right: parent.right
// bottom: extrudersInfo.top
// bottomMargin: UM.Theme.getSize("default_margin").height
// }
// height: childrenRect.height
// Repeater
// {
// model: printJob.compatibleMachineFamilies
// delegate: PrinterFamilyPill
// {
// text: modelData
// color: UM.Theme.getColor("viewport_background")
// padding: 3 * screenScaleFactor
// }
// }
// }
// // PrintCore && Material config
// Row
// {
// id: extrudersInfo
// anchors.bottom: parent.bottom
// anchors
// {
// left: parent.left
// right: parent.right
// }
// height: childrenRect.height
// spacing: UM.Theme.getSize("default_margin").width
// PrintCoreConfiguration
// {
// id: leftExtruderInfo
// width: Math.round(parent.width / 2) * screenScaleFactor
// printCoreConfiguration: printJob.configuration.extruderConfigurations[0]
// }
// PrintCoreConfiguration
// {
// id: rightExtruderInfo
// width: Math.round(parent.width / 2) * screenScaleFactor
// printCoreConfiguration: printJob.configuration.extruderConfigurations[1]
// }
// }
// }
// }
// Rectangle
// {
// height: cardHeight * screenScaleFactor
// color: UM.Theme.getColor("viewport_background")
// width: 2 * screenScaleFactor
// anchors.top: parent.top
// anchors.margins: UM.Theme.getSize("default_margin").height
// anchors.horizontalCenter: parent.horizontalCenter
// }
// // Alert / Configuration change box
// Rectangle
// {
// height: alertHeight() * screenScaleFactor
// anchors.left: parent.left
// anchors.right: parent.right
// anchors.bottom: parent.bottom
// color: "#ff00ff"
// ColumnLayout
// {
// anchors.fill: parent
// RowLayout
// {
// Item
// {
// Layout.fillWidth: true
// }
// Label
// {
// font: UM.Theme.getFont("default_bold")
// text: "Configuration change"
// }
// UM.RecolorImage
// {
// id: collapseIcon
// width: 15
// height: 15
// sourceSize.width: width
// sourceSize.height: height
// // FIXME
// source: base.collapsed ? UM.Theme.getIcon("arrow_left") : UM.Theme.getIcon("arrow_bottom")
// color: "black"
// }
// Item
// {
// Layout.fillWidth: true
// }
// }
// Rectangle
// {
// Layout.fillHeight: true
// Layout.fillWidth: true
// color: "red"
// Rectangle
// {
// color: "green"
// width: childrenRect.width
// anchors.horizontalCenter: parent.horizontalCenter
// anchors.top: parent.top
// anchors.bottom: parent.bottom
// ColumnLayout
// {
// width: childrenRect.width
// anchors.top: parent.top
// anchors.bottom: parent.bottom
// Text
// {
// Layout.alignment: Qt.AlignTop
// textFormat: Text.StyledText
// font: UM.Theme.getFont("default_bold")
// text: alertText()
// }
// Button
// {
// visible: isPrintJobForcable(printJob)
// text: catalog.i18nc("@label", "Override")
// onClicked: {
// overrideConfirmationDialog.visible = true;
// }
// }
// // Spacer
// Item
// {
// Layout.fillHeight: true
// }
// }
// }
// }
// }
// }
// MessageDialog
// {
// id: overrideConfirmationDialog
// title: catalog.i18nc("@window:title", "Override configuration configuration and start print")
// icon: StandardIcon.Warning
// text: {
// var printJobName = formatPrintJobName(printJob.name);
// var confirmText = catalog.i18nc("@label", "Starting a print job with an incompatible configuration could damage your 3D printer. Are you sure you want to override the configuration and print %1?").arg(printJobName);
// return confirmText;
// }
// standardButtons: StandardButton.Yes | StandardButton.No
// Component.onCompleted: visible = false
// onYes: OutputDevice.forceSendJob(printJob.key)
// }
// }
// }