When clicking the barcode button, the view is changed to just show the barcode instead of opening a dialog. By default a QR Code is displayed. A tool button is added which allows to change the barcode type, with the following barcodes being supported: * QR * Data Matrix * Code 39 * Code 93 REVIEW: 122402wilder-5.14
parent
164235cf0d
commit
a462d12ab9
6 changed files with 253 additions and 38 deletions
@ -0,0 +1,113 @@ |
||||
/******************************************************************** |
||||
This file is part of the KDE project. |
||||
|
||||
Copyright (C) 2015 Martin Gräßlin <mgraesslin@kde.org> |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*********************************************************************/ |
||||
import QtQuick 2.0 |
||||
import QtQuick.Layouts 1.1 |
||||
import org.kde.plasma.components 2.0 as PlasmaComponents |
||||
import org.kde.kquickcontrolsaddons 2.0 |
||||
|
||||
ColumnLayout { |
||||
id: barcodeView |
||||
|
||||
property var uuid: "" |
||||
property int barcodeType: 0 |
||||
|
||||
function show(uuid) { |
||||
barcodeView.uuid = uuid; |
||||
barcodePreview.image = undefined; |
||||
barcodePreview.busy = true; |
||||
var service = clipboardSource.serviceForSource(uuid) |
||||
var operation = service.operationDescription("barcode"); |
||||
operation.width = barcodePreview.width; |
||||
operation.height = barcodePreview.height; |
||||
operation.barcodeType = barcodeView.barcodeType; |
||||
var serviceJob = service.startOperationCall(operation); |
||||
serviceJob.finished.connect(function (job) { |
||||
if (!job.error) { |
||||
barcodePreview.image = job.result; |
||||
barcodePreview.busy = false; |
||||
} |
||||
}); |
||||
} |
||||
|
||||
RowLayout { |
||||
Layout.fillWidth: true |
||||
PlasmaComponents.Button { |
||||
Layout.fillWidth: true |
||||
iconSource: "go-previous-view" |
||||
text: i18n("Return to Clipboard") |
||||
onClicked: stack.pop() |
||||
} |
||||
PlasmaComponents.ContextMenu { |
||||
id: menu |
||||
visualParent: configureButton |
||||
function change(type) { |
||||
barcodeView.barcodeType = type; |
||||
barcodeView.show(barcodeView.uuid); |
||||
} |
||||
PlasmaComponents.MenuItem { |
||||
text: i18n("QR Code") |
||||
checkable: true |
||||
checked: barcodeView.barcodeType == 0 |
||||
onClicked: menu.change(0) |
||||
} |
||||
PlasmaComponents.MenuItem { |
||||
text: i18n("Data Matrix") |
||||
checkable: true |
||||
checked: barcodeView.barcodeType == 1 |
||||
onClicked: menu.change(1) |
||||
} |
||||
PlasmaComponents.MenuItem { |
||||
text: i18n("Code 39") |
||||
checkable: true |
||||
checked: barcodeView.barcodeType == 2 |
||||
onClicked: menu.change(2) |
||||
} |
||||
PlasmaComponents.MenuItem { |
||||
text: i18n("Code 93") |
||||
checkable: true |
||||
checked: barcodeView.barcodeType == 3 |
||||
onClicked: menu.change(3) |
||||
} |
||||
} |
||||
PlasmaComponents.ToolButton { |
||||
id: configureButton |
||||
iconSource: "configure" |
||||
tooltip: i18n("Change the barcode type") |
||||
onClicked: menu.open(0, configureButton.height) |
||||
} |
||||
} |
||||
QImageItem { |
||||
id: barcodePreview |
||||
property alias busy: busyIndicator.visible |
||||
fillMode: QImageItem.PreserveAspectFit |
||||
Layout.fillWidth: true |
||||
Layout.fillHeight: true |
||||
onWidthChanged: barcodeView.show(barcodeView.uuid) |
||||
onHeightChanged: barcodeView.show(barcodeView.uuid) |
||||
PlasmaComponents.BusyIndicator { |
||||
id: busyIndicator |
||||
anchors.centerIn: parent |
||||
} |
||||
PlasmaComponents.Label { |
||||
anchors.centerIn: parent |
||||
text: i18n("Creating barcode failed") |
||||
visible: !barcodePreview.busy && barcodePreview.null |
||||
} |
||||
} |
||||
} |
||||
@ -0,0 +1,67 @@ |
||||
/******************************************************************** |
||||
This file is part of the KDE project. |
||||
|
||||
Copyright (C) 2014 Martin Gräßlin <mgraesslin@kde.org> |
||||
Copyright (C) 2014 Kai Uwe Broulik <kde@privat.broulik.de> |
||||
|
||||
This program is free software; you can redistribute it and/or modify |
||||
it under the terms of the GNU General Public License as published by |
||||
the Free Software Foundation; either version 2 of the License, or |
||||
(at your option) any later version. |
||||
|
||||
This program is distributed in the hope that it will be useful, |
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||
GNU General Public License for more details. |
||||
|
||||
You should have received a copy of the GNU General Public License |
||||
along with this program. If not, see <http://www.gnu.org/licenses/>. |
||||
*********************************************************************/ |
||||
import QtQuick 2.0 |
||||
import QtQuick.Layouts 1.1 |
||||
import org.kde.plasma.plasmoid 2.0 |
||||
import org.kde.plasma.core 2.0 as PlasmaCore |
||||
import org.kde.plasma.components 2.0 as PlasmaComponents |
||||
|
||||
ColumnLayout { |
||||
RowLayout { |
||||
Layout.fillWidth: true |
||||
Item { |
||||
width: units.gridUnit / 2 - parent.spacing |
||||
height: 1 |
||||
} |
||||
PlasmaComponents.TextField { |
||||
id: filter |
||||
placeholderText: i18n("Search") |
||||
clearButtonShown: true |
||||
Layout.fillWidth: true |
||||
} |
||||
PlasmaComponents.ToolButton { |
||||
iconSource: "edit-delete" |
||||
tooltip: i18n("Clear history") |
||||
onClicked: clipboardSource.service("", "clearHistory") |
||||
} |
||||
} |
||||
Menu { |
||||
id: clipboardMenu |
||||
model: PlasmaCore.SortFilterModel { |
||||
sourceModel: clipboardSource.models.clipboard |
||||
filterRole: "DisplayRole" |
||||
filterRegExp: filter.text |
||||
} |
||||
supportsBarcodes: clipboardSource.data["clipboard"]["supportsBarcodes"] |
||||
Layout.fillWidth: true |
||||
Layout.fillHeight: true |
||||
onItemSelected: clipboardSource.service(uuid, "select") |
||||
onRemove: clipboardSource.service(uuid, "remove") |
||||
onEdit: clipboardSource.edit(uuid) |
||||
onBarcode: { |
||||
var page = stack.push(barcodePage); |
||||
page.show(uuid); |
||||
} |
||||
onAction: { |
||||
clipboardSource.service(uuid, "action") |
||||
clipboardMenu.view.currentIndex = 0 |
||||
} |
||||
} |
||||
} |
||||
Loading…
Reference in new issue