diff options
author | Don Sanders <don.sanders@nokia.com> | 2011-06-23 16:14:07 +1000 |
---|---|---|
committer | Don Sanders <don.sanders@nokia.com> | 2011-06-23 16:14:07 +1000 |
commit | 20c045a78b4fc16c49f3843a7c36b30be7f438ad (patch) | |
tree | 28a6d202033e15608ef2e890be475f928dd841e8 | |
parent | 55833fbeffc2dbab429c889f8ea390caf0e44af6 (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.cpp | 52 |
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 |