summaryrefslogtreecommitdiffstats
path: root/examples/imapresource/imapserverproxy.cpp
diff options
context:
space:
mode:
authorChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-20 16:00:10 +0200
committerChristian Mollekopf <chrigi_1@fastmail.fm>2016-06-20 16:00:10 +0200
commit5475eab39364c7608e1a34504401ff09e3b80726 (patch)
tree68006eefdafb8fab481554e3399b70d145b15265 /examples/imapresource/imapserverproxy.cpp
parent893f6c75d1da2c0154d68fc5888f9a7cc43b76a6 (diff)
downloadsink-5475eab39364c7608e1a34504401ff09e3b80726.tar.gz
sink-5475eab39364c7608e1a34504401ff09e3b80726.zip
Detect and skip noselect folders
Diffstat (limited to 'examples/imapresource/imapserverproxy.cpp')
-rw-r--r--examples/imapresource/imapserverproxy.cpp14
1 files changed, 11 insertions, 3 deletions
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 });