harbour-seaprint/qml/pages/AddPrinterDialog.qml
2021-07-11 14:27:03 +02:00

171 lines
4.4 KiB
QML

import QtQuick 2.6
import Sailfish.Silica 1.0
import seaprint.ippprinter 1.0
import "utils.js" as Utils
Dialog {
id: dialog
allowedOrientations: Orientation.All
property string value
property string ssid
property var printerName: false
canAccept: Object.keys(printer.attrs).length != 0
Connections {
target: wifi
onConnectedChanged: {
if(!wifi.connected) {
dialog.reject()
}
}
}
Component.onCompleted: {
valueField.forceActiveFocus()
}
IppPrinter {
id: printer
url: valueField.text
onAttrsChanged: {
if(printer.attrs.hasOwnProperty("printer-name")) {
printerName = Utils.unknownForEmptyString(printer.attrs["printer-name"].value)
}
else
{
printerName = qsTr("Unknown")
}
}
}
Column {
id: col
width: parent.width
DialogHeader {
title: qsTr("Add printer")
}
TextField {
id: valueField
width: parent.width
placeholderText: "192.168.1.1/ipp/print"
inputMethodHints: Qt.ImhUrlCharactersOnly | Qt.ImhNoAutoUppercase
label: title
}
Row {
x: Theme.paddingLarge
spacing: Theme.paddingMedium
Label {
id: wifi_label
text: qsTr("On WiFi:")
}
Label {
id: ssid_label
color: Theme.secondaryColor
text: wifi.ssid
}
}
Row {
x: Theme.paddingLarge
spacing: Theme.paddingMedium
Label {
id: found_label
text: canAccept ? qsTr("Found:") : qsTr("No printer found")
}
Label {
id: printer_label
color: Theme.secondaryColor
text: canAccept ? printerName : ""
}
}
Item {
width: 1
height: 2*Theme.paddingLarge
}
Row {
visible: valueField.text.indexOf(":9100") != -1
x: Theme.paddingLarge
width: parent.width-2*Theme.paddingLarge
spacing: Theme.paddingMedium
Icon {
id: warningIcon
source: "image://theme/icon-m-warning"
anchors.verticalCenter: parent.verticalCenter
}
Label {
width: parent.width-warningIcon.width-Theme.paddingMedium
anchors.verticalCenter: parent.verticalCenter
color: Theme.highlightColor
wrapMode: Text.WordWrap
text: qsTr("Port 9100 is not used for IPP.")
}
}
Row {
id: suffixWarning
visible: canAccept && !printer.correctSuffix
x: Theme.paddingLarge
width: parent.width-2*Theme.paddingLarge
spacing: Theme.paddingMedium
Icon {
id: warningIcon2
source: "image://theme/icon-m-warning"
anchors.verticalCenter: parent.verticalCenter
}
Label {
width: parent.width-warningIcon2.width-Theme.paddingMedium
anchors.verticalCenter: parent.verticalCenter
color: Theme.highlightColor
wrapMode: Text.WordWrap
text: qsTr("The uri suffix is not in the printer's supported list.")+" "+
qsTr("It might not accept print jobs on this address.")+" "+
qsTr("Consider using a suffix like \"/ipp/print\".")
}
}
Item {
width: 1
height: 2*Theme.paddingLarge
}
Label
{
x: Theme.paddingLarge
visible: suffixWarning.visible && printer.suffixes.length != 0
text: qsTr("The printer/server lists these suffixes:")
}
Repeater
{
model: suffixWarning.visible ? printer.suffixes : 0
Label
{
x: Theme.paddingLarge
text: printer.suffixes[index]
}
}
}
onDone: {
if (result == DialogResult.Accepted) {
value = valueField.text
ssid = wifi.ssid
}
}
}