References to EMailSession are leaking like crazy, so the module's
finalize() method never gets called, and we never kill our spamd.
Until I can track down all the reference leaks, kill the spamd process
in response to a "EShell::prepare-for-quit" signal instead of from the
module's finalize() method. (Maybe that's a better long-term solution
anyway?)
We now have a proper junk mail filtering API. All junk filtering
extensions must subclass EMailJunkFilter for user preferences and
availability testing, and implement the CamelJunkFilter interface
for the actual junk filtering and learning operations.
The bogofilter module should be feature-equivalent to its former
EPlugin. The spamassassin module is far more complex. It's nearly
feature-equivalent to its former EPlugin, but I ditched the spamd
respawning code since it seemed unnecessary for a mail client to
have to deal with. If there's a huge outcry from users about it
I'll reluctantly put it back, but I don't expect one.
This gets us a step closer to killing off EConfig, and eventually
the EPlugin framework itself.
We track Evolution's online state separately from network availability
these days. I think there was still logic here from when we set online
state directly. Don't lie about network availability.
When a stream is obviously a file or memory stream (both of which
implement the GSeekable interface), use g_seekable_seek() instead of
camel_stream_reset().
This is helping me discover if it's safe to remove camel_stream_reset().
We want to eventually move to GIO streams, which have no reset method.
The GTK+ patch in bug 653705 is also required for the Account Assistant
to work properly under the new GtkAssistant design in GTK+ 3.1.
This commit only deals with sidebar ordering issues.
Integrates with the GNOME Online Accounts service.
Creates Evolution sources for a GOA Google account and keeps them
synchronized. Also registers a new CamelSaslXOAuth class for use
with GMail.
Authentication of Google Calendars and Google Contacts using OAuth
is still under development.
This works similar to the offline and shutdown procedure in EShell.
We broadcast a "load-accounts" EShell event with an EActivity. The
EActivity has a toggle reference which we use as a counting semaphore.
If another module needs to handle the event asynchronously, it should
reference the EActivity until its async operation completes, then drop
the reference. Once the signal handlers finish and only the toggle
reference remains, we then proceed with the Evolution Setup Assistant.
All of this is in preparation for GNOME Online Accounts integration.
For the moment, nothing listens for the "load-accounts" EShell event,
so there should be no change in Evolution Setup Assistant behavior.
There were a few places where we were accessing the folder tree model
directly to get the selected store + folder name, or were asking for the
selected URI only to parse back into its store + folder name components.
All this so EMFolderTree can submit EActivity instances for async ops.
You can obtain an EMailSession from an EMailBackend, but not vice versa.
Creates lots of pretty ripples in the mail code, but ultimately reduces
complexity. So it's a code cleanup of sorts.
Add an action group for Search Folders to EMailReader. The action
group's visibility is bound to the "mail-enable-search-folders" setting,
so that menu items related to Search Folders are hidden when Search
Folders are disabled in GConf.
Affected menu items are:
Edit -> Search Folders
Message -> Create Rule -> Search Folder from Subject...
Message -> Create Rule -> Search Folder from Sender...
Message -> Create Rule -> Search Folder from Recipients...
Message -> Create Rule -> Search Folder from Mailing List...
Search -> Create Search Folder From Search...
Use an enum type to request different action groups. For now we just
have E_MAIL_READER_ACTION_GROUP_STANDARD. EMailReader implementations
should map the enum value to an appropriate GtkActionGroup.
This starts up the EMailShellBackend whenever a new composer window is
created. Normally this happens when switching to the Mail shell view,
but if trying to send a message from a different shell view before the
Mail shell view is ever activated, the mail accounts were not getting
loaded and sending or saving the message to a mail folder would fail.