diff --git a/src/cutecoin/gui/currency_tab.py b/src/cutecoin/gui/currency_tab.py index 0f7e70e762c3f62d21bae0cdadb32e008c1b0039..444348ef20de2a246e21aac444a29451ba5a250f 100644 --- a/src/cutecoin/gui/currency_tab.py +++ b/src/cutecoin/gui/currency_tab.py @@ -20,6 +20,7 @@ from ..models.wallet import WalletListModel from ..tools.exceptions import NoPeerAvailable from ..core.wallet import Wallet from ..core.person import Person +from ..core.transfer import Transfer class BlockchainWatcher(QObject): @@ -110,7 +111,7 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget): ts_to = self.date_to.dateTime().toTime_t() model = HistoryTableModel(self.app.current_account, self.community) - proxy = TxFilterProxyModel(self.community, ts_from, ts_to) + proxy = TxFilterProxyModel(ts_from, ts_to) proxy.setSourceModel(model) proxy.setDynamicSortFilter(True) proxy.setSortRole(Qt.DisplayRole) @@ -148,7 +149,7 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget): QModelIndex(), QModelIndex(), []) - if self.table_history.model(): + if self.tablcommunitye_history.model(): self.table_history.model().dataChanged.emit( QModelIndex(), QModelIndex(), @@ -201,14 +202,30 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget): if index.row() < model.rowCount(QModelIndex()): menu = QMenu(model.data(index, Qt.DisplayRole), self) source_index = model.mapToSource(index) - if index.column() == model.sourceModel().columns.index('UID/Public key'): - person = model.sourceModel().data(source_index, Qt.DisplayRole) - - copy_pubkey = QAction("Copy pubkey to clipboard", self) - copy_pubkey.triggered.connect(self.copy_pubkey_to_clipboard) - copy_pubkey.setData(person) + state_col = model.sourceModel().columns.index('State') + state_index = model.sourceModel().index(source_index.row(), + state_col) + state_data = model.sourceModel().data(state_index, Qt.DisplayRole) + + pubkey_col = model.sourceModel().columns.index('UID/Public key') + person_index = model.sourceModel().index(source_index.row(), + pubkey_col) + person = model.sourceModel().data(person_index, Qt.DisplayRole) + + payment_col = model.sourceModel().columns.index('Payment') + payment_index = model.sourceModel().index(source_index.row(), + payment_col) + payment_data = model.sourceModel().data(payment_index, Qt.DisplayRole) + if state_data == Transfer.REFUSED: + send_back = QAction("Send again", self) + send_back.triggered.connect(self.send_again) + send_back.setData((payment_data, person)) + menu.addAction(send_back) - menu.addAction(copy_pubkey) + copy_pubkey = QAction("Copy pubkey to clipboard", self) + copy_pubkey.triggered.connect(self.copy_pubkey_to_clipboard) + copy_pubkey.setData(person) + menu.addAction(copy_pubkey) # Show the context menu. menu.exec_(self.table_history.mapToGlobal(point)) @@ -226,6 +243,12 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget): elif data.__class__ is str: clipboard.setText(data) + def send_again(self): + data = self.sender().data() + payment = data[0] + person = data[1] + #TODO: Send back the transaction and change its state + def wallet_changed(self): self.app.save(self.app.current_account) diff --git a/src/cutecoin/models/txhistory.py b/src/cutecoin/models/txhistory.py index 94eca650bb3d232f2a8423740e7e48423278c675..779870852e0e0cb1425da4f44f3580ef7f44f0b1 100644 --- a/src/cutecoin/models/txhistory.py +++ b/src/cutecoin/models/txhistory.py @@ -14,9 +14,10 @@ from PyQt5.QtGui import QFont, QColor class TxFilterProxyModel(QSortFilterProxyModel): - def __init__(self, community, ts_from, ts_to, parent=None): + def __init__(self, ts_from, ts_to, parent=None): super().__init__(parent) - self.community = community + self.community = None + self.account = None self.ts_from = ts_from self.ts_to = ts_to @@ -40,6 +41,11 @@ class TxFilterProxyModel(QSortFilterProxyModel): def columnCount(self, parent): return self.sourceModel().columnCount(None) - 1 + def setSourceModel(self, sourceModel): + self.community = sourceModel.community + self.account = sourceModel.account + super().setSourceModel(sourceModel) + def lessThan(self, left, right): """ Sort table by given column number. @@ -65,6 +71,16 @@ class TxFilterProxyModel(QSortFilterProxyModel): if source_index.column() == self.sourceModel().columns.index('Date'): date = QDateTime.fromTime_t(source_data) return date.date() + if source_index.column() == self.sourceModel().columns.index('Payment'): + if source_data is not "": + amount_ref = self.account.units_to_ref(-source_data, self.community) + ref_name = self.account.ref_name(self.community.short_currency) + return "{0:.2f} {1}".format(amount_ref, ref_name) + if source_index.column() == self.sourceModel().columns.index('Deposit'): + if source_data is not "": + amount_ref = self.account.units_to_ref(source_data, self.community) + ref_name = self.account.ref_name(self.community.short_currency) + return "{0:.2f} {1}".format(amount_ref, ref_name) if role == Qt.FontRole: font = QFont() @@ -128,7 +144,7 @@ class HistoryTableModel(QAbstractTableModel): amount_ref = self.account.units_to_ref(amount, self.community) ref_name = self.account.ref_name(self.community.short_currency) - return (date_ts, sender, "", "{0:.2f} {1}".format(amount_ref, ref_name), + return (date_ts, sender, "", amount, "{0:.2f} {1}".format(amount_ref, ref_name), comment, transfer.state) def data_sent(self, transfer): @@ -145,10 +161,7 @@ class HistoryTableModel(QAbstractTableModel): date_ts = transfer.metadata['time'] - amount_ref = self.account.units_to_ref(-amount, self.community) - ref_name = self.account.ref_name(self.community.short_currency) - - return (date_ts, receiver, "{0:.2f} {1}".format(amount_ref, ref_name), + return (date_ts, receiver, amount, "", comment, transfer.state) def data(self, index, role):