From a161ad3cd53e4fa504fdd67614a13b0f9e84721e Mon Sep 17 00:00:00 2001 From: cc9cii Date: Tue, 7 Oct 2014 20:11:44 +1100 Subject: [PATCH] Sort cell id column by numerical order. --- apps/opencs/model/world/idtableproxymodel.cpp | 23 ++++++++++++++++++- apps/opencs/model/world/idtableproxymodel.hpp | 6 ++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/apps/opencs/model/world/idtableproxymodel.cpp b/apps/opencs/model/world/idtableproxymodel.cpp index a5e9d354a..fdfdacbf3 100644 --- a/apps/opencs/model/world/idtableproxymodel.cpp +++ b/apps/opencs/model/world/idtableproxymodel.cpp @@ -47,4 +47,25 @@ void CSMWorld::IdTableProxyModel::setFilter (const boost::shared_ptrdata(left).toString()); + int leftX = cellPattern.cap(1).toInt(); + int leftY = cellPattern.cap(2).toInt(); + + int rightResult = cellPattern.indexIn(sourceModel()->data(right).toString()); + int rightX = cellPattern.cap(1).toInt(); + int rightY = cellPattern.cap(2).toInt(); + + if(leftResult != -1 && rightResult != -1) + return(leftX < rightX) || (leftX == rightX && leftY <= rightY); + else + return QSortFilterProxyModel::lessThan(left, right); +} diff --git a/apps/opencs/model/world/idtableproxymodel.hpp b/apps/opencs/model/world/idtableproxymodel.hpp index b63dccd5e..23e3193fb 100644 --- a/apps/opencs/model/world/idtableproxymodel.hpp +++ b/apps/opencs/model/world/idtableproxymodel.hpp @@ -33,7 +33,11 @@ namespace CSMWorld virtual QModelIndex getModelIndex (const std::string& id, int column) const; void setFilter (const boost::shared_ptr& filter); + + protected: + + bool lessThan(const QModelIndex &left, const QModelIndex &right) const; }; } -#endif \ No newline at end of file +#endif