summaryrefslogtreecommitdiffstats
path: root/examples/imapresource/imapserverproxy.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'examples/imapresource/imapserverproxy.cpp')
-rw-r--r--examples/imapresource/imapserverproxy.cpp34
1 files changed, 18 insertions, 16 deletions
diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp
index dfb134c..58d2772 100644
--- a/examples/imapresource/imapserverproxy.cpp
+++ b/examples/imapresource/imapserverproxy.cpp
@@ -142,6 +142,23 @@ KAsync::Job<void> ImapServerProxy::fetch(const KIMAP::ImapSet &set, KIMAP::Fetch
142 return runJob(fetch); 142 return runJob(fetch);
143} 143}
144 144
145KAsync::Job<void> ImapServerProxy::fetch(const KIMAP::ImapSet &set, KIMAP::FetchJob::FetchScope scope, const std::function<void(const QVector<Message> &)> &callback)
146{
147 return fetch(set, scope,
148 [callback](const QString &mailbox,
149 const QMap<qint64,qint64> &uids,
150 const QMap<qint64,qint64> &sizes,
151 const QMap<qint64,KIMAP::MessageAttribute> &attrs,
152 const QMap<qint64,KIMAP::MessageFlags> &flags,
153 const QMap<qint64,KIMAP::MessagePtr> &messages) {
154 QVector<Message> list;
155 for (const auto &id : uids.keys()) {
156 list << Message{uids.value(id), sizes.value(id), attrs.value(id), flags.value(id), messages.value(id)};
157 }
158 callback(list);
159 });
160}
161
145KAsync::Job<QList<qint64>> ImapServerProxy::fetchHeaders(const QString &mailbox) 162KAsync::Job<QList<qint64>> ImapServerProxy::fetchHeaders(const QString &mailbox)
146{ 163{
147 auto list = QSharedPointer<QList<qint64>>::create(); 164 auto list = QSharedPointer<QList<qint64>>::create();
@@ -230,22 +247,7 @@ KAsync::Future<void> ImapServerProxy::fetchMessages(const Folder &folder, std::f
230 247
231 KIMAP::ImapSet set; 248 KIMAP::ImapSet set;
232 set.add(uidsToFetch.toVector()); 249 set.add(uidsToFetch.toVector());
233 return fetch(set, scope, 250 return fetch(set, scope, callback);
234 [callback](const QString &mailbox,
235 const QMap<qint64,qint64> &uids,
236 const QMap<qint64,qint64> &sizes,
237 const QMap<qint64,KIMAP::MessageAttribute> &attrs,
238 const QMap<qint64,KIMAP::MessageFlags> &flags,
239 const QMap<qint64,KIMAP::MessagePtr> &messages) {
240 Trace() << "Received " << uids.size() << " messages from " << mailbox;
241 Trace() << uids.size() << sizes.size() << attrs.size() << flags.size() << messages.size();
242
243 QVector<Message> list;
244 for (const auto &id : uids.keys()) {
245 list << Message{uids.value(id), sizes.value(id), attrs.value(id), flags.value(id), messages.value(id)};
246 }
247 callback(list);
248 });
249 }); 251 });
250 252
251 }); 253 });