summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2012-03-12 15:56:54 +0200
committerDon Sanders <don.sanders@nokia.com>2012-03-12 15:56:54 +0200
commitdf7a7372ecf4444caa9557b540479fc3dd7f52a4 (patch)
tree66febef61b854eb6b78602a8d234e559c8734286
parent2683738315c5302b2a3cc6428bd70ed8c7ec8c45 (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.cpp21
-rw-r--r--src/tools/messageserver/servicehandler.h2
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);