summaryrefslogtreecommitdiffstats
path: root/examples/imapresource/imapserverproxy.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-08-30 00:35:03 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-09-15 16:14:19 +0200
commit4cd598035dcc297ad3a3af16fb5eda218c018a16 (patch)
tree1f2101c284d5aa0fdcba525f64ac18c2652df10f /examples/imapresource/imapserverproxy.cpp
parent8a0a4de6c51d5ef23ae86655a63536bd8386c575 (diff)
downloadsink-4cd598035dcc297ad3a3af16fb5eda218c018a16.tar.gz
sink-4cd598035dcc297ad3a3af16fb5eda218c018a16.zip
Flag updates
Diffstat (limited to 'examples/imapresource/imapserverproxy.cpp')
-rw-r--r--examples/imapresource/imapserverproxy.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp
index 25cbc57..4ce413a 100644
--- a/examples/imapresource/imapserverproxy.cpp
+++ b/examples/imapresource/imapserverproxy.cpp
@@ -416,6 +416,27 @@ QString ImapServerProxy::mailboxFromFolder(const Folder &folder) const
416 return folder.pathParts.join(mPersonalNamespaceSeparator); 416 return folder.pathParts.join(mPersonalNamespaceSeparator);
417} 417}
418 418
419KAsync::Job<void> ImapServerProxy::fetchFlags(const Folder &folder, qint64 changedsince, std::function<void(const QVector<Message> &)> callback)
420{
421 SinkTrace() << "Fetching flags " << folder.normalizedPath();
422 return select(mailboxFromFolder(folder)).then<void, SelectResult>([=](const SelectResult &selectResult) -> KAsync::Job<void> {
423 SinkTrace() << "Modeseq " << folder.normalizedPath() << selectResult.highestModSequence << changedsince;
424
425 if (selectResult.highestModSequence == static_cast<quint64>(changedsince)) {
426 SinkTrace()<< folder.normalizedPath() << "Changedsince didn't change, nothing to do.";
427 return KAsync::null<void>();
428 }
429
430 SinkTrace() << "Fetching flags " << folder.normalizedPath() << selectResult.highestModSequence << changedsince;
431
432 KIMAP2::FetchJob::FetchScope scope;
433 scope.mode = KIMAP2::FetchJob::FetchScope::Flags;
434 scope.changedSince = changedsince;
435
436 return fetch(KIMAP2::ImapSet(1, 0), scope, callback);
437 });
438}
439
419KAsync::Job<void> ImapServerProxy::fetchMessages(const Folder &folder, qint64 uidNext, std::function<void(const QVector<Message> &)> callback, std::function<void(int, int)> progress) 440KAsync::Job<void> ImapServerProxy::fetchMessages(const Folder &folder, qint64 uidNext, std::function<void(const QVector<Message> &)> callback, std::function<void(int, int)> progress)
420{ 441{
421 auto time = QSharedPointer<QTime>::create(); 442 auto time = QSharedPointer<QTime>::create();
@@ -423,14 +444,14 @@ KAsync::Job<void> ImapServerProxy::fetchMessages(const Folder &folder, qint64 ui
423 Q_ASSERT(!mPersonalNamespaceSeparator.isNull()); 444 Q_ASSERT(!mPersonalNamespaceSeparator.isNull());
424 return select(mailboxFromFolder(folder)).then<void, SelectResult>([this, callback, folder, time, progress, uidNext](const SelectResult &selectResult) -> KAsync::Job<void> { 445 return select(mailboxFromFolder(folder)).then<void, SelectResult>([this, callback, folder, time, progress, uidNext](const SelectResult &selectResult) -> KAsync::Job<void> {
425 446
426 SinkLog() << "UIDNEXT " << selectResult.uidNext << uidNext; 447 SinkTrace() << "UIDNEXT " << folder.normalizedPath() << selectResult.uidNext << uidNext;
427 if (selectResult.uidNext == (uidNext + 1)) { 448 if (selectResult.uidNext == (uidNext + 1)) {
428 SinkTrace() << "Uidnext didn't change, nothing to do."; 449 SinkTrace()<< folder.normalizedPath() << "Uidnext didn't change, nothing to do.";
429 return KAsync::null<void>(); 450 return KAsync::null<void>();
430 } 451 }
431 452
432 return fetchHeaders(mailboxFromFolder(folder), (uidNext + 1)).then<void, QList<qint64>>([this, callback, time, progress](const QList<qint64> &uidsToFetch){ 453 return fetchHeaders(mailboxFromFolder(folder), (uidNext + 1)).then<void, QList<qint64>>([this, callback, time, progress, folder](const QList<qint64> &uidsToFetch){
433 SinkTrace() << "Fetched headers"; 454 SinkTrace() << "Fetched headers" << folder.normalizedPath();
434 SinkTrace() << " Total: " << uidsToFetch.size(); 455 SinkTrace() << " Total: " << uidsToFetch.size();
435 SinkTrace() << " Uids to fetch: " << uidsToFetch; 456 SinkTrace() << " Uids to fetch: " << uidsToFetch;
436 SinkTrace() << " Took: " << Sink::Log::TraceTime(time->elapsed()); 457 SinkTrace() << " Took: " << Sink::Log::TraceTime(time->elapsed());