14 #include <QModelIndex>
22 if (
order == Qt::DescendingOrder)
23 std::swap(pLeft, pRight);
53 cachedBanlist.clear();
54 cachedBanlist.reserve(banMap.size());
55 for (
const auto& entry : banMap)
58 banEntry.
subnet = entry.first;
60 cachedBanlist.append(banEntry);
70 return cachedBanlist.size();
75 if (idx >= 0 && idx < cachedBanlist.size())
76 return &cachedBanlist[idx];
83 QAbstractTableModel(parent),
86 columns << tr(
"IP/Netmask") << tr(
"Banned Until");
117 if (role == Qt::DisplayRole) {
118 switch(index.column())
123 QDateTime date = QDateTime::fromMSecsSinceEpoch(0);
125 return date.toString(Qt::SystemLocaleLongDate);
134 if(orientation == Qt::Horizontal)
136 if(role == Qt::DisplayRole && section <
columns.size())
146 if (!index.isValid())
return Qt::NoItemFlags;
148 Qt::ItemFlags retval = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
158 return createIndex(row, column, data);
159 return QModelIndex();
164 Q_EMIT layoutAboutToBeChanged();
166 Q_EMIT layoutChanged();
171 priv->sortColumn = column;
172 priv->sortOrder = order;
178 return priv->size() > 0;
QModelIndex index(int row, int column, const QModelIndex &parent) const override
void sort(int column, Qt::SortOrder order) override
bool operator()(const CCombinedBan &left, const CCombinedBan &right) const
BanTableModel(interfaces::Node &node, QObject *parent)
int sortColumn
Column to sort nodes by (default to unsorted)
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
QVariant data(const QModelIndex &index, int role) const override
std::string ToString() const
std::unique_ptr< BanTablePriv > priv
Qt::ItemFlags flags(const QModelIndex &index) const override
Qt::SortOrder sortOrder
Order (ascending or descending) to sort nodes by.
void refreshBanlist(interfaces::Node &node)
Pull a full list of banned nodes from CNode into our cache.
interfaces::Node & m_node
int rowCount(const QModelIndex &parent) const override
virtual bool getBanned(banmap_t &banmap)=0
Get ban map entries.
std::map< CSubNet, CBanEntry > banmap_t
QList< CCombinedBan > cachedBanlist
Local cache of peer information.
Top-level interface for a bitcoin node (bitcoind process).
CCombinedBan * index(int idx)
int columnCount(const QModelIndex &parent) const override