Browse Source

qml: invoice/request list: flip sort order: newest on top

to be consistent with the History, and with other GUIs

(the model is the easiest place to do it. QSortFilterProxyModel/etc looks overkill)
master
SomberNight 3 years ago
parent
commit
bf41675d4c
No known key found for this signature in database
GPG Key ID: B33B5F232C6271E9
  1. 25
      electrum/gui/qml/qeinvoicelistmodel.py
  2. 6
      electrum/wallet.py

25
electrum/gui/qml/qeinvoicelistmodel.py

@ -1,15 +1,20 @@
from abc import abstractmethod
from typing import TYPE_CHECKING, List, Dict, Any
from PyQt5.QtCore import pyqtProperty, pyqtSignal, pyqtSlot, QObject, QTimer
from PyQt5.QtCore import Qt, QAbstractListModel, QModelIndex
from electrum.logging import get_logger
from electrum.util import Satoshis, format_time
from electrum.invoices import BaseInvoice, PR_EXPIRED, LN_EXPIRY_NEVER
from electrum.invoices import BaseInvoice, PR_EXPIRED, LN_EXPIRY_NEVER, Invoice, Request
from .util import QtEventListener, qt_event_listener, status_update_timer_interval
from .qetypes import QEAmount
if TYPE_CHECKING:
from electrum.wallet import Abstract_Wallet
class QEAbstractInvoiceListModel(QAbstractListModel):
_logger = get_logger(__name__)
@ -21,7 +26,7 @@ class QEAbstractInvoiceListModel(QAbstractListModel):
_ROLE_MAP = dict(zip(_ROLE_KEYS, [bytearray(x.encode()) for x in _ROLE_NAMES]))
_ROLE_RMAP = dict(zip(_ROLE_NAMES, _ROLE_KEYS))
def __init__(self, wallet, parent=None):
def __init__(self, wallet: 'Abstract_Wallet', parent=None):
super().__init__(parent)
self.wallet = wallet
@ -159,11 +164,11 @@ class QEAbstractInvoiceListModel(QAbstractListModel):
raise Exception('provide impl')
@abstractmethod
def get_invoice_list(self):
def get_invoice_list(self) -> List[BaseInvoice]:
raise Exception('provide impl')
@abstractmethod
def get_invoice_as_dict(self, invoice: BaseInvoice):
def get_invoice_as_dict(self, invoice: BaseInvoice) -> Dict[str, Any]:
raise Exception('provide impl')
@ -191,12 +196,14 @@ class QEInvoiceListModel(QEAbstractInvoiceListModel, QtEventListener):
return item
def get_invoice_list(self):
return self.wallet.get_unpaid_invoices()
lst = self.wallet.get_unpaid_invoices()
lst.reverse()
return lst
def get_invoice_for_key(self, key: str):
return self.wallet.get_invoice(key)
def get_invoice_as_dict(self, invoice: BaseInvoice):
def get_invoice_as_dict(self, invoice: Invoice):
return self.wallet.export_invoice(invoice)
class QERequestListModel(QEAbstractInvoiceListModel, QtEventListener):
@ -223,12 +230,14 @@ class QERequestListModel(QEAbstractInvoiceListModel, QtEventListener):
return item
def get_invoice_list(self):
return self.wallet.get_unpaid_requests()
lst = self.wallet.get_unpaid_requests()
lst.reverse()
return lst
def get_invoice_for_key(self, key: str):
return self.wallet.get_request(key)
def get_invoice_as_dict(self, invoice: BaseInvoice):
def get_invoice_as_dict(self, invoice: Request):
return self.wallet.export_request(invoice)
@pyqtSlot(str, int)

6
electrum/wallet.py

@ -1090,12 +1090,12 @@ class Abstract_Wallet(ABC, Logger, EventListener):
self._requests_addr_to_key.clear()
self.save_db()
def get_invoices(self):
def get_invoices(self) -> List[Invoice]:
out = list(self._invoices.values())
out.sort(key=lambda x:x.time)
return out
def get_unpaid_invoices(self):
def get_unpaid_invoices(self) -> List[Invoice]:
invoices = self.get_invoices()
return [x for x in invoices if self.get_invoice_status(x) != PR_PAID]
@ -2638,7 +2638,7 @@ class Abstract_Wallet(ABC, Logger, EventListener):
out.sort(key=lambda x: x.time)
return out
def get_unpaid_requests(self):
def get_unpaid_requests(self) -> List[Request]:
out = [x for x in self._receive_requests.values() if self.get_invoice_status(x) != PR_PAID]
out.sort(key=lambda x: x.time)
return out

Loading…
Cancel
Save