diff options
| author | Philip Kaufmann <[email protected]> | 2015-06-26 14:58:15 +0200 |
|---|---|---|
| committer | Jonas Schnelli <[email protected]> | 2015-09-16 16:50:19 +0200 |
| commit | 65abe91ce4c3c9b26afa5d1af38bd1bfe81546c4 (patch) | |
| tree | 24de51e29dabd14f819f6476d4b29655b62d3397 /src/qt/bantablemodel.cpp | |
| parent | [Qt] bantable polish (diff) | |
| download | discoin-65abe91ce4c3c9b26afa5d1af38bd1bfe81546c4.tar.xz discoin-65abe91ce4c3c9b26afa5d1af38bd1bfe81546c4.zip | |
[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 6074cd2f0..04840b052 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 |