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

Network table relooking

parent 36da49f9
Branches
Tags
No related merge requests found
...@@ -28,7 +28,7 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget): ...@@ -28,7 +28,7 @@ class NetworkTabWidget(QWidget, Ui_NetworkTabWidget):
proxy.setSourceModel(model) proxy.setSourceModel(model)
self.table_network.setModel(proxy) self.table_network.setModel(proxy)
self.table_network.sortByColumn(0, Qt.DescendingOrder) self.table_network.sortByColumn(0, Qt.DescendingOrder)
self.table_network.resizeColumnsToContents()
community.network.nodes_changed.connect(self.refresh_nodes) community.network.nodes_changed.connect(self.refresh_nodes)
def refresh_nodes(self): def refresh_nodes(self):
......
...@@ -35,14 +35,16 @@ class NetworkFilterProxyModel(QSortFilterProxyModel): ...@@ -35,14 +35,16 @@ class NetworkFilterProxyModel(QSortFilterProxyModel):
if role != Qt.DisplayRole: if role != Qt.DisplayRole:
return QVariant() return QVariant()
header_names = {'pubkey': 'Pubkey', header_names = {
'is_member': 'Member',
'uid': 'UID',
'address': 'Address', 'address': 'Address',
'port': 'Port', 'port': 'Port',
'current_block': 'Block'} 'current_block': 'Block',
type = self.sourceModel().headerData(section, orientation, role) 'uid': 'UID',
return header_names[type] 'is_member': 'Member',
'pubkey': 'Pubkey'
}
_type = self.sourceModel().headerData(section, orientation, role)
return header_names[_type]
def data(self, index, role): def data(self, index, role):
source_index = self.mapToSource(index) source_index = self.mapToSource(index)
...@@ -53,11 +55,17 @@ class NetworkFilterProxyModel(QSortFilterProxyModel): ...@@ -53,11 +55,17 @@ class NetworkFilterProxyModel(QSortFilterProxyModel):
and role == Qt.DisplayRole: and role == Qt.DisplayRole:
value = {True: 'yes', False: 'no', None: 'offline'} value = {True: 'yes', False: 'no', None: 'offline'}
return value[source_data] return value[source_data]
if role == Qt.TextAlignmentRole:
if source_index.column() == self.sourceModel().column_types.index('address') or source_index.column() == self.sourceModel().column_types.index('current_block'):
return Qt.AlignRight | Qt.AlignVCenter
if source_index.column() == self.sourceModel().column_types.index('is_member'):
return Qt.AlignCenter
return source_data return source_data
class NetworkTableModel(QAbstractTableModel): class NetworkTableModel(QAbstractTableModel):
''' '''
A Qt abstract item model to display A Qt abstract item model to display
''' '''
...@@ -69,13 +77,25 @@ class NetworkTableModel(QAbstractTableModel): ...@@ -69,13 +77,25 @@ class NetworkTableModel(QAbstractTableModel):
super().__init__(parent) super().__init__(parent)
self.community = community self.community = community
self.column_types = ( self.column_types = (
'pubkey',
'is_member',
'uid',
'address', 'address',
'port', 'port',
'current_block' 'current_block',
'uid',
'is_member',
'pubkey'
) )
self.node_colors = {
Node.ONLINE: QColor('#99ff99'),
Node.OFFLINE: QColor('#ff9999'),
Node.DESYNCED: QColor('#ffbd81'),
Node.CORRUPTED: QColor(Qt.lightGray)
}
self.node_states = {
Node.ONLINE: 'Online',
Node.OFFLINE: 'Offline',
Node.DESYNCED: 'Unsynchronized',
Node.CORRUPTED: 'Corrupted'
}
@property @property
def nodes(self): def nodes(self):
...@@ -114,7 +134,7 @@ class NetworkTableModel(QAbstractTableModel): ...@@ -114,7 +134,7 @@ class NetworkTableModel(QAbstractTableModel):
address = node.endpoint.ipv6 address = node.endpoint.ipv6
port = node.endpoint.port port = node.endpoint.port
return node.pubkey, is_member, node.uid, address, port, node.block return address, port, node.block, node.uid, is_member, node.pubkey
def data(self, index, role): def data(self, index, role):
row = index.row() row = index.row()
...@@ -127,19 +147,11 @@ class NetworkTableModel(QAbstractTableModel): ...@@ -127,19 +147,11 @@ class NetworkTableModel(QAbstractTableModel):
if role == Qt.DisplayRole: if role == Qt.DisplayRole:
return self.data_node(node)[col] return self.data_node(node)[col]
if role == Qt.BackgroundColorRole: if role == Qt.BackgroundColorRole:
colors = {Node.ONLINE: QVariant(), return self.node_colors[node.state]
Node.OFFLINE: QColor(Qt.darkRed), if role == Qt.ToolTipRole:
Node.DESYNCED: QColor(Qt.gray), return self.node_states[node.state]
Node.CORRUPTED: QColor(Qt.darkRed)
} return QVariant()
return colors[node.state]
if role == Qt.ForegroundRole:
colors = {Node.ONLINE: QVariant(),
Node.OFFLINE: QColor(Qt.lightGray),
Node.DESYNCED: QColor(Qt.black),
Node.CORRUPTED: QColor(Qt.lightGray)
}
return colors[node.state]
def flags(self, index): def flags(self, index):
return Qt.ItemIsSelectable | Qt.ItemIsEnabled return Qt.ItemIsSelectable | Qt.ItemIsEnabled
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment