[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