diff options
author | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-07-20 15:16:43 +0200 |
---|---|---|
committer | Christian Mollekopf <chrigi_1@fastmail.fm> | 2016-09-15 16:14:19 +0200 |
commit | 5f127fa687079c7180142e371c86bd6dacfb845e (patch) | |
tree | 11731de3a1d626232dbba66d7c98c7db1a28940f /examples | |
parent | b3bb1fb9800b2d0b4d44892f4ff853e5060d975a (diff) | |
download | sink-5f127fa687079c7180142e371c86bd6dacfb845e.tar.gz sink-5f127fa687079c7180142e371c86bd6dacfb845e.zip |
Progress reporting
Diffstat (limited to 'examples')
-rw-r--r-- | examples/imapresource/imapresource.cpp | 3 | ||||
-rw-r--r-- | examples/imapresource/imapserverproxy.cpp | 28 | ||||
-rw-r--r-- | examples/imapresource/imapserverproxy.h | 2 |
3 files changed, 26 insertions, 7 deletions
diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp index dde218a..24fd426 100644 --- a/examples/imapresource/imapresource.cpp +++ b/examples/imapresource/imapresource.cpp | |||
@@ -255,6 +255,9 @@ public: | |||
255 | uids << msg.uid; | 255 | uids << msg.uid; |
256 | } | 256 | } |
257 | synchronizeMails(folder.normalizedPath(), messages); | 257 | synchronizeMails(folder.normalizedPath(), messages); |
258 | }, | ||
259 | [](int progress, int total) { | ||
260 | SinkTrace() << "Progress: " << progress << " out of " << total; | ||
258 | }).exec(); | 261 | }).exec(); |
259 | messagesFuture.waitForFinished(); | 262 | messagesFuture.waitForFinished(); |
260 | commit(); | 263 | commit(); |
diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp index b1ba5e7..3406315 100644 --- a/examples/imapresource/imapserverproxy.cpp +++ b/examples/imapresource/imapserverproxy.cpp | |||
@@ -325,7 +325,7 @@ KAsync::Job<QList<qint64>> ImapServerProxy::fetchHeaders(const QString &mailbox) | |||
325 | auto list = QSharedPointer<QList<qint64>>::create(); | 325 | auto list = QSharedPointer<QList<qint64>>::create(); |
326 | KIMAP::FetchJob::FetchScope scope; | 326 | KIMAP::FetchJob::FetchScope scope; |
327 | scope.parts.clear(); | 327 | scope.parts.clear(); |
328 | scope.mode = KIMAP::FetchJob::FetchScope::Headers; | 328 | scope.mode = KIMAP::FetchJob::FetchScope::Flags; |
329 | 329 | ||
330 | //Fetch headers of all messages | 330 | //Fetch headers of all messages |
331 | return fetch(KIMAP::ImapSet(1, 0), scope, | 331 | return fetch(KIMAP::ImapSet(1, 0), scope, |
@@ -434,12 +434,21 @@ QString ImapServerProxy::mailboxFromFolder(const Folder &folder) const | |||
434 | return folder.pathParts.join(mPersonalNamespaceSeparator); | 434 | return folder.pathParts.join(mPersonalNamespaceSeparator); |
435 | } | 435 | } |
436 | 436 | ||
437 | KAsync::Job<void> ImapServerProxy::fetchMessages(const Folder &folder, std::function<void(const QVector<Message> &)> callback) | 437 | KAsync::Job<void> ImapServerProxy::fetchMessages(const Folder &folder, std::function<void(const QVector<Message> &)> callback, std::function<void(int, int)> progress) |
438 | { | 438 | { |
439 | auto time = QSharedPointer<QTime>::create(); | ||
440 | time->start(); | ||
439 | Q_ASSERT(!mPersonalNamespaceSeparator.isNull()); | 441 | Q_ASSERT(!mPersonalNamespaceSeparator.isNull()); |
440 | return select(mailboxFromFolder(folder)).then<void, KAsync::Job<void>>([this, callback, folder]() -> KAsync::Job<void> { | 442 | return select(mailboxFromFolder(folder)).then<void, KAsync::Job<void>>([this, callback, folder, time, progress]() -> KAsync::Job<void> { |
441 | return fetchHeaders(mailboxFromFolder(folder)).then<void, KAsync::Job<void>, QList<qint64>>([this, callback](const QList<qint64> &uidsToFetch){ | 443 | return fetchHeaders(mailboxFromFolder(folder)).then<void, KAsync::Job<void>, QList<qint64>>([this, callback, time, progress](const QList<qint64> &uidsToFetch){ |
442 | SinkTrace() << "Uids to fetch: " << uidsToFetch; | 444 | SinkTrace() << "Fetched headers"; |
445 | SinkTrace() << " Total: " << uidsToFetch.size(); | ||
446 | SinkTrace() << " Uids to fetch: " << uidsToFetch; | ||
447 | SinkTrace() << " Took: " << Sink::Log::TraceTime(time->elapsed()); | ||
448 | auto totalCount = uidsToFetch.size(); | ||
449 | if (progress) { | ||
450 | progress(0, totalCount); | ||
451 | } | ||
443 | if (uidsToFetch.isEmpty()) { | 452 | if (uidsToFetch.isEmpty()) { |
444 | SinkTrace() << "Nothing to fetch"; | 453 | SinkTrace() << "Nothing to fetch"; |
445 | callback(QVector<Message>()); | 454 | callback(QVector<Message>()); |
@@ -451,7 +460,14 @@ KAsync::Job<void> ImapServerProxy::fetchMessages(const Folder &folder, std::func | |||
451 | 460 | ||
452 | KIMAP::ImapSet set; | 461 | KIMAP::ImapSet set; |
453 | set.add(uidsToFetch.toVector()); | 462 | set.add(uidsToFetch.toVector()); |
454 | return fetch(set, scope, callback); | 463 | auto count = QSharedPointer<int>::create(); |
464 | return fetch(set, scope, [=](const QVector<Message> &messages) { | ||
465 | *count += messages.size(); | ||
466 | if (progress) { | ||
467 | progress(*count, totalCount); | ||
468 | } | ||
469 | callback(messages); | ||
470 | }); | ||
455 | }); | 471 | }); |
456 | 472 | ||
457 | }); | 473 | }); |
diff --git a/examples/imapresource/imapserverproxy.h b/examples/imapresource/imapserverproxy.h index b54b41e..f3e1794 100644 --- a/examples/imapresource/imapserverproxy.h +++ b/examples/imapresource/imapserverproxy.h | |||
@@ -126,7 +126,7 @@ public: | |||
126 | QString mailboxFromFolder(const Folder &) const; | 126 | QString mailboxFromFolder(const Folder &) const; |
127 | 127 | ||
128 | KAsync::Job<void> fetchFolders(std::function<void(const QVector<Folder> &)> callback); | 128 | KAsync::Job<void> fetchFolders(std::function<void(const QVector<Folder> &)> callback); |
129 | KAsync::Job<void> fetchMessages(const Folder &folder, std::function<void(const QVector<Message> &)> callback); | 129 | KAsync::Job<void> fetchMessages(const Folder &folder, std::function<void(const QVector<Message> &)> callback, std::function<void(int, int)> progress = std::function<void(int, int)>()); |
130 | 130 | ||
131 | private: | 131 | private: |
132 | KAsync::Job<void> ping(); | 132 | KAsync::Job<void> ping(); |