201 lines
6.5 KiB
QML
201 lines
6.5 KiB
QML
import QtQuick 2.0
|
|
import Sailfish.Silica 1.0
|
|
import Sailfish.Pickers 1.0
|
|
import seaprint.ippdiscovery 1.0
|
|
import seaprint.ippprinter 1.0
|
|
import "utils.js" as Utils
|
|
import Nemo.DBus 2.0
|
|
|
|
Page {
|
|
id: page
|
|
allowedOrientations: Orientation.All
|
|
|
|
property string selectedFile: "/home/nemo/Downloads/1.pdf"
|
|
property string currentSSID: ""
|
|
|
|
onCurrentSSIDChanged: {
|
|
console.log(currentSSID);
|
|
if(currentSSID != "") {
|
|
var favourites = db.getFavourites(currentSSID);
|
|
console.log(favourites);
|
|
discovery.favourites = favourites;
|
|
}
|
|
else {
|
|
discovery.favourites = []
|
|
}
|
|
}
|
|
|
|
IppDiscovery {
|
|
id: discovery
|
|
}
|
|
|
|
DBusInterface {
|
|
id: ssid_finder
|
|
|
|
bus: DBus.SystemBus
|
|
|
|
service: 'net.connman'
|
|
path: '/'
|
|
iface: 'net.connman.Manager'
|
|
|
|
signalsEnabled: true
|
|
|
|
function go() {
|
|
call("GetServices", undefined,
|
|
function(result) {
|
|
for (var i = 0; i < result.length; i++) {
|
|
var entry = result[i][1];
|
|
if(entry.Type == "wifi" && (entry.State == "online" || entry.State == "ready")) {
|
|
page.currentSSID = entry.Name;
|
|
return;
|
|
}
|
|
}
|
|
page.currentSSID = "";
|
|
},
|
|
function(error, message) {
|
|
console.log('call failed', error, 'message:', message);
|
|
page.currentSSID = entry.Name;
|
|
})
|
|
}
|
|
|
|
}
|
|
|
|
Component.onCompleted: {
|
|
discovery.discover();
|
|
ssid_finder.go();
|
|
}
|
|
|
|
// To enable PullDownMenu, place our content in a SilicaFlickable
|
|
SilicaFlickable {
|
|
anchors.fill: parent
|
|
|
|
// PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
|
|
PullDownMenu {
|
|
MenuItem {
|
|
text: qsTr("Add by URL")
|
|
onClicked: {var dialog = pageStack.push(Qt.resolvedUrl("InputDialog.qml"),
|
|
{value: qsTr("Add favourite"), title: qsTr("URL")});
|
|
dialog.accepted.connect(function() {
|
|
db.addFavourite(page.currentSSID, dialog.value);
|
|
discovery.favourites = db.getFavourites(page.currentSSID);
|
|
})
|
|
}
|
|
}
|
|
MenuItem {
|
|
text: qsTr("Refresh")
|
|
onClicked: {
|
|
discovery.discover();
|
|
ssid_finder.go();
|
|
}
|
|
}
|
|
}
|
|
|
|
SilicaListView {
|
|
anchors.fill: parent
|
|
id: listView
|
|
model: discovery
|
|
spacing: Theme.paddingSmall
|
|
|
|
|
|
delegate: BackgroundItem {
|
|
id: delegate
|
|
height: visible ? Math.max(column.implicitHeight, Theme.itemSizeLarge+2*Theme.paddingMedium) : 0
|
|
visible: printer.attrs["printer-name"] ? true : false
|
|
enabled: Utils.can_print(printer, selectedFile)
|
|
onClicked: {
|
|
if(selectedFile != "")
|
|
{
|
|
pageStack.push(Qt.resolvedUrl("PrinterPage.qml"), {printer: printer, selectedFile: selectedFile})
|
|
}
|
|
else
|
|
{
|
|
notifier.notify(qsTr("No file selected"))
|
|
}
|
|
}
|
|
|
|
IppPrinter {
|
|
id: printer
|
|
url: model.display
|
|
}
|
|
|
|
Image {
|
|
id: icon
|
|
anchors.top: parent.top
|
|
anchors.left: parent.left
|
|
anchors.topMargin: Theme.paddingMedium
|
|
anchors.leftMargin: Theme.paddingMedium
|
|
|
|
height: Theme.itemSizeLarge
|
|
width: Theme.itemSizeLarge
|
|
source: printer.attrs["printer-icons"] ? printer.attrs["printer-icons"].value[0] : "printer.svg"
|
|
// Some printers serve their icons over https with invalid certs...
|
|
onStatusChanged: if (status == Image.Error) source = "printer.svg"
|
|
}
|
|
|
|
Column {
|
|
id: column
|
|
anchors.left: icon.right
|
|
anchors.leftMargin: Theme.paddingMedium
|
|
|
|
Label {
|
|
id: name_label
|
|
color: delegate.enabled ? Theme.primaryColor : Theme.secondaryColor
|
|
text: printer.attrs["printer-name"].value
|
|
}
|
|
|
|
Label {
|
|
id: mm_label
|
|
color: delegate.enabled ? Theme.primaryColor : Theme.secondaryColor
|
|
font.pixelSize: Theme.fontSizeExtraSmall
|
|
text: printer.attrs["printer-make-and-model"].value
|
|
}
|
|
|
|
Label {
|
|
id: uri_label
|
|
color: Theme.secondaryColor
|
|
font.pixelSize: Theme.fontSizeTiny
|
|
text: model.display
|
|
}
|
|
|
|
Label {
|
|
id: format_label
|
|
color: delegate.enabled ? Theme.primaryColor : "red"
|
|
font.pixelSize: Theme.fontSizeExtraSmall
|
|
text: Utils.supported_formats(printer)
|
|
}
|
|
}
|
|
|
|
}
|
|
onCountChanged: {
|
|
console.log("count", count)
|
|
}
|
|
}
|
|
}
|
|
DockedPanel {
|
|
id: fileDock
|
|
open: true
|
|
height: fileButton.height*2
|
|
width: parent.width
|
|
dock: Dock.Bottom
|
|
|
|
ValueButton {
|
|
id: fileButton
|
|
width: parent.width
|
|
anchors.verticalCenter: parent.verticalCenter
|
|
label: qsTr("Choose file")
|
|
value: selectedFile != "" ? selectedFile : qsTr("None")
|
|
onClicked: pageStack.push(filePickerPage)
|
|
}
|
|
Component {
|
|
id: filePickerPage
|
|
FilePickerPage {
|
|
title: fileButton.label
|
|
nameFilters: ["*.pdf", "*.jpg", "*.jpeg"]
|
|
|
|
onSelectedContentPropertiesChanged: {
|
|
page.selectedFile = selectedContentProperties.filePath
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|