diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-02-24 12:01:05 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-02-24 12:01:05 +0100 |
commit | 08b857c641d3a62f00b2b7fcbfa1fd51773d170c (patch) | |
tree | 7d8e905078962219690b3549aa8670f6075dcc76 | |
parent | 99c4d53fd86440ee6c8a76c9d320a319ff5da7bc (diff) | |
download | kube-08b857c641d3a62f00b2b7fcbfa1fd51773d170c.tar.gz kube-08b857c641d3a62f00b2b7fcbfa1fd51773d170c.zip |
Only fetch every mail once.
-rw-r--r-- | framework/domain/maillistmodel.cpp | 9 | ||||
-rw-r--r-- | framework/domain/maillistmodel.h | 3 |
2 files changed, 7 insertions, 5 deletions
diff --git a/framework/domain/maillistmodel.cpp b/framework/domain/maillistmodel.cpp index e0b74a3a..58a6b384 100644 --- a/framework/domain/maillistmodel.cpp +++ b/framework/domain/maillistmodel.cpp | |||
@@ -20,9 +20,6 @@ | |||
20 | 20 | ||
21 | #include "maillistmodel.h" | 21 | #include "maillistmodel.h" |
22 | 22 | ||
23 | #include <QFile> | ||
24 | #include <QDateTime> | ||
25 | |||
26 | #include <sink/standardqueries.h> | 23 | #include <sink/standardqueries.h> |
27 | 24 | ||
28 | MailListModel::MailListModel(QObject *parent) | 25 | MailListModel::MailListModel(QObject *parent) |
@@ -74,10 +71,11 @@ static QString join(const QList<Sink::ApplicationDomain::Mail::Contact> &contact | |||
74 | return list.join(", "); | 71 | return list.join(", "); |
75 | } | 72 | } |
76 | 73 | ||
77 | void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) | 74 | void MailListModel::fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) const |
78 | { | 75 | { |
79 | if (mail && !mail->getFullPayloadAvailable()) { | 76 | if (mail && !mail->getFullPayloadAvailable() && !mFetchedMails.contains(mail->identifier())) { |
80 | qDebug() << "Fetching mail: " << mail->identifier() << mail->getSubject(); | 77 | qDebug() << "Fetching mail: " << mail->identifier() << mail->getSubject(); |
78 | mFetchedMails.insert(mail->identifier()); | ||
81 | Sink::Store::synchronize(Sink::SyncScope{*mail}).exec(); | 79 | Sink::Store::synchronize(Sink::SyncScope{*mail}).exec(); |
82 | } | 80 | } |
83 | } | 81 | } |
@@ -208,6 +206,7 @@ void MailListModel::setMail(const QVariant &variant) | |||
208 | query.request<Mail::MimeMessage>(); | 206 | query.request<Mail::MimeMessage>(); |
209 | query.request<Mail::FullPayloadAvailable>(); | 207 | query.request<Mail::FullPayloadAvailable>(); |
210 | mFetchMails = true; | 208 | mFetchMails = true; |
209 | mFetchedMails.clear(); | ||
211 | qDebug() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); | 210 | qDebug() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); |
212 | //Latest mail at the bottom | 211 | //Latest mail at the bottom |
213 | sort(0, Qt::AscendingOrder); | 212 | sort(0, Qt::AscendingOrder); |
diff --git a/framework/domain/maillistmodel.h b/framework/domain/maillistmodel.h index 8c2609e0..af079a1b 100644 --- a/framework/domain/maillistmodel.h +++ b/framework/domain/maillistmodel.h | |||
@@ -70,7 +70,10 @@ public: | |||
70 | QVariant mail() const; | 70 | QVariant mail() const; |
71 | 71 | ||
72 | private: | 72 | private: |
73 | void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) const; | ||
74 | |||
73 | QSharedPointer<QAbstractItemModel> m_model; | 75 | QSharedPointer<QAbstractItemModel> m_model; |
74 | bool mFetchMails = false; | 76 | bool mFetchMails = false; |
77 | mutable QSet<QByteArray> mFetchedMails; | ||
75 | QByteArray mCurrentQueryItem; | 78 | QByteArray mCurrentQueryItem; |
76 | }; | 79 | }; |