Browse Source

Qt: move current_request logic from main_window to requests_list

patch-4
ThomasV 3 years ago
parent
commit
00183b5412
  1. 12
      electrum/gui/qt/main_window.py
  2. 13
      electrum/gui/qt/request_list.py

12
electrum/gui/qt/main_window.py

@ -203,7 +203,6 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
self.showing_cert_mismatch_error = False
self.tl_windows = []
self.pending_invoice = None
self.current_request = None # request shown in the receive tab
Logger.__init__(self)
self._coroutines_scheduled = {} # type: Dict[concurrent.futures.Future, str]
@ -1328,12 +1327,9 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
return w
def set_current_request(self, req):
self.current_request = req
self.update_current_request()
def update_current_request(self):
req = self.current_request
key = self.request_list.get_current_key()
req = self.wallet.get_request(key) if key else None
if req is None:
self.receive_URI_e.setText('')
self.receive_lightning_e.setText('')
@ -1471,7 +1467,7 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
assert key is not None
self.address_list.refresh_all()
self.request_list.update()
self.request_list.select_key(key)
self.request_list.set_current_key(key)
# clear request fields
self.receive_amount_e.setText('')
self.receive_message_e.setText('')
@ -3788,4 +3784,4 @@ class ElectrumWindow(QMainWindow, MessageBoxMixin, Logger):
amount_msat = amount_e.get_amount() * 1000
coro = self.wallet.lnworker.rebalance_channels(d.chan_from, d.chan_to, amount_msat=amount_msat)
self.run_coroutine_from_thread(coro, _('Rebalancing channels'))
self.update_current_request()
self.update_current_request() # this will gray out the button

13
electrum/gui/qt/request_list.py

@ -75,7 +75,7 @@ class RequestList(MyTreeView):
self.selectionModel().currentRowChanged.connect(self.item_changed)
self.setSelectionMode(QAbstractItemView.ExtendedSelection)
def select_key(self, key):
def set_current_key(self, key):
for i in range(self.model().rowCount()):
item = self.model().index(i, self.Columns.DATE)
row_key = item.data(ROLE_KEY)
@ -83,9 +83,12 @@ class RequestList(MyTreeView):
self.selectionModel().setCurrentIndex(item, QItemSelectionModel.SelectCurrent | QItemSelectionModel.Rows)
break
def get_current_key(self):
return self.get_role_data_for_current_item(col=self.Columns.DATE, role=ROLE_KEY)
def item_changed(self, idx: Optional[QModelIndex]):
if idx is None:
self.parent.set_current_request(None)
self.parent.update_current_request()
return
if not idx.isValid():
return
@ -95,8 +98,7 @@ class RequestList(MyTreeView):
req = self.wallet.get_request(key)
if req is None:
self.update()
return
self.parent.set_current_request(req)
self.parent.update_current_request()
def clearSelection(self):
super().clearSelection()
@ -114,6 +116,7 @@ class RequestList(MyTreeView):
status_item.setIcon(read_QIcon(pr_icons.get(status)))
def update(self):
current_key = self.get_current_key()
# not calling maybe_defer_update() as it interferes with conditional-visibility
self.proxy.setDynamicSortFilter(False) # temp. disable re-sorting after every change
self.std_model.clear()
@ -140,6 +143,8 @@ class RequestList(MyTreeView):
# sort requests by date
self.sortByColumn(self.Columns.DATE, Qt.DescendingOrder)
self.hide_if_empty()
if current_key is not None:
self.set_current_key(current_key)
def hide_if_empty(self):
b = self.std_model.rowCount() > 0

Loading…
Cancel
Save