Commit Graph

47 Commits

Author SHA1 Message Date
35582bf4e2 Bug 701669 - Bad assumption in prefer-plain module
For messages with a base MIME type of multipart/alternative, we were
hiding text/plain subparts based on the number of alternate subparts.

This assumption of course broke on a message with the following body
structure and a Plain Text Mode preference of "Show HTML if present":

    multipart/alternative
        text/plain
        text/plain

Instead, note when we've actually seen a text/html subpart and use that
to decide whether to hide the text/plain parts.
2013-06-08 11:53:02 -04:00
5cf06f855f EMailParserPreferPlain cleanups. 2013-06-08 11:31:30 -04:00
04aa0fba1f Rename libemformat to libevolution-mail-formatter.
To make Evolution's shared libraries more consistent.

Also add an evolution-mail-formatter documentation module.
2013-05-28 09:56:30 -04:00
70a9fcdf9c Rename libeshell to libevolution-shell.
To make Evolution's shared libraries more consistent.

Also rename the documentation module to evolution-shell.
2013-05-28 09:56:30 -04:00
6c9a3243c9 Rename libeutil to libevolution-util.
To make Evolution's shared libraries more consistent.

Also rename the documentation module to evolution-util.
2013-05-28 09:56:30 -04:00
f9ffe64723 Convert EMailPart to a GObject.
EMailPart is reference-counted, subclassed, and allows a custom
finalize function.  There's no excuse for it not to use GObject.
2013-05-19 13:07:22 -04:00
42d1e89f02 Add e_mail_part_set_is_attachment(). 2013-05-19 13:07:21 -04:00
875746e0ef Add e_mail_part_set_mime_type(). 2013-05-19 13:07:21 -04:00
0ee556d346 Add e_mail_part_get_mime_type(). 2013-05-19 13:07:21 -04:00
5ad0b6d8f7 Add e_mail_part_id_has_substr(). 2013-05-19 13:07:20 -04:00
366b731a16 Add e_mail_part_id_has_prefix(). 2013-05-19 13:07:20 -04:00
c025ffbb29 Add e_mail_part_get_id(). 2013-05-19 13:07:20 -04:00
33bbdaa50b Coding style and whitespace cleanup. 2013-02-23 22:24:59 -05:00
9a0b1266b5 Teach EMailExtensionRegistry to find extensions.
Restore this commit with a proper bug fix to follow.
2013-02-01 08:44:50 -05:00
57adde4be6 Revert "Teach EMailExtensionRegistry to find extensions."
This reverts commit bf30024dd7, because
it breaks EMailFormatter/Parser extensions, like the prefer-plain.
The thing is that the internal formatters/parsers (also extensions)
should be always added first, and only after then can be added extended
extensions, which are used before those internal. This constraint was not
satisfied with the reverted commit, the order of extension registration
was unpredictable, depended on GType.
2013-01-29 16:31:58 +01:00
6d7b644e8e Bug #692775 - Double-quoting message with HTML and text 2013-01-29 14:49:27 +01:00
bed06d9ec3 Move the contact map widgets to addressbook/gui/widgets.
Move the supporting widgets for the contact maps feature alongside
EABContactDisplay.  Removing them from libeutil helps isolate our usage
of libchamplain so it's not imposed on the entire application, and even
3rd party software.  That libchamplain is an optional dependency only
further complicates the matter.

Ideally I'd like to somehow isolate this feature in an extension module,
but we currently lack sufficient hooks for such an extension.  So this
arrangement will have to suffice for now.
2012-12-12 14:33:47 -05:00
d09d8de870 Consolidate base utility libraries into libeutil.
Evolution consists of entirely too many small utility libraries, which
increases linking and loading time, places a burden on higher layers of
the application (e.g. modules) which has to remember to link to all the
small in-tree utility libraries, and makes it difficult to generate API
documentation for these utility libraries in one Gtk-Doc module.

Merge the following utility libraries under the umbrella of libeutil,
and enforce a single-include policy on libeutil so we can reorganize
the files as desired without disrupting its pseudo-public API.

   libemail-utils/libemail-utils.la
   libevolution-utils/libevolution-utils.la
   filter/libfilter.la
   widgets/e-timezone-dialog/libetimezonedialog.la
   widgets/menus/libmenus.la
   widgets/misc/libemiscwidgets.la
   widgets/table/libetable.la
   widgets/text/libetext.la

This also merges libedataserverui from the Evolution-Data-Server module,
since Evolution is its only consumer nowadays, and I'd like to make some
improvements to those APIs without concern for backward-compatibility.

And finally, start a Gtk-Doc module for libeutil.  It's going to be a
project just getting all the symbols _listed_ much less _documented_.
But the skeletal structure is in place and I'm off to a good start.
2012-12-12 14:33:43 -05:00
bf30024dd7 Teach EMailExtensionRegistry to find extensions.
Now we have the following extension points in the GType hierarchy:

   E_TYPE_MAIL_FORMATTER_EXTENSION
   E_TYPE_MAIL_FORMATTER_PRINT_EXTENSION
   E_TYPE_MAIL_FORMATTER_QUOTE_EXTENSION
   E_TYPE_MAIL_PARSER_EXTENSION

A registry just needs to be given one of these extension points, and it
can use g_type_children() to find and load all registered extensions.

This eliminates e-mail-format-extensions.[ch] as well as the dynamic
loaders I added a few commits back.  Dynamically loaded extensions are
now easier to register, at the cost of internal extensions being a tad
more cumbersome to register.  Fair tradeoff, imo.

This also makes e_mail_extension_registry_add_extension() a private
function used only by e_mail_formatter_extension_registry_load() and
e_mail_parser_extension_registry_load().
2012-12-07 17:40:28 -05:00
cab6eac8f1 Convert EMailParserExtension to an abstract class.
With the previous changes, all parser extensions derive from
GObjectClass and implement the EMailParserExtensionInterface.

Simplify things further by making EMailParserExtension an abstract base
class so parser extensions are now just direct subclasses and need not
bother with implementing GObject interfaces.
2012-12-07 14:01:05 -05:00
54455ca1ad Remove EMailExtension.
EMailExtension is now too trivial to keep as a standalone interface.
Add a 'mime_types' string array to the EMailFormatterExtension and
EMailFormatterParser interface structs.

Alter e_mail_extension_registry_add_extension() to take a 'mime_types'
string array and the GType of an extension to instantiate, rather than
the extension instance directly.

e_mail_extension_registry_remove_extension() is no longer needed.
2012-12-07 14:01:05 -05:00
9d34f72ec1 EMailExtension: Replace mime_types() method with a string array.
In all implementations for EMailExtension, the MIME type list is a
static string array -- with the single exception of the text-highlight
module, where the MIME type list is dynamically assembled once.

Replace the mime_types() method with a "mime_types" string array in the
EMailExtensionInterface struct.  Then the list of MIME types supported
by the class implementing the EMailExtensionInterface can be obtained
without requiring an instance of the class.
2012-12-07 14:01:04 -05:00
3924dc759d EMailParserExtension: Collect EMailParts in a GQueue.
Collect EMailParts in a GQueue provided to the EMailParserExtension,
and change the return type of parse() to gboolean to indicate whether
the given CamelMimePart was handled (even if no parts were added to
the output GQueue).

This avoids the awkward corner case of a parser extension returning a
linked list node with a NULL data member to indicate the CamelMimePart
was handled but no EMailParts produced, and then having to watch out
for that NULL data member corner case throughout the application.

Also, remove the GCancellable parameter from e_mail_parser_error() and
e_mail_parser_wrap_as_attachment() since neither function blocks.
2012-12-07 14:01:04 -05:00
91822b42dc Make EMailPartList thread-safe.
Exposing data members in the public struct is unwise, especially when
EMailPartList is used from multiple threads.  Instead keep the members
private and provide a set of thread-safe functions to manipulate them.
2012-12-07 14:01:04 -05:00
2c4ae5e768 Coding style and whitespace cleanup. 2012-11-10 15:54:43 -05:00
b30295b408 Bug #686278 - Prefer-plain can break parts list 2012-10-17 12:07:05 +02:00
abc10da2ae [prefer-plain] Always show HTML part as attachment for only HTML messages
When the prefer-plain is set to show only text/plain parts, without showing
suppressed HTML parts as attachments, and the received message contains
only one part, the text/html part, then the preview was completely empty,
which is confusing. With this change, the text/html only messages will
show the suppressed part as attachment regardless the setting.
2012-09-12 12:28:59 +02:00
b8240ebae6 Bug #683758 - Crash on display meeting invite 2012-09-11 17:20:55 +02:00
72cf5896ab Bug #682873 - Prefer-plain shows text plain in meeting invite 2012-09-05 19:23:11 +02:00
2773f4abee Fix visibility of parts in prefer-plain 2012-08-28 13:50:46 +02:00
a5bbf35da5 Fix all 'may be used uninitialized' compiler warnings 2012-08-20 13:06:23 +02:00
c85109fc32 Coding style and whitespace cleanup. 2012-08-19 14:17:55 -04:00
fb59157739 Bug #682019 - Always display text/plain when there's nothing else in multipart/alternative 2012-08-17 14:43:12 +02:00
b1ae9e5c83 prefer-plain: Unref objects in dispose(), not finalize(). 2012-08-11 17:56:49 -04:00
6f451f9f65 prefer-plain: Cleanups. 2012-08-11 17:53:59 -04:00
6dd78a31de Bug #680331 - Crash when replying to a message 2012-08-03 15:43:08 +02:00
436a31953e Fix some memory leaks 2012-08-01 22:15:28 +02:00
9574b77d63 Bug #680577 - [text-highlight] - Failed to load part 2012-07-26 21:24:23 +02:00
41d72be8b4 Bug 679814 - Calendar invitation shows both calendar and html part 2012-07-13 10:55:56 +02:00
ff566c8be0 Fix compiler warning 2012-06-28 10:53:08 +02:00
4378640815 prefer-plain: Add missing linker flags. 2012-06-28 01:50:03 -04:00
2992ba8de9 [prefer-plain] Fix displaying suppressed HTML parts
Fix regression from commit 99a875ed which has broken displaying
of suppressed HTML parts as attachments when the HTML part is embedded
in a multipart/* container.
2012-06-26 15:26:57 +02:00
99a875edae Bug #515004 - Allow toggling between text and HTML view of mail 2012-06-26 13:40:59 +02:00
cc8bf823ec Coding style and whitespace cleanup. 2012-06-24 20:31:43 -04:00
f960fd2dff Reduce usage of g_type_class_peek_parent().
G_DEFINE_TYPE macros define a static "parent_class" variable.
2012-06-24 20:31:42 -04:00
6fac903eab Add forgotten -include $(top_srcdir)/git.mk to Makefile.am files 2012-06-14 11:29:14 +02:00
9311914746 Mail formatter rewrite - convert some plugins to modules
audio-inline, itip-formatter, prefer-plain, tnef-attachments
and vcard-inline plugins were converted to modules so that they
can fit into concept of the new formatter.

Every module still installs .eplug file, because there is no
suitable API at the moment to register plugins to the plugins dialog
and to extend the Preferences dialog.
2012-06-06 15:29:38 +02:00