diff options
author | Don Sanders <don.sanders@nokia.com> | 2012-04-19 15:14:09 +0300 |
---|---|---|
committer | Don Sanders <don.sanders@nokia.com> | 2012-04-19 15:14:09 +0300 |
commit | c09dcbd713281155f5cdfd952590488cd8b5d554 (patch) | |
tree | 7ff043562b36adf8179cea84a0267d8481cc6b57 | |
parent | 95f1a59d047f6958dc4fee1d64a2ccf650202325 (diff) |
Fix a bug where standard folder accounts settings got lost...
...when syncing an IMAP account that doesn't support XLIST.
Won't affect clients that autodetect standard folders based on
names after doing a sync.
-rw-r--r-- | src/plugins/messageservices/imap/imapclient.cpp | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/plugins/messageservices/imap/imapclient.cpp b/src/plugins/messageservices/imap/imapclient.cpp index 52226570..5b18be96 100644 --- a/src/plugins/messageservices/imap/imapclient.cpp +++ b/src/plugins/messageservices/imap/imapclient.cpp @@ -233,7 +233,7 @@ namespace { quint64 _messageFlag; }; - static void setFolderFlags(QMailAccount *account, QMailFolder *folder, const QString &flags) + static void setFolderFlags(QMailAccount *account, QMailFolder *folder, const QString &flags, bool setStandardFlags) { // Set permitted flags bool childCreationPermitted(!flags.contains("\\NoInferiors", Qt::CaseInsensitive)); @@ -244,6 +244,9 @@ namespace { qWarning() << "setFolderFlags must be called on folder in store " << folder->id(); return; } + + if (!setStandardFlags) + return; // Set standard folder flags QList<FlagInfo> flagInfoList; @@ -920,7 +923,7 @@ void ImapClient::mailboxListed(const QString &flags, const QString &path) if (mailboxPath == path) { QMailFolder folder(boxId); QMailFolder folderOriginal(folder); - setFolderFlags(&account, &folder, flags); + setFolderFlags(&account, &folder, flags, _protocol.capabilities().contains("XLIST")); if (folder.status() != folderOriginal.status()) { if (!QMailStore::instance()->updateFolder(&folder)) { @@ -967,7 +970,7 @@ void ImapClient::mailboxListed(const QString &flags, const QString &path) } } - setFolderFlags(&account, &folder, folderFlags); // requires valid folder.id() + setFolderFlags(&account, &folder, folderFlags, _protocol.capabilities().contains("XLIST")); // requires valid folder.id() _strategyContext->mailboxListed(folder, folderFlags); if (!QMailStore::instance()->updateFolder(&folder)) { |