[Qt] add sorting for bantable
This commit is contained in:
parent
51654deff2
commit
65abe91ce4
2 changed files with 35 additions and 1 deletions
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue