diff options
author | Eric Springer <eric.springer@nokia.com> | 2011-07-13 18:47:16 +1000 |
---|---|---|
committer | Eric Springer <eric.springer@nokia.com> | 2011-07-13 18:47:16 +1000 |
commit | 5031e603685efae43f811ef08e3681a4310b35d5 (patch) | |
tree | e3d395ba7a9358d1fce4105ac02a711d3446e071 | |
parent | 848d9022250da7790892b4c0fdc1a0a62ecb9bd0 (diff) |
Try to prevent retrieveMessageLists selecting unselectable folder2011W28
-rw-r--r-- | src/plugins/messageservices/imap/imapservice.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/src/plugins/messageservices/imap/imapservice.cpp b/src/plugins/messageservices/imap/imapservice.cpp index 2f387a29..529a4ea5 100644 --- a/src/plugins/messageservices/imap/imapservice.cpp +++ b/src/plugins/messageservices/imap/imapservice.cpp @@ -156,6 +156,7 @@ public slots: void queueFlagsChangedCheck(); void resetExpiryTimer(); void expireStrategy(); + void emitActionSuccessfullyCompleted(); private: bool doDelete(const QMailMessageIdList & ids); @@ -207,12 +208,19 @@ bool ImapService::Source::retrieveFolderList(const QMailAccountId &accountId, co bool ImapService::Source::retrieveMessageLists(const QMailAccountId &accountId, const QMailFolderIdList &folderIds, uint minimum, const QMailMessageSortKey &sort) { - if (folderIds.isEmpty()) { - _service->errorOccurred(QMailServiceAction::Status::ErrInvalidData, tr("No folders specified")); - return false; + QMailFolderIdList ids; + + foreach (const QMailFolderId &id, folderIds) { + if (QMailFolder(id).status() & QMailFolder::MessagesPermitted) + ids.append(id); + } + + if (ids.isEmpty()) { + QTimer::singleShot(0, this, SLOT(emitActionSuccessfullyCompleted())); + return true; } - return retrieveMessageLists(accountId, folderIds, minimum, sort, true /* accountCheck */); + return retrieveMessageLists(accountId, ids, minimum, sort, true /* accountCheck */); } bool ImapService::Source::retrieveMessageList(const QMailAccountId &accountId, const QMailFolderId &folderId, uint minimum, const QMailMessageSortKey &sort) @@ -1261,6 +1269,11 @@ void ImapService::Source::expireStrategy() _service->enable(); } +void ImapService::Source::emitActionSuccessfullyCompleted() +{ + _service->actionCompleted(true); +} + ImapService::ImapService(const QMailAccountId &accountId) : QMailMessageService(), _accountId(accountId), |