From d87661a66fe76d8b268cbfe81f3eb6292a55d66b Mon Sep 17 00:00:00 2001 From: Tannin Date: Wed, 25 Feb 2015 18:02:39 +0100 Subject: sorting by content now produces a more useful list --- src/modlistsortproxy.cpp | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) (limited to 'src/modlistsortproxy.cpp') diff --git a/src/modlistsortproxy.cpp b/src/modlistsortproxy.cpp index 9eeb3439..d62fe00a 100644 --- a/src/modlistsortproxy.cpp +++ b/src/modlistsortproxy.cpp @@ -135,11 +135,22 @@ bool ModListSortProxy::lessThan(const QModelIndex &left, lt = leftMod->getFlags().size() < rightMod->getFlags().size(); } break; case ModList::COL_CONTENT: { - int lLen = leftMod->getContents().size(); - int rLen = rightMod->getContents().size(); - if (lLen != rLen) { - lt = lLen < rLen; + std::vector lContent = leftMod->getContents(); + std::vector rContent = rightMod->getContents(); + if (lContent.size() != rContent.size()) { + lt = lContent.size() < rContent.size(); } + + int lValue = 0; + int rValue = 0; + for (ModInfo::EContent content : lContent) { + lValue += 2 << (unsigned int)content; + } + for (ModInfo::EContent content : rContent) { + rValue += 2 << (unsigned int)content; + } + + lt = lValue < rValue; } break; case ModList::COL_NAME: { int comp = QString::compare(leftMod->name(), rightMod->name(), Qt::CaseInsensitive); -- cgit v1.3.1