summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDon Sanders <don.sanders@nokia.com>2011-06-03 00:22:17 +0300
committerDon Sanders <don.sanders@nokia.com>2011-06-03 00:22:17 +0300
commit5c3347ccbdd493f5cb61bb6501df953bec6fb1ef (patch)
treec8a90034a9473e1a8b4e199b4935f154847ac3d1
parent2303643a347d4ff75efacb92f79f73ba7db5fc4e (diff)
Add QMailStorageAction::updateMessages(const QMailMessageMetaDataList &)
Requests that the message server updates the meta data of the existing messages in the message store, to match each of the messages listed in \a messages. The messages will be updated asynchronously. All messages must use the same content scheme. \sa QMailStorageAction::messagesUpdated, QMailMessageData::contentScheme void QMailStorageAction::updateMessages(const QMailMessageMetaDataList &messages)
-rw-r--r--src/libraries/qmfclient/CHANGES.qdoc4
-rw-r--r--src/libraries/qmfclient/qmailserviceaction.cpp27
-rw-r--r--src/libraries/qmfclient/qmailserviceaction.h1
-rw-r--r--src/libraries/qmfclient/qmailserviceaction_p.h1
-rw-r--r--src/tools/messageserver/servicehandler.cpp10
5 files changed, 38 insertions, 5 deletions
diff --git a/src/libraries/qmfclient/CHANGES.qdoc b/src/libraries/qmfclient/CHANGES.qdoc
index 1faeda1d..0a7e5d27 100644
--- a/src/libraries/qmfclient/CHANGES.qdoc
+++ b/src/libraries/qmfclient/CHANGES.qdoc
@@ -344,9 +344,11 @@ Changes since the development preview release on 16/01/09:
32. Added 'QMailStore::ensureDurabiilty()'.
-32. Added 'QMailMessageServer::connectionDown()', and
+33. Added 'QMailMessageServer::connectionDown()', and
'QMailMessageServer::reconnectionTimeout()' signals.
+34. Added 'QMailStorageAction::updateMessages(const QMailMessageMetaDataList &list)'.
+
*****************************************************************************
\endcode
diff --git a/src/libraries/qmfclient/qmailserviceaction.cpp b/src/libraries/qmfclient/qmailserviceaction.cpp
index a65d81a4..7bcf84fb 100644
--- a/src/libraries/qmfclient/qmailserviceaction.cpp
+++ b/src/libraries/qmfclient/qmailserviceaction.cpp
@@ -1340,6 +1340,17 @@ void QMailStorageActionPrivate::updateMessages(const QMailMessageList &list)
emitChanges();
}
+void QMailStorageActionPrivate::updateMessages(const QMailMessageMetaDataList &list)
+{
+ _ids.clear();
+ _addedOrUpdatedIds.clear();
+
+ QMailMessageMetaDataList metadata = list;
+ _server->updateMessages(newAction(), metadata);
+
+ emitChanges();
+}
+
void QMailStorageActionPrivate::createFolder(const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId)
{
_server->createFolder(newAction(), name, accountId, parentId);
@@ -1533,6 +1544,22 @@ void QMailStorageAction::updateMessages(const QMailMessageList &messages)
}
/*!
+ Requests that the message server updates the meta data of the existing
+ messages in the message store, to match each of the messages listed in
+ \a messages.
+
+ The messages will be updated asynchronously.
+
+ All messages must use the same content scheme.
+
+ \sa QMailStorageAction::messagesUpdated, QMailMessageData::contentScheme
+*/
+void QMailStorageAction::updateMessages(const QMailMessageMetaDataList &messages)
+{
+ impl(this)->updateMessages(messages);
+}
+
+/*!
Returns the ids of the messages updated in the mail store.
*/
QMailMessageIdList QMailStorageAction::messagesUpdated() const
diff --git a/src/libraries/qmfclient/qmailserviceaction.h b/src/libraries/qmfclient/qmailserviceaction.h
index 6178507c..6231ec9b 100644
--- a/src/libraries/qmfclient/qmailserviceaction.h
+++ b/src/libraries/qmfclient/qmailserviceaction.h
@@ -241,6 +241,7 @@ public slots:
void flagMessages(const QMailMessageIdList &ids, quint64 setMask, quint64 unsetMask);
void addMessages(const QMailMessageList &list);
void updateMessages(const QMailMessageList &list);
+ void updateMessages(const QMailMessageMetaDataList &list);
void createFolder(const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId);
void renameFolder(const QMailFolderId &folderId, const QString &name);
diff --git a/src/libraries/qmfclient/qmailserviceaction_p.h b/src/libraries/qmfclient/qmailserviceaction_p.h
index 903ff6cf..6359a19f 100644
--- a/src/libraries/qmfclient/qmailserviceaction_p.h
+++ b/src/libraries/qmfclient/qmailserviceaction_p.h
@@ -259,6 +259,7 @@ public:
void flagMessages(const QMailMessageIdList &ids, quint64 setMask, quint64 unsetMask);
void addMessages(const QMailMessageList &list);
void updateMessages(const QMailMessageList &list);
+ void updateMessages(const QMailMessageMetaDataList &list);
void createFolder(const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId);
void renameFolder(const QMailFolderId &id, const QString &name);
diff --git a/src/tools/messageserver/servicehandler.cpp b/src/tools/messageserver/servicehandler.cpp
index 66226876..fe05e1d4 100644
--- a/src/tools/messageserver/servicehandler.cpp
+++ b/src/tools/messageserver/servicehandler.cpp
@@ -1905,10 +1905,12 @@ void ServiceHandler::updateMessages(quint64 action, const QMailMessageMetaDataLi
if (!list.isEmpty()) {
QMailContentManager *content = QMailContentManagerFactory::create(scheme);
QList<QString> obsoleteIds(obsoleteContentIdentifiers(list));
- content->ensureDurability(contentIdentifiers(list));
- foreach (QMailMessageMetaData *m, list) {
- m->removeCustomField("qmf-obsolete-contentid");
- }
+ if (!obsoleteIds.isEmpty()) {
+ content->ensureDurability(contentIdentifiers(list));
+ foreach (QMailMessageMetaData *m, list) {
+ m->removeCustomField("qmf-obsolete-contentid");
+ }
+ } // else only update metadata in mailstore
QMailStore *store = QMailStore::instance();
store->updateMessages(list);
failure |= (store->lastError() != QMailStore::NoError);