Warning, /frameworks/purpose/src/plugins/barcode/barcodeplugin_config.qml is written in an unsupported language. File is not indexed.

0001 /*
0002     SPDX-FileCopyrightText: 2021 Kai Uwe Broulik <kde@broulik.de>
0003 
0004     SPDX-License-Identifier: LGPL-2.0-or-later
0005 */
0006 
0007 import QtQuick 2.7
0008 import QtQuick.Window 2.12
0009 import QtQuick.Layouts 1.1
0010 import QtQuick.Controls 2.12 as QQC2
0011 import org.kde.kirigami 2.12 as Kirigami
0012 
0013 import org.kde.prison 1.0 as Prison
0014 
0015 ColumnLayout {
0016     id: root
0017 
0018     property var urls: []
0019     property string mimeType
0020     property var dummy
0021 
0022     Component.onCompleted: {
0023         root.Window.window.minimumWidth = Qt.binding(function() {
0024             return Math.min(Kirigami.Units.gridUnit * 30,
0025                             root.implicitWidth + Kirigami.Units.gridUnit * 2);
0026         });
0027         root.Window.window.minimumHeight = Qt.binding(function() {
0028             return Math.min(Kirigami.Units.gridUnit * 30,
0029                             root.implicitHeight + Kirigami.Units.gridUnit * 4);
0030         });
0031     }
0032 
0033     Item {
0034         Layout.fillWidth: true
0035         Layout.fillHeight: true
0036         Layout.preferredWidth: barcodeItem.implicitWidth
0037         Layout.preferredHeight: barcodeItem.implicitHeight
0038 
0039         Prison.Barcode {
0040             id: barcodeItem
0041             readonly property bool valid: implicitWidth > 0 && implicitHeight > 0 && implicitWidth <= width && implicitHeight <= height
0042             anchors.fill: parent
0043             barcodeType: Prison.Barcode.QRCode
0044             // Cannot set visible to false as we need it to re-render when changing its size
0045             opacity: valid ? 1 : 0
0046             content: textField.text
0047         }
0048 
0049         QQC2.Label {
0050             anchors.fill: parent
0051             horizontalAlignment: Text.AlignHCenter
0052             verticalAlignment: Text.AlignVCenter
0053             text: i18nd("purpose6_barcode", "Type a URL or some text to generate a QR code")
0054             wrapMode: Text.WordWrap
0055             visible: textField.length === 0
0056         }
0057 
0058         QQC2.Label {
0059             anchors.fill: parent
0060             horizontalAlignment: Text.AlignHCenter
0061             verticalAlignment: Text.AlignVCenter
0062             text: i18nd("purpose6_barcode", "Creating QR code failed")
0063             wrapMode: Text.WordWrap
0064             visible: textField.length > 0 && barcodeItem.implicitWidth === 0 && barcodeItem.implicitHeight === 0
0065         }
0066 
0067         QQC2.Label {
0068             anchors.fill: parent
0069             horizontalAlignment: Text.AlignHCenter
0070             verticalAlignment: Text.AlignVCenter
0071             text: i18nd("purpose6_barcode", "The QR code is too large to be displayed")
0072             wrapMode: Text.WordWrap
0073             visible: textField.length > 0 && (barcodeItem.implicitWidth > barcodeItem.width || barcodeItem.implicitHeight > barcodeItem.height)
0074         }
0075     }
0076 
0077     QQC2.TextField {
0078         id: textField
0079         Layout.fillWidth: true
0080         text: root.urls[0]
0081         // Random limit so it doesn't get too large
0082         maximumLength: 250
0083         placeholderText: i18nd("purpose6_barcode", "Type a URL or some text...")
0084         Component.onCompleted: forceActiveFocus()
0085     }
0086 }