[Qt] add sorting for bantable

This commit is contained in:
Philip Kaufmann 2015-06-26 14:58:15 +02:00 committed by Jonas Schnelli
parent 51654deff2
commit 65abe91ce4
2 changed files with 35 additions and 1 deletions

View File

@ -14,6 +14,24 @@
#include <QDebug>
#include <QList>
bool BannedNodeLessThan::operator()(const CCombinedBan& left, const CCombinedBan& right) const
{
const CCombinedBan* pLeft = &left;
const CCombinedBan* pRight = &right;
if (order == Qt::DescendingOrder)
std::swap(pLeft, pRight);
switch(column)
{
case BanTableModel::Address:
return pLeft->subnet.ToString().compare(pRight->subnet.ToString()) < 0;
case BanTableModel::Bantime:
return pLeft->bantil < pRight->bantil;
}
return false;
}
// private implementation
class BanTablePriv
@ -43,6 +61,10 @@ public:
banEntry.bantil = banentry.second;
cachedBanlist.append(banEntry);
}
if (sortColumn >= 0)
// sort cachedBanlist (use stable sort to prevent rows jumping around unneceesarily)
qStableSort(cachedBanlist.begin(), cachedBanlist.end(), BannedNodeLessThan(sortColumn, sortOrder));
}
int size() const

View File

@ -18,6 +18,18 @@ struct CCombinedBan {
int64_t bantil;
};
class BannedNodeLessThan
{
public:
BannedNodeLessThan(int nColumn, Qt::SortOrder fOrder) :
column(nColumn), order(fOrder) {}
bool operator()(const CCombinedBan& left, const CCombinedBan& 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.
@ -33,7 +45,7 @@ public:
enum ColumnIndex {
Address = 0,
Bantime = 1,
Bantime = 1
};
/** @name Methods overridden from QAbstractTableModel