summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorValerio Valerio <valerio.valerio@jollamobile.com>2013-01-14 14:12:28 +0200
committerRobin Burchell <robin+qt@viroteck.net>2013-01-16 08:29:22 +0100
commit73a5e18c075df4239cc4ac832393e88f2bb679b1 (patch)
treeb9c03e830d399d8b4c7f95e3b8ebad6ac8a0ab7d
parentad3add755f9c153ae77214bfb010980418b730e9 (diff)
Set Inbox as standard folder for IMAP4 accounts.testtag_16012013
Set Inbox as standard folder when discovered for the first time for IMAP4 accounts. According to IMAP4 RFC(3501), a case-insensitive mailbox name "INBOX" has always to exist on the server. Signed-off-by: Valerio Valerio <valerio.valerio@jollamobile.com> Change-Id: Ifa598a57c8eff2c2c236162a76128ad231d79581 Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
-rw-r--r--src/plugins/messageservices/imap/imapclient.cpp13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/plugins/messageservices/imap/imapclient.cpp b/src/plugins/messageservices/imap/imapclient.cpp
index b4538508..6b764b41 100644
--- a/src/plugins/messageservices/imap/imapclient.cpp
+++ b/src/plugins/messageservices/imap/imapclient.cpp
@@ -942,10 +942,12 @@ void ImapClient::mailboxListed(const QString &flags, const QString &path)
//don't let inbox be deleted/renamed
folder.setStatus(QMailFolder::DeletionPermitted, false);
folder.setStatus(QMailFolder::RenamePermitted, false);
+ folder.setStatus(QMailFolder::InboxFolder, true);
folderFlags.append(" \\Inbox");
} else {
folder.setStatus(QMailFolder::DeletionPermitted, true);
folder.setStatus(QMailFolder::RenamePermitted, true);
+ folder.setStatus(QMailFolder::InboxFolder, false);
}
// Only folders beneath the base folder are relevant
@@ -958,8 +960,17 @@ void ImapClient::mailboxListed(const QString &flags, const QString &path)
if (!QMailStore::instance()->addFolder(&folder)) {
qWarning() << "Unable to add folder for account:" << folder.parentAccountId() << "path:" << folder.path();
}
+ else {
+ //set inbox as standardFolder
+ if (folder.status() & QMailFolder::InboxFolder) {
+ account.setStandardFolder(QMailFolder::InboxFolder, folder.id());
+ if (!QMailStore::instance()->updateAccount(&account)) {
+ qWarning() << "Unable to update account" << account.id();
+ }
+ }
+ }
}
-
+
setFolderFlags(&account, &folder, folderFlags, _protocol.capabilities().contains("XLIST")); // requires valid folder.id()
_strategyContext->mailboxListed(folder, folderFlags);