summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--examples/imapresource/imapresource.cpp3
-rw-r--r--examples/imapresource/imapserverproxy.cpp14
-rw-r--r--examples/imapresource/imapserverproxy.h9
3 files changed, 23 insertions, 3 deletions
diff --git a/examples/imapresource/imapresource.cpp b/examples/imapresource/imapresource.cpp
index 30ccf95..e01461d 100644
--- a/examples/imapresource/imapresource.cpp
+++ b/examples/imapresource/imapresource.cpp
@@ -322,6 +322,9 @@ public:
322 } 322 }
323 323
324 for (const auto &folder : folderList) { 324 for (const auto &folder : folderList) {
325 if (folder.noselect) {
326 continue;
327 }
325 QSet<qint64> uids; 328 QSet<qint64> uids;
326 auto messagesFuture = imap.fetchMessages(folder, [this, folder, &uids](const QVector<Message> &messages) { 329 auto messagesFuture = imap.fetchMessages(folder, [this, folder, &uids](const QVector<Message> &messages) {
327 Trace() << "Synchronizing mails" << folder.normalizedPath(); 330 Trace() << "Synchronizing mails" << folder.normalizedPath();
diff --git a/examples/imapresource/imapserverproxy.cpp b/examples/imapresource/imapserverproxy.cpp
index 49711a9..a82e3ac 100644
--- a/examples/imapresource/imapserverproxy.cpp
+++ b/examples/imapresource/imapserverproxy.cpp
@@ -44,6 +44,11 @@ const char* Imap::Flags::Deleted = "\\Deleted";
44const char* Imap::Flags::Answered = "\\Answered"; 44const char* Imap::Flags::Answered = "\\Answered";
45const char* Imap::Flags::Flagged = "\\Flagged"; 45const char* Imap::Flags::Flagged = "\\Flagged";
46 46
47const char* Imap::FolderFlags::Noselect = "\\Noselect";
48const char* Imap::FolderFlags::Noinferiors = "\\Noinferiors";
49const char* Imap::FolderFlags::Marked = "\\Marked";
50const char* Imap::FolderFlags::Unmarked = "\\Unmarked";
51
47template <typename T> 52template <typename T>
48static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f) 53static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f)
49{ 54{
@@ -359,9 +364,12 @@ KAsync::Job<void> ImapServerProxy::fetchFolders(std::function<void(const QVector
359 Trace() << "Fetching folders"; 364 Trace() << "Fetching folders";
360 return list(KIMAP::ListJob::IncludeUnsubscribed, [callback](const QList<KIMAP::MailBoxDescriptor> &mailboxes, const QList<QList<QByteArray> > &flags){ 365 return list(KIMAP::ListJob::IncludeUnsubscribed, [callback](const QList<KIMAP::MailBoxDescriptor> &mailboxes, const QList<QList<QByteArray> > &flags){
361 QVector<Folder> list; 366 QVector<Folder> list;
362 for (const auto &mailbox : mailboxes) { 367 for (int i = 0; i < mailboxes.size(); i++) {
363 Trace() << "Found mailbox: " << mailbox.name; 368 const auto mailbox = mailboxes[i];
364 list << Folder{mailbox.name.split(mailbox.separator), mailbox.name, mailbox.separator}; 369 const auto mailboxFlags = flags[i];
370 bool noselect = mailboxFlags.contains(QByteArray(FolderFlags::Noselect).toLower()) || mailboxFlags.contains(QByteArray(FolderFlags::Noselect));
371 Log() << "Found mailbox: " << mailbox.name << mailboxFlags << FolderFlags::Noselect << noselect;
372 list << Folder{mailbox.name.split(mailbox.separator), mailbox.name, mailbox.separator, noselect};
365 } 373 }
366 callback(list); 374 callback(list);
367 }); 375 });
diff --git a/examples/imapresource/imapserverproxy.h b/examples/imapresource/imapserverproxy.h
index 95ed704..21228eb 100644
--- a/examples/imapresource/imapserverproxy.h
+++ b/examples/imapresource/imapserverproxy.h
@@ -40,6 +40,14 @@ namespace Flags
40 extern const char* Flagged; 40 extern const char* Flagged;
41} 41}
42 42
43namespace FolderFlags
44{
45 extern const char* Noinferiors;
46 extern const char* Noselect;
47 extern const char* Marked;
48 extern const char* Unmarked;
49}
50
43struct Message { 51struct Message {
44 qint64 uid; 52 qint64 uid;
45 qint64 size; 53 qint64 size;
@@ -64,6 +72,7 @@ struct Folder {
64 QList<QString> pathParts; 72 QList<QString> pathParts;
65 QString path; 73 QString path;
66 QChar separator; 74 QChar separator;
75 bool noselect;
67}; 76};
68 77
69class ImapServerProxy { 78class ImapServerProxy {