From a6c557b0d9873014cda4e3bcfedd82b50416ea23 Mon Sep 17 00:00:00 2001 From: Christian Mollekopf Date: Tue, 9 Feb 2016 12:31:02 +0100 Subject: Sort mails by date --- framework/mail/maillistmodel.cpp | 14 +++++++++++--- framework/mail/maillistmodel.h | 8 +++++--- 2 files changed, 16 insertions(+), 6 deletions(-) (limited to 'framework/mail') diff --git a/framework/mail/maillistmodel.cpp b/framework/mail/maillistmodel.cpp index 3ff8efc4..9a55e265 100644 --- a/framework/mail/maillistmodel.cpp +++ b/framework/mail/maillistmodel.cpp @@ -30,9 +30,10 @@ MailListModel::MailListModel(QObject *parent) - : QIdentityProxyModel() + : QSortFilterProxyModel() { - + setDynamicSortFilter(true); + sort(0, Qt::DescendingOrder); } MailListModel::~MailListModel() @@ -121,7 +122,14 @@ QVariant MailListModel::data(const QModelIndex &idx, int role) const return "Failed to read mail."; } } - return QIdentityProxyModel::data(idx, role); + return QSortFilterProxyModel::data(idx, role); +} + +bool MailListModel::lessThan(const QModelIndex &left, const QModelIndex &right) const +{ + const QVariant leftData = left.sibling(left.row(), 3).data(Qt::DisplayRole); + const QVariant rightData = right.sibling(right.row(), 3).data(Qt::DisplayRole); + return leftData.toDateTime() < rightData.toDateTime(); } void MailListModel::runQuery(const Sink::Query &query) diff --git a/framework/mail/maillistmodel.h b/framework/mail/maillistmodel.h index 6593a59c..f15c3e77 100644 --- a/framework/mail/maillistmodel.h +++ b/framework/mail/maillistmodel.h @@ -22,11 +22,11 @@ #include -#include +#include #include #include -class MailListModel : public QIdentityProxyModel +class MailListModel : public QSortFilterProxyModel { Q_OBJECT Q_PROPERTY (QVariant parentFolder READ parentFolder WRITE setParentFolder) @@ -36,7 +36,9 @@ public: MailListModel(QObject *parent = Q_NULLPTR); ~MailListModel(); - QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; + QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const Q_DECL_OVERRIDE; + + bool lessThan(const QModelIndex &left, const QModelIndex &right) const Q_DECL_OVERRIDE; enum Roles { Subject = Qt::UserRole + 1, -- cgit v1.2.3