Qt: move current_request logic from main_window to requests_list
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user