2021-03-06 18:13:21 +03:00
|
|
|
import QtQuick 2.6
|
2019-12-01 17:40:10 +03:00
|
|
|
import Sailfish.Silica 1.0
|
2019-12-01 17:55:55 +03:00
|
|
|
import Sailfish.Pickers 1.0
|
|
|
|
import seaprint.ippdiscovery 1.0
|
2020-05-11 21:44:53 +03:00
|
|
|
import seaprint.convertchecker 1.0
|
2019-12-01 17:55:55 +03:00
|
|
|
import seaprint.ippprinter 1.0
|
2020-02-18 22:40:31 +03:00
|
|
|
import seaprint.mimer 1.0
|
2019-12-01 17:55:55 +03:00
|
|
|
import "utils.js" as Utils
|
2019-12-01 17:40:10 +03:00
|
|
|
|
|
|
|
Page {
|
|
|
|
id: page
|
|
|
|
allowedOrientations: Orientation.All
|
|
|
|
|
2019-12-17 22:33:21 +03:00
|
|
|
property string selectedFile: ""
|
2020-01-03 14:45:51 +03:00
|
|
|
property string selectedFileType
|
2019-12-01 17:55:55 +03:00
|
|
|
|
2021-02-14 16:38:35 +03:00
|
|
|
Connections {
|
|
|
|
target: wifi
|
2019-12-02 22:56:38 +03:00
|
|
|
onConnectedChanged: {
|
2021-02-14 16:38:35 +03:00
|
|
|
console.log("conn", wifi.connected, wifi.ssid)
|
|
|
|
if(wifi.connected) {
|
|
|
|
var favourites = db.getFavourites(wifi.ssid);
|
2019-12-02 22:56:38 +03:00
|
|
|
console.log(favourites);
|
2020-01-05 20:41:24 +03:00
|
|
|
IppDiscovery.favourites = favourites;
|
2019-12-02 22:56:38 +03:00
|
|
|
}
|
|
|
|
else {
|
2020-01-05 20:41:24 +03:00
|
|
|
IppDiscovery.favourites = []
|
2019-12-02 22:56:38 +03:00
|
|
|
}
|
2019-12-01 22:21:36 +03:00
|
|
|
}
|
2020-01-04 15:30:55 +03:00
|
|
|
|
|
|
|
property bool initialSSIDchange: true
|
|
|
|
|
2020-01-02 23:28:35 +03:00
|
|
|
onSsidChanged: {
|
2021-02-14 16:38:35 +03:00
|
|
|
console.log("ssid changed", wifi.ssid);
|
2020-01-04 15:30:55 +03:00
|
|
|
if(!initialSSIDchange)
|
|
|
|
{
|
2020-01-05 20:41:24 +03:00
|
|
|
IppDiscovery.reset();
|
2020-01-04 15:30:55 +03:00
|
|
|
}
|
|
|
|
initialSSIDchange = false;
|
2020-01-02 23:28:35 +03:00
|
|
|
}
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
|
2020-10-10 18:55:01 +03:00
|
|
|
Label {
|
|
|
|
text: qsTr("Not on WiFi")
|
|
|
|
color: Theme.highlightColor
|
|
|
|
anchors.centerIn: parent
|
|
|
|
visible: !wifi.connected
|
|
|
|
}
|
|
|
|
|
2020-10-10 18:38:53 +03:00
|
|
|
property bool initialized: false
|
|
|
|
onVisibleChanged: {
|
|
|
|
if (visible)
|
|
|
|
{
|
|
|
|
if(initialized)
|
|
|
|
page.refreshed()
|
|
|
|
initialized = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-17 22:20:09 +03:00
|
|
|
signal refreshed()
|
2021-05-28 21:45:50 +03:00
|
|
|
signal noFileSelected()
|
2019-12-17 22:20:09 +03:00
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
Component.onCompleted: {
|
2021-06-12 17:54:17 +03:00
|
|
|
console.log("Selected file is", selectedFile)
|
2020-01-05 20:41:24 +03:00
|
|
|
IppDiscovery.discover();
|
2020-01-05 15:24:25 +03:00
|
|
|
if(selectedFile != "")
|
2020-02-18 22:40:31 +03:00
|
|
|
{
|
|
|
|
var type = Mimer.get_type(selectedFile);
|
|
|
|
console.log(type);
|
|
|
|
selectedFileType = type;
|
2020-01-05 15:24:25 +03:00
|
|
|
}
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
|
2020-06-07 15:28:54 +03:00
|
|
|
property bool nagged: false
|
|
|
|
|
|
|
|
onStatusChanged: {
|
|
|
|
if(status==PageStatus.Active && !nagged && nagScreenSetting.value != nagScreenSetting.expectedValue)
|
|
|
|
{
|
2021-03-06 14:59:47 +03:00
|
|
|
console.log("Can convert from Office:", ConvertChecker.calligra)
|
2021-11-20 19:31:03 +03:00
|
|
|
if(expectCalligra && !ConvertChecker.calligra)
|
2020-06-07 15:28:54 +03:00
|
|
|
{
|
|
|
|
nagged=true
|
|
|
|
pageStack.push(Qt.resolvedUrl("NagScreen.qml"))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-01 17:40:10 +03:00
|
|
|
// To enable PullDownMenu, place our content in a SilicaFlickable
|
|
|
|
SilicaFlickable {
|
2021-03-28 22:05:14 +03:00
|
|
|
anchors.top: parent.top
|
|
|
|
width: parent.width
|
|
|
|
anchors.bottom: fileDock.top
|
|
|
|
clip: true
|
2019-12-01 17:40:10 +03:00
|
|
|
|
|
|
|
// PullDownMenu and PushUpMenu must be declared in SilicaFlickable, SilicaListView or SilicaGridView
|
|
|
|
PullDownMenu {
|
|
|
|
MenuItem {
|
2019-12-13 23:36:39 +03:00
|
|
|
text: qsTr("About SeaPrint")
|
|
|
|
onClicked: pageStack.push(Qt.resolvedUrl("AboutPage.qml"))
|
2020-06-07 18:05:46 +03:00
|
|
|
}
|
|
|
|
MenuItem {
|
|
|
|
text: qsTr("Settings")
|
|
|
|
onClicked: pageStack.push(Qt.resolvedUrl("SettingsPage.qml"))
|
|
|
|
}
|
2019-12-01 17:40:10 +03:00
|
|
|
MenuItem {
|
2019-12-01 17:55:55 +03:00
|
|
|
text: qsTr("Add by URL")
|
2019-12-02 22:56:38 +03:00
|
|
|
enabled: wifi.connected
|
2019-12-02 22:23:44 +03:00
|
|
|
onClicked: {
|
2021-02-15 20:03:35 +03:00
|
|
|
var dialog = pageStack.push(Qt.resolvedUrl("AddPrinterDialog.qml"));
|
2019-12-02 22:23:44 +03:00
|
|
|
dialog.accepted.connect(function() {
|
2019-12-13 21:14:50 +03:00
|
|
|
console.log("add", wifi.ssid, dialog.value);
|
2019-12-02 22:56:38 +03:00
|
|
|
db.addFavourite(wifi.ssid, dialog.value);
|
2021-02-15 20:03:35 +03:00
|
|
|
IppDiscovery.favourites = db.getFavourites(dialog.ssid);
|
2019-12-02 22:23:44 +03:00
|
|
|
})
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
MenuItem {
|
|
|
|
text: qsTr("Refresh")
|
2019-12-01 22:21:36 +03:00
|
|
|
onClicked: {
|
2020-01-05 20:41:24 +03:00
|
|
|
IppDiscovery.discover();
|
2019-12-17 22:20:09 +03:00
|
|
|
page.refreshed();
|
2019-12-01 22:21:36 +03:00
|
|
|
}
|
2019-12-01 17:40:10 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
SilicaListView {
|
|
|
|
id: listView
|
2021-03-28 22:05:14 +03:00
|
|
|
anchors.fill: parent
|
2020-01-05 20:41:24 +03:00
|
|
|
model: IppDiscovery
|
2019-12-01 17:55:55 +03:00
|
|
|
spacing: Theme.paddingSmall
|
|
|
|
|
|
|
|
|
2020-08-09 16:23:05 +03:00
|
|
|
header: PageHeader {
|
|
|
|
id: pageHeader
|
|
|
|
title: "SeaPrint"
|
|
|
|
description: qsTr("Available printers")
|
|
|
|
}
|
|
|
|
|
2019-12-08 15:55:56 +03:00
|
|
|
delegate: ListItem {
|
2019-12-01 17:55:55 +03:00
|
|
|
id: delegate
|
2019-12-08 15:55:56 +03:00
|
|
|
contentItem.height: visible ? Math.max(column.implicitHeight, Theme.itemSizeLarge+2*Theme.paddingMedium) : 0
|
2019-12-13 21:14:50 +03:00
|
|
|
|
2021-02-13 19:11:45 +03:00
|
|
|
IppPrinter {
|
|
|
|
id: printer
|
|
|
|
url: model.display
|
|
|
|
}
|
|
|
|
|
|
|
|
visible: Object.keys(printer.attrs).length !== 0
|
2019-12-15 13:24:36 +03:00
|
|
|
|
2022-01-04 21:29:03 +03:00
|
|
|
property string name: Utils.unknownForEmptyString(printer.attrs["printer-name"].value)
|
2021-07-11 15:18:50 +03:00
|
|
|
property var supported_formats: Utils.supported_formats(printer, considerAdditionalFormatsSetting.value)
|
2021-03-06 17:43:01 +03:00
|
|
|
property bool canPrint: supported_formats.mimetypes.indexOf(selectedFileType) != -1
|
2019-12-13 21:14:50 +03:00
|
|
|
|
2019-12-15 13:24:36 +03:00
|
|
|
Connections {
|
|
|
|
target: printer
|
|
|
|
onAttrsChanged: {
|
|
|
|
if(Object.keys(printer.attrs).length === 0) {
|
|
|
|
delegate.visible = false
|
|
|
|
}
|
|
|
|
else {
|
|
|
|
delegate.visible = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-12-17 22:20:09 +03:00
|
|
|
|
|
|
|
Connections {
|
|
|
|
target: page
|
|
|
|
onRefreshed: {
|
|
|
|
console.log("onRefreshed")
|
|
|
|
printer.refresh()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-01-26 15:27:56 +03:00
|
|
|
Timer
|
|
|
|
{
|
|
|
|
id: debugCountReset
|
|
|
|
interval: 666
|
|
|
|
repeat: false
|
|
|
|
onTriggered:
|
|
|
|
{
|
|
|
|
debugCount = 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
property int debugCount: 0
|
|
|
|
|
2021-03-21 00:45:58 +03:00
|
|
|
function maybeGetParams()
|
|
|
|
{
|
|
|
|
if(printer.attrs.hasOwnProperty("printer-uuid"))
|
|
|
|
{
|
2021-03-21 14:49:54 +03:00
|
|
|
return JSON.parse(db.getJobSettings(printer.attrs["printer-uuid"].value, selectedFileType));
|
2021-03-21 00:45:58 +03:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
return new Object();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
onClicked: {
|
2020-05-09 15:24:51 +03:00
|
|
|
|
2020-01-26 15:27:56 +03:00
|
|
|
if(++debugCount == 5)
|
|
|
|
{
|
|
|
|
pageStack.push(Qt.resolvedUrl("DebugPage.qml"), {printer: printer})
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
debugCountReset.restart();
|
2021-05-28 21:45:50 +03:00
|
|
|
if(selectedFile == "")
|
2019-12-01 17:55:55 +03:00
|
|
|
{
|
2021-05-28 21:45:50 +03:00
|
|
|
noFileSelected();
|
|
|
|
}
|
|
|
|
else if(!canPrint)
|
|
|
|
{
|
|
|
|
return;
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-05-28 21:45:50 +03:00
|
|
|
pageStack.push(Qt.resolvedUrl("PrinterPage.qml"), {printer: printer, selectedFile: selectedFile, jobParams: maybeGetParams()})
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
}
|
2019-12-01 17:40:10 +03:00
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
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
|
2021-05-18 22:04:52 +03:00
|
|
|
sourceSize.height: height
|
|
|
|
sourceSize.width: width
|
2020-06-13 13:51:21 +03:00
|
|
|
source: printer.attrs["printer-icons"] ? "image://ippdiscovery/"+Utils.selectIcon(printer.attrs["printer-icons"].value)
|
2021-05-18 22:04:52 +03:00
|
|
|
: "image://svg/qml/pages/icon-seaprint-nobg.svg"
|
2019-12-01 17:55:55 +03:00
|
|
|
// Some printers serve their icons over https with invalid certs...
|
2021-05-18 22:04:52 +03:00
|
|
|
onStatusChanged: if (status == Image.Error) source = "image://svg/qml/pages/icon-seaprint-nobg.svg"
|
2020-01-26 15:27:56 +03:00
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
|
2020-10-10 18:32:44 +03:00
|
|
|
Image {
|
|
|
|
id: warningIcon
|
|
|
|
source: "image://theme/icon-lock-warning"
|
|
|
|
anchors.bottom: icon.bottom
|
|
|
|
anchors.right: icon.right
|
|
|
|
visible: Utils.isWaringState(printer)
|
|
|
|
}
|
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
Column {
|
|
|
|
id: column
|
|
|
|
anchors.left: icon.right
|
|
|
|
anchors.leftMargin: Theme.paddingMedium
|
|
|
|
|
|
|
|
Label {
|
|
|
|
id: name_label
|
2020-05-09 15:24:51 +03:00
|
|
|
color: canPrint || selectedFile == "" ? Theme.primaryColor : Theme.secondaryColor
|
2019-12-13 21:14:50 +03:00
|
|
|
text: name
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
Label {
|
|
|
|
id: mm_label
|
2020-05-09 15:24:51 +03:00
|
|
|
color: canPrint || selectedFile == "" ? Theme.primaryColor : Theme.secondaryColor
|
2019-12-01 17:55:55 +03:00
|
|
|
font.pixelSize: Theme.fontSizeExtraSmall
|
2021-02-13 19:30:19 +03:00
|
|
|
text: Utils.unknownForEmptyString(printer.attrs["printer-make-and-model"].value)
|
2021-06-21 21:20:09 +03:00
|
|
|
+ (Utils.existsAndNotEmpty("printer-location", printer) ? " • "+printer.attrs["printer-location"].value : "")
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
|
2021-11-16 00:00:30 +03:00
|
|
|
Label {
|
|
|
|
id: uri_label
|
|
|
|
color: canPrint || selectedFile == "" ? Theme.highlightColor : Theme.secondaryColor
|
|
|
|
font.pixelSize: Theme.fontSizeTiny
|
|
|
|
text: printer.url
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
|
2020-02-16 16:01:19 +03:00
|
|
|
Row {
|
|
|
|
spacing: Theme.paddingMedium
|
2020-02-16 16:15:48 +03:00
|
|
|
Label {
|
|
|
|
id: format_unsupported_label
|
2021-06-12 13:45:58 +03:00
|
|
|
visible: !supported_formats.pdf && !supported_formats.postscript && !supported_formats.plaintext
|
|
|
|
&& !supported_formats.office && !supported_formats.images
|
2020-02-16 16:15:48 +03:00
|
|
|
color: "red"
|
|
|
|
font.pixelSize: Theme.fontSizeExtraSmall
|
|
|
|
text: qsTr("No compatible formats supported")
|
|
|
|
}
|
2021-03-06 17:43:01 +03:00
|
|
|
|
|
|
|
HighlightImage {
|
|
|
|
height: Theme.itemSizeExtraSmall/2
|
|
|
|
width: Theme.itemSizeExtraSmall/2
|
|
|
|
visible: supported_formats.pdf
|
|
|
|
highlightColor: "red"
|
|
|
|
highlighted: !(selectedFile == "" || canPrint)
|
|
|
|
source: "image://theme/icon-m-file-pdf"
|
|
|
|
}
|
|
|
|
HighlightImage {
|
|
|
|
height: Theme.itemSizeExtraSmall/2
|
|
|
|
width: Theme.itemSizeExtraSmall/2
|
|
|
|
visible: supported_formats.postscript
|
|
|
|
highlightColor: "red"
|
|
|
|
highlighted: !(selectedFile == "" || canPrint)
|
|
|
|
source: "image://theme/icon-m-file-other"
|
|
|
|
|
|
|
|
}
|
2021-06-12 13:45:58 +03:00
|
|
|
HighlightImage {
|
|
|
|
height: Theme.itemSizeExtraSmall/2
|
|
|
|
width: Theme.itemSizeExtraSmall/2
|
|
|
|
visible: supported_formats.plaintext
|
|
|
|
highlightColor: "red"
|
|
|
|
highlighted: !(selectedFile == "" || canPrint)
|
|
|
|
source: "image://theme/icon-m-file-document"
|
|
|
|
}
|
2021-03-06 17:43:01 +03:00
|
|
|
HighlightImage {
|
|
|
|
height: Theme.itemSizeExtraSmall/2
|
|
|
|
width: Theme.itemSizeExtraSmall/2
|
|
|
|
visible: supported_formats.office
|
|
|
|
highlightColor: "red"
|
|
|
|
highlighted: !(selectedFile == "" || canPrint)
|
|
|
|
source: "image://theme/icon-m-file-formatted"
|
|
|
|
}
|
|
|
|
HighlightImage {
|
|
|
|
height: Theme.itemSizeExtraSmall/2
|
2021-06-12 17:54:17 +03:00
|
|
|
width: Theme.itemSizeExtraSmall/2
|
|
|
|
visible: supported_formats.office
|
|
|
|
highlightColor: "red"
|
|
|
|
highlighted: !(selectedFile == "" || canPrint)
|
|
|
|
source: "image://theme/icon-m-file-presentation"
|
|
|
|
}
|
|
|
|
HighlightImage {
|
|
|
|
height: Theme.itemSizeExtraSmall/2
|
2021-03-06 17:43:01 +03:00
|
|
|
width: Theme.itemSizeExtraSmall/2
|
|
|
|
visible: supported_formats.images
|
|
|
|
highlightColor: "red"
|
|
|
|
highlighted: !(selectedFile == "" || canPrint)
|
|
|
|
source: "image://theme/icon-m-file-image"
|
2020-02-16 16:01:19 +03:00
|
|
|
}
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
2020-02-16 16:01:19 +03:00
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
2019-12-01 17:40:10 +03:00
|
|
|
|
2019-12-15 13:29:07 +03:00
|
|
|
RemorseItem {
|
|
|
|
id: removeRemorse
|
|
|
|
}
|
|
|
|
|
2019-12-08 15:55:56 +03:00
|
|
|
menu: ContextMenu {
|
|
|
|
MenuItem {
|
|
|
|
text: qsTr("View jobs")
|
|
|
|
onClicked: pageStack.push(Qt.resolvedUrl("JobsPage.qml"), {printer: printer})
|
|
|
|
}
|
2020-09-29 22:47:37 +03:00
|
|
|
MenuItem {
|
2020-09-30 21:57:05 +03:00
|
|
|
text: qsTr("Printer details")
|
|
|
|
onClicked: pageStack.push(Qt.resolvedUrl("DetailsPage.qml"), {printer: printer})
|
2020-09-29 22:47:37 +03:00
|
|
|
}
|
2019-12-13 21:14:50 +03:00
|
|
|
MenuItem {
|
|
|
|
text: qsTr("Remove printer")
|
|
|
|
visible: db.isFavourite(wifi.ssid, model.display)
|
2019-12-15 13:29:07 +03:00
|
|
|
onClicked: {
|
|
|
|
removeRemorse.execute(delegate, qsTr("Removing printer"),
|
|
|
|
function() {db.removeFavourite(wifi.ssid, model.display);
|
2021-02-13 16:57:07 +03:00
|
|
|
IppDiscovery.favourites = db.getFavourites(wifi.ssid)})
|
2019-12-13 21:14:50 +03:00
|
|
|
}
|
|
|
|
}
|
2019-12-08 15:55:56 +03:00
|
|
|
}
|
|
|
|
|
2019-12-01 17:40:10 +03:00
|
|
|
}
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
DockedPanel {
|
|
|
|
id: fileDock
|
|
|
|
open: true
|
2021-03-06 18:13:21 +03:00
|
|
|
height: panelColumn.implicitHeight
|
2019-12-01 17:55:55 +03:00
|
|
|
width: parent.width
|
|
|
|
dock: Dock.Bottom
|
|
|
|
|
2021-03-06 18:13:21 +03:00
|
|
|
Column {
|
|
|
|
id: panelColumn
|
|
|
|
width: parent.width
|
|
|
|
spacing: Theme.paddingLarge
|
2021-03-06 22:20:04 +03:00
|
|
|
topPadding: page.isPortrait && !warningRow.visible ? 2*Theme.paddingLarge : Theme.paddingLarge
|
2021-03-06 18:13:21 +03:00
|
|
|
bottomPadding: page.isPortrait ? 2*Theme.paddingLarge : Theme.paddingLarge
|
|
|
|
|
|
|
|
Row {
|
2021-03-06 22:20:04 +03:00
|
|
|
id: warningRow
|
2021-03-06 18:13:21 +03:00
|
|
|
anchors.horizontalCenter: parent.horizontalCenter
|
|
|
|
visible: Mimer.isOffice(page.selectedFileType)
|
|
|
|
|
|
|
|
HighlightImage {
|
|
|
|
source: "image://theme/icon-s-warning"
|
|
|
|
highlighted: true
|
|
|
|
highlightColor: Theme.highlightColor
|
|
|
|
}
|
|
|
|
Label
|
|
|
|
{
|
|
|
|
text: qsTr("This format may not render correctly")
|
|
|
|
font.pixelSize: Theme.fontSizeExtraSmall
|
|
|
|
color: Theme.highlightColor
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
Label {
|
|
|
|
id: fileLabel
|
2021-06-01 19:35:44 +03:00
|
|
|
width: parent.width
|
2021-05-28 21:10:49 +03:00
|
|
|
leftPadding: Theme.paddingLarge
|
2021-06-01 19:35:44 +03:00
|
|
|
rightPadding: Theme.paddingLarge
|
2020-08-09 16:29:50 +03:00
|
|
|
|
2021-03-06 18:13:21 +03:00
|
|
|
horizontalAlignment: contentWidth > width ? Text.AlignRight : Text.AlignHCenter
|
|
|
|
truncationMode: TruncationMode.Fade
|
|
|
|
text: selectedFile != "" ? selectedFile : qsTr("No file selected")
|
2021-05-28 21:45:50 +03:00
|
|
|
|
|
|
|
SequentialAnimation {
|
|
|
|
id: noFileSelectedAnimation
|
|
|
|
loops: 3
|
|
|
|
|
|
|
|
ColorAnimation {target: fileLabel; property: "color"; from: Theme.primaryColor; to: Theme.highlightColor; duration: 200 }
|
|
|
|
ColorAnimation {target: fileLabel; property: "color"; from: Theme.highlightColor; to: Theme.primaryColor; duration: 200 }
|
|
|
|
}
|
|
|
|
|
|
|
|
Connections {
|
|
|
|
target: page
|
|
|
|
onNoFileSelected: {
|
|
|
|
console.log("onNoFileSelected")
|
|
|
|
noFileSelectedAnimation.start()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-08-09 16:29:50 +03:00
|
|
|
}
|
|
|
|
|
2020-05-01 00:05:46 +03:00
|
|
|
|
2021-03-06 18:13:21 +03:00
|
|
|
Row {
|
|
|
|
width: parent.width
|
|
|
|
IconButton {
|
|
|
|
id: folderButton
|
|
|
|
icon.source: "image://theme/icon-m-file-document"
|
|
|
|
width: parent.width/2
|
|
|
|
onClicked: pageStack.push(documentPickerPage)
|
|
|
|
}
|
|
|
|
IconButton {
|
|
|
|
id: imageButton
|
|
|
|
icon.source: "image://theme/icon-m-file-image"
|
|
|
|
width: parent.width/2
|
|
|
|
onClicked: pageStack.push(imagePickerPage)
|
|
|
|
}
|
2020-08-09 16:29:50 +03:00
|
|
|
|
2020-05-01 00:05:46 +03:00
|
|
|
}
|
|
|
|
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
|
|
|
Component {
|
2021-02-13 20:07:43 +03:00
|
|
|
id: documentPickerPage
|
|
|
|
DocumentPickerPage {
|
2020-08-06 18:34:14 +03:00
|
|
|
allowedOrientations: Orientation.All
|
|
|
|
|
2021-04-10 15:42:54 +03:00
|
|
|
Component.onCompleted: {
|
2021-04-18 10:28:33 +03:00
|
|
|
var thingy = Qt.createComponent(ConvertChecker.calligra ? "../components/DocumentFilterOffice.notqml" : "../components/DocumentFilter.notqml");
|
2021-04-10 15:42:54 +03:00
|
|
|
if (thingy.status == Component.Ready) {
|
|
|
|
_contentModel.contentFilter = thingy.createObject(this);
|
|
|
|
}
|
|
|
|
}
|
2021-02-13 22:43:03 +03:00
|
|
|
|
2020-05-01 00:05:46 +03:00
|
|
|
title: qsTr("Choose file")
|
2019-12-01 17:55:55 +03:00
|
|
|
|
|
|
|
onSelectedContentPropertiesChanged: {
|
2021-02-13 20:07:43 +03:00
|
|
|
var mimeType = Mimer.get_type(selectedContentProperties.filePath)
|
2021-06-12 13:45:58 +03:00
|
|
|
if(mimeType == Mimer.PDF || mimeType == Mimer.Postscript || mimeType == Mimer.Plaintext || Mimer.isOffice(mimeType))
|
2021-02-13 20:07:43 +03:00
|
|
|
{
|
|
|
|
page.selectedFile = selectedContentProperties.filePath
|
|
|
|
page.selectedFileType = mimeType
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
2021-03-06 14:59:47 +03:00
|
|
|
console.log("UNSUPPORTED", mimeType);
|
2021-02-13 20:07:43 +03:00
|
|
|
notifier.notify(qsTr("Unsupported document format"))
|
|
|
|
page.selectedFile = ""
|
|
|
|
page.selectedFileType = ""
|
|
|
|
}
|
2019-12-01 17:55:55 +03:00
|
|
|
}
|
2019-12-01 17:40:10 +03:00
|
|
|
}
|
|
|
|
}
|
2020-05-01 00:05:46 +03:00
|
|
|
Component {
|
|
|
|
id: imagePickerPage
|
|
|
|
ImagePickerPage {
|
2020-08-06 18:34:14 +03:00
|
|
|
allowedOrientations: Orientation.All
|
|
|
|
|
2020-05-01 00:05:46 +03:00
|
|
|
onSelectedContentPropertiesChanged: {
|
|
|
|
page.selectedFile = selectedContentProperties.filePath
|
|
|
|
page.selectedFileType = Mimer.get_type(selectedContentProperties.filePath)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-12-01 17:40:10 +03:00
|
|
|
}
|
|
|
|
}
|