diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-02-11 18:29:29 +0100 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2017-02-11 18:29:29 +0100 |
commit | 15bd498b82d20124877fb2ec80aef21baa40c1a3 (patch) | |
tree | 4f3a3d3ec521467a11548cf306f03957e635a6c2 | |
parent | 9f548500214925cd0075fd2434afd116618d7196 (diff) | |
download | kube-15bd498b82d20124877fb2ec80aef21baa40c1a3.tar.gz kube-15bd498b82d20124877fb2ec80aef21baa40c1a3.zip |
Avoid needless requerying
-rw-r--r-- | framework/domain/maillistmodel.cpp | 17 | ||||
-rw-r--r-- | framework/domain/maillistmodel.h | 1 |
2 files changed, 15 insertions, 3 deletions
diff --git a/framework/domain/maillistmodel.cpp b/framework/domain/maillistmodel.cpp index 6fe80092..e0b74a3a 100644 --- a/framework/domain/maillistmodel.cpp +++ b/framework/domain/maillistmodel.cpp | |||
@@ -77,7 +77,7 @@ static QString join(const QList<Sink::ApplicationDomain::Mail::Contact> &contact | |||
77 | void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) | 77 | void fetchMail(Sink::ApplicationDomain::Mail::Ptr mail) |
78 | { | 78 | { |
79 | if (mail && !mail->getFullPayloadAvailable()) { | 79 | if (mail && !mail->getFullPayloadAvailable()) { |
80 | qWarning() << "Fetching mail: " << mail->identifier() << mail->getSubject(); | 80 | qDebug() << "Fetching mail: " << mail->identifier() << mail->getSubject(); |
81 | Sink::Store::synchronize(Sink::SyncScope{*mail}).exec(); | 81 | Sink::Store::synchronize(Sink::SyncScope{*mail}).exec(); |
82 | } | 82 | } |
83 | } | 83 | } |
@@ -145,9 +145,14 @@ void MailListModel::setParentFolder(const QVariant &parentFolder) | |||
145 | auto folder = parentFolder.value<Folder::Ptr>(); | 145 | auto folder = parentFolder.value<Folder::Ptr>(); |
146 | if (!folder) { | 146 | if (!folder) { |
147 | qWarning() << "No folder: " << parentFolder; | 147 | qWarning() << "No folder: " << parentFolder; |
148 | mCurrentQueryItem.clear(); | ||
148 | setSourceModel(nullptr); | 149 | setSourceModel(nullptr); |
149 | return; | 150 | return; |
150 | } | 151 | } |
152 | if (mCurrentQueryItem == folder->identifier()) { | ||
153 | return; | ||
154 | } | ||
155 | mCurrentQueryItem = folder->identifier(); | ||
151 | Sink::Query query = Sink::StandardQueries::threadLeaders(*folder); | 156 | Sink::Query query = Sink::StandardQueries::threadLeaders(*folder); |
152 | query.setFlags(Sink::Query::LiveQuery); | 157 | query.setFlags(Sink::Query::LiveQuery); |
153 | query.limit(100); | 158 | query.limit(100); |
@@ -163,7 +168,7 @@ void MailListModel::setParentFolder(const QVariant &parentFolder) | |||
163 | query.request<Mail::Trash>(); | 168 | query.request<Mail::Trash>(); |
164 | query.request<Mail::Folder>(); | 169 | query.request<Mail::Folder>(); |
165 | mFetchMails = false; | 170 | mFetchMails = false; |
166 | qWarning() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier(); | 171 | qDebug() << "Running folder query: " << folder->resourceInstanceIdentifier() << folder->identifier(); |
167 | //Latest mail on top | 172 | //Latest mail on top |
168 | sort(0, Qt::DescendingOrder); | 173 | sort(0, Qt::DescendingOrder); |
169 | runQuery(query); | 174 | runQuery(query); |
@@ -180,10 +185,16 @@ void MailListModel::setMail(const QVariant &variant) | |||
180 | auto mail = variant.value<Sink::ApplicationDomain::Mail::Ptr>(); | 185 | auto mail = variant.value<Sink::ApplicationDomain::Mail::Ptr>(); |
181 | if (!mail) { | 186 | if (!mail) { |
182 | qWarning() << "No mail: " << mail; | 187 | qWarning() << "No mail: " << mail; |
188 | mCurrentQueryItem.clear(); | ||
183 | setSourceModel(nullptr); | 189 | setSourceModel(nullptr); |
184 | return; | 190 | return; |
185 | } | 191 | } |
192 | if (mCurrentQueryItem == mail->identifier()) { | ||
193 | return; | ||
194 | } | ||
195 | mCurrentQueryItem = mail->identifier(); | ||
186 | Sink::Query query = Sink::StandardQueries::completeThread(*mail); | 196 | Sink::Query query = Sink::StandardQueries::completeThread(*mail); |
197 | query.setFlags(Sink::Query::LiveQuery); | ||
187 | query.request<Mail::Subject>(); | 198 | query.request<Mail::Subject>(); |
188 | query.request<Mail::Sender>(); | 199 | query.request<Mail::Sender>(); |
189 | query.request<Mail::To>(); | 200 | query.request<Mail::To>(); |
@@ -197,7 +208,7 @@ void MailListModel::setMail(const QVariant &variant) | |||
197 | query.request<Mail::MimeMessage>(); | 208 | query.request<Mail::MimeMessage>(); |
198 | query.request<Mail::FullPayloadAvailable>(); | 209 | query.request<Mail::FullPayloadAvailable>(); |
199 | mFetchMails = true; | 210 | mFetchMails = true; |
200 | qWarning() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); | 211 | qDebug() << "Running mail query: " << mail->resourceInstanceIdentifier() << mail->identifier(); |
201 | //Latest mail at the bottom | 212 | //Latest mail at the bottom |
202 | sort(0, Qt::AscendingOrder); | 213 | sort(0, Qt::AscendingOrder); |
203 | runQuery(query); | 214 | runQuery(query); |
diff --git a/framework/domain/maillistmodel.h b/framework/domain/maillistmodel.h index dbb24a4d..8c2609e0 100644 --- a/framework/domain/maillistmodel.h +++ b/framework/domain/maillistmodel.h | |||
@@ -72,4 +72,5 @@ public: | |||
72 | private: | 72 | private: |
73 | QSharedPointer<QAbstractItemModel> m_model; | 73 | QSharedPointer<QAbstractItemModel> m_model; |
74 | bool mFetchMails = false; | 74 | bool mFetchMails = false; |
75 | QByteArray mCurrentQueryItem; | ||
75 | }; | 76 | }; |