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.