From 488600788e3bf12a2466b586bd20da7d80f76b4f Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Wed, 5 Oct 2022 11:07:40 +0200 Subject: [PATCH] qml: open invoices list after saving invoice, add invoice to model instead of reloading the whole list --- electrum/gui/qml/components/InvoiceDialog.qml | 3 ++- electrum/gui/qml/components/Invoices.qml | 8 ++++++++ electrum/gui/qml/components/WalletMainView.qml | 2 +- electrum/gui/qml/qeinvoice.py | 4 ++-- electrum/gui/qml/qeinvoicelistmodel.py | 4 ++++ 5 files changed, 17 insertions(+), 4 deletions(-) diff --git a/electrum/gui/qml/components/InvoiceDialog.qml b/electrum/gui/qml/components/InvoiceDialog.qml index 988b1e7ac..5996692cd 100644 --- a/electrum/gui/qml/components/InvoiceDialog.qml +++ b/electrum/gui/qml/components/InvoiceDialog.qml @@ -1,4 +1,4 @@ -import QtQuick 2.6 +import QtQuick 2.12 import QtQuick.Layouts 1.0 import QtQuick.Controls 2.14 import QtQuick.Controls.Material 2.0 @@ -299,6 +299,7 @@ ElDialog { visible: invoice_key == '' enabled: invoice.canSave onClicked: { + app.stack.push(Qt.resolvedUrl('Invoices.qml')) invoice.save_invoice() dialog.close() } diff --git a/electrum/gui/qml/components/Invoices.qml b/electrum/gui/qml/components/Invoices.qml index cf2f2b023..fd8777a80 100644 --- a/electrum/gui/qml/components/Invoices.qml +++ b/electrum/gui/qml/components/Invoices.qml @@ -46,6 +46,14 @@ Pane { } } + add: Transition { + NumberAnimation { properties: 'scale'; from: 0.75; to: 1; duration: 500 } + NumberAnimation { properties: 'opacity'; from: 0; to: 1; duration: 500 } + } + addDisplaced: Transition { + SpringAnimation { properties: 'y'; duration: 200; spring: 5; damping: 0.5; mass: 2 } + } + remove: Transition { NumberAnimation { properties: 'scale'; to: 0.75; duration: 300 } NumberAnimation { properties: 'opacity'; to: 0; duration: 300 } diff --git a/electrum/gui/qml/components/WalletMainView.qml b/electrum/gui/qml/components/WalletMainView.qml index 9f2f59ff3..a3c0c7785 100644 --- a/electrum/gui/qml/components/WalletMainView.qml +++ b/electrum/gui/qml/components/WalletMainView.qml @@ -193,7 +193,7 @@ Item { } onInvoiceSaved: { - Daemon.currentWallet.invoiceModel.init_model() + Daemon.currentWallet.invoiceModel.addInvoice(key) } } diff --git a/electrum/gui/qml/qeinvoice.py b/electrum/gui/qml/qeinvoice.py index 71c1f4e6b..1b0c1afe7 100644 --- a/electrum/gui/qml/qeinvoice.py +++ b/electrum/gui/qml/qeinvoice.py @@ -123,7 +123,7 @@ class QEInvoiceParser(QEInvoice): _userinfo = '' invoiceChanged = pyqtSignal() - invoiceSaved = pyqtSignal() + invoiceSaved = pyqtSignal([str], arguments=['key']) validationSuccess = pyqtSignal() validationWarning = pyqtSignal([str,str], arguments=['code', 'message']) @@ -493,7 +493,7 @@ class QEInvoiceParser(QEInvoice): # TODO detect duplicate? self.key = self._effectiveInvoice.get_id() self._wallet.wallet.save_invoice(self._effectiveInvoice) - self.invoiceSaved.emit() + self.invoiceSaved.emit(self.key) class QEUserEnteredPayment(QEInvoice): diff --git a/electrum/gui/qml/qeinvoicelistmodel.py b/electrum/gui/qml/qeinvoicelistmodel.py index 6afaa502b..a56d24479 100644 --- a/electrum/gui/qml/qeinvoicelistmodel.py +++ b/electrum/gui/qml/qeinvoicelistmodel.py @@ -68,6 +68,10 @@ class QEAbstractInvoiceListModel(QAbstractListModel): self.invoices.insert(0, item) self.endInsertRows() + @pyqtSlot(str) + def addInvoice(self, key): + self.add_invoice(self.get_invoice_for_key(key)) + def delete_invoice(self, key: str): i = 0 for invoice in self.invoices: