Bitcoin
bantablemodel.h
Go to the documentation of this file.
1 // Copyright (c) 2011-2018 The Bitcoin Core developers
2 // Distributed under the MIT software license, see the accompanying
3 // file COPYING or http://www.opensource.org/licenses/mit-license.php.
4 
5 #ifndef BITCOIN_QT_BANTABLEMODEL_H
6 #define BITCOIN_QT_BANTABLEMODEL_H
7 
8 #include <net.h>
9 
10 #include <memory>
11 
12 #include <QAbstractTableModel>
13 #include <QStringList>
14 
15 class ClientModel;
16 class BanTablePriv;
17 
18 namespace interfaces {
19  class Node;
20 }
21 
22 struct CCombinedBan {
25 };
26 
28 {
29 public:
30  BannedNodeLessThan(int nColumn, Qt::SortOrder fOrder) :
31  column(nColumn), order(fOrder) {}
32  bool operator()(const CCombinedBan& left, const CCombinedBan& right) const;
33 
34 private:
35  int column;
36  Qt::SortOrder order;
37 };
38 
43 class BanTableModel : public QAbstractTableModel
44 {
45  Q_OBJECT
46 
47 public:
48  explicit BanTableModel(interfaces::Node& node, ClientModel *parent = nullptr);
50  void startAutoRefresh();
51  void stopAutoRefresh();
52 
53  enum ColumnIndex {
54  Address = 0,
55  Bantime = 1
56  };
57 
60  int rowCount(const QModelIndex &parent) const;
61  int columnCount(const QModelIndex &parent) const;
62  QVariant data(const QModelIndex &index, int role) const;
63  QVariant headerData(int section, Qt::Orientation orientation, int role) const;
64  QModelIndex index(int row, int column, const QModelIndex &parent) const;
65  Qt::ItemFlags flags(const QModelIndex &index) const;
66  void sort(int column, Qt::SortOrder order);
67  bool shouldShow();
70 public Q_SLOTS:
71  void refresh();
72 
73 private:
76  QStringList columns;
77  std::unique_ptr<BanTablePriv> priv;
78 };
79 
80 #endif // BITCOIN_QT_BANTABLEMODEL_H
QVariant data(const QModelIndex &index, int role) const
Definition: bantablemodel.cpp:110
QModelIndex index(int row, int column, const QModelIndex &parent) const
Definition: bantablemodel.cpp:152
std::unique_ptr< BanTablePriv > priv
Definition: bantablemodel.h:77
int rowCount(const QModelIndex &parent) const
Definition: bantablemodel.cpp:98
bool shouldShow()
Definition: bantablemodel.cpp:176
Definition: bantablemodel.h:54
QVariant headerData(int section, Qt::Orientation orientation, int role) const
Definition: bantablemodel.cpp:132
bool operator()(const CCombinedBan &left, const CCombinedBan &right) const
Definition: bantablemodel.cpp:16
CBanEntry banEntry
Definition: bantablemodel.h:24
void sort(int column, Qt::SortOrder order)
Definition: bantablemodel.cpp:169
Definition: bantablemodel.h:55
Definition: bantablemodel.h:27
int column
Definition: bantablemodel.h:35
Definition: dummywallet.cpp:11
ClientModel * clientModel
Definition: bantablemodel.h:75
CSubNet subnet
Definition: bantablemodel.h:23
Definition: bantablemodel.h:22
void refresh()
Definition: bantablemodel.cpp:162
void startAutoRefresh()
Qt::SortOrder order
Definition: bantablemodel.h:36
Top-level interface for a bitcoin node (bitcoind process).
Definition: node.h:36
Qt::ItemFlags flags(const QModelIndex &index) const
Definition: bantablemodel.cpp:144
interfaces::Node & m_node
Definition: bantablemodel.h:74
Definition: netaddress.h:102
Definition: clientmodel.h:44
~BanTableModel()
Definition: bantablemodel.cpp:93
int columnCount(const QModelIndex &parent) const
Definition: bantablemodel.cpp:104
BanTableModel(interfaces::Node &node, ClientModel *parent=nullptr)
Definition: bantablemodel.cpp:81
QStringList columns
Definition: bantablemodel.h:76
Definition: bantablemodel.cpp:36
uint32_t left(uint32_t x)
Definition: sha1.cpp:28
Definition: addrdb.h:26
void stopAutoRefresh()
ColumnIndex
Definition: bantablemodel.h:53
Definition: bantablemodel.h:43
BannedNodeLessThan(int nColumn, Qt::SortOrder fOrder)
Definition: bantablemodel.h:30