mirror of
https://github.com/bitcoin/bitcoin.git
synced 2025-02-28 13:26:38 +01:00
None of these are very serious, and are leaks in objects that are created at most one time. In most cases this means properly using the QObject parent hierarchy, except for BanTablePriv/PeerTablePriv which are not QObject, so use a std::unique_ptr instead.
83 lines
2.1 KiB
C++
83 lines
2.1 KiB
C++
// Copyright (c) 2011-2015 The Bitcoin Core developers
|
|
// Distributed under the MIT software license, see the accompanying
|
|
// file COPYING or http://www.opensource.org/licenses/mit-license.php.
|
|
|
|
#ifndef BITCOIN_QT_PEERTABLEMODEL_H
|
|
#define BITCOIN_QT_PEERTABLEMODEL_H
|
|
|
|
#include "main.h" // For CNodeStateStats
|
|
#include "net.h"
|
|
|
|
#include <QAbstractTableModel>
|
|
#include <QStringList>
|
|
|
|
class ClientModel;
|
|
class PeerTablePriv;
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
class QTimer;
|
|
QT_END_NAMESPACE
|
|
|
|
struct CNodeCombinedStats {
|
|
CNodeStats nodeStats;
|
|
CNodeStateStats nodeStateStats;
|
|
bool fNodeStateStatsAvailable;
|
|
};
|
|
|
|
class NodeLessThan
|
|
{
|
|
public:
|
|
NodeLessThan(int nColumn, Qt::SortOrder fOrder) :
|
|
column(nColumn), order(fOrder) {}
|
|
bool operator()(const CNodeCombinedStats &left, const CNodeCombinedStats &right) const;
|
|
|
|
private:
|
|
int column;
|
|
Qt::SortOrder order;
|
|
};
|
|
|
|
/**
|
|
Qt model providing information about connected peers, similar to the
|
|
"getpeerinfo" RPC call. Used by the rpc console UI.
|
|
*/
|
|
class PeerTableModel : public QAbstractTableModel
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
explicit PeerTableModel(ClientModel *parent = 0);
|
|
~PeerTableModel();
|
|
const CNodeCombinedStats *getNodeStats(int idx);
|
|
int getRowByNodeId(NodeId nodeid);
|
|
void startAutoRefresh();
|
|
void stopAutoRefresh();
|
|
|
|
enum ColumnIndex {
|
|
NetNodeId = 0,
|
|
Address = 1,
|
|
Subversion = 2,
|
|
Ping = 3
|
|
};
|
|
|
|
/** @name Methods overridden from QAbstractTableModel
|
|
@{*/
|
|
int rowCount(const QModelIndex &parent) const;
|
|
int columnCount(const QModelIndex &parent) const;
|
|
QVariant data(const QModelIndex &index, int role) const;
|
|
QVariant headerData(int section, Qt::Orientation orientation, int role) const;
|
|
QModelIndex index(int row, int column, const QModelIndex &parent) const;
|
|
Qt::ItemFlags flags(const QModelIndex &index) const;
|
|
void sort(int column, Qt::SortOrder order);
|
|
/*@}*/
|
|
|
|
public Q_SLOTS:
|
|
void refresh();
|
|
|
|
private:
|
|
ClientModel *clientModel;
|
|
QStringList columns;
|
|
std::unique_ptr<PeerTablePriv> priv;
|
|
QTimer *timer;
|
|
};
|
|
|
|
#endif // BITCOIN_QT_PEERTABLEMODEL_H
|