You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

134 lines
4.9 KiB

/********************************************************************
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.core 2.0 as PlasmaCore
import org.kde.plasma.components 2.0 as PlasmaComponents
import org.kde.kquickcontrolsaddons 2.0
import org.kde.plasma.extras 2.0 as PlasmaExtras
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;
}
});
}
property var header: PlasmaExtras.PlasmoidHeading {
RowLayout {
anchors.fill: parent
PlasmaComponents.Button {
Layout.fillWidth: true
iconSource: "go-previous-view"
text: i18n("Return to Clipboard")
onClicked: stack.pop()
}
PlasmaComponents.ContextMenu {
id: menu
visualParent: configureButton
placement: PlasmaCore.Types.BottomPosedLeftAlignedPopup
onStatusChanged: {
if (status == PlasmaComponents.DialogStatus.Closed) {
configureButton.checked = false;
}
}
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: i18nc("Aztec barcode", "Aztec")
checkable: true
checked: barcodeView.barcodeType == 4
onClicked: menu.change(4)
}
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
checkable: true
iconSource: "configure"
tooltip: i18n("Change the barcode type")
onClicked: menu.openRelative()
}
}
}
QImageItem {
id: barcodePreview
property alias busy: busyIndicator.visible
fillMode: QImageItem.PreserveAspectFit
Layout.fillWidth: true
Layout.fillHeight: true
Layout.topMargin: units.smallSpacing
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
}
}
}