From 3a7ec69fb91d864b1ecaa3241a26b78c9a8b9430 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Thu, 15 Dec 2016 18:02:08 +0100 Subject: Fixed folder sorting --- framework/domain/folderlistmodel.cpp | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) (limited to 'framework/domain/folderlistmodel.cpp') diff --git a/framework/domain/folderlistmodel.cpp b/framework/domain/folderlistmodel.cpp index 22a8b7f7..24dd41e7 100644 --- a/framework/domain/folderlistmodel.cpp +++ b/framework/domain/folderlistmodel.cpp @@ -20,11 +20,14 @@ #include "folderlistmodel.h" #include +#include #include using namespace Sink; using namespace Sink::ApplicationDomain; +SINK_DEBUG_AREA("folderlistmodel") + FolderListModel::FolderListModel(QObject *parent) : QSortFilterProxyModel() { setDynamicSortFilter(true); @@ -97,22 +100,29 @@ static int getPriority(const Sink::ApplicationDomain::Folder &folder) { auto specialPurpose = folder.getSpecialPurpose(); if (specialPurpose.contains(Sink::ApplicationDomain::SpecialPurpose::Mail::inbox)) { - return 10; - } - if (!specialPurpose.isEmpty()) { + return 5; + } else if (specialPurpose.contains(Sink::ApplicationDomain::SpecialPurpose::Mail::drafts)) { + return 6; + } else if (specialPurpose.contains(Sink::ApplicationDomain::SpecialPurpose::Mail::sent)) { + return 7; + } else if (specialPurpose.contains(Sink::ApplicationDomain::SpecialPurpose::Mail::trash)) { + return 8; + } else if (!specialPurpose.isEmpty()) { return 9; } - return 0; + return 10; } bool FolderListModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { const auto leftFolder = left.data(Sink::Store::DomainObjectRole).value(); const auto rightFolder = right.data(Sink::Store::DomainObjectRole).value(); - if (getPriority(*leftFolder) < getPriority(*rightFolder)) { - return true; + const auto leftPriority = getPriority(*leftFolder); + const auto rightPriority = getPriority(*rightFolder); + if (leftPriority == rightPriority) { + return leftFolder->getName() < rightFolder->getName(); } - return leftFolder->getName() < rightFolder->getName(); + return leftPriority < rightPriority; } QVariant FolderListModel::accountId() const -- cgit v1.2.3