1
0

Qt: move current_request logic from main_window to requests_list

This commit is contained in:
ThomasV
2022-05-28 17:52:07 +02:00
parent 52b73880f9
commit 00183b5412
2 changed files with 13 additions and 12 deletions

View File

@@ -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

View File

@@ -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