From 54455ca1ad6cae527544fed12d0de4ae95341082 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Thu, 6 Dec 2012 16:40:13 -0500 Subject: 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. --- modules/prefer-plain/e-mail-parser-prefer-plain.c | 91 ++++++++++++++--------- 1 file changed, 55 insertions(+), 36 deletions(-) (limited to 'modules/prefer-plain') diff --git a/modules/prefer-plain/e-mail-parser-prefer-plain.c b/modules/prefer-plain/e-mail-parser-prefer-plain.c index aad1ea6277..eea1d280b5 100644 --- a/modules/prefer-plain/e-mail-parser-prefer-plain.c +++ b/modules/prefer-plain/e-mail-parser-prefer-plain.c @@ -35,8 +35,11 @@ typedef struct _EMailParserPreferPlain EMailParserPreferPlain; typedef struct _EMailParserPreferPlainClass EMailParserPreferPlainClass; +typedef EExtension EMailParserPreferPlainLoader; +typedef EExtensionClass EMailParserPreferPlainLoaderClass; + struct _EMailParserPreferPlain { - EExtension parent; + GObject parent; GSettings *settings; gint mode; @@ -44,11 +47,11 @@ struct _EMailParserPreferPlain { }; struct _EMailParserPreferPlainClass { - EExtensionClass parent_class; + GObjectClass parent_class; }; GType e_mail_parser_prefer_plain_get_type (void); -static void e_mail_parser_mail_extension_interface_init (EMailExtensionInterface *iface); +GType e_mail_parser_prefer_plain_loader_get_type (void); static void e_mail_parser_parser_extension_interface_init (EMailParserExtensionInterface *iface); enum { @@ -60,15 +63,17 @@ enum { G_DEFINE_DYNAMIC_TYPE_EXTENDED ( EMailParserPreferPlain, e_mail_parser_prefer_plain, - E_TYPE_EXTENSION, + G_TYPE_OBJECT, 0, - G_IMPLEMENT_INTERFACE_DYNAMIC ( - E_TYPE_MAIL_EXTENSION, - e_mail_parser_mail_extension_interface_init) G_IMPLEMENT_INTERFACE_DYNAMIC ( E_TYPE_MAIL_PARSER_EXTENSION, e_mail_parser_parser_extension_interface_init)); +G_DEFINE_DYNAMIC_TYPE ( + EMailParserPreferPlainLoader, + e_mail_parser_prefer_plain_loader, + E_TYPE_EXTENSION) + static const gchar *parser_mime_types[] = { "multipart/alternative", "text/html", @@ -326,36 +331,13 @@ empe_prefer_plain_parse (EMailParserExtension *extension, return TRUE; } -void -e_mail_parser_prefer_plain_type_register (GTypeModule *type_module) -{ - e_mail_parser_prefer_plain_register_type (type_module); -} - -static void -e_mail_parser_mail_extension_interface_init (EMailExtensionInterface *iface) -{ - iface->mime_types = parser_mime_types; -} - static void e_mail_parser_parser_extension_interface_init (EMailParserExtensionInterface *iface) { + iface->mime_types = parser_mime_types; iface->parse = empe_prefer_plain_parse; } -static void -e_mail_parser_prefer_plain_constructed (GObject *object) -{ - EExtensible *extensible; - EMailExtensionRegistry *reg; - - extensible = e_extension_get_extensible (E_EXTENSION (object)); - reg = E_MAIL_EXTENSION_REGISTRY (extensible); - - e_mail_extension_registry_add_extension (reg, E_MAIL_EXTENSION (object)); -} - static void e_mail_parser_prefer_plain_get_property (GObject *object, guint property_id, @@ -418,17 +400,12 @@ static void e_mail_parser_prefer_plain_class_init (EMailParserPreferPlainClass *class) { GObjectClass *object_class; - EExtensionClass *extension_class; object_class = G_OBJECT_CLASS (class); - object_class->constructed = e_mail_parser_prefer_plain_constructed; object_class->get_property = e_mail_parser_prefer_plain_get_property; object_class->set_property = e_mail_parser_prefer_plain_set_property; object_class->dispose = e_mail_parser_prefer_plain_dispose; - extension_class = E_EXTENSION_CLASS (class); - extension_class->extensible_type = E_TYPE_MAIL_PARSER_EXTENSION_REGISTRY; - g_object_class_install_property ( object_class, PROP_MODE, @@ -520,3 +497,45 @@ e_mail_parser_prefer_plain_init (EMailParserPreferPlain *parser) parser->show_suppressed = g_settings_get_boolean (parser->settings, "show-suppressed"); } + +static void +mail_parser_prefer_plain_loader_constructed (GObject *object) +{ + EExtensible *extensible; + + extensible = e_extension_get_extensible (E_EXTENSION (object)); + + e_mail_extension_registry_add_extension ( + E_MAIL_EXTENSION_REGISTRY (extensible), + parser_mime_types, + e_mail_parser_prefer_plain_get_type ()); +} + +static void +e_mail_parser_prefer_plain_loader_class_init (EExtensionClass *class) +{ + GObjectClass *object_class; + + object_class = G_OBJECT_CLASS (class); + object_class->constructed = mail_parser_prefer_plain_loader_constructed; + + class->extensible_type = E_TYPE_MAIL_PARSER_EXTENSION_REGISTRY; +} + +static void +e_mail_parser_prefer_plain_loader_class_finalize (EExtensionClass *class) +{ +} + +static void +e_mail_parser_prefer_plain_loader_init (EExtension *extension) +{ +} + +void +e_mail_parser_prefer_plain_type_register (GTypeModule *type_module) +{ + e_mail_parser_prefer_plain_register_type (type_module); + e_mail_parser_prefer_plain_loader_register_type (type_module); +} + -- cgit v1.2.3