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.
 
 
 
 

120 lines
3.5 KiB

import QtQuick
import QtQuick.Layouts
import QtQuick.Controls
import QtQuick.Controls.Material
import "controls"
ElDialog {
id: dialog
property string text
property string text_qr
// If text is set, it is displayed as a string and also used as data in the QR code shown.
// text_qr can also be set if we want to show different data in the QR code.
// If only text_qr is set, the QR code is shown but the string itself is not,
// however the copy button still exposes the string.
property string text_help
property int helpTextIconStyle: InfoTextArea.IconStyle.Info
title: ''
width: parent.width
height: parent.height
padding: 0
ColumnLayout {
anchors.fill: parent
spacing: 0
Flickable {
Layout.fillHeight: true
Layout.fillWidth: true
contentHeight: rootLayout.height
clip:true
interactive: height < contentHeight
ColumnLayout {
id: rootLayout
width: parent.width
spacing: constants.paddingMedium
QRImage {
id: qr
render: dialog.enter ? false : true
qrdata: dialog.text_qr ? dialog.text_qr : dialog.text
Layout.alignment: Qt.AlignHCenter
Layout.topMargin: constants.paddingSmall
Layout.bottomMargin: constants.paddingSmall
}
TextHighlightPane {
Layout.leftMargin: constants.paddingMedium
Layout.rightMargin: constants.paddingMedium
Layout.fillWidth: true
visible: dialog.text
Label {
width: parent.width
text: dialog.text
wrapMode: Text.Wrap
font.pixelSize: constants.fontSizeLarge
font.family: FixedFont
maximumLineCount: 4
elide: Text.ElideRight
}
}
InfoTextArea {
Layout.leftMargin: constants.paddingMedium
Layout.rightMargin: constants.paddingMedium
iconStyle: helpTextIconStyle
visible: dialog.text_help
text: dialog.text_help
Layout.fillWidth: true
}
}
}
ButtonContainer {
Layout.fillWidth: true
FlatButton {
Layout.fillWidth: true
Layout.preferredWidth: 1
text: qsTr('Copy')
icon.source: '../../icons/copy_bw.png'
onClicked: {
AppController.textToClipboard(dialog.text ? dialog.text : dialog.text_qr)
toaster.show(this, qsTr('Copied!'))
}
}
FlatButton {
Layout.fillWidth: true
Layout.preferredWidth: 1
text: qsTr('Share')
icon.source: '../../icons/share.png'
onClicked: {
AppController.doShare(dialog.text ? dialog.text : dialog.text_qr, dialog.title)
}
}
}
}
Connections {
target: dialog.enter
function onRunningChanged() {
if (!dialog.enter.running) {
qr.render = true
}
}
}
Toaster {
id: toaster
}
}