[evolution] EMailDisplay cleanups.



commit 232a3cd15dd2020934b55b106da2fba23dec2705
Author: Matthew Barnes <mbarnes redhat com>
Date:   Mon May 13 13:40:34 2013 -0400

    EMailDisplay cleanups.

 mail/e-mail-display.c |  122 +++++++++++++++++++++++++++----------------------
 mail/e-mail-display.h |   80 ++++++++++++++------------------
 2 files changed, 103 insertions(+), 99 deletions(-)
---
diff --git a/mail/e-mail-display.c b/mail/e-mail-display.c
index 7d7f04f..c39c5c7 100644
--- a/mail/e-mail-display.c
+++ b/mail/e-mail-display.c
@@ -44,11 +44,6 @@
 
 #define d(x)
 
-G_DEFINE_TYPE (
-       EMailDisplay,
-       e_mail_display,
-       E_TYPE_WEB_VIEW);
-
 #define E_MAIL_DISPLAY_GET_PRIVATE(obj) \
        (G_TYPE_INSTANCE_GET_PRIVATE \
        ((obj), E_TYPE_MAIL_DISPLAY, EMailDisplayPrivate))
@@ -60,8 +55,7 @@ struct _EMailDisplayPrivate {
 
        gboolean headers_collapsable;
        gboolean headers_collapsed;
-
-       gint force_image_load: 1;
+       gboolean force_image_load;
 
        GSettings *settings;
 
@@ -156,6 +150,11 @@ static GtkActionEntry image_entries[] = {
          NULL /* Handled by EMailReader */ },
 };
 
+G_DEFINE_TYPE (
+       EMailDisplay,
+       e_mail_display,
+       E_TYPE_WEB_VIEW);
+
 static void
 formatter_image_loading_policy_changed_cb (GObject *object,
                                            GParamSpec *pspec,
@@ -176,18 +175,22 @@ formatter_image_loading_policy_changed_cb (GObject *object,
 static gboolean
 mail_display_image_exists_in_cache (const gchar *image_uri)
 {
-       gchar *image_filename, *uri_md5;
-       gboolean exists;
+       gchar *filename;
+       gchar *hash;
+       gboolean exists = FALSE;
 
        g_return_val_if_fail (emd_global_http_cache != NULL, FALSE);
 
-       uri_md5 = g_compute_checksum_for_string (G_CHECKSUM_MD5, image_uri, -1);
-       image_filename = camel_data_cache_get_filename (emd_global_http_cache, "http", uri_md5);
+       hash = g_compute_checksum_for_string (G_CHECKSUM_MD5, image_uri, -1);
+       filename = camel_data_cache_get_filename (
+               emd_global_http_cache, "http", hash);
 
-       exists = image_filename && g_file_test (image_filename, G_FILE_TEST_EXISTS);
+       if (filename != NULL) {
+               exists = g_file_test (filename, G_FILE_TEST_EXISTS);
+               g_free (filename);
+       }
 
-       g_free (uri_md5);
-       g_free (image_filename);
+       g_free (hash);
 
        return exists;
 }
@@ -195,11 +198,14 @@ mail_display_image_exists_in_cache (const gchar *image_uri)
 static void
 mail_display_update_formatter_colors (EMailDisplay *display)
 {
-       if (display->priv->formatter == NULL)
-               return;
+       EMailFormatter *formatter;
+       GtkStateFlags state_flags;
+
+       formatter = display->priv->formatter;
+       state_flags = gtk_widget_get_state_flags (GTK_WIDGET (display));
 
-       e_mail_formatter_update_style (display->priv->formatter,
-               gtk_widget_get_state_flags (GTK_WIDGET (display)));
+       if (formatter != NULL)
+               e_mail_formatter_update_style (formatter, state_flags);
 }
 
 static void
@@ -230,6 +236,8 @@ mail_display_process_mailto (EWebView *web_view,
                              const gchar *mailto_uri,
                              gpointer user_data)
 {
+       gboolean handled = FALSE;
+
        g_return_val_if_fail (E_IS_WEB_VIEW (web_view), FALSE);
        g_return_val_if_fail (mailto_uri != NULL, FALSE);
 
@@ -245,10 +253,10 @@ mail_display_process_mailto (EWebView *web_view,
                em_utils_compose_new_message_with_mailto (
                        shell, mailto_uri, folder);
 
-               return TRUE;
+               handled = TRUE;
        }
 
-       return FALSE;
+       return handled;
 }
 
 static gboolean
@@ -331,12 +339,22 @@ mail_display_resource_requested (WebKitWebView *web_view,
 {
        EMailDisplay *display = E_MAIL_DISPLAY (web_view);
        EMailPartList *part_list;
-       const gchar *uri = webkit_network_request_get_uri (request);
+       gboolean uri_is_http;
+       const gchar *uri;
 
        part_list = display->priv->part_list;
        if (part_list == NULL)
                return;
 
+       uri = webkit_network_request_get_uri (request);
+       g_return_if_fail (uri != NULL);
+
+       uri_is_http =
+               g_str_has_prefix (uri, "http:") ||
+               g_str_has_prefix (uri, "https:") ||
+               g_str_has_prefix (uri, "evo-http:") ||
+               g_str_has_prefix (uri, "evo-https:");
+
        /* Redirect cid:part_id to mail://mail_id/cid:part_id */
        if (g_str_has_prefix (uri, "cid:")) {
                CamelFolder *folder;
@@ -371,8 +389,7 @@ mail_display_resource_requested (WebKitWebView *web_view,
 
        /* Redirect http(s) request to evo-http(s) protocol.
         * See EMailRequest for further details about this. */
-       } else if (g_str_has_prefix (uri, "http:") || g_str_has_prefix (uri, "https:") ||
-           g_str_has_prefix (uri, "evo-http:") || g_str_has_prefix (uri, "evo-https:")) {
+       } else if (uri_is_http) {
                CamelFolder *folder;
                const gchar *message_uid;
                gchar *new_uri, *mail_uri, *enc;
@@ -482,7 +499,8 @@ mail_display_plugin_widget_resize (GtkWidget *widget,
        gint height, width;
        gfloat scale;
 
-       parent_element = g_object_get_data (G_OBJECT (widget), "parent_element");
+       parent_element = g_object_get_data (
+               G_OBJECT (widget), "parent_element");
 
        if (!WEBKIT_DOM_IS_ELEMENT (parent_element)) {
                d (
@@ -495,12 +513,12 @@ mail_display_plugin_widget_resize (GtkWidget *widget,
        width = gtk_widget_get_allocated_width (widget);
        gtk_widget_get_preferred_height_for_width (widget, width, &height, NULL);
 
-       /* When zooming WebKit does not change dimensions of the elements, but
-        * only scales them on the canvas. GtkWidget can't be scaled though
-        * so we need to cope with the dimensions changes to keep the widgets
-        * still the correct size. Due to inaccuracy in rounding (float -> int)
-        * it still acts a bit funny, but at least it does not cause widgets in
-        * WebKit to go crazy when zooming. */
+       /* When zooming WebKit does not change dimensions of the elements,
+        * but only scales them on the canvas.  GtkWidget can't be scaled
+        * though so we need to cope with the dimension changes to keep the
+        * the widgets the correct size.  Due to inaccuracy in rounding
+        * (float -> int) it still acts a bit funny, but at least it does
+        * not cause widgets in WebKit to go crazy when zooming. */
        height = height * (1 / scale);
 
        /* Int -> Str */
@@ -523,23 +541,18 @@ mail_display_plugin_widget_realize_cb (GtkWidget *widget,
                GList *children;
 
                children = gtk_container_get_children (GTK_CONTAINER (widget));
-               if (children && children->data &&
-                   E_IS_ATTACHMENT_BAR (children->data)) {
+               if (children != NULL && E_IS_ATTACHMENT_BAR (children->data))
                        widget = children->data;
-               }
-
                g_list_free (children);
        }
 
        /* First check if we are actually supposed to be visible */
        element = g_object_get_data (G_OBJECT (widget), "parent_element");
        if (element == NULL || !WEBKIT_DOM_IS_HTML_ELEMENT (element)) {
-               g_warning ("UAAAAA");
-       } else {
-               if (webkit_dom_html_element_get_hidden (element)) {
-                       gtk_widget_hide (widget);
-                       return;
-               }
+               g_warn_if_reached ();
+       } else if (webkit_dom_html_element_get_hidden (element)) {
+               gtk_widget_hide (widget);
+               return;
        }
 
        /* Initial resize of the <object> element when the widget
@@ -567,8 +580,8 @@ plugin_widget_set_parent_element (GtkWidget *widget,
                return;
        }
 
-       /* Assign the WebKitDOMElement to "parent_element" data of the GtkWidget
-        * and the GtkWidget to "widget" data of the DOM Element */
+       /* Assign the WebKitDOMElement to "parent_element" data of the
+        * GtkWidget and the GtkWidget to "widget" data of the DOM Element. */
        g_object_set_data (G_OBJECT (widget), "parent_element", element);
        g_object_set_data (G_OBJECT (element), "widget", widget);
 
@@ -606,7 +619,7 @@ toggle_widget_visibility (EAttachmentButton *button,
                GList *children;
 
                children = gtk_container_get_children (GTK_CONTAINER (widget));
-               if (children && children->data && E_IS_ATTACHMENT_BAR (children->data)) {
+               if (children != NULL && E_IS_ATTACHMENT_BAR (children->data)) {
                        EAttachmentStore *store;
 
                        store = e_attachment_bar_get_store (
@@ -671,7 +684,6 @@ bind_iframe_content_visibility (WebKitDOMElement *iframe,
        /* Iterate through all <object>s and bind visibility of their widget
         * with expanded-state of related attachment button */
        for (ii = 0; ii < length; ii++) {
-
                WebKitDOMNode *node = webkit_dom_node_list_item (nodes, ii);
 
                /* Initial sync */
@@ -770,7 +782,7 @@ mail_display_plugin_widget_requested (WebKitWebView *web_view,
        EMailExtensionRegistry *reg;
        EMailFormatterExtension *extension;
        GQueue *extensions;
-       GList *iter;
+       GList *head, *link;
        EMailPart *part = NULL;
        GtkWidget *widget = NULL;
        gchar *part_id, *type, *object_uri;
@@ -802,9 +814,10 @@ mail_display_plugin_widget_requested (WebKitWebView *web_view,
                goto exit;
 
        extension = NULL;
-       for (iter = g_queue_peek_head_link (extensions); iter; iter = iter->next) {
+       head = g_queue_peek_head_link (extensions);
+       for (link = head; link != NULL; link = g_list_next (link)) {
+               extension = link->data;
 
-               extension = iter->data;
                if (extension == NULL)
                        continue;
 
@@ -1031,7 +1044,7 @@ toggle_headers_visibility (WebKitDOMElement *button,
        d (printf ("Headers %s!\n", expanded ? "collapsed" : "expanded"));
 }
 
-static const gchar * addresses[] = { "to", "cc", "bcc" };
+static const gchar *addresses[] = { "to", "cc", "bcc" };
 
 static void
 toggle_address_visibility (WebKitDOMElement *button,
@@ -1091,11 +1104,10 @@ toggle_address_visibility (WebKitDOMElement *button,
 
        webkit_dom_html_image_element_set_src (
                WEBKIT_DOM_HTML_IMAGE_ELEMENT (button), path);
-
 }
 
 static void
-setup_DOM_bindings (GObject *object,
+setup_dom_bindings (GObject *object,
                     GParamSpec *pspec,
                     gpointer user_data)
 {
@@ -1605,7 +1617,7 @@ e_mail_display_init (EMailDisplay *display)
        main_frame = webkit_web_view_get_main_frame (WEBKIT_WEB_VIEW (display));
        g_signal_connect (
                main_frame, "notify::load-status",
-               G_CALLBACK (setup_DOM_bindings), NULL);
+               G_CALLBACK (setup_dom_bindings), NULL);
        g_signal_connect (
                main_frame, "notify::load-status",
                G_CALLBACK (mail_parts_bind_dom), NULL);
@@ -1951,8 +1963,10 @@ e_mail_display_set_status (EMailDisplay *display,
        g_return_if_fail (E_IS_MAIL_DISPLAY (display));
 
        str = g_strdup_printf (
-               "<!DOCTYPE HTML>\n<html>\n"
-               "<head>\n<meta name=\"generator\" content=\"Evolution Mail Component\" />\n"
+               "<!DOCTYPE HTML>\n"
+               "<html>\n"
+               "<head>\n"
+               "<meta name=\"generator\" content=\"Evolution Mail\"/>\n"
                "<title>Evolution Mail Display</title>\n"
                "</head>\n"
                "<body bgcolor=\"#%06x\" text=\"#%06x\">"
@@ -1991,7 +2005,7 @@ mail_display_get_frame_selection_text (WebKitDOMElement *iframe)
        gulong ii, length;
 
        document = webkit_dom_html_iframe_element_get_content_document (
-                       WEBKIT_DOM_HTML_IFRAME_ELEMENT (iframe));
+               WEBKIT_DOM_HTML_IFRAME_ELEMENT (iframe));
        window = webkit_dom_document_get_default_view (document);
        selection = webkit_dom_dom_window_get_selection (window);
        if (selection && (webkit_dom_dom_selection_get_range_count (selection) > 0)) {
diff --git a/mail/e-mail-display.h b/mail/e-mail-display.h
index 1acae83..fdc7ea5 100644
--- a/mail/e-mail-display.h
+++ b/mail/e-mail-display.h
@@ -61,51 +61,41 @@ struct _EMailDisplayClass {
 
 };
 
-GType                  e_mail_display_get_type         (void);
-
-void                   e_mail_display_set_mode         (EMailDisplay *display,
-                                                        EMailFormatterMode mode);
-EMailFormatterMode     e_mail_display_get_mode         (EMailDisplay *display);
-
-EMailFormatter *       e_mail_display_get_formatter    (EMailDisplay *display);
-
-EMailPartList *                e_mail_display_get_parts_list   (EMailDisplay *display);
-
-void                   e_mail_display_set_parts_list   (EMailDisplay *display,
-                                                        EMailPartList *parts_list);
-
-void                   e_mail_display_set_headers_collapsable
-                                                       (EMailDisplay *display,
-                                                        gboolean collapsable);
-gboolean               e_mail_display_get_headers_collapsable
-                                                       (EMailDisplay *display);
-void                   e_mail_display_set_headers_collapsed
-                                                       (EMailDisplay *display,
-                                                        gboolean collapsed);
-gboolean               e_mail_display_get_headers_collapsed
-                                                       (EMailDisplay *display);
-
-void                   e_mail_display_load             (EMailDisplay *display,
-                                                        const gchar *msg_uri);
-void                   e_mail_display_reload           (EMailDisplay *display);
-
-GtkAction *            e_mail_display_get_action       (EMailDisplay *display,
-                                                        const gchar *action_name);
-
-void                   e_mail_display_set_status       (EMailDisplay *display,
-                                                        const gchar *status);
-
-gchar *                        e_mail_display_get_selection_plain_text
-                                                       (EMailDisplay *display);
-
-void                    e_mail_display_load_images      (EMailDisplay *display);
-
-void                    e_mail_display_set_force_load_images
-                                                        (EMailDisplay *display,
-                                                         gboolean force_load_images);
-
-void                   e_mail_display_set_charset      (EMailDisplay *display,
-                                                        const gchar *charset);
+GType          e_mail_display_get_type         (void);
+EMailFormatterMode
+               e_mail_display_get_mode         (EMailDisplay *display);
+void           e_mail_display_set_mode         (EMailDisplay *display,
+                                                EMailFormatterMode mode);
+EMailFormatter *
+               e_mail_display_get_formatter    (EMailDisplay *display);
+EMailPartList *        e_mail_display_get_parts_list   (EMailDisplay *display);
+void           e_mail_display_set_parts_list   (EMailDisplay *display,
+                                                EMailPartList *parts_list);
+gboolean       e_mail_display_get_headers_collapsable
+                                               (EMailDisplay *display);
+void           e_mail_display_set_headers_collapsable
+                                               (EMailDisplay *display,
+                                                gboolean collapsable);
+gboolean       e_mail_display_get_headers_collapsed
+                                               (EMailDisplay *display);
+void           e_mail_display_set_headers_collapsed
+                                               (EMailDisplay *display,
+                                                gboolean collapsed);
+void           e_mail_display_load             (EMailDisplay *display,
+                                                const gchar *msg_uri);
+void           e_mail_display_reload           (EMailDisplay *display);
+GtkAction *    e_mail_display_get_action       (EMailDisplay *display,
+                                                const gchar *action_name);
+void           e_mail_display_set_status       (EMailDisplay *display,
+                                                const gchar *status);
+gchar *                e_mail_display_get_selection_plain_text
+                                               (EMailDisplay *display);
+void           e_mail_display_load_images      (EMailDisplay *display);
+void           e_mail_display_set_force_load_images
+                                               (EMailDisplay *display,
+                                                gboolean force_load_images);
+void           e_mail_display_set_charset      (EMailDisplay *display,
+                                                const gchar *charset);
 
 G_END_DECLS
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]