summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2011-06-23 16:14:07 +1000
committerDon Sanders <don.sanders@nokia.com>2011-06-23 16:14:07 +1000
commit20c045a78b4fc16c49f3843a7c36b30be7f438ad (patch)
tree28a6d202033e15608ef2e890be475f928dd841e8
parent55833fbeffc2dbab429c889f8ea390caf0e44af6 (diff)
Fix forward without download functionality.
Was broken by async queue in outbox. Required falling back to sync enqueue when fwod is used.
-rw-r--r--src/libraries/qmfclient/qmailserviceaction.cpp52
1 files changed, 52 insertions, 0 deletions
diff --git a/src/libraries/qmfclient/qmailserviceaction.cpp b/src/libraries/qmfclient/qmailserviceaction.cpp
index 9da592bd..a449eac1 100644
--- a/src/libraries/qmfclient/qmailserviceaction.cpp
+++ b/src/libraries/qmfclient/qmailserviceaction.cpp
@@ -1284,6 +1284,32 @@ void QMailStorageActionPrivate::addMessages(const QMailMessageList &list)
_ids.clear();
_addedOrUpdatedIds.clear();
+ // Check to see if any of the messages has unresolved parts (forward without download)
+ // If so must use sync adding
+ bool fwod(false);
+ foreach (QMailMessage message, list) {
+ if (message.status() & (QMailMessage::HasUnresolvedReferences | QMailMessage::TransmitFromExternal)) {
+ fwod = true;
+ break;
+ }
+ }
+ if (fwod) {
+ foreach (QMailMessage mail, list) {
+ if (!mail.id().isValid()) {
+ mail.setStatus(QMailMessage::LocalOnly, true);
+ QMailStore::instance()->addMessage(&mail);
+ } else {
+ QMailStore::instance()->updateMessage(&mail);
+ }
+ }
+
+ if (validAction(newAction())) {
+ setActivity(QMailServiceAction::Successful);
+ emitChanges();
+ }
+ return;
+ }
+
// Make non durable changes to the content manager
// Existing message data in mail store and content manager should not be
// changed directly by this function, instead the messageserver should do it.
@@ -1315,6 +1341,32 @@ void QMailStorageActionPrivate::updateMessages(const QMailMessageList &list)
_ids.clear();
_addedOrUpdatedIds.clear();
+ // Check to see if any of the messages has unresolved parts (forward without download)
+ // If so must use sync updating
+ bool fwod(false);
+ foreach (QMailMessage message, list) {
+ if (message.status() & (QMailMessage::HasUnresolvedReferences | QMailMessage::TransmitFromExternal)) {
+ fwod = true;
+ break;
+ }
+ }
+ if (fwod) {
+ foreach (QMailMessage mail, list) {
+ if (!mail.id().isValid()) {
+ mail.setStatus(QMailMessage::LocalOnly, true);
+ QMailStore::instance()->addMessage(&mail);
+ } else {
+ QMailStore::instance()->updateMessage(&mail);
+ }
+ }
+
+ if (validAction(newAction())) {
+ setActivity(QMailServiceAction::Successful);
+ emitChanges();
+ }
+ return;
+ }
+
// Ensure that message non metadata is written and flushed to the filesystem,
// but not synced
// Existing message data in mail store and content manager should not be