summaryrefslogtreecommitdiffstats
path: root/src/libraries/qmfclient/qmailmessageserver.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libraries/qmfclient/qmailmessageserver.cpp')
-rw-r--r--src/libraries/qmfclient/qmailmessageserver.cpp802
1 files changed, 802 insertions, 0 deletions
diff --git a/src/libraries/qmfclient/qmailmessageserver.cpp b/src/libraries/qmfclient/qmailmessageserver.cpp
new file mode 100644
index 00000000..da11ec23
--- /dev/null
+++ b/src/libraries/qmfclient/qmailmessageserver.cpp
@@ -0,0 +1,802 @@
+/****************************************************************************
+**
+** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt Messaging Framework.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file. Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights. These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "qmailmessageserver.h"
+#include <qcopadaptor.h>
+#include <qcopchannel.h>
+#include <qcopserver.h>
+
+static bool connectIpc( QObject *sender, const QByteArray& signal,
+ QObject *receiver, const QByteArray& member)
+{
+ return QCopAdaptor::connect(sender,signal,receiver,member);
+}
+
+class QMF_EXPORT QMailMessageServerPrivate : public QObject
+{
+ Q_OBJECT
+
+ friend class QMailMessageServer;
+
+public:
+ QMailMessageServerPrivate(QMailMessageServer* parent);
+ ~QMailMessageServerPrivate();
+
+signals:
+ void initialise();
+
+ void transmitMessages(quint64, const QMailAccountId &accountId);
+
+ void retrieveFolderList(quint64, const QMailAccountId &accountId, const QMailFolderId &folderId, bool descending);
+ void retrieveMessageList(quint64, const QMailAccountId &accountId, const QMailFolderId &folderId, uint minimum, const QMailMessageSortKey &sort);
+
+ void retrieveMessages(quint64, const QMailMessageIdList &messageIds, QMailRetrievalAction::RetrievalSpecification spec);
+ void retrieveMessagePart(quint64, const QMailMessagePart::Location &partLocation);
+
+ void retrieveMessageRange(quint64, const QMailMessageId &messageId, uint minimum);
+ void retrieveMessagePartRange(quint64, const QMailMessagePart::Location &partLocation, uint minimum);
+
+ void retrieveAll(quint64, const QMailAccountId &accountId);
+ void exportUpdates(quint64, const QMailAccountId &accountId);
+
+ void synchronize(quint64, const QMailAccountId &accountId);
+
+ void copyMessages(quint64, const QMailMessageIdList& mailList, const QMailFolderId &destination);
+ void moveMessages(quint64, const QMailMessageIdList& mailList, const QMailFolderId &destination);
+ void flagMessages(quint64, const QMailMessageIdList& mailList, quint64 setMask, quint64 unsetMask);
+
+ void createFolder(quint64, const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId);
+ void renameFolder(quint64, const QMailFolderId &folderId, const QString &name);
+ void deleteFolder(quint64, const QMailFolderId &folderId);
+
+ void cancelTransfer(quint64);
+
+ void deleteMessages(quint64, const QMailMessageIdList& id, QMailStore::MessageRemovalOption);
+
+ void searchMessages(quint64, const QMailMessageKey& filter, const QString& bodyText, QMailSearchAction::SearchSpecification spec, const QMailMessageSortKey &sort);
+
+ void cancelSearch(quint64);
+
+ void shutdown();
+
+ void listActions();
+
+ void protocolRequest(quint64, const QMailAccountId &accountId, const QString &request, const QVariant &data);
+
+ void acknowledgeNewMessages(const QMailMessageTypeList&);
+
+private:
+ QCopAdaptor* adaptor;
+};
+
+
+QMailMessageServerPrivate::QMailMessageServerPrivate(QMailMessageServer* parent)
+ : QObject(parent),
+ adaptor(new QCopAdaptor("QPE/QMailMessageServer", this))
+{
+ // Forward signals to the message server
+ connectIpc(adaptor, MESSAGE(newCountChanged(QMailMessageCountMap)),
+ parent, SIGNAL(newCountChanged(QMailMessageCountMap)));
+ connectIpc(this, SIGNAL(acknowledgeNewMessages(QMailMessageTypeList)),
+ adaptor, MESSAGE(acknowledgeNewMessages(QMailMessageTypeList)));
+
+ connectIpc(this, SIGNAL(initialise()),
+ adaptor, MESSAGE(initialise()));
+ connectIpc(this, SIGNAL(transmitMessages(quint64, QMailAccountId)),
+ adaptor, MESSAGE(transmitMessages(quint64, QMailAccountId)));
+ connectIpc(this, SIGNAL(retrieveFolderList(quint64, QMailAccountId, QMailFolderId, bool)),
+ adaptor, MESSAGE(retrieveFolderList(quint64, QMailAccountId, QMailFolderId, bool)));
+ connectIpc(this, SIGNAL(retrieveMessageList(quint64, QMailAccountId, QMailFolderId, uint, QMailMessageSortKey)),
+ adaptor, MESSAGE(retrieveMessageList(quint64, QMailAccountId, QMailFolderId, uint, QMailMessageSortKey)));
+ connectIpc(this, SIGNAL(retrieveMessages(quint64, QMailMessageIdList, QMailRetrievalAction::RetrievalSpecification)),
+ adaptor, MESSAGE(retrieveMessages(quint64, QMailMessageIdList, QMailRetrievalAction::RetrievalSpecification)));
+ connectIpc(this, SIGNAL(retrieveMessagePart(quint64, QMailMessagePart::Location)),
+ adaptor, MESSAGE(retrieveMessagePart(quint64, QMailMessagePart::Location)));
+ connectIpc(this, SIGNAL(retrieveMessageRange(quint64, QMailMessageId, uint)),
+ adaptor, MESSAGE(retrieveMessageRange(quint64, QMailMessageId, uint)));
+ connectIpc(this, SIGNAL(retrieveMessagePartRange(quint64, QMailMessagePart::Location, uint)),
+ adaptor, MESSAGE(retrieveMessagePartRange(quint64, QMailMessagePart::Location, uint)));
+ connectIpc(this, SIGNAL(retrieveAll(quint64, QMailAccountId)),
+ adaptor, MESSAGE(retrieveAll(quint64, QMailAccountId)));
+ connectIpc(this, SIGNAL(exportUpdates(quint64, QMailAccountId)),
+ adaptor, MESSAGE(exportUpdates(quint64, QMailAccountId)));
+ connectIpc(this, SIGNAL(synchronize(quint64, QMailAccountId)),
+ adaptor, MESSAGE(synchronize(quint64, QMailAccountId)));
+ connectIpc(this, SIGNAL(cancelTransfer(quint64)),
+ adaptor, MESSAGE(cancelTransfer(quint64)));
+ connectIpc(this, SIGNAL(copyMessages(quint64, QMailMessageIdList, QMailFolderId)),
+ adaptor, MESSAGE(copyMessages(quint64, QMailMessageIdList, QMailFolderId)));
+ connectIpc(this, SIGNAL(moveMessages(quint64, QMailMessageIdList, QMailFolderId)),
+ adaptor, MESSAGE(moveMessages(quint64, QMailMessageIdList, QMailFolderId)));
+ connectIpc(this, SIGNAL(deleteMessages(quint64, QMailMessageIdList, QMailStore::MessageRemovalOption)),
+ adaptor, MESSAGE(deleteMessages(quint64, QMailMessageIdList, QMailStore::MessageRemovalOption)));
+ connectIpc(this, SIGNAL(flagMessages(quint64, QMailMessageIdList, quint64, quint64)),
+ adaptor, MESSAGE(flagMessages(quint64, QMailMessageIdList, quint64, quint64)));
+ connectIpc(this, SIGNAL(createFolder(quint64, QString, QMailAccountId, QMailFolderId)),
+ adaptor, MESSAGE(createFolder(quint64, QString, QMailAccountId, QMailFolderId)));
+ connectIpc(this, SIGNAL(renameFolder(quint64, QMailFolderId, QString)),
+ adaptor, MESSAGE(renameFolder(quint64, QMailFolderId, QString)));
+ connectIpc(this, SIGNAL(deleteFolder(quint64, QMailFolderId)),
+ adaptor, MESSAGE(deleteFolder(quint64, QMailFolderId)));
+ connectIpc(this, SIGNAL(searchMessages(quint64, QMailMessageKey, QString, QMailSearchAction::SearchSpecification, QMailMessageSortKey)),
+ adaptor, MESSAGE(searchMessages(quint64, QMailMessageKey, QString, QMailSearchAction::SearchSpecification, QMailMessageSortKey)));
+ connectIpc(this, SIGNAL(cancelSearch(quint64)),
+ adaptor, MESSAGE(cancelSearch(quint64)));
+ connectIpc(this, SIGNAL(shutdown()),
+ adaptor, MESSAGE(shutdown()));
+ connectIpc(this, SIGNAL(listActions()),
+ adaptor, MESSAGE(listActions()));
+ connectIpc(this, SIGNAL(protocolRequest(quint64, QMailAccountId, QString, QVariant)),
+ adaptor, MESSAGE(protocolRequest(quint64, QMailAccountId, QString, QVariant)));
+
+ // Propagate received events as exposed signals
+ connectIpc(adaptor, MESSAGE(actionStarted(QMailActionData)),
+ parent, SIGNAL(actionStarted(QMailActionData)));
+ connectIpc(adaptor, MESSAGE(activityChanged(quint64, QMailServiceAction::Activity)),
+ parent, SIGNAL(activityChanged(quint64, QMailServiceAction::Activity)));
+ connectIpc(adaptor, MESSAGE(connectivityChanged(quint64, QMailServiceAction::Connectivity)),
+ parent, SIGNAL(connectivityChanged(quint64, QMailServiceAction::Connectivity)));
+ connectIpc(adaptor, MESSAGE(statusChanged(quint64, const QMailServiceAction::Status)),
+ parent, SIGNAL(statusChanged(quint64, const QMailServiceAction::Status)));
+ connectIpc(adaptor, MESSAGE(progressChanged(quint64, uint, uint)),
+ parent, SIGNAL(progressChanged(quint64, uint, uint)));
+ connectIpc(adaptor, MESSAGE(messagesDeleted(quint64, QMailMessageIdList)),
+ parent, SIGNAL(messagesDeleted(quint64, QMailMessageIdList)));
+ connectIpc(adaptor, MESSAGE(messagesCopied(quint64, QMailMessageIdList)),
+ parent, SIGNAL(messagesCopied(quint64, QMailMessageIdList)));
+ connectIpc(adaptor, MESSAGE(messagesMoved(quint64, QMailMessageIdList)),
+ parent, SIGNAL(messagesMoved(quint64, QMailMessageIdList)));
+ connectIpc(adaptor, MESSAGE(messagesFlagged(quint64, QMailMessageIdList)),
+ parent, SIGNAL(messagesFlagged(quint64, QMailMessageIdList)));
+ connectIpc(adaptor, MESSAGE(folderCreated(quint64, QMailFolderId)),
+ parent, SIGNAL(folderCreated(quint64, QMailFolderId)));
+ connectIpc(adaptor, MESSAGE(folderRenamed(quint64, QMailFolderId)),
+ parent, SIGNAL(folderRenamed(quint64, QMailFolderId)));
+ connectIpc(adaptor, MESSAGE(folderDeleted(quint64, QMailFolderId)),
+ parent, SIGNAL(folderDeleted(quint64, QMailFolderId)));
+ connectIpc(adaptor, MESSAGE(storageActionCompleted(quint64)),
+ parent, SIGNAL(storageActionCompleted(quint64)));
+ connectIpc(adaptor, MESSAGE(retrievalCompleted(quint64)),
+ parent, SIGNAL(retrievalCompleted(quint64)));
+ connectIpc(adaptor, MESSAGE(messagesTransmitted(quint64, QMailMessageIdList)),
+ parent, SIGNAL(messagesTransmitted(quint64, QMailMessageIdList)));
+ connectIpc(adaptor, MESSAGE(messagesFailedTransmission(quint64, QMailMessageIdList, QMailServiceAction::Status::ErrorCode)),
+ parent, SIGNAL(messagesFailedTransmission(quint64, QMailMessageIdList, QMailServiceAction::Status::ErrorCode)));
+ connectIpc(adaptor, MESSAGE(transmissionCompleted(quint64)),
+ parent, SIGNAL(transmissionCompleted(quint64)));
+ connectIpc(adaptor, MESSAGE(matchingMessageIds(quint64, QMailMessageIdList)),
+ parent, SIGNAL(matchingMessageIds(quint64, QMailMessageIdList)));
+ connectIpc(adaptor, MESSAGE(searchCompleted(quint64)),
+ parent, SIGNAL(searchCompleted(quint64)));
+ connectIpc(adaptor, MESSAGE(actionsListed(QMailActionDataList)),
+ parent, SIGNAL(actionsListed(QMailActionDataList)));
+ connectIpc(adaptor, MESSAGE(protocolResponse(quint64, QString, QVariant)),
+ parent, SIGNAL(protocolResponse(quint64, QString, QVariant)));
+ connectIpc(adaptor, MESSAGE(protocolRequestCompleted(quint64)),
+ parent, SIGNAL(protocolRequestCompleted(quint64)));
+}
+
+QMailMessageServerPrivate::~QMailMessageServerPrivate()
+{
+}
+
+
+/*!
+ \class QMailMessageServer
+
+ \preliminary
+ \brief The QMailMessageServer class provides signals and slots which implement a convenient
+ interface for communicating with the MessageServer process via IPC.
+
+ \ingroup messaginglibrary
+
+ Qt Extended messaging applications can send and receive messages of various types by
+ communicating with the external MessageServer application. The MessageServer application
+ is a separate process, communicating with clients via inter-process messages.
+ QMailMessageServer acts as a proxy object for the server process, providing an
+ interface for communicating with the MessageServer by the use of signals and slots
+ in the client process. It provides Qt signals corresponding to messages received from
+ the MessageServer application, and Qt slots which send messages to the MessageServer
+ when invoked.
+
+ For most messaging client applications, the QMailServiceAction objects offer a simpler
+ interface for requesting actions from the messageserver, and assessing their results.
+
+ \section1 New Messages
+
+ When a client initiates communication with the MessageServer, the server informs the
+ client of the number and type of 'new' messages, via the newCountChanged() signal.
+ 'New' messages are those that arrive without the client having first requested their
+ retrieval. The client may choose to invalidate the 'new' status of these messages;
+ if the acknowledgeNewMessages() slot is invoked, the count of 'new' messages is reset
+ to zero for the nominated message types. If the count of 'new' messages changes while
+ a client is active, the newCountChanged() signal is emitted with the updated information.
+
+ \section1 Sending Messages
+
+ To send messages, the client should construct instances of the QMailMessage class
+ formulated to contain the desired content. These messages should be stored to the
+ mail store, within the Outbox folder configured for the parent account.
+
+ An instance of QMailTransmitAction should be used to request transmission of the
+ outgoing messages.
+
+ \section1 Retrieving Messages
+
+ There are a variety of mechanisms for retrieving messages, at various levels of
+ granularity. In all cases, retrieved messages are added directly to the mail
+ store by the message server, from where clients can retrieve their meta data or
+ content.
+
+ An instance of QMailRetrievalAction should be used to request retrievel of
+ folders and messages.
+
+ \sa QMailServiceAction, QMailStore
+*/
+
+/*!
+ \fn void QMailMessageServer::activityChanged(quint64 action, QMailServiceAction::Activity activity);
+
+ Emitted whenever the MessageServer experiences a change in the activity status of the request
+ identified by \a action. The request's new status is described by \a activity.
+*/
+
+/*!
+ \fn void QMailMessageServer::connectivityChanged(quint64 action, QMailServiceAction::Connectivity connectivity);
+
+ Emitted whenever the MessageServer has a change in connectivity while servicing the request
+ identified by \a action. The new server connectivity status is described by \a connectivity.
+*/
+
+/*!
+ \fn void QMailMessageServer::statusChanged(quint64 action, const QMailServiceAction::Status status);
+
+ Emitted whenever the MessageServer experiences a status change that may be of interest to the client,
+ while servicing the request identified by \a action. The new server status is described by \a status.
+*/
+
+/*!
+ \fn void QMailMessageServer::progressChanged(quint64 action, uint progress, uint total);
+
+ Emitted when the progress of the request identified by \a action changes;
+ \a total indicates the extent of the operation to be performed, \a progress indicates the current degree of completion.
+*/
+
+/*!
+ \fn void QMailMessageServer::newCountChanged(const QMailMessageCountMap& counts);
+
+ Emitted when the count of 'new' messages changes; the new count is described by \a counts.
+
+ \sa acknowledgeNewMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::retrievalCompleted(quint64 action);
+
+ Emitted when the retrieval operation identified by \a action is completed.
+*/
+
+/*!
+ \fn void QMailMessageServer::messagesTransmitted(quint64 action, const QMailMessageIdList& list);
+
+ Emitted when the messages identified by \a list have been transmitted to the external server,
+ in response to the request identified by \a action.
+
+ \sa transmitMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::messagesFailedTransmission(quint64 action, const QMailMessageIdList& list, QMailServiceAction::Status::ErrorCode error);
+
+ Emitted when a failed attempt has been made to transmit messages identified by \a list to the external server,
+ in response to the request identified by \a action.
+
+ The error is described by \a error.
+
+ \sa transmitMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::transmissionCompleted(quint64 action);
+
+ Emitted when the transmit operation identified by \a action is completed.
+
+ \sa transmitMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::messagesDeleted(quint64 action, const QMailMessageIdList& list);
+
+ Emitted when the messages identified by \a list have been deleted from the mail store,
+ in response to the request identified by \a action.
+
+ \sa deleteMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::messagesCopied(quint64 action, const QMailMessageIdList& list);
+
+ Emitted when the messages identified by \a list have been copied to the destination
+ folder on the external service, in response to the request identified by \a action.
+
+ \sa copyMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::messagesMoved(quint64 action, const QMailMessageIdList& list);
+
+ Emitted when the messages identified by \a list have been moved to the destination
+ folder on the external service, in response to the request identified by \a action.
+
+ \sa moveMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::messagesFlagged(quint64 action, const QMailMessageIdList& list);
+
+ Emitted when the messages identified by \a list have been flagged with the specified
+ set of status flags, in response to the request identified by \a action.
+
+ \sa flagMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::folderCreated(quint64 action, const QMailFolderId& folderId);
+
+ Emitted when the folder identified by \a folderId has been created, in response to the request
+ identified by \a action.
+
+ \sa createFolder()
+*/
+
+/*!
+ \fn void QMailMessageServer::folderRenamed(quint64 action, const QMailFolderId& folderId);
+
+ Emitted when the folder identified by \a folderId has been renamed, in response to the request
+ identified by \a action.
+
+ \sa renameFolder()
+*/
+
+/*!
+ \fn void QMailMessageServer::folderDeleted(quint64 action, const QMailFolderId& folderId);
+
+ Emitted when the folder identified by \a folderId has been deleted, in response to the request
+ identified by \a action.
+
+ \sa deleteFolder()
+*/
+
+/*!
+ \fn void QMailMessageServer::storageActionCompleted(quint64 action);
+
+ Emitted when the storage operation identified by \a action is completed.
+
+ \sa deleteMessages(), copyMessages(), moveMessages(), flagMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::searchCompleted(quint64 action);
+
+ Emitted when the search operation identified by \a action is completed.
+
+ \sa searchMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::matchingMessageIds(quint64 action, const QMailMessageIdList& ids);
+
+ Emitted after the successful completion of the search operation identified by \a action;
+ \a ids contains the list of message identifiers located by the search.
+
+ \sa searchMessages()
+*/
+
+/*!
+ \fn void QMailMessageServer::protocolResponse(quint64 action, const QString &response, const QVariant &data);
+
+ Emitted when the protocol request identified by \a action generates the response
+ \a response, with the associated \a data.
+
+ \sa protocolRequest()
+*/
+
+/*!
+ \fn void QMailMessageServer::protocolRequestCompleted(quint64 action);
+
+ Emitted when the protocol request identified by \a action is completed.
+
+ \sa protocolRequest()
+*/
+
+/*!
+ \fn void QMailMessageServer::actionsListed(const QMailActionDataList &list);
+
+ Emitted when a list of running actions has been retrieved from the server.
+ The list of running actions is described by \a list.
+*/
+
+/*!
+ \fn void QMailMessageServer::actionStarted(QMailActionData data)
+
+ Emitted when the action described by \a data has been started on the
+ messageserver.
+*/
+
+/*!
+ Constructs a QMailMessageServer object with parent \a parent, and initiates communication with the MessageServer application.
+*/
+QMailMessageServer::QMailMessageServer(QObject* parent)
+ : QObject(parent),
+ d(new QMailMessageServerPrivate(this))
+{
+}
+
+/*!
+ Destroys the QMailMessageServer object.
+*/
+QMailMessageServer::~QMailMessageServer()
+{
+}
+
+/*!
+ Requests that the MessageServer application transmit any messages belonging to the
+ account identified by \a accountId that are currently in the Outbox folder.
+ The request has the identifier \a action.
+
+ \sa transmissionCompleted()
+*/
+void QMailMessageServer::transmitMessages(quint64 action, const QMailAccountId &accountId)
+{
+ emit d->transmitMessages(action, accountId);
+}
+
+/*!
+ Requests that the message server retrieve the list of folders available for the account \a accountId.
+ If \a folderId is valid, the folders within that folder should be retrieved. If \a descending is true,
+ the search should also recursively retrieve the folders available within the previously retrieved folders.
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::retrieveFolderList(quint64 action, const QMailAccountId &accountId, const QMailFolderId &folderId, bool descending)
+{
+ emit d->retrieveFolderList(action, accountId, folderId, descending);
+}
+
+/*!
+ Requests that the message server retrieve the list of messages available for the account \a accountId.
+ If \a folderId is valid, then only messages within that folder should be retrieved; otherwise
+ messages within all folders in the account should be retrieved. If a folder messages are being
+ retrieved from contains at least \a minimum messages then the messageserver should ensure that at
+ least \a minimum messages are available from the mail store for that folder; otherwise if the
+ folder contains less than \a minimum messages the messageserver should ensure all the messages for
+ that folder are available from the mail store.
+
+ If \a sort is not empty, the external service will
+ discover the listed messages in the ordering indicated by the sort criterion, if possible.
+
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::retrieveMessageList(quint64 action, const QMailAccountId &accountId, const QMailFolderId &folderId, uint minimum, const QMailMessageSortKey &sort)
+{
+ emit d->retrieveMessageList(action, accountId, folderId, minimum, sort);
+}
+
+/*!
+ Requests that the message server retrieve data regarding the messages identified by \a messageIds.
+
+ If \a spec is \l QMailRetrievalAction::Flags, then the message server should detect if
+ the read or important status of messages identified by \a messageIds has changed on the server
+ or if the messages have been removed on the server.
+ The \l QMailMessage::ReadElsewhere, \l QMailMessage::ImportantElsewhere and \l QMailMessage::Removed
+ status flags of messages will be updated to reflect the status of the message on the server.
+
+ If \a spec is \l QMailRetrievalAction::MetaData, then the message server should
+ retrieve the meta data of the each message listed in \a messageIds.
+
+ If \a spec is \l QMailRetrievalAction::Content, then the message server should
+ retrieve the entirety of each message listed in \a messageIds.
+
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::retrieveMessages(quint64 action, const QMailMessageIdList &messageIds, QMailRetrievalAction::RetrievalSpecification spec)
+{
+ emit d->retrieveMessages(action, messageIds, spec);
+}
+
+/*!
+ Requests that the message server retrieve the message part that is indicated by the
+ location \a partLocation.
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::retrieveMessagePart(quint64 action, const QMailMessagePart::Location &partLocation)
+{
+ emit d->retrieveMessagePart(action, partLocation);
+}
+
+/*!
+ Requests that the message server retrieve a subset of the message \a messageId, such that
+ at least \a minimum bytes are available from the mail store.
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::retrieveMessageRange(quint64 action, const QMailMessageId &messageId, uint minimum)
+{
+ emit d->retrieveMessageRange(action, messageId, minimum);
+}
+
+/*!
+ Requests that the message server retrieve a subset of the message part that is indicated by
+ the location \a partLocation. The messageserver should ensure that at least \a minimum
+ bytes are available from the mail store.
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::retrieveMessagePartRange(quint64 action, const QMailMessagePart::Location &partLocation, uint minimum)
+{
+ emit d->retrieveMessagePartRange(action, partLocation, minimum);
+}
+
+/*!
+ Requests that the message server retrieve the meta data for all messages available
+ for the account \a accountId.
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::retrieveAll(quint64 action, const QMailAccountId &accountId)
+{
+ emit d->retrieveAll(action, accountId);
+}
+
+/*!
+ Requests that the message server update the external server with changes that have
+ been effected on the local device for account \a accountId.
+ Local changes to \l QMailMessage::Read, and \l QMailMessage::Important message status
+ flags should be exported to the external server, and messages that have been removed
+ using the \l QMailStore::CreateRemovalRecord option should be removed from the
+ external server.
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::exportUpdates(quint64 action, const QMailAccountId &accountId)
+{
+ emit d->exportUpdates(action, accountId);
+}
+
+/*!
+ Requests that the message server synchronize the messages and folders in the account
+ identified by \a accountId.
+ Newly discovered messages should have their meta data retrieved,
+ local changes to \l QMailMessage::Read, and \l QMailMessage::Important message status
+ flags should be exported to the external server, and messages that have been removed
+ locally using the \l QMailStore::CreateRemovalRecord option should be removed from the
+ external server.
+ The request has the identifier \a action.
+
+ \sa retrievalCompleted()
+*/
+void QMailMessageServer::synchronize(quint64 action, const QMailAccountId &accountId)
+{
+ emit d->synchronize(action, accountId);
+}
+
+/*!
+ Requests that the MessageServer create a copy of each message listed in \a mailList
+ in the folder identified by \a destinationId.
+ The request has the identifier \a action.
+*/
+void QMailMessageServer::copyMessages(quint64 action, const QMailMessageIdList& mailList, const QMailFolderId &destinationId)
+{
+ emit d->copyMessages(action, mailList, destinationId);
+}
+
+/*!
+ Requests that the MessageServer move each message listed in \a mailList from its
+ current location to the folder identified by \a destinationId.
+ The request has the identifier \a action.
+*/
+void QMailMessageServer::moveMessages(quint64 action, const QMailMessageIdList& mailList, const QMailFolderId &destinationId)
+{
+ emit d->moveMessages(action, mailList, destinationId);
+}
+
+/*!
+ Requests that the MessageServer flag each message listed in \a mailList by setting
+ the status flags set in \a setMask, and unsetting the status flags set in \a unsetMask.
+ The request has the identifier \a action.
+
+ The protocol must ensure that the local message records are appropriately modified,
+ although the external changes may be buffered and effected at the next invocation
+ of exportUpdates().
+*/
+void QMailMessageServer::flagMessages(quint64 action, const QMailMessageIdList& mailList, quint64 setMask, quint64 unsetMask)
+{
+ emit d->flagMessages(action, mailList, setMask, unsetMask);
+}
+
+/*!
+ Requests that the MessageServer create a new folder named \a name, created in the
+ account identified by \a accountId.
+ If \a parentId is a valid folder identifier the new folder will be a child of the parent;
+ otherwise the folder will be have no parent and will be created at the highest level.
+
+ The request has the identifier \a action.
+
+ \sa deleteFolder()
+*/
+void QMailMessageServer::createFolder(quint64 action, const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId)
+{
+ emit d->createFolder(action, name, accountId, parentId);
+}
+
+/*!
+ Requests that the MessageServer rename the folder identified by \a folderId to \a name.
+ The request has the identifier \a action.
+
+ \sa createFolder()
+*/
+void QMailMessageServer::renameFolder(quint64 action, const QMailFolderId &folderId, const QString &name)
+{
+ emit d->renameFolder(action, folderId, name);
+}
+
+/*!
+ Requests that the MessageServer delete the folder identified by \a folderId.
+ Any existing folders or messages contained by the folder will also be deleted.
+ The request has the identifier \a action.
+
+ \sa createFolder(), renameFolder()
+*/
+void QMailMessageServer::deleteFolder(quint64 action, const QMailFolderId &folderId)
+{
+ emit d->deleteFolder(action, folderId);
+}
+
+/*!
+ Requests that the MessageServer cancel any pending transfer operations for the request identified by \a action.
+
+ \sa transmitMessages(), retrieveMessages()
+*/
+void QMailMessageServer::cancelTransfer(quint64 action)
+{
+ emit d->cancelTransfer(action);
+}
+
+/*!
+ Requests that the MessageServer reset the counts of 'new' messages to zero, for
+ each message type listed in \a types.
+
+ \sa newCountChanged()
+*/
+void QMailMessageServer::acknowledgeNewMessages(const QMailMessageTypeList& types)
+{
+ emit d->acknowledgeNewMessages(types);
+}
+
+/*!
+ Requests that the MessageServer delete the messages in \a mailList from the external
+ server, if necessary for the relevant message type. If \a option is
+ \l{QMailStore::CreateRemovalRecord}{CreateRemovalRecord} then a QMailMessageRemovalRecord
+ will be created in the mail store for each deleted message.
+ The request has the identifier \a action.
+
+ Deleting messages using this slot does not initiate communication with any external
+ server; instead the information needed to delete the messages is recorded. Deletion
+ from the external server will occur when messages are next retrieved from that server.
+ Invoking this slot does not remove a message from the mail store.
+
+ \sa QMailStore::removeMessage()
+*/
+void QMailMessageServer::deleteMessages(quint64 action, const QMailMessageIdList& mailList, QMailStore::MessageRemovalOption option)
+{
+ emit d->deleteMessages(action, mailList, option);
+}
+
+/*!
+ Requests that the MessageServer search for messages that meet the criteria encoded
+ in \a filter. If \a bodyText is non-empty, messages must also contain the specified
+ text in their content to be considered matching. If \a spec is
+ \l{QMailSearchAction::Remote}{Remote} then the MessageServer will extend the search
+ to consider messages held at external servers that are not present on the local device.
+ If \a sort is not empty, the external service will return matching messages in
+ the ordering indicated by the sort criterion if possible.
+
+ The request has the identifier \a action.
+
+ The identifiers of all matching messages are returned via matchingMessageIds() after
+ the search is completed.
+
+ \sa matchingMessageIds()
+*/
+void QMailMessageServer::searchMessages(quint64 action, const QMailMessageKey& filter, const QString& bodyText, QMailSearchAction::SearchSpecification spec, const QMailMessageSortKey &sort)
+{
+ emit d->searchMessages(action, filter, bodyText, spec, sort);
+}
+
+/*!
+ Requests that the MessageServer cancel any pending search operations for the request identified by \a action.
+*/
+void QMailMessageServer::cancelSearch(quint64 action)
+{
+ emit d->cancelSearch(action);
+}
+
+/*!
+ Requests that the MessageServer shutdown and terminate
+*/
+void QMailMessageServer::shutdown()
+{
+ emit d->shutdown();
+}
+
+/*!
+ Requests that the MessageServer emits a list of currently executing actions
+*/
+void QMailMessageServer::listActions()
+{
+ emit d->listActions();
+}
+
+/*!
+ Requests that the MessageServer forward the protocol-specific request \a request
+ to the QMailMessageSource configured for the account identified by \a accountId.
+ The request, identified by \a action, may have associated \a data, in a protocol-specific form.
+*/
+void QMailMessageServer::protocolRequest(quint64 action, const QMailAccountId &accountId, const QString &request, const QVariant &data)
+{
+ emit d->protocolRequest(action, accountId, request, data);
+}
+
+Q_IMPLEMENT_USER_METATYPE_TYPEDEF(QMailMessageCountMap, QMailMessageCountMap)
+
+#include "qmailmessageserver.moc"
+