summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorespringe <eric.springer@nokia.com>2010-04-23 12:50:05 +1000
committerespringe <eric.springer@nokia.com>2010-04-23 12:50:05 +1000
commit3da6f0eec3eca48d23d90806015922ae07e592a4 (patch)
tree03c4fef3777c646be7ef126141eacc89d70cb7c2
parent5353e61bc2da8cd6a5623ad7390d1c83471e3f3d (diff)
Make IMAP exclusively use the standard folders, instead of having its own2010W17
-rw-r--r--src/plugins/messageservices/imap/imapclient.cpp18
-rw-r--r--src/plugins/messageservices/imap/imapconfiguration.cpp41
-rw-r--r--src/plugins/messageservices/imap/imapconfiguration.h8
-rw-r--r--src/plugins/messageservices/imap/imapservice.cpp3
-rw-r--r--src/plugins/messageservices/imap/imapsettings.cpp45
-rw-r--r--src/plugins/messageservices/imap/imapsettings.h2
-rw-r--r--src/plugins/messageservices/imap/imapstrategy.cpp16
7 files changed, 19 insertions, 114 deletions
diff --git a/src/plugins/messageservices/imap/imapclient.cpp b/src/plugins/messageservices/imap/imapclient.cpp
index 078374dc..6d30707b 100644
--- a/src/plugins/messageservices/imap/imapclient.cpp
+++ b/src/plugins/messageservices/imap/imapclient.cpp
@@ -704,24 +704,8 @@ void ImapClient::mailboxListed(const QString &flags, const QString &path)
QMailFolder folder(mailboxPath, parentId, _config.id());
folder.setDisplayName(decodeFolderName(*it));
folder.setStatus(QMailFolder::SynchronizationEnabled, true);
+ folder.setStatus(QMailFolder::Incoming, true);
- // Is this a special folder?
- ImapConfigurationEditor imapCfg(&_config);
- if (!imapCfg.trashFolder().isEmpty() && (imapCfg.trashFolder() == mailboxPath)) {
- folder.setStatus(QMailFolder::Trash | QMailFolder::Incoming, true);
- imapCfg.setTrashFolder("");
- } else if (!imapCfg.sentFolder().isEmpty() && (imapCfg.sentFolder() == mailboxPath)) {
- folder.setStatus(QMailFolder::Sent | QMailFolder::Outgoing, true);
- imapCfg.setSentFolder("");
- } else if (!imapCfg.draftsFolder().isEmpty() && (imapCfg.draftsFolder() == mailboxPath)) {
- folder.setStatus(QMailFolder::Drafts | QMailFolder::Outgoing, true);
- imapCfg.setDraftsFolder("");
- } else if (!imapCfg.junkFolder().isEmpty() && (imapCfg.junkFolder() == mailboxPath)) {
- folder.setStatus(QMailFolder::Junk | QMailFolder::Incoming, true);
- imapCfg.setDraftsFolder("");
- } else {
- folder.setStatus(QMailFolder::Incoming, true);
- }
if(QString::compare(path, "INBOX", Qt::CaseInsensitive) == 0) {
//don't let inbox be deleted/renamed
folder.setStatus(QMailFolder::DeletionPermitted, false);
diff --git a/src/plugins/messageservices/imap/imapconfiguration.cpp b/src/plugins/messageservices/imap/imapconfiguration.cpp
index 34ee2279..fb3835cc 100644
--- a/src/plugins/messageservices/imap/imapconfiguration.cpp
+++ b/src/plugins/messageservices/imap/imapconfiguration.cpp
@@ -108,26 +108,6 @@ QString ImapConfiguration::baseFolder() const
return value("baseFolder");
}
-QString ImapConfiguration::draftsFolder() const
-{
- return value("draftsFolder");
-}
-
-QString ImapConfiguration::sentFolder() const
-{
- return value("sentFolder");
-}
-
-QString ImapConfiguration::trashFolder() const
-{
- return value("trashFolder");
-}
-
-QString ImapConfiguration::junkFolder() const
-{
- return value("junkFolder");
-}
-
QStringList ImapConfiguration::pushFolders() const
{
return value("pushFolders").split(QChar('\x0A'), QString::SkipEmptyParts);
@@ -208,26 +188,6 @@ void ImapConfigurationEditor::setBaseFolder(const QString &s)
setValue("baseFolder", s);
}
-void ImapConfigurationEditor::setDraftsFolder(const QString &s)
-{
- setValue("draftsFolder", s);
-}
-
-void ImapConfigurationEditor::setSentFolder(const QString &s)
-{
- setValue("sentFolder", s);
-}
-
-void ImapConfigurationEditor::setTrashFolder(const QString &s)
-{
- setValue("trashFolder", s);
-}
-
-void ImapConfigurationEditor::setJunkFolder(const QString &s)
-{
- setValue("junkFolder", s);
-}
-
void ImapConfigurationEditor::setPushFolders(const QStringList &s)
{
setValue("pushFolders", QString("") + s.join(QChar('\x0A'))); // can't setValue to null string
@@ -242,4 +202,3 @@ void ImapConfigurationEditor::setIntervalCheckRoamingEnabled(bool b)
{
setValue("intervalCheckRoamingEnabled", QString::number(b ? 1 : 0));
}
-
diff --git a/src/plugins/messageservices/imap/imapconfiguration.h b/src/plugins/messageservices/imap/imapconfiguration.h
index 5a4a53ad..da497414 100644
--- a/src/plugins/messageservices/imap/imapconfiguration.h
+++ b/src/plugins/messageservices/imap/imapconfiguration.h
@@ -76,10 +76,6 @@ public:
bool pushEnabled() const;
QString baseFolder() const;
- QString draftsFolder() const;
- QString sentFolder() const;
- QString trashFolder() const;
- QString junkFolder() const;
QStringList pushFolders() const;
int checkInterval() const;
@@ -108,10 +104,6 @@ public:
void setPushEnabled(bool enabled);
void setBaseFolder(const QString &s);
- void setDraftsFolder(const QString &s);
- void setSentFolder(const QString &s);
- void setTrashFolder(const QString &s);
- void setJunkFolder(const QString &s);
void setPushFolders(const QStringList &s);
void setCheckInterval(int i);
diff --git a/src/plugins/messageservices/imap/imapservice.cpp b/src/plugins/messageservices/imap/imapservice.cpp
index 204b8dfb..2cc5187a 100644
--- a/src/plugins/messageservices/imap/imapservice.cpp
+++ b/src/plugins/messageservices/imap/imapservice.cpp
@@ -731,8 +731,7 @@ bool ImapService::Source::prepareMessages(const QList<QPair<QMailMessagePart::Lo
QMailAccountConfiguration accountCfg(_service->accountId());
ImapConfiguration imapCfg(accountCfg);
- QMailFolderId sentId(mailboxId(_service->accountId(), imapCfg.sentFolder()));
-
+ QMailFolderId sentId(QMailAccount(_service->accountId()).standardFolder(QMailFolder::SentFolder));
// Prepare these messages by copying to the sent folder
_service->_client.strategyContext()->externalizeMessagesStrategy.clearSelection();
_service->_client.strategyContext()->externalizeMessagesStrategy.appendMessageSet(externaliseIds, sentId);
diff --git a/src/plugins/messageservices/imap/imapsettings.cpp b/src/plugins/messageservices/imap/imapsettings.cpp
index 243d69ff..a8cb6f19 100644
--- a/src/plugins/messageservices/imap/imapsettings.cpp
+++ b/src/plugins/messageservices/imap/imapsettings.cpp
@@ -408,19 +408,19 @@ void ImapSettings::displayConfiguration(const QMailAccount &account, const QMail
clearBaseButton->setEnabled(!imapBaseDir->text().isEmpty());
QMailFolderId draftFolderId = account.standardFolder(QMailFolder::DraftsFolder);
- imapDraftsDir->setText(draftFolderId.isValid() ? QMailFolder(draftFolderId).path() : imapConfig.draftsFolder());
+ imapDraftsDir->setText(draftFolderId.isValid() ? QMailFolder(draftFolderId).path() : "");
clearDraftsButton->setEnabled(!imapDraftsDir->text().isEmpty());
QMailFolderId sentFolderId = account.standardFolder(QMailFolder::SentFolder);
- imapSentDir->setText(sentFolderId.isValid() ? QMailFolder(sentFolderId).path() : imapConfig.sentFolder());
+ imapSentDir->setText(sentFolderId.isValid() ? QMailFolder(sentFolderId).path() : "");
clearSentButton->setEnabled(!imapSentDir->text().isEmpty());
QMailFolderId trashFolderId = account.standardFolder(QMailFolder::TrashFolder);
- imapTrashDir->setText(trashFolderId.isValid() ? QMailFolder(trashFolderId).path() : imapConfig.trashFolder());
+ imapTrashDir->setText(trashFolderId.isValid() ? QMailFolder(trashFolderId).path() : "");
clearTrashButton->setEnabled(!imapTrashDir->text().isEmpty());
QMailFolderId junkFolderId = account.standardFolder(QMailFolder::JunkFolder);
- imapJunkDir->setText(junkFolderId.isValid() ? QMailFolder(junkFolderId).path() : imapConfig.junkFolder());
+ imapJunkDir->setText(junkFolderId.isValid() ? QMailFolder(junkFolderId).path() : "");
clearJunkButton->setEnabled(!imapJunkDir->text().isEmpty());
pushFolders = imapConfig.pushFolders();
@@ -466,17 +466,10 @@ bool ImapSettings::updateAccount(QMailAccount *account, QMailAccountConfiguratio
imapConfig.setIntervalCheckRoamingEnabled(!roamingCheckBox->isChecked());
imapConfig.setBaseFolder(imapBaseDir->text());
- if (!setStandardFolder(account, QMailFolder::DraftsFolder, imapDraftsDir->text()))
- imapConfig.setDraftsFolder(imapDraftsDir->text());
-
- if (!setStandardFolder(account, QMailFolder::SentFolder, imapSentDir->text()))
- imapConfig.setSentFolder(imapSentDir->text());
-
- if (!setStandardFolder(account, QMailFolder::TrashFolder, imapTrashDir->text()))
- imapConfig.setTrashFolder(imapTrashDir->text());
-
- if (!setStandardFolder(account, QMailFolder::JunkFolder, imapTrashDir->text()))
- imapConfig.setJunkFolder(imapJunkDir->text());
+ setStandardFolder(account, QMailFolder::DraftsFolder, imapDraftsDir->text());
+ setStandardFolder(account, QMailFolder::SentFolder, imapSentDir->text());
+ setStandardFolder(account, QMailFolder::TrashFolder, imapTrashDir->text());
+ setStandardFolder(account, QMailFolder::JunkFolder, imapJunkDir->text());
if (pushFolderList)
imapConfig.setPushFolders(pushFolderList->folderNames());
@@ -489,25 +482,19 @@ bool ImapSettings::updateAccount(QMailAccount *account, QMailAccountConfiguratio
return true;
}
-bool ImapSettings::setStandardFolder(QMailAccount *account, QMailFolder::StandardFolder folderType, const QString &path)
+void ImapSettings::setStandardFolder(QMailAccount *account, QMailFolder::StandardFolder folderType, const QString &path)
{
- if (path.isEmpty())
- return false;
QMailFolderIdList folders = QMailStore::instance()->queryFolders(QMailFolderKey::path(path));
- if (folders.count() == 1) {
- QMailFolder folder(folders.value(0));
- bool outgoing = (folderType == QMailFolder::DraftsFolder || folderType == QMailFolder::SentFolder) ? true : false;
- folder.setStatus(QMailFolder::Outgoing, outgoing);
- folder.setStatus(QMailFolder::Incoming, !outgoing);
- QMailStore::instance()->updateFolder(&folder);
+ QMailFolder folder((folders.count() == 1) ? folders.value(0) : QMailFolderId(0));
- account->setStandardFolder(folderType, folder.id());
+ bool outgoing = (folderType == QMailFolder::DraftsFolder || folderType == QMailFolder::SentFolder) ? true : false;
+ folder.setStatus(QMailFolder::Outgoing, outgoing);
+ folder.setStatus(QMailFolder::Incoming, !outgoing);
+ QMailStore::instance()->updateFolder(&folder);
+
+ account->setStandardFolder(folderType, folder.id());
- return true;
- }
- return false;
}
#include "imapsettings.moc"
-
diff --git a/src/plugins/messageservices/imap/imapsettings.h b/src/plugins/messageservices/imap/imapsettings.h
index 5765b422..93273752 100644
--- a/src/plugins/messageservices/imap/imapsettings.h
+++ b/src/plugins/messageservices/imap/imapsettings.h
@@ -65,7 +65,7 @@ private:
QMailAccountId accountId;
bool warningEmitted;
PushFolderList *pushFolderList;
- bool setStandardFolder(QMailAccount *account, QMailFolder::StandardFolder folderType, const QString &path);
+ void setStandardFolder(QMailAccount *account, QMailFolder::StandardFolder folderType, const QString &path);
};
#endif
diff --git a/src/plugins/messageservices/imap/imapstrategy.cpp b/src/plugins/messageservices/imap/imapstrategy.cpp
index 711e1230..ccd761f4 100644
--- a/src/plugins/messageservices/imap/imapstrategy.cpp
+++ b/src/plugins/messageservices/imap/imapstrategy.cpp
@@ -368,22 +368,6 @@ void ImapStrategy::mailboxListed(ImapStrategyContextBase *c, QMailFolder& folder
if (!QMailStore::instance()->addFolder(&folder)) {
_error = true;
qWarning() << "Unable to add folder for account:" << folder.parentAccountId() << "path:" << folder.path();
-
- } // Is this folder special? If so, update the account
- else if (folder.status() & (QMailFolder::Sent | QMailFolder::Drafts | QMailFolder::Junk)) {
- QMailAccount account(c->config().id());
- QMailAccountConfiguration conf(c->config().id());
-
- if (folder.status() & QMailFolder::Sent)
- account.setStandardFolder(QMailFolder::SentFolder, folder.id());
- if (folder.status() & QMailFolder::Drafts)
- account.setStandardFolder(QMailFolder::DraftsFolder, folder.id());
- if (folder.status() & QMailFolder::Trash)
- account.setStandardFolder(QMailFolder::TrashFolder, folder.id());
- if (folder.status() & QMailFolder::Junk)
- account.setStandardFolder(QMailFolder::JunkFolder, folder.id());
-
- QMailStore::instance()->updateAccount(&account, &conf);
}
}
}