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
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 |
|
} |
|
} |
|
}
|
|
|