23 if (
order == Qt::DescendingOrder) {
24 std::swap(pLeft, pRight);
51 node.getBanned(banMap);
55 for (
const auto &entry : banMap) {
57 banEntry.
subnet = entry.first;
83 columns << tr(
"IP/Netmask") << tr(
"Banned Until");
103 if (!
index.isValid()) {
109 if (role == Qt::DisplayRole) {
110 switch (
index.column()) {
114 QDateTime date = QDateTime::fromMSecsSinceEpoch(0);
116 return date.toString(QLocale().dateTimeFormat());
125 if (orientation == Qt::Horizontal) {
126 if (role == Qt::DisplayRole && section <
columns.size()) {
134 if (!
index.isValid()) {
135 return Qt::NoItemFlags;
138 Qt::ItemFlags retval = Qt::ItemIsSelectable | Qt::ItemIsEnabled;
143 const QModelIndex &parent)
const {
148 return createIndex(row, column,
data);
150 return QModelIndex();
154 Q_EMIT layoutAboutToBeChanged();
156 Q_EMIT layoutChanged();
160 priv->sortColumn = column;
161 priv->sortOrder = order;
166 return priv->size() > 0;
std::unique_ptr< BanTablePriv > priv
QVariant data(const QModelIndex &index, int role) const override
Qt::ItemFlags flags(const QModelIndex &index) const override
interfaces::Node & m_node
int columnCount(const QModelIndex &parent) const override
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
void sort(int column, Qt::SortOrder order) override
int rowCount(const QModelIndex &parent) const override
QModelIndex index(int row, int column, const QModelIndex &parent) const override
BanTableModel(interfaces::Node &node, QObject *parent)
int sortColumn
Column to sort nodes by (default to unsorted)
void refreshBanlist(interfaces::Node &node)
Pull a full list of banned nodes from CNode into our cache.
Qt::SortOrder sortOrder
Order (ascending or descending) to sort nodes by.
QList< CCombinedBan > cachedBanlist
Local cache of peer information.
CCombinedBan * index(int idx)
bool operator()(const CCombinedBan &left, const CCombinedBan &right) const
std::string ToString() const
Top-level interface for a bitcoin node (bitcoind process).
std::map< CSubNet, CBanEntry > banmap_t