Warning, /utilities/qrca/src/contents/ui/QrCodeEncoderPage.qml is written in an unsupported language. File is not indexed.
0001 /*
0002 * SPDX-FileCopyrightText: 2019 Jonah BrĂ¼chert <jbb@kaidan.im>
0003 *
0004 * SPDX-License-Identifier: GPL-3.0-or-later
0005 */
0006
0007 import QtQuick 2.0
0008 import QtQuick.Controls 2.3 as Controls
0009 import QtMultimedia 5.9
0010 import org.kde.kirigami 2.7 as Kirigami
0011 import QtQuick.Layouts 1.3
0012 import org.kde.qrca 1.0
0013 import org.kde.prison 1.0 as Prison
0014
0015 import QtQuick.Dialogs
0016
0017 Kirigami.ScrollablePage {
0018 title: i18n("Create QR-Code")
0019
0020 Loader {
0021 id: shareSheetLoader
0022
0023 active: false
0024 source: "ShareSheet.qml"
0025 }
0026
0027 FileDialog {
0028 id: fileDialog
0029 defaultSuffix: "png"
0030 nameFilters: [ i18n("Image files (*.png *.jpg)"), i18n("All files (*)") ]
0031 }
0032
0033 actions: [
0034 Kirigami.Action {
0035 text: i18n("Save")
0036 icon.name: "document-save"
0037 enabled: inputText.length > 0
0038 onTriggered: {
0039 fileDialog.accepted.connect(() => {
0040 codeView.grabToImage((result) => {
0041 const s = result.saveToFile(fileDialog.fileUrl.toString().replace("file://", ""))
0042 if (!s) {
0043 showPassiveNotification(i18n("QR-Code could not be saved"))
0044 }
0045
0046 fileDialog.accepted.disconnect()
0047 })
0048 })
0049 fileDialog.open()
0050 }
0051 },
0052 Kirigami.Action {
0053 text: i18n("Share")
0054 icon.name: "document-share"
0055 visible: Qt.platform.os !== "android" // Purpose doesn't work properly on Android
0056 enabled: inputText.length > 0
0057 onTriggered: {
0058 shareSheetLoader.active = true
0059 codeView.grabToImage((result) => {
0060 const saveLocation = Qrca.newQrCodeSaveLocation()
0061 const s = result.saveToFile(saveLocation)
0062 if (!s) {
0063 showPassiveNotification(i18n("QR-Code could not be saved to temporary location"))
0064 }
0065
0066 shareSheetLoader.item.url = saveLocation
0067 shareSheetLoader.item.open()
0068 })
0069 }
0070 }
0071 ]
0072
0073 ColumnLayout {
0074 spacing: 50
0075
0076 Prison.Barcode {
0077 id: codeView
0078 Layout.fillWidth: true
0079 Layout.alignment: Qt.AlignCenter
0080 Layout.maximumWidth: Kirigami.Units.gridUnit * 16
0081 Layout.preferredHeight: width
0082 barcodeType: Prison.Barcode.QRCode
0083 content: inputText.text.length > 0 ? inputText.text: "https://www.kde.org"
0084 }
0085
0086 Kirigami.ActionTextField {
0087 id: inputText
0088 placeholderText: "Enter text"
0089 text: Qrca.encodeText ? Qrca.encodeText : ""
0090 Layout.fillWidth: true
0091 rightActions: [
0092 Kirigami.Action {
0093 icon.name: "edit-clear"
0094 enabled: inputText.text.length > 0
0095 onTriggered: inputText.text = ""
0096 }
0097 ]
0098 }
0099 }
0100 }