Skip to content
Snippets Groups Projects
Commit 04710d3f authored by Vincent Texier's avatar Vincent Texier
Browse files

Improve transactions table view

parent c8e3b7c7
Branches
Tags
No related merge requests found
...@@ -10,7 +10,7 @@ import requests ...@@ -10,7 +10,7 @@ import requests
from ucoinpy.api import bma from ucoinpy.api import bma
from PyQt5.QtWidgets import QWidget, QMenu, QAction, QApplication, \ from PyQt5.QtWidgets import QWidget, QMenu, QAction, QApplication, \
QMessageBox, QDialog, QAbstractItemView QMessageBox, QDialog, QAbstractItemView, QHeaderView
from PyQt5.QtCore import QModelIndex, Qt, pyqtSlot, QObject, \ from PyQt5.QtCore import QModelIndex, Qt, pyqtSlot, QObject, \
QThread, pyqtSignal, QDateTime QThread, pyqtSignal, QDateTime
from PyQt5.QtGui import QIcon from PyQt5.QtGui import QIcon
...@@ -122,7 +122,7 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget): ...@@ -122,7 +122,7 @@ class CurrencyTabWidget(QWidget, Ui_CurrencyTabWidget):
self.table_history.setModel(proxy) self.table_history.setModel(proxy)
self.table_history.setSelectionBehavior(QAbstractItemView.SelectRows) self.table_history.setSelectionBehavior(QAbstractItemView.SelectRows)
self.table_history.setSortingEnabled(True) self.table_history.setSortingEnabled(True)
self.table_history.horizontalHeader().setSectionResizeMode(QHeaderView.ResizeToContents)
self.tab_community = CommunityTabWidget(self.app.current_account, self.tab_community = CommunityTabWidget(self.app.current_account,
self.community, self.community,
self.password_asker) self.password_asker)
......
...@@ -32,7 +32,7 @@ class TxFilterProxyModel(QSortFilterProxyModel): ...@@ -32,7 +32,7 @@ class TxFilterProxyModel(QSortFilterProxyModel):
def filterAcceptsRow(self, sourceRow, sourceParent): def filterAcceptsRow(self, sourceRow, sourceParent):
def in_period(date_ts): def in_period(date_ts):
return (date_ts in range(self.ts_from, self.ts_to)) return (date_ts in range(self.ts_from, self.ts_to))
date_col = self.sourceModel().columns.index('Date') date_col = self.sourceModel().column_types.index('date')
source_index = self.sourceModel().index(sourceRow, date_col) source_index = self.sourceModel().index(sourceRow, date_col)
date = self.sourceModel().data(source_index, Qt.DisplayRole) date = self.sourceModel().data(source_index, Qt.DisplayRole)
return in_period(date) return in_period(date)
...@@ -60,32 +60,30 @@ class TxFilterProxyModel(QSortFilterProxyModel): ...@@ -60,32 +60,30 @@ class TxFilterProxyModel(QSortFilterProxyModel):
def data(self, index, role): def data(self, index, role):
source_index = self.mapToSource(index) source_index = self.mapToSource(index)
source_data = self.sourceModel().data(source_index, role) source_data = self.sourceModel().data(source_index, role)
state_col = self.sourceModel().columns.index('State') state_col = self.sourceModel().column_types.index('state')
state_index = self.sourceModel().index(source_index.row(), state_col) state_index = self.sourceModel().index(source_index.row(), state_col)
state_data = self.sourceModel().data(state_index, Qt.DisplayRole) state_data = self.sourceModel().data(state_index, Qt.DisplayRole)
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
if source_index.column() == self.sourceModel().columns.index('UID/Public key'): if source_index.column() == self.sourceModel().column_types.index('uid'):
if source_data.__class__ == Person: if source_data.__class__ == Person:
tx_person = source_data.name tx_person = source_data.name
else: else:
tx_person = "pub:{0}".format(source_data[:5]) tx_person = "pub:{0}".format(source_data[:5])
source_data = tx_person source_data = tx_person
return source_data return source_data
if source_index.column() == self.sourceModel().columns.index('Date'): if source_index.column() == self.sourceModel().column_types.index('date'):
date = QDateTime.fromTime_t(source_data) date = QDateTime.fromTime_t(source_data)
return date.date() return date.date()
if source_index.column() == self.sourceModel().columns.index('Payment'): if source_index.column() == self.sourceModel().column_types.index('payment'):
if source_data is not "": if source_data is not "":
amount_ref = self.account.units_to_diff_ref(source_data, amount_ref = self.account.units_to_diff_ref(source_data,
self.community) self.community)
ref_name = self.account.diff_ref_name(self.community.short_currency) return "{0:.2f}".format(amount_ref)
return "{0:.2f} {1}".format(amount_ref, ref_name) if source_index.column() == self.sourceModel().column_types.index('deposit'):
if source_index.column() == self.sourceModel().columns.index('Deposit'):
if source_data is not "": if source_data is not "":
amount_ref = self.account.units_to_diff_ref(source_data, amount_ref = self.account.units_to_diff_ref(source_data,
self.community) self.community)
ref_name = self.account.diff_ref_name(self.community.short_currency) return "{0:.2f}".format(amount_ref)
return "{0:.2f} {1}".format(amount_ref, ref_name)
if role == Qt.FontRole: if role == Qt.FontRole:
font = QFont() font = QFont()
...@@ -104,6 +102,12 @@ class TxFilterProxyModel(QSortFilterProxyModel): ...@@ -104,6 +102,12 @@ class TxFilterProxyModel(QSortFilterProxyModel):
return QColor(Qt.red) return QColor(Qt.red)
elif state_data == Transfer.TO_SEND: elif state_data == Transfer.TO_SEND:
return QColor(Qt.blue) return QColor(Qt.blue)
if role == Qt.TextAlignmentRole:
if source_index.column() == self.sourceModel().column_types.index('deposit') or source_index.column() == self.sourceModel().column_types.index('payment'):
return Qt.AlignRight | Qt.AlignVCenter
if source_index.column() == self.sourceModel().column_types.index('date'):
return Qt.AlignCenter
return source_data return source_data
...@@ -120,8 +124,25 @@ class HistoryTableModel(QAbstractTableModel): ...@@ -120,8 +124,25 @@ class HistoryTableModel(QAbstractTableModel):
super().__init__(parent) super().__init__(parent)
self.account = account self.account = account
self.community = community self.community = community
self.columns = ('Date', 'UID/Public key', 'Payment', self.account.referential
'Deposit', 'Comment', 'State')
self.column_types = (
'date',
'uid',
'payment',
'deposit',
'comment',
'state'
)
self.column_headers = (
'Date',
'UID/Public key',
'Payment\n({:})'.format(self.account.diff_ref_name(self.community.short_currency)),
'Deposit\n({:})'.format(self.account.diff_ref_name(self.community.short_currency)),
'Comment',
'State'
)
@property @property
def transfers(self): def transfers(self):
...@@ -131,11 +152,11 @@ class HistoryTableModel(QAbstractTableModel): ...@@ -131,11 +152,11 @@ class HistoryTableModel(QAbstractTableModel):
return len(self.transfers) return len(self.transfers)
def columnCount(self, parent): def columnCount(self, parent):
return len(self.columns) return len(self.column_types)
def headerData(self, section, orientation, role): def headerData(self, section, orientation, role):
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
return self.columns[section] return self.column_headers[section]
def data_received(self, transfer): def data_received(self, transfer):
amount = transfer.metadata['amount'] amount = transfer.metadata['amount']
...@@ -152,9 +173,6 @@ class HistoryTableModel(QAbstractTableModel): ...@@ -152,9 +173,6 @@ class HistoryTableModel(QAbstractTableModel):
date_ts = transfer.metadata['time'] 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, sender, "", amount, return (date_ts, sender, "", amount,
comment, transfer.state) comment, transfer.state)
...@@ -186,7 +204,6 @@ class HistoryTableModel(QAbstractTableModel): ...@@ -186,7 +204,6 @@ class HistoryTableModel(QAbstractTableModel):
transfer = self.transfers[row] transfer = self.transfers[row]
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
if type(transfer) is Received: if type(transfer) is Received:
print(col, self.data_received(transfer)[col])
return self.data_received(transfer)[col] return self.data_received(transfer)[col]
else: else:
return self.data_sent(transfer)[col] return self.data_sent(transfer)[col]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment