summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2012-04-19 15:14:09 +0300
committerDon Sanders <don.sanders@nokia.com>2012-04-19 15:14:09 +0300
commitc09dcbd713281155f5cdfd952590488cd8b5d554 (patch)
tree7ff043562b36adf8179cea84a0267d8481cc6b57
parent95f1a59d047f6958dc4fee1d64a2ccf650202325 (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.cpp9
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)) {