From d3e88064d0a7a3ff0ee8152f1d645e1048d373f5 Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Tue, 14 Jun 2022 17:24:50 +0200 Subject: [PATCH] Use screen size as upper bound for qr code size also fix some typing issues --- electrum/gui/qml/components/Receive.qml | 3 +-- electrum/gui/qml/qeapp.py | 4 +++- electrum/gui/qml/qeqr.py | 10 ++++++---- electrum/gui/qml/qewallet.py | 6 +++--- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/electrum/gui/qml/components/Receive.qml b/electrum/gui/qml/components/Receive.qml index 4a8868dd1..440f524c3 100644 --- a/electrum/gui/qml/components/Receive.qml +++ b/electrum/gui/qml/components/Receive.qml @@ -200,8 +200,7 @@ Pane { function createRequest(ignoreGaplimit = false) { var qamt = Config.unitsToSats(amount.text) - console.log('about to create req for ' + qamt.satsInt + ' sats') - if (qamt.satsInt > Daemon.currentWallet.lightningCanReceive) { + if (qamt.satsInt > Daemon.currentWallet.lightningCanReceive.satsInt) { console.log('Creating OnChain request') Daemon.currentWallet.create_request(qamt, message.text, expires.currentValue, false, ignoreGaplimit) } else { diff --git a/electrum/gui/qml/qeapp.py b/electrum/gui/qml/qeapp.py index cd1728d59..6858982d5 100644 --- a/electrum/gui/qml/qeapp.py +++ b/electrum/gui/qml/qeapp.py @@ -153,7 +153,9 @@ class ElectrumQmlApplication(QGuiApplication): self.engine = QQmlApplicationEngine(parent=self) self.engine.addImportPath('./qml') - self.qr_ip = QEQRImageProvider() + screensize = self.primaryScreen().size() + + self.qr_ip = QEQRImageProvider((7/8)*min(screensize.width(), screensize.height())) self.engine.addImageProvider('qrgen', self.qr_ip) # add a monospace font as we can't rely on device having one diff --git a/electrum/gui/qml/qeqr.py b/electrum/gui/qml/qeqr.py index dabc5bcac..0d1626850 100644 --- a/electrum/gui/qml/qeqr.py +++ b/electrum/gui/qml/qeqr.py @@ -118,20 +118,22 @@ class QEQRParser(QObject): return result class QEQRImageProvider(QQuickImageProvider): - def __init__(self, parent=None): + def __init__(self, max_size, parent=None): super().__init__(QQuickImageProvider.Image) + self._max_size = max_size _logger = get_logger(__name__) @profiler def requestImage(self, qstr, size): self._logger.debug('QR requested for %s' % qstr) - qr = qrcode.QRCode(version=1, box_size=6, border=2) + qr = qrcode.QRCode(version=1, border=2) qr.add_data(qstr) - # calculate best box_size, aim for 400 px + # calculate best box_size + pixelsize = min(self._max_size, 400) modules = 17 + 4 * qr.best_fit() - qr.box_size = math.floor(400/(modules+2)) + qr.box_size = math.floor(pixelsize/(modules+2*2)) qr.make(fit=True) diff --git a/electrum/gui/qml/qewallet.py b/electrum/gui/qml/qewallet.py index c77ca47f7..eb40a4078 100644 --- a/electrum/gui/qml/qewallet.py +++ b/electrum/gui/qml/qewallet.py @@ -305,21 +305,21 @@ class QEWallet(QObject): def lightningBalance(self): if not self.isLightning: return QEAmount() - self._lightningbalance = QEAmount(amount_sat=self.wallet.lnworker.get_balance()) + self._lightningbalance = QEAmount(amount_sat=int(self.wallet.lnworker.get_balance())) return self._lightningbalance @pyqtProperty(QEAmount, notify=balanceChanged) def lightningCanSend(self): if not self.isLightning: return QEAmount() - self._lightningcansend = QEAmount(amount_sat=self.wallet.lnworker.num_sats_can_send()) + self._lightningcansend = QEAmount(amount_sat=int(self.wallet.lnworker.num_sats_can_send())) return self._lightningcansend @pyqtProperty(QEAmount, notify=balanceChanged) def lightningCanReceive(self): if not self.isLightning: return QEAmount() - self._lightningcanreceive = QEAmount(amount_sat=self.wallet.lnworker.num_sats_can_receive()) + self._lightningcanreceive = QEAmount(amount_sat=int(self.wallet.lnworker.num_sats_can_receive())) return self._lightningcanreceive @pyqtSlot()