diff options
author | Philip Kaufmann <phil.kaufmann@t-online.de> | 2015-06-26 14:58:15 +0200 |
---|---|---|
committer | Jonas Schnelli <jonas.schnelli@include7.ch> | 2015-09-16 16:50:19 +0200 |
commit | 65abe91ce4c3c9b26afa5d1af38bd1bfe81546c4 (patch) | |
tree | 24de51e29dabd14f819f6476d4b29655b62d3397 /src/qt/bantablemodel.cpp | |
parent | 51654deff2661732c5e2a2aa8ac1f632f5880f45 (diff) |
[Qt] add sorting for bantable
Diffstat (limited to 'src/qt/bantablemodel.cpp')
-rw-r--r-- | src/qt/bantablemodel.cpp | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/src/qt/bantablemodel.cpp b/src/qt/bantablemodel.cpp index 6074cd2f07..04840b0526 100644 --- a/src/qt/bantablemodel.cpp +++ b/src/qt/bantablemodel.cpp @@ -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 |