aboutsummaryrefslogtreecommitdiff
path: root/src/qt/peertablemodel.h
diff options
context:
space:
mode:
authorAshley Holman <dscvlt@gmail.com>2014-05-23 12:09:59 -0500
committerAshley Holman <dscvlt@gmail.com>2014-06-03 17:37:34 +0930
commit65f78a111ff52c2212cc0a423662e7a41d1206dd (patch)
treee3f986034d79e48a13986e1a144a0f7b2a879a7f /src/qt/peertablemodel.h
parent9d97e83bf677ce595c6b2dc5d6805c2fcb1bc05b (diff)
downloadbitcoin-65f78a111ff52c2212cc0a423662e7a41d1206dd.tar.xz
Qt: Add GUI view of peer information. #4133
Diffstat (limited to 'src/qt/peertablemodel.h')
-rw-r--r--src/qt/peertablemodel.h79
1 files changed, 79 insertions, 0 deletions
diff --git a/src/qt/peertablemodel.h b/src/qt/peertablemodel.h
new file mode 100644
index 0000000000..d947e21240
--- /dev/null
+++ b/src/qt/peertablemodel.h
@@ -0,0 +1,79 @@
+// Copyright (c) 2011-2013 The Bitcoin developers
+// Distributed under the MIT/X11 software license, see the accompanying
+// file COPYING or http://www.opensource.org/licenses/mit-license.php.
+
+#ifndef PEERTABLEMODEL_H
+#define PEERTABLEMODEL_H
+
+#include "main.h"
+#include "net.h"
+
+#include <QAbstractTableModel>
+#include <QStringList>
+
+class PeerTablePriv;
+class ClientModel;
+
+class QTimer;
+
+struct CNodeCombinedStats {
+ CNodeStats nodestats;
+ CNodeStateStats statestats;
+};
+
+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);
+ const CNodeCombinedStats *getNodeStats(int idx);
+ int getRowByNodeId(NodeId nodeid);
+ void startAutoRefresh(int msecs);
+ void stopAutoRefresh();
+
+ enum ColumnIndex {
+ Address = 0,
+ Subversion = 1,
+ Height = 2
+ };
+
+ /** @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 slots:
+ void refresh();
+
+private:
+ ClientModel *clientModel;
+ QStringList columns;
+ PeerTablePriv *priv;
+ QTimer *timer;
+
+};
+
+#endif // PEERTABLEMODEL_H