diff options
author | espringe <eric.springer@nokia.com> | 2010-04-23 12:50:05 +1000 |
---|---|---|
committer | espringe <eric.springer@nokia.com> | 2010-04-23 12:50:05 +1000 |
commit | 3da6f0eec3eca48d23d90806015922ae07e592a4 (patch) | |
tree | 03c4fef3777c646be7ef126141eacc89d70cb7c2 | |
parent | 5353e61bc2da8cd6a5623ad7390d1c83471e3f3d (diff) |
Make IMAP exclusively use the standard folders, instead of having its own2010W17
-rw-r--r-- | src/plugins/messageservices/imap/imapclient.cpp | 18 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapconfiguration.cpp | 41 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapconfiguration.h | 8 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapservice.cpp | 3 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapsettings.cpp | 45 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapsettings.h | 2 | ||||
-rw-r--r-- | src/plugins/messageservices/imap/imapstrategy.cpp | 16 |
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); } } } |