From 8ba7a00097fec96a2437e792484bf01095dc994a Mon Sep 17 00:00:00 2001 From: Sander van Grieken Date: Tue, 12 Dec 2023 16:33:58 +0100 Subject: [PATCH] qml: update new labels in history and addresscoinlist --- electrum/gui/qml/qeaddresslistmodel.py | 19 ++++++++++++++++--- electrum/gui/qml/qetransactionlistmodel.py | 5 +++++ 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/electrum/gui/qml/qeaddresslistmodel.py b/electrum/gui/qml/qeaddresslistmodel.py index 43ffbddb0..f07186af7 100644 --- a/electrum/gui/qml/qeaddresslistmodel.py +++ b/electrum/gui/qml/qeaddresslistmodel.py @@ -7,6 +7,7 @@ from electrum.logging import get_logger from electrum.util import Satoshis from .qetypes import QEAmount +from .util import qt_event_listener, QtEventListener if TYPE_CHECKING: from electrum.wallet import Abstract_Wallet @@ -102,7 +103,7 @@ class QEAddressCoinFilterProxyModel(QSortFilterProxyModel): self.filterTextChanged.emit() -class QEAddressCoinListModel(QAbstractListModel): +class QEAddressCoinListModel(QAbstractListModel, QtEventListener): _logger = get_logger(__name__) # define listmodel rolemap @@ -118,9 +119,20 @@ class QEAddressCoinListModel(QAbstractListModel): self._items = [] self._filterModel = None + self.register_callbacks() + self.destroyed.connect(lambda: self.on_destroy()) + self._dirty = True self.initModel() + def on_destroy(self): + self.unregister_callbacks() + + @qt_event_listener + def on_event_labels_received(self, wallet, labels): + if wallet == self.wallet: + self.setDirty() + def rowCount(self, index): return len(self._items) @@ -185,8 +197,9 @@ class QEAddressCoinListModel(QAbstractListModel): # initial model data @pyqtSlot() - def initModel(self): - if not self._dirty: + @pyqtSlot(bool) + def initModel(self, force: bool = False): + if not self._dirty and not force: return r_addresses = self.wallet.get_receiving_addresses() diff --git a/electrum/gui/qml/qetransactionlistmodel.py b/electrum/gui/qml/qetransactionlistmodel.py index 9de352ba1..c177fbfd1 100644 --- a/electrum/gui/qml/qetransactionlistmodel.py +++ b/electrum/gui/qml/qetransactionlistmodel.py @@ -81,6 +81,11 @@ class QETransactionListModel(QAbstractListModel, QtEventListener): roles = [self._ROLE_RMAP['date']] self.dataChanged.emit(index, index, roles) + @qt_event_listener + def on_event_labels_received(self, wallet, labels): + if wallet == self.wallet: + self.initModel(True) # TODO: be less dramatic + def rowCount(self, index): return len(self.tx_history)