Transfer from old project
This commit is contained in:
parent
3e406c67db
commit
c5ef6a6982
6 changed files with 261 additions and 34 deletions
|
@ -14,12 +14,18 @@ TARGET = harbour-seaprint
|
||||||
|
|
||||||
CONFIG += sailfishapp
|
CONFIG += sailfishapp
|
||||||
|
|
||||||
SOURCES += src/harbour-seaprint.cpp
|
SOURCES += src/harbour-seaprint.cpp \
|
||||||
|
src/ippdiscovery.cpp \
|
||||||
|
src/bytestream.cpp \
|
||||||
|
src/ippmsg.cpp \
|
||||||
|
src/ippprinter.cpp
|
||||||
|
|
||||||
|
|
||||||
DISTFILES += qml/harbour-seaprint.qml \
|
DISTFILES += qml/harbour-seaprint.qml \
|
||||||
qml/cover/CoverPage.qml \
|
qml/cover/CoverPage.qml \
|
||||||
qml/pages/FirstPage.qml \
|
qml/pages/*.qml \
|
||||||
qml/pages/SecondPage.qml \
|
qml/pages/utils.js \
|
||||||
|
qml/pages/printer.svg \
|
||||||
rpm/harbour-seaprint.changes.in \
|
rpm/harbour-seaprint.changes.in \
|
||||||
rpm/harbour-seaprint.changes.run.in \
|
rpm/harbour-seaprint.changes.run.in \
|
||||||
rpm/harbour-seaprint.spec \
|
rpm/harbour-seaprint.spec \
|
||||||
|
@ -38,3 +44,9 @@ CONFIG += sailfishapp_i18n
|
||||||
# following TRANSLATIONS line. And also do not forget to
|
# following TRANSLATIONS line. And also do not forget to
|
||||||
# modify the localized app name in the the .desktop file.
|
# modify the localized app name in the the .desktop file.
|
||||||
TRANSLATIONS += translations/harbour-seaprint-de.ts
|
TRANSLATIONS += translations/harbour-seaprint-de.ts
|
||||||
|
|
||||||
|
HEADERS += \
|
||||||
|
src/ippdiscovery.h \
|
||||||
|
src/bytestream.h \
|
||||||
|
src/ippmsg.h \
|
||||||
|
src/ippprinter.h
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Sailfish.Silica 1.0
|
import Sailfish.Silica 1.0
|
||||||
|
import QtQuick.LocalStorage 2.0
|
||||||
|
import Nemo.Notifications 1.0
|
||||||
import "pages"
|
import "pages"
|
||||||
|
|
||||||
ApplicationWindow
|
ApplicationWindow
|
||||||
|
@ -7,4 +9,49 @@ ApplicationWindow
|
||||||
initialPage: Component { FirstPage { } }
|
initialPage: Component { FirstPage { } }
|
||||||
cover: Qt.resolvedUrl("cover/CoverPage.qml")
|
cover: Qt.resolvedUrl("cover/CoverPage.qml")
|
||||||
allowedOrientations: defaultAllowedOrientations
|
allowedOrientations: defaultAllowedOrientations
|
||||||
|
|
||||||
|
Item {
|
||||||
|
id: db
|
||||||
|
property var db_conn
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
db_conn = LocalStorage.openDatabaseSync("TintDB", "1.0", "Tint storage", 100000)
|
||||||
|
db_conn.transaction(function (tx) {
|
||||||
|
tx.executeSql('CREATE TABLE IF NOT EXISTS Favourites (url STRING UNIQUE)');
|
||||||
|
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function addFavourite(url) {
|
||||||
|
db_conn.transaction(function (tx) {
|
||||||
|
tx.executeSql('REPLACE INTO Favourites VALUES(?)', [url] );
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function getFavourites() {
|
||||||
|
var favs = [];
|
||||||
|
db_conn.transaction(function (tx) {
|
||||||
|
var res = tx.executeSql('SELECT * FROM Favourites');
|
||||||
|
if (res.rows.length !== 0) {
|
||||||
|
console.log(res.rows.item(0).url)
|
||||||
|
favs.push(res.rows.item(0).url);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return favs
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Notification {
|
||||||
|
id: notifier
|
||||||
|
|
||||||
|
expireTimeout: 4000
|
||||||
|
|
||||||
|
function notify(data) {
|
||||||
|
console.log("notifyMessage", data)
|
||||||
|
body = data
|
||||||
|
previewBody = data
|
||||||
|
publish()
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,32 @@
|
||||||
import QtQuick 2.0
|
import QtQuick 2.0
|
||||||
import Sailfish.Silica 1.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 {
|
Page {
|
||||||
id: page
|
id: page
|
||||||
|
|
||||||
// The effective value will be restricted by ApplicationWindow.allowedOrientations
|
|
||||||
allowedOrientations: Orientation.All
|
allowedOrientations: Orientation.All
|
||||||
|
|
||||||
|
property string selectedFile: "/home/nemo/Downloads/1.pdf"
|
||||||
|
|
||||||
|
IppDiscovery {
|
||||||
|
id: discovery
|
||||||
|
}
|
||||||
|
|
||||||
|
DBusAdaptor {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Component.onCompleted: {
|
||||||
|
discovery.discover();
|
||||||
|
var favourites = db.getFavourites();
|
||||||
|
console.log(favourites);
|
||||||
|
discovery.favourites = favourites;
|
||||||
|
}
|
||||||
|
|
||||||
// To enable PullDownMenu, place our content in a SilicaFlickable
|
// To enable PullDownMenu, place our content in a SilicaFlickable
|
||||||
SilicaFlickable {
|
SilicaFlickable {
|
||||||
anchors.fill: parent
|
anchors.fill: parent
|
||||||
|
@ -14,29 +34,126 @@ Page {
|
||||||
// PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
|
// PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
|
||||||
PullDownMenu {
|
PullDownMenu {
|
||||||
MenuItem {
|
MenuItem {
|
||||||
text: qsTr("Show Page 2")
|
text: qsTr("Add by URL")
|
||||||
onClicked: pageStack.push(Qt.resolvedUrl("SecondPage.qml"))
|
onClicked: {var dialog = pageStack.push(Qt.resolvedUrl("InputDialog.qml"),
|
||||||
|
{value: qsTr("Add favourite"), title: qsTr("URL")});
|
||||||
|
dialog.accepted.connect(function() {
|
||||||
|
db.addFavourite(dialog.value);
|
||||||
|
discovery.insert(dialog.value);
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
MenuItem {
|
||||||
|
text: qsTr("Refresh")
|
||||||
|
onClicked: discovery.discover()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Tell SilicaFlickable the height of its content.
|
SilicaListView {
|
||||||
contentHeight: column.height
|
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"
|
||||||
|
}
|
||||||
|
|
||||||
// Place our content in a Column. The PageHeader is always placed at the top
|
|
||||||
// of the page, followed by our content.
|
|
||||||
Column {
|
Column {
|
||||||
id: column
|
id: column
|
||||||
|
anchors.left: icon.right
|
||||||
|
anchors.leftMargin: Theme.paddingMedium
|
||||||
|
|
||||||
width: page.width
|
|
||||||
spacing: Theme.paddingLarge
|
|
||||||
PageHeader {
|
|
||||||
title: qsTr("UI Template")
|
|
||||||
}
|
|
||||||
Label {
|
Label {
|
||||||
x: Theme.horizontalPageMargin
|
id: name_label
|
||||||
text: qsTr("Hello Sailors")
|
color: delegate.enabled ? Theme.primaryColor : Theme.secondaryColor
|
||||||
color: Theme.secondaryHighlightColor
|
text: printer.attrs["printer-name"].value
|
||||||
font.pixelSize: Theme.fontSizeExtraLarge
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,10 +3,15 @@
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include <sailfishapp.h>
|
#include <sailfishapp.h>
|
||||||
|
#include <src/ippdiscovery.h>
|
||||||
|
#include <src/ippprinter.h>
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
// SailfishApp::main() will display "qml/harbour-seaprint.qml", if you need more
|
qmlRegisterType<IppDiscovery>("seaprint.ippdiscovery", 1, 0, "IppDiscovery");
|
||||||
|
qmlRegisterType<IppPrinter>("seaprint.ippprinter", 1, 0, "IppPrinter");
|
||||||
|
|
||||||
|
// SailfishApp::main() will display "qml/harbour-printtool.qml", if you need more
|
||||||
// control over initialization, you can use:
|
// control over initialization, you can use:
|
||||||
//
|
//
|
||||||
// - SailfishApp::application(int, char *[]) to get the QGuiApplication *
|
// - SailfishApp::application(int, char *[]) to get the QGuiApplication *
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!DOCTYPE TS>
|
<!DOCTYPE TS>
|
||||||
<TS version="2.0">
|
<TS version="2.1">
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
<message>
|
<message>
|
||||||
|
@ -11,16 +11,39 @@
|
||||||
<context>
|
<context>
|
||||||
<name>FirstPage</name>
|
<name>FirstPage</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Show Page 2</source>
|
<source>Add by URL</source>
|
||||||
<translation>Zur Seite 2</translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>UI Template</source>
|
<source>Add favourite</source>
|
||||||
<translation>UI-Vorlage</translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Hello Sailors</source>
|
<source>URL</source>
|
||||||
<translation>Hallo Matrosen</translation>
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Refresh</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No file selected</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Choose file</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>None</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>PrinterPage</name>
|
||||||
|
<message>
|
||||||
|
<source>Print</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
<context>
|
<context>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<!DOCTYPE TS>
|
<!DOCTYPE TS>
|
||||||
<TS version="2.0">
|
<TS version="2.1">
|
||||||
<context>
|
<context>
|
||||||
<name>CoverPage</name>
|
<name>CoverPage</name>
|
||||||
<message>
|
<message>
|
||||||
|
@ -11,15 +11,38 @@
|
||||||
<context>
|
<context>
|
||||||
<name>FirstPage</name>
|
<name>FirstPage</name>
|
||||||
<message>
|
<message>
|
||||||
<source>Show Page 2</source>
|
<source>Add by URL</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>UI Template</source>
|
<source>Add favourite</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
<message>
|
<message>
|
||||||
<source>Hello Sailors</source>
|
<source>URL</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Refresh</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>No file selected</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>Choose file</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
<message>
|
||||||
|
<source>None</source>
|
||||||
|
<translation type="unfinished"></translation>
|
||||||
|
</message>
|
||||||
|
</context>
|
||||||
|
<context>
|
||||||
|
<name>PrinterPage</name>
|
||||||
|
<message>
|
||||||
|
<source>Print</source>
|
||||||
<translation type="unfinished"></translation>
|
<translation type="unfinished"></translation>
|
||||||
</message>
|
</message>
|
||||||
</context>
|
</context>
|
||||||
|
|
Loading…
Reference in a new issue