qml: add hack to delay rendering of QR until dialog is shown.
unfortunately, using standard QtQuick Image.asynchronous=true leads to a deadlock at app exit so we can't use it a.t.m.
This commit is contained in:
@@ -58,6 +58,8 @@ ElDialog {
|
||||
|
||||
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
|
||||
@@ -108,7 +110,13 @@ ElDialog {
|
||||
}
|
||||
}
|
||||
|
||||
Component.onCompleted: {
|
||||
qr.qrdata = dialog.text_qr ? dialog.text_qr : dialog.text
|
||||
Connections {
|
||||
target: dialog.enter
|
||||
function onRunningChanged() {
|
||||
console.log('dialog open animation running changed: ' + dialog.enter.running)
|
||||
if (!dialog.enter.running) {
|
||||
qr.render = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -17,6 +17,8 @@ ElDialog {
|
||||
property string _bip21uri
|
||||
property string _address
|
||||
|
||||
property bool _render_qr: false // delay qr rendering until dialog is shown
|
||||
|
||||
parent: Overlay.overlay
|
||||
modal: true
|
||||
standardButtons: Dialog.Close
|
||||
@@ -91,18 +93,21 @@ ElDialog {
|
||||
id: qri_bolt11
|
||||
QRImage {
|
||||
qrdata: _bolt11
|
||||
render: _render_qr
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: qri_bip21uri
|
||||
QRImage {
|
||||
qrdata: _bip21uri
|
||||
render: _render_qr
|
||||
}
|
||||
}
|
||||
Component {
|
||||
id: qri_address
|
||||
QRImage {
|
||||
qrdata: _address
|
||||
render: _render_qr
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -298,4 +303,14 @@ ElDialog {
|
||||
wallet: Daemon.currentWallet
|
||||
key: dialog.key
|
||||
}
|
||||
|
||||
// hack. delay qr rendering until dialog is shown
|
||||
Connections {
|
||||
target: dialog.enter
|
||||
function onRunningChanged() {
|
||||
if (!dialog.enter.running) {
|
||||
dialog._render_qr = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,25 +1,40 @@
|
||||
import QtQuick 2.6
|
||||
|
||||
Image {
|
||||
Item {
|
||||
id: root
|
||||
property string qrdata
|
||||
property bool render: true // init to false, then set true if render needs delay
|
||||
property var qrprops: QRIP.getDimensions(qrdata)
|
||||
|
||||
source: qrdata ? 'image://qrgen/' + qrdata : ''
|
||||
width: r.width
|
||||
height: r.height
|
||||
|
||||
Rectangle {
|
||||
property var qrprops: QRIP.getDimensions(qrdata)
|
||||
id: r
|
||||
width: qrprops.modules * qrprops.box_size
|
||||
height: width
|
||||
color: 'white'
|
||||
x: (parent.width - width) / 2
|
||||
y: (parent.height - height) / 2
|
||||
width: qrprops.icon_modules * qrprops.box_size
|
||||
height: qrprops.icon_modules * qrprops.box_size
|
||||
}
|
||||
|
||||
Image {
|
||||
source: '../../../icons/electrum.png'
|
||||
x: 1
|
||||
y: 1
|
||||
width: parent.width - 2
|
||||
height: parent.height - 2
|
||||
scale: 0.9
|
||||
Image {
|
||||
source: qrdata && render ? 'image://qrgen/' + qrdata : ''
|
||||
|
||||
Rectangle {
|
||||
visible: root.render
|
||||
color: 'white'
|
||||
x: (parent.width - width) / 2
|
||||
y: (parent.height - height) / 2
|
||||
width: qrprops.icon_modules * qrprops.box_size
|
||||
height: qrprops.icon_modules * qrprops.box_size
|
||||
|
||||
Image {
|
||||
source: '../../../icons/electrum.png'
|
||||
x: 1
|
||||
y: 1
|
||||
width: parent.width - 2
|
||||
height: parent.height - 2
|
||||
scale: 0.9
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user