18 QAbstractTableModel(parent),
23 timer =
new QTimer(
this);
48 if (parent.isValid()) {
56 if (parent.isValid()) {
70 if (role == Qt::DisplayRole) {
96 }
else if (role == Qt::TextAlignmentRole) {
99 return QVariant(Qt::AlignRight | Qt::AlignVCenter);
105 return QVariant(Qt::AlignCenter);
109 return QVariant(Qt::AlignRight | Qt::AlignVCenter);
115 return QVariant::fromValue(rec);
123 if(orientation == Qt::Horizontal)
125 if(role == Qt::DisplayRole && section <
columns.size())
135 if (!
index.isValid())
return Qt::NoItemFlags;
137 Qt::ItemFlags retval = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
149 return QModelIndex();
157 new_peers_data.reserve(nodes_stats.size());
158 for (
const auto& node_stats : nodes_stats) {
159 const CNodeCombinedStats stats{std::get<0>(node_stats), std::get<2>(node_stats), std::get<1>(node_stats)};
160 new_peers_data.append(stats);
169 if (i < new_peers_data.size() &&
m_peers_data.at(i).nodeStats.nodeid == new_peers_data.at(i).nodeStats.nodeid) {
174 beginRemoveRows(QModelIndex(), i, i);
181 beginInsertRows(QModelIndex(),
m_peers_data.size(), new_peers_data.size() - 1);
188 const auto top_left =
index(0, 0);
190 Q_EMIT dataChanged(top_left, bottom_right);
ConnectionType m_conn_type
std::chrono::microseconds m_min_ping_time
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
int rowCount(const QModelIndex &parent=QModelIndex()) const override
interfaces::Node & m_node
QVariant data(const QModelIndex &index, int role=Qt::DisplayRole) const override
QList< CNodeCombinedStats > m_peers_data
Internal peer data structure.
const QStringList columns
QVariant headerData(int section, Qt::Orientation orientation, int role=Qt::DisplayRole) const override
PeerTableModel(interfaces::Node &node, QObject *parent)
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
Top-level interface for a bitcoin node (bitcoind process).
std::vector< std::tuple< CNodeStats, bool, CNodeStateStats > > NodesStats
Get stats for connected nodes.
virtual bool getNodesStats(NodesStats &stats)=0
static const int MODEL_UPDATE_DELAY
QString NetworkToQString(Network net)
Convert enum Network to QString.
QString formatBytes(uint64_t bytes)
QString formatPingTime(std::chrono::microseconds ping_time)
Format a CNodeStats.m_last_ping_time into a user-readable string or display N/A, if 0.
QString ConnectionTypeToQString(ConnectionType conn_type, bool prepend_direction)
Convert enum ConnectionType to QString.