| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
| |
Replace the custom logging mechanism with QLoggingCategory.
Also declare the warnings with the proper category.
Change-Id: If87d53d27ea0c65abd434af9f99fe49ce634d6dd
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
| |
Change-Id: I57c6ed78099b3359a16ce807da95325e755f0197
Reviewed-by: Pekka Vuorela <[email protected]>
Reviewed-by: Damien Caliste <[email protected]>
Reviewed-by: <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The setup here was quite broken, nobody really properly owned the
created server plugin instances and the static instance deletion
got rid of them at process shutdown in random order with other qmf
stuff. Resulting in bad memory accessses and whatnot.
Thus separating here the plugin api and the services the plugins
can create. Needs a bit adjustment for the out-of-source plugins using
this.
Change-Id: I226d63ef985b215a09f6125a013bafdc80d69562
Reviewed-by: Pekka Vuorela <[email protected]>
Reviewed-by: Damien Caliste <[email protected]>
Reviewed-by: <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Using DBus with a well known name already ensures that only a single instance
can run. Thus refactor the constructor into init method which can fail in case
of DBus errors and exit gracefully without dumping core.
Also exit gracefully in case of database incompatibility
Change-Id: I290cd438d47ea56cef4865a565c305cc2f884906
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
There are two IPC mechanisms in QMF:
- one between the messageserver and clients
to perform actions like fetch emails,
search, etc.
- one between every mailstore instances
to notify other instances of changes
in the mail database.
QCop being discontinued, this patch switchs
to use DBus as an IPC transport layer.
The first mechanism is implemented by registering
an object on the session bus (/messageserver)
providing a service (org.qt.messageserver).
The second mechanism is implemented by
registering each client as an object to the
session bus (/mailstore/client) for the
interface org.qt.mailstore. Other clients
can then listen to updated() signal on this
interface.
DBus IPC requires to implement operator<<()
and operator>>() with QDBusArgument for the
objects that need to be transported. In all
cases, each objects are serialised up to
unitary elemental elements like int, byte
arrays, etc. Except for the QMailKeyArgument
that uses first a serialisation into a
byte array before being sent. This is due to
the recursive declaration of QMailKeyArgument
with the subKeys members, not working well
with QDBusArgument serialisation.
Change-Id: I8f10b8b00f73d4b75dad778b591159a765e9fb89
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The possibility to transfer from client to the mail
server new or modified emails by file has been
deprecated by the usage of QMailMessageMetaDataList.
The client side implementation is already using only
the new method. So remove the server side implementation
and IPC interface.
Change-Id: I50df8ab04692748e3a1b66341f3b4cd05cc58501
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The newCountChanged signal is not used anymore
in the message server. Remove the client code
exposing it.
Remove also client method acknowledgeNewMessages()
since it's linked to newCountChanged signal to
reset the counters.
Remove the internal QMailMessageServerPrivate::initialize()
since it's not called from anywhere and the server
has no slot for this signal.
Change-Id: Id5a67c22eae2c7190c3e02ed0681eab7037f1fcc
Reviewed-by: Pekka Vuorela <[email protected]>
|
|
|
|
|
|
| |
Change-Id: Iccea2c86266b4c20777d939b291084cb709bf592
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: David Llewellyn-Jones <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
Qt code cannot be called from signal handlers so old version
wasn't safe. Funny thing MessageServer already had proper handling,
but it was overridden for sighup in main.cpp.
Change-Id: I9ab55f943148b5cd62bb01eec0157e2500b57ba2
Reviewed-by: Christopher Adams <[email protected]>
Reviewed-by: Matthew Vogt <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
API to move folder in the hierarchy. Implementation is mostly based on 'onlineRenameFolder' API implementation
Testing:
========
1) Gmail account: Try to move a folder from one folder to another. Expected result: move success
2) Gmail account: Try to move a folder from one folder to root. Expected: move success
3) Gmail account: Try to move top-level (root) folder to some other folder. Expected result: move success
4) Binary compatibility
- Verify that existing 3rd party QMF plugins still work well with new QMF
- Try to move folder for 3rd party QMF account (which doesn't have implementation of MoveFolder)
Verify that MoveFolder action is failed.
Verify in logs that action is completed with "This function is not currently supported" error
5) Gmail account (handling errors):
- Delete folder A on Web UI
- Try to move folder A to folder B on device
- Verify that action is failed
- Try to perform some moveFolder operations again
- Verify that those operation are completed (e.g. completion is not freezed)
Change-Id: Ifd59ad4fe9c41d17963aa64101b203d31dcdfb2d
Reviewed-by: Christopher Adams <[email protected]>
|
|
|
|
|
| |
Change-Id: Icce55517963f0cbc35211e9fc6f1a0fc413f5676
Reviewed-by: Simon Hausmann <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QmfMessageServer.
This was not possible prior to now due to Qt 4 support hanging around like the
undead vampire it is, but now we purged it with fire and light, and the build
system looks a lot less like a stinky, decomposed corpse.
There's still a lot of surprises lurking: qtmail is one such surprise. I don't
quite grasp why it's so heavy on plugins, and qmfutil also needs some...
attention. But at least it's a start.
As part of this work, we rename the qcop headers to fit the private convention.
This could have been done in a prior commit, but given that I didn't have an
easy way to build prior to this commit, I opted to roll them together.
Change-Id: Ia3e288ffc3639a7751c9040ceecb54fca77a31b1
Reviewed-by: Oswald Buddenhagen <[email protected]>
Reviewed-by: Matthew Vogt <[email protected]>
Reviewed-by: Valerio Valerio <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Fixes the following compilation errors with gcc 4.7 and later.
messageserver.cpp: In static member function 'static void MessageServer::hupSignalHandler(int)':
messageserver.cpp:501:5: error: '::write' has not been declared
messageserver.cpp: In member function 'void MessageServer::handleSigHup()':
messageserver.cpp:508:5: error: '::read' has not been declared
Change-Id: I6fbcf2cba884f5e285c0259e020c60f4a44173b4
Reviewed-by: Valerio Valerio <[email protected]>
Reviewed-by: Robin Burchell <[email protected]>
|
|
|
|
|
|
| |
Change-Id: I379598ddb440fe5c7474873c078cade05c8e5fb6
Signed-off-by: Valerio Valerio <[email protected]>
Reviewed-by: Robin Burchell <[email protected]>
|
|
|
|
|
|
|
|
|
|
|
|
| |
MessageServer plugins will be loaded and executed in the messageserver main loop,
these plugins should only be used for services that need to know information
about the operations initiated by all clients connected to messageserver.
To make use of this functionality qmf should be compiled with 'DEFINES+=MESSAGESERVER_PLUGINS'.
Change-Id: I6bebb150645d2c70a5bc67ffcaaa904f94ed3705
Signed-off-by: Valerio Valerio <[email protected]>
Reviewed-by: Robin Burchell <[email protected]>
|
|
|
|
|
|
|
|
| |
Symbian is not a supported platform anymore.
Change-Id: I82e618e756ae0b247e6e038fa9d8d43fb90b44ff
Reviewed-by: Valerio Valerio <[email protected]>
Reviewed-by: Matthew Vogt <[email protected]>
|
|
|
|
|
| |
Change-Id: If0f4427ee93a37de4ebd9e097defd8b3956f0fc6
Reviewed-by: Lars Knoll <[email protected]>
|
|
|
|
|
|
|
|
|
|
| |
minor, but matches the changes made in Qt 5, and reflects that Nokia is no
longer the vendor of this software.
Change-Id: I3b324b813359f53e65760f3ce7a751dbd5c970e7
Reviewed-by: Sergio Ahumada <[email protected]>
Reviewed-by: Johan Thelin <[email protected]>
Reviewed-by: Valerio Valerio <[email protected]>
|
|
|
|
|
|
|
|
|
| |
Instead of using its own private interface for push email and interval
checking operations. This change will faciliate monitoring of push email
network operations, and limiting peak memory use.
Required adding a new service action, retrieveNewMessages, for retrieving
new messages in a folder without updating existing messages.
|
|
|
|
|
|
|
|
|
|
|
|
| |
void QMailRetrievalAction::createStandardFolders(const QMailAccountId &accountId)
Requests that the message server create the standard folders for the
account accountId. If all standard folders are already set in the storage
the service action will return success immediately, in case some standard folders are
not set, a matching attempt against a predefined list of translations will be made,
if the folders can't be matched, messageserver will try to create them in the server side
and match them if the creation is successful. In case folder creation is not allowed for
the account accountId the service action will return.
|
|
|
|
|
|
|
|
| |
void QMailMessageServer::transmitMessage(quint64 action, const QMailMessageId &messageId)
Requests that the MessageServer application transmit the message
identified by 'messageId' that are currently in the Outbox folder.
The request has the identifier 'action'.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Specifically, as documented in src/libraries/qmfclient/CHANGES.qdoc item 52, added:
'void QMailStorageAction::deleteMessages(quint64, const QMailMessageIdList &ids)',
'void QMailStorageAction::rollBackUpdates(quint64, const QMailAccountId &mailAccountId)',
'void QMailStorageAction::moveToStandardFolder(quint64, const QMailMessageIdList& ids, QMailFolder::StandardFolder standardFolder)',
'void QMailStorageAction::moveToFolder(quint64, const QMailMessageIdList& ids, const QMailFolderId& folderId)',
'void QMailStorageAction::flagMessages(quint64, const QMailMessageIdList& ids, quint64 setMask, quint64 unsetMask)',
'void QMailStorageAction::restoreToPreviousFolder(quint64, const QMailMessageKey& key)',
'void QMailMessageServer::deleteMessages(quint64, const QMailMessageIdList &ids)',
'void QMailMessageServer::rollBackUpdates(quint64, const QMailAccountId &mailAccountId)',
'void QMailMessageServer::moveToStandardFolder(quint64, const QMailMessageIdList& ids, quint64 standardFolder)',
'void QMailMessageServer::moveToFolder(quint64, const QMailMessageIdList& ids, const QMailFolderId& folderId)',
'void QMailMessageServer::flagMessages(quint64, const QMailMessageIdList& ids, quint64 setMask, quint64 unsetMask)' and
'void QMailMessageServer::restoreToPreviousFolder(quint64, const QMailMessageKey& key)'.
Also added documentation for new functions, and made some minor documentation
updates for existing functions.
Additionally added a new set of module tests tst_qmailstorageaction. These
tests require the messageserver to be running. They are not just stubs
but do real testing.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
to be online.
Specifically:
Renamed 'void QMailStorageAction::deleteMessages(const QMailMessageIdList &ids)' to onlineDeleteMessages,
'void QMailStorageAction::copyMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineCopyMessages,
'void QMailStorageAction::moveMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineMoveMessages,
'void QMailStorageAction::flagMessages(const QMailMessageIdList &ids, quint64 setMask, quint64 unsetMask)' to onlineFlagMessages,
'void QMailStorageAction::createFolder(const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId)' to onlineCreateFolder,
'void QMailStorageAction::renameFolder(const QMailFolderId &folderId, const QString &name)' to onlineRenameFolder,
'void QMailStorageAction::deleteFolder(const QMailFolderId &folderId)' to onlineDeleteFolder.
'void QMailMessageServer::deleteMessages(const QMailMessageIdList &ids)' to onlineDeleteMessages,
'void QMailMessageServer::copyMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineCopyMessages,
'void QMailMessageServer::moveMessages(const QMailMessageIdList &ids, const QMailFolderId &destinationId)' to onlineMoveMessages,
'void QMailMessageServer::flagMessages(const QMailMessageIdList &ids, quint64 setMask, quint64 unsetMask)' to onlineFlagMessages,
'void QMailMessageServer::createFolder(const QString &name, const QMailAccountId &accountId, const QMailFolderId &parentId)' to onlineCreateFolder,
'void QMailMessageServer::renameFolder(const QMailFolderId &folderId, const QString &name)' to onlineRenameFolder,
'void QMailMessageServer::deleteFolder(const QMailFolderId &folderId)' to onlineDeleteFolder.
Additionally updated the doc to fix some assorted discrepancies, and indicate which functions require the device to be online.
Have not yet regenerated the html version of the doc.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
QMailMessageServer::messagesCount signal.
QMailSearchAction::countMessages(const QMailMessageKey &filter, const QString &bodyText) function
Requests that the message server count all messages that match the criteria
specified by \a filter. If \a bodyText is non-empty then messages that
contain the supplied text in their content will also be matched and counted.
It should be implemented for all protocol plugins for accounts with the
QMailAccount::CanSearchOnServer flag set.
Implemented for IMAP plugin, accelerated by use of ESEARH IMAP extension
when supported by the remote server.
QMailSearchAction::messagesCount(uint count)
This signal emits the \a count of matching messages on the remote server.
Only emitted for remote searches.
Emitted by countMessages, and searchMessages functions.
uint QMailSearchAction::messagesCount() const
Returns the count of matching messages on the remote server.
Also implemented boiler plate code in QMailMessageServer etc.
|
|
|
|
|
|
|
| |
Add 'QMailSearchAction::remainingMessagesCount(uint count) signal.
and 'QMailSearchAction::searchMessages' function with limit argument.
Also add doc.
|
|
|
|
| |
Remove obsolete pre-release clause.
|
|
|
|
| |
Fix for nb#271151.
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Related to NB#199393 'Response time to send Email message is above the target
value'
messagserver will no longer reload message data, should reduce
peak memory usage (and reduce cpu/filesystem use).
Required fixing bug in mailstore where updateMessage ignored udpated
contentIdentifier.
Required changing QMailContentManager interface to add new NoDurability option
and new ensureDurability(const QList<QString> &) function, and updating
QmfStorageManager plugin appropriately.
Required adding new limitation to addMessages and updateMessages
service actions, all messages must have same content scheme.
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Taken from QMF merge request #6 by Vitaly Repin:
Current version of the QMF logging subsystem has the following issues:
1) Whenever application is linked against QMF, all the syslog messages are
prefixed with QMF regardless of the application settings.
E.g., Aug 31 00:25:16 vitnote QMF[4959]: [Critical] Test
It makes it harder to identify the application which has printed specific
message to syslog. It also overwrites the previous calls to "openlog" made by
application which is impolite
2) It is not possible to enable/disable logging through syslog in runtime
3) It is not possible to log into file and stderr
4) Output of Q_ASSERT is not logged. In fact, QWarning(), qFatal(), qDebug()
do not go to the log
5) Library installs the SIGHUP handler transparently for the application. It
is bad because application might want to install its own handler for this
signal and it could conflict with the library's logic.
The patch attached for your review fixes the issues above. It also adds the
following possibilities:
- To log into file and stderr, controllable through the configuration file in
runtime
- To create chain of loggers if needed (e.g., output to file and stderr, to
file and syslog etc). Chain of loggers is defined in run-time through
configuration file.
- Configuration file is per application. Not the only file for all the users
of the library.
|
| |
|
|
|
|
| |
Fix issues suggested by KDE's code checking tool "Krazy"
|
|
|
|
|
|
|
|
|
| |
A) leave it in the outbox and continue sending other messages in the outbox.
B) emit a messagesFailedTransmitted signal.
API change QMailTransmitAction has new messagesFailedTransmitted signal.
Task: NB#177952 NB#153703
|
|
|
|
|
| |
BIG WARNING: This merely a demo. The entire API of it is about to
(drastically) change, and will be in no way compatible.
|
|
|
|
|
|
|
|
| |
Specifically remove out dated "or the Beta Release License Agreement" text.
Remove redundant GPL paragaph.
Update copyright to 2010.
|
|
|
|
| |
an 'include' directory on 'make install'
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Also, update message and mark as read in SMTP plugin rather than
relying on the MessageServer.
|
| |
|
| |
|
|
|