| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The states and signals were painful to follow due to bad naming
and excessive overloading.
Here:
- Renamed some API to avoid overloading, help readability and
allow new connect() syntax without resolving the overloads.
- updateStatus() signals and slots renamed a bit to make it clearer
what is a signal and what is a slot. And avoiding overloading
QMailMessageService::updateStatus() to simplify signal connection.
- Cleaned up QMailTranport API. It's not doing urls but hostnames
and the signals were especially hard to follow
- Use the new connect() syntax in messageserver side
- Avoiding some protected: / virtual methods when there's nothing
even able to inherit the class.
- At least print SSL errors instead of signal that's not connected
anywhere.
- Some minor simplifications and code style adjustments.
The SSL error handling is still funny but at least a bit easier to track.
Change-Id: If168e15ef068fedee46b9401d695ed5dae7962ba
Reviewed-by: <matti.viljanen@kapsi.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On qmake this needs to be explicitly turned on externally while
I wouldn't expect much reasons not to use it. The affected code is
small.
The MODULE_PLUGIN_TYPES wasn't updated to contain plugin prefix but
guess it doesn't necessarily affect much with no actual messageserver
plugins here.
On cmake build looks like the option wasn't enabled properly.
The plugin files are built but nothing did -DMESSAGESERVER_PLUGINS
for the actual messageserver.
Removed one leftover type declaration from messageserver too.
Change-Id: I2f012f1f16f6c5c1d74c8b3b0b3ca50edebf59a1
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
Reviewed-by: <matti.viljanen@kapsi.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Not much done here since the initial commit and the
QMailMessageClassifier::classifyMessage(QMailMessageMetaData*)
wasn't actually getting even called anywhere.
Besides if something like this is wanted in some environment, it's better
implemented as external messageserver plugin.
Change-Id: Iff3b9616a739345f6dc73f7b8160b83835ece13b
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
Reviewed-by: <matti.viljanen@kapsi.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
|
| |
|
|
|
|
|
|
|
|
|
| |
This doesn't nor has done anything meaningful. For handling new messages
it should be better to just create a plugin, e.g. what SailfishOS
has done for making notifications on new emails.
Change-Id: I962339b406dd305c38fa11992d1576d6aa668084
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
Reviewed-by: <matti.viljanen@kapsi.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Missed earlier one QMessageBox deprecation from separate file
- LongStream now doing consistent open() check in all code paths.
Also removed unused member variable 'c' and moved internal constants
to .cpp.
- imapstrategy.h / ImapMessageListStrategy::selectedSectionsAppend()
was dead code due to derived class ImapFetchSelectedMessagesStrategy
having similar named method with extra parameter and default value.
- ImapService was triggering a couple of -Woverloaded-virtual
warnings due to having extra methods with same name as base class.
These were really used internally so simpler as different named private.
- ImapProtocol / QString::lastIndexOf() was complaining about unused
return value. Using that should be even simpler than accessing regexp
match.
- Some small random warnings on unused parameters, missed switch case etc.
Change-Id: I243c09ab2d551fe2f8be18f1b3a4df2e3d84b55c
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
Reviewed-by: <matti.viljanen@kapsi.fi>
|
| |
|
|
|
|
|
|
|
| |
And couple small simplifications too.
Change-Id: Id5fe0a3e991961b9b39c92ab1b9b165c6f450289
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
Reviewed-by: <matti.viljanen@kapsi.fi>
|
| |
|
|
|
|
|
|
|
|
| |
Not used anywhere in the qmfclient side since commit d06d3db4dfdc6de
or so.
Change-Id: I64d341bf56b1e9a887566f06631958eee58677d0
Reviewed-by: <matti.viljanen@kapsi.fi>
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Mostly coding conventions here.
- Method opening braces to their own lines
- Adjusted some inconsistent init list styles
- Removed some redundant static declarations inside anon namespace
- Replaced one delete loop with qDeleteAll()
- Remove some trailing extra new lines
- Added some missing spaces after commas
- for (), if (), switch as common qt style
- Removed some unnecessary scopes within switch cases
Etc.
Change-Id: Ide9ad7fea6f5fce3b854af2bf05874623c474028
Reviewed-by: <matti.viljanen@kapsi.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
|
| |
|
|
|
|
|
|
|
| |
Replace the custom logging mechanism with QLoggingCategory.
Also declare the warnings with the proper category.
Change-Id: If87d53d27ea0c65abd434af9f99fe49ce634d6dd
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
|
| |
|
|
|
|
|
| |
Change-Id: I57c6ed78099b3359a16ce807da95325e755f0197
Reviewed-by: Pekka Vuorela <pvuorela@iki.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
Reviewed-by: <matti.viljanen@kapsi.fi>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 <pvuorela@iki.fi>
Reviewed-by: Damien Caliste <dcaliste@free.fr>
Reviewed-by: <matti.viljanen@kapsi.fi>
|
| |
|
|
|
|
|
|
|
|
| |
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 <pvuorela@iki.fi>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 <pvuorela@iki.fi>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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 <pvuorela@iki.fi>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 <pvuorela@iki.fi>
|
| |
|
|
|
|
| |
Change-Id: Iccea2c86266b4c20777d939b291084cb709bf592
Reviewed-by: Christopher Adams <chris.adams@jolla.com>
Reviewed-by: David Llewellyn-Jones <david.llewellyn-jones@jolla.com>
|
| |
|
|
|
|
|
|
|
|
| |
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 <chris.adams@jollamobile.com>
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 <chris.adams@jollamobile.com>
|
| |
|
|
|
| |
Change-Id: Icce55517963f0cbc35211e9fc6f1a0fc413f5676
Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
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 <oswald.buddenhagen@digia.com>
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
Reviewed-by: Valerio Valerio <valerio.valerio@jollamobile.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
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 <valerio.valerio@jollamobile.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| |
|
|
|
|
| |
Change-Id: I379598ddb440fe5c7474873c078cade05c8e5fb6
Signed-off-by: Valerio Valerio <valerio.valerio@jollamobile.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| |
|
|
|
|
|
|
|
|
|
|
| |
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 <valerio.valerio@jollamobile.com>
Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
|
| |
|
|
|
|
|
|
| |
Symbian is not a supported platform anymore.
Change-Id: I82e618e756ae0b247e6e038fa9d8d43fb90b44ff
Reviewed-by: Valerio Valerio <valerio.valerio@jollamobile.com>
Reviewed-by: Matthew Vogt <matthew.vogt@qinetic.com.au>
|
| |
|
|
|
| |
Change-Id: If0f4427ee93a37de4ebd9e097defd8b3956f0fc6
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
|
| |
|
|
|
|
|
|
|
|
| |
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 <sergio.ahumada@digia.com>
Reviewed-by: Johan Thelin <johan.thelin@pelagicore.com>
Reviewed-by: Valerio Valerio <vdv100@gmail.com>
|
| |
|
|
|
|
|
|
|
| |
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'
|
| | |
|
| | |
|