diff options
author | Don Sanders <don.sanders@nokia.com> | 2012-03-12 15:56:54 +0200 |
---|---|---|
committer | Don Sanders <don.sanders@nokia.com> | 2012-03-12 15:56:54 +0200 |
commit | df7a7372ecf4444caa9557b540479fc3dd7f52a4 (patch) | |
tree | 66febef61b854eb6b78602a8d234e559c8734286 | |
parent | 2683738315c5302b2a3cc6428bd70ed8c7ec8c45 (diff) |
Fix bug whereby discard messages service actions weren't removed from expiry queue.
Were clogging up the queue of actions to be serviced.
-rw-r--r-- | src/tools/messageserver/servicehandler.cpp | 21 | ||||
-rw-r--r-- | src/tools/messageserver/servicehandler.h | 2 |
2 files changed, 10 insertions, 13 deletions
diff --git a/src/tools/messageserver/servicehandler.cpp b/src/tools/messageserver/servicehandler.cpp index 48997d91..476cdebb 100644 --- a/src/tools/messageserver/servicehandler.cpp +++ b/src/tools/messageserver/servicehandler.cpp @@ -1944,7 +1944,7 @@ void ServiceHandler::onlineDeleteMessages(quint64 action, const QMailMessageIdLi if (option == QMailStore::NoRemovalRecord) { // Delete these records locally without involving the source - enqueueRequest(action, serialize(messageIds), sources, &ServiceHandler::dispatchDiscardMessages, &ServiceHandler::storageActionCompleted, DeleteMessagesRequestType); + discardMessages(action, messageIds); } else { QMap<QMailAccountId, QMailMessageIdList> messageLists(accountMessages(messageIds)); sources = sourceServiceSet(messageLists.keys().toSet()); @@ -1957,30 +1957,27 @@ void ServiceHandler::onlineDeleteMessages(quint64 action, const QMailMessageIdLi } } -bool ServiceHandler::dispatchDiscardMessages(quint64 action, const QByteArray &data) +void ServiceHandler::discardMessages(quint64 action, QMailMessageIdList messageIds) { - QMailMessageIdList messageIds; - - deserialize(data, messageIds); - if (messageIds.isEmpty()) - return false; - uint progress = 0; uint total = messageIds.count(); emit progressChanged(action, progress, total); // Just delete all these messages - if (!QMailStore::instance()->removeMessages(QMailMessageKey::id(messageIds), QMailStore::NoRemovalRecord)) { + if (!messageIds.isEmpty() + && !QMailStore::instance()->removeMessages(QMailMessageKey::id(messageIds), QMailStore::NoRemovalRecord)) { qWarning() << "Unable to service request to discard messages"; reportFailure(action, QMailServiceAction::Status::ErrEnqueueFailed, tr("Unable to discard messages")); - return false; + return; } emit progressChanged(action, total, total); - emit activityChanged(action, QMailServiceAction::Successful); - return true; + emit messagesDeleted(action, messageIds); + emit storageActionCompleted(action); + QMailStore::instance()->flushIpcNotifications(); + return; } bool ServiceHandler::dispatchOnlineDeleteMessages(quint64 action, const QByteArray &data) diff --git a/src/tools/messageserver/servicehandler.h b/src/tools/messageserver/servicehandler.h index 845f1920..d4472718 100644 --- a/src/tools/messageserver/servicehandler.h +++ b/src/tools/messageserver/servicehandler.h @@ -81,6 +81,7 @@ public slots: void exportUpdates(quint64, const QMailAccountId &accountId); void synchronize(quint64, const QMailAccountId &accountId); void onlineDeleteMessages(quint64 action, const QMailMessageIdList& mailList, QMailStore::MessageRemovalOption); + void discardMessages(quint64 action, QMailMessageIdList messageIds); void onlineCopyMessages(quint64 action, const QMailMessageIdList& mailList, const QMailFolderId &destination); void onlineMoveMessages(quint64 action, const QMailMessageIdList& mailList, const QMailFolderId &destination); void onlineFlagMessagesAndMoveToStandardFolder(quint64 action, const QMailMessageIdList& mailList, quint64 setMask, quint64 unsetMask); @@ -264,7 +265,6 @@ private: bool dispatchRetrieveAll(quint64, const QByteArray &data); bool dispatchExportUpdates(quint64, const QByteArray &data); bool dispatchSynchronize(quint64, const QByteArray &data); - bool dispatchDiscardMessages(quint64 action, const QByteArray &data); bool dispatchOnlineDeleteMessages(quint64 action, const QByteArray &data); bool dispatchOnlineCopyMessages(quint64 action, const QByteArray &data); bool dispatchCopyToLocal(quint64 action, const QByteArray &data); |