Cura/plugins/UM3NetworkPrinting/resources/qml/MonitorPrinterContextMenu.qml
Ian Paschal cdc24081a5 Create MonitorPrinterContextMenu.qml
Contributes to CL-1165
2019-01-09 17:03:56 +01:00

92 lines
3.3 KiB
QML

// 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 QtQuick.Dialogs 1.1
import UM 1.3 as UM
/**
* A MonitorInfoBlurb is an extension of the GenericPopUp used to show static information (vs. interactive context
* menus). It accepts some text (text), an item to link to to (target), and a specification of which side of the target
* to appear on (direction). It also sets the GenericPopUp's color to black, to differentiate itself from a menu.
*/
Item
{
property alias target: popUp.target
property var printJob: null
GenericPopUp
{
id: popUp
// If the pop-up won't fit in the window, flip it
direction:
{
var availableSpace = monitorFrame.height
var targetPosition = target.mapToItem(null, 0, 0)
var requiredSpace = targetPosition.y + target.height + contentWrapper.implicitHeight
return requiredSpace < availableSpace ? "top" : "bottom"
}
// Use dark grey for info blurbs and white for context menus
color: "#ffffff" // TODO: Theme!
contentItem: Item
{
id: contentWrapper
implicitWidth: childrenRect.width
implicitHeight: innerLabel.contentHeight
Label
{
id: innerLabel
text: "The future of context menus starts here!"
wrapMode: Text.WordWrap
width: 182 * screenScaleFactor // TODO: Theme!
color: "white" // TODO: Theme!
font: UM.Theme.getFont("default")
}
}
}
MessageDialog {
id: sendToTopConfirmationDialog
Component.onCompleted: visible = false
icon: StandardIcon.Warning
onYes: OutputDevice.sendJobToTop(printJob.key)
standardButtons: StandardButton.Yes | StandardButton.No
text: printJob && printJob.name ? 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")
}
MessageDialog {
id: deleteConfirmationDialog
Component.onCompleted: visible = false
icon: StandardIcon.Warning
onYes: OutputDevice.deleteJobFromQueue(printJob.key)
standardButtons: StandardButton.Yes | StandardButton.No
text: printJob && printJob.name ? 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: abortConfirmationDialog
Component.onCompleted: visible = false
icon: StandardIcon.Warning
onYes: printJob.setState("abort")
standardButtons: StandardButton.Yes | StandardButton.No
text: printJob && printJob.name ? 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")
}
function switchPopupState() {
popUp.visible ? popUp.close() : popUp.open()
}
function open() {
popUp.open()
}
function close() {
popUp.close()
}
}