diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/imapresource/imapresource.cpp | 3 | ||||
-rw-r--r-- | examples/imapresource/imapserverproxy.cpp | 14 | ||||
-rw-r--r-- | examples/imapresource/imapserverproxy.h | 9 |
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"; | |||
44 | const char* Imap::Flags::Answered = "\\Answered"; | 44 | const char* Imap::Flags::Answered = "\\Answered"; |
45 | const char* Imap::Flags::Flagged = "\\Flagged"; | 45 | const char* Imap::Flags::Flagged = "\\Flagged"; |
46 | 46 | ||
47 | const char* Imap::FolderFlags::Noselect = "\\Noselect"; | ||
48 | const char* Imap::FolderFlags::Noinferiors = "\\Noinferiors"; | ||
49 | const char* Imap::FolderFlags::Marked = "\\Marked"; | ||
50 | const char* Imap::FolderFlags::Unmarked = "\\Unmarked"; | ||
51 | |||
47 | template <typename T> | 52 | template <typename T> |
48 | static KAsync::Job<T> runJob(KJob *job, const std::function<T(KJob*)> &f) | 53 | static 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 | ||
43 | namespace FolderFlags | ||
44 | { | ||
45 | extern const char* Noinferiors; | ||
46 | extern const char* Noselect; | ||
47 | extern const char* Marked; | ||
48 | extern const char* Unmarked; | ||
49 | } | ||
50 | |||
43 | struct Message { | 51 | struct 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 | ||
69 | class ImapServerProxy { | 78 | class ImapServerProxy { |