From 98e395e78e78db29bd8159d1c1ac3e58477108e5 Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Fri, 18 Nov 2022 22:53:34 +0100 Subject: [PATCH] qml: show all keystores on WalletDetails page --- electrum/gui/qml/components/WalletDetails.qml | 112 ++++++++++++------ electrum/gui/qml/qewallet.py | 11 ++ 2 files changed, 84 insertions(+), 39 deletions(-) diff --git a/electrum/gui/qml/components/WalletDetails.qml b/electrum/gui/qml/components/WalletDetails.qml index 1fd9cb7b9..046c48c79 100644 --- a/electrum/gui/qml/components/WalletDetails.qml +++ b/electrum/gui/qml/components/WalletDetails.qml @@ -246,52 +246,86 @@ Pane { } } - Label { - text: qsTr('Derivation prefix') - visible: Daemon.currentWallet.derivationPrefix - color: Material.accentColor - } - Label { - Layout.fillWidth: true - text: Daemon.currentWallet.derivationPrefix - visible: Daemon.currentWallet.derivationPrefix - } + Repeater { + id: keystores + model: Daemon.currentWallet.keystores + delegate: ColumnLayout { + Layout.columnSpan: 2 + RowLayout { + Label { + text: qsTr('Keystore') + color: Material.accentColor + } + Label { + text: '#' + index + visible: keystores.count > 1 + } + } + TextHighlightPane { + Layout.fillWidth: true + leftPadding: constants.paddingLarge - Label { - visible: Daemon.currentWallet.masterPubkey - Layout.columnSpan:2; text: qsTr('Master Public Key'); color: Material.accentColor - } + GridLayout { + width: parent.width + columns: 2 - TextHighlightPane { - visible: Daemon.currentWallet.masterPubkey + Label { + text: qsTr('Derivation prefix') + visible: modelData.derivation_prefix + color: Material.accentColor + } + Label { + Layout.fillWidth: true + text: modelData.derivation_prefix + visible: modelData.derivation_prefix + } - Layout.columnSpan: 2 - Layout.fillWidth: true - padding: 0 - leftPadding: constants.paddingSmall - - RowLayout { - width: parent.width - Label { - text: Daemon.currentWallet.masterPubkey - wrapMode: Text.Wrap - Layout.fillWidth: true - font.family: FixedFont - font.pixelSize: constants.fontSizeMedium - } - ToolButton { - icon.source: '../../icons/share.png' - icon.color: 'transparent' - onClicked: { - var dialog = app.genericShareDialog.createObject(rootItem, { - title: qsTr('Master Public Key'), - text: Daemon.currentWallet.masterPubkey - }) - dialog.open() + Label { + text: qsTr('BIP32 fingerprint') + visible: modelData.fingerprint + color: Material.accentColor + } + Label { + Layout.fillWidth: true + text: modelData.fingerprint + visible: modelData.fingerprint + font.family: FixedFont + } + + Label { + Layout.columnSpan: 2 + visible: modelData.master_pubkey + text: qsTr('Master Public Key') + color: Material.accentColor + } + RowLayout { + Layout.fillWidth: true + Layout.columnSpan: 2 + Layout.leftMargin: constants.paddingLarge + Label { + text: modelData.master_pubkey + wrapMode: Text.Wrap + Layout.fillWidth: true + font.family: FixedFont + font.pixelSize: constants.fontSizeMedium + } + ToolButton { + icon.source: '../../icons/share.png' + icon.color: 'transparent' + onClicked: { + var dialog = app.genericShareDialog.createObject(rootItem, { + title: qsTr('Master Public Key'), + text: modelData.master_pubkey + }) + dialog.open() + } + } + } } } } } + } } } diff --git a/electrum/gui/qml/qewallet.py b/electrum/gui/qml/qewallet.py index 33678b0de..bb38a4a7a 100644 --- a/electrum/gui/qml/qewallet.py +++ b/electrum/gui/qml/qewallet.py @@ -338,6 +338,17 @@ class QEWallet(AuthMixin, QObject, QtEventListener): def isHardware(self): return self.wallet.storage.is_encrypted_with_hw_device() + @pyqtProperty('QVariantList', notify=dataChanged) + def keystores(self): + result = [] + for k in self.wallet.get_keystores(): + result.append({ + 'derivation_prefix': k.get_derivation_prefix() or '', + 'master_pubkey': k.get_master_public_key() or '', + 'fingerprint': k.get_root_fingerprint() or '' + }) + return result + @pyqtProperty(str, notify=dataChanged) def derivationPrefix(self): keystores = self.wallet.get_keystores()