Browse Source

qml: make sure to keep ref to instance

master
Sander van Grieken 3 years ago
parent
commit
dc1441d129
  1. 2
      electrum/gui/qml/components/ChannelBackups.qml
  2. 2
      electrum/gui/qml/components/Channels.qml
  3. 19
      electrum/gui/qml/qechannellistmodel.py
  4. 3
      electrum/gui/qml/qemodelfilter.py

2
electrum/gui/qml/components/ChannelBackups.qml

@ -54,7 +54,7 @@ Pane {
Layout.preferredWidth: parent.width Layout.preferredWidth: parent.width
Layout.fillHeight: true Layout.fillHeight: true
clip: true clip: true
model: Daemon.currentWallet.channelModel.filterModel('is_backup', true) model: Daemon.currentWallet.channelModel.filterModelBackups()
delegate: ChannelDelegate { delegate: ChannelDelegate {
onClicked: { onClicked: {

2
electrum/gui/qml/components/Channels.qml

@ -78,7 +78,7 @@ Pane {
Layout.preferredWidth: parent.width Layout.preferredWidth: parent.width
Layout.fillHeight: true Layout.fillHeight: true
clip: true clip: true
model: Daemon.currentWallet.channelModel.filterModel('is_backup', false) model: Daemon.currentWallet.channelModel.filterModelNoBackups()
delegate: ChannelDelegate { delegate: ChannelDelegate {
onClicked: { onClicked: {

19
electrum/gui/qml/qechannellistmodel.py

@ -169,11 +169,20 @@ class QEChannelListModel(QAbstractListModel, QtEventListener):
return return
i = i + 1 i = i + 1
@pyqtSlot(str, 'QVariant', result=QEFilterProxyModel)
def filterModel(self, role, match): def filterModel(self, role, match):
self._filterModel = QEFilterProxyModel(self, self) _filterModel = QEFilterProxyModel(self, self)
assert role in self._ROLE_RMAP assert role in self._ROLE_RMAP
self._filterModel.setFilterRole(self._ROLE_RMAP[role]) _filterModel.setFilterRole(self._ROLE_RMAP[role])
self._filterModel.setFilterValue(match) _filterModel.setFilterValue(match)
return self._filterModel return _filterModel
@pyqtSlot(result=QEFilterProxyModel)
def filterModelBackups(self):
self._fm_backups = self.filterModel('is_backup', True)
return self._fm_backups
@pyqtSlot(result=QEFilterProxyModel)
def filterModelNoBackups(self):
self._fm_nobackups = self.filterModel('is_backup', False)
return self._fm_nobackups

3
electrum/gui/qml/qemodelfilter.py

@ -5,10 +5,9 @@ from electrum.logging import get_logger
class QEFilterProxyModel(QSortFilterProxyModel): class QEFilterProxyModel(QSortFilterProxyModel):
_logger = get_logger(__name__) _logger = get_logger(__name__)
_filter_value = None
def __init__(self, parent_model, parent=None): def __init__(self, parent_model, parent=None):
super().__init__(parent) super().__init__(parent)
self._filter_value = None
self.setSourceModel(parent_model) self.setSourceModel(parent_model)
countChanged = pyqtSignal() countChanged = pyqtSignal()

Loading…
Cancel
Save