Modified webpage: now tinymail repository is in gitorious.
[modest] / src / widgets / modest-attachment-view.c
index f77cbc5..bd53bf6 100644 (file)
@@ -94,10 +94,43 @@ static void modest_attachment_view_finalize (GObject *object);
 static void modest_attachment_view_class_init (ModestAttachmentViewClass *klass);
 static void tny_mime_part_view_init (gpointer g, gpointer iface_data);
 
+static void on_notify_style (GObject *obj, GParamSpec *spec, gpointer userdata);
+static void update_style (ModestAttachmentView *self);
 
 
 static void update_filename_request (ModestAttachmentView *self);
 
+static void 
+on_notify_style (GObject *obj, GParamSpec *spec, gpointer userdata)
+{
+       if (strcmp ("style", spec->name) == 0) {
+               update_style (MODEST_ATTACHMENT_VIEW (obj));
+               gtk_widget_queue_draw (GTK_WIDGET (obj));
+       } 
+}
+
+/* This method updates the color (and other style settings) of widgets using secondary text color,
+ * tracking the gtk style */
+static void
+update_style (ModestAttachmentView *self)
+{
+#ifdef MODEST_COMPACT_HEADER_BG
+       GdkColor bg_color;
+       GtkStyle *style;
+       GdkColor *current_bg;
+
+       g_return_if_fail (MODEST_IS_ATTACHMENT_VIEW (self));
+
+       gdk_color_parse (MODEST_COMPACT_HEADER_BG, &bg_color);
+       style = gtk_widget_get_style (GTK_WIDGET (self));
+       current_bg = &(style->bg[GTK_STATE_NORMAL]);
+       if (current_bg->red != bg_color.red || current_bg->blue != bg_color.blue || current_bg->green != bg_color.green)
+               gtk_widget_modify_bg (GTK_WIDGET (self), GTK_STATE_NORMAL, &bg_color);
+#endif
+}
+
+
+
 static void update_size_label (ModestAttachmentView *self)
 {
        ModestAttachmentViewPrivate *priv = MODEST_ATTACHMENT_VIEW_GET_PRIVATE (self);
@@ -267,8 +300,11 @@ modest_attachment_view_set_part_default (TnyMimePartView *self, TnyMimePart *mim
                                gchar *header_content_type;
                                header_content_type = modest_tny_mime_part_get_content_type (mime_part);
                                if ((g_str_has_prefix (header_content_type, "message/rfc822") ||
-                                    g_str_has_prefix (header_content_type, "multipart/") ||
-                                    g_str_has_prefix (header_content_type, "text/"))) {
+                                    g_str_has_prefix (header_content_type, "multipart/"))) {
+                                       file_icon_name = 
+                                               modest_platform_get_file_icon_name (
+                                                       NULL, "message/rfc822", NULL);
+                               } else if (g_str_has_prefix (header_content_type, "text/")) {
                                        file_icon_name = 
                                                modest_platform_get_file_icon_name (
                                                        NULL, tny_mime_part_get_content_type (mime_part), NULL);
@@ -282,13 +318,31 @@ modest_attachment_view_set_part_default (TnyMimePartView *self, TnyMimePart *mim
                        g_object_unref (header);
                }
        } else {
+               gboolean is_other_body = FALSE;
                filename = g_strdup (tny_mime_part_get_filename (mime_part));
+               if (filename == NULL) {
+                       gchar *description;
+                       description = modest_tny_mime_part_get_header_value (mime_part, "Content-Description");
+                       if (description) {
+                               g_strstrip (description);
+                               filename = description;
+                       }
+                       if (!filename || filename[0] == '\0') {
+                               g_free (filename);
+                               filename = g_strdup (_("mail_va_no_subject"));
+                       }
+                       is_other_body = TRUE;
+               }
                if (priv->is_purged) {
                        file_icon_name = modest_platform_get_file_icon_name (NULL, NULL, NULL);
                } else {
-                       file_icon_name = modest_platform_get_file_icon_name (
-                               filename, modest_tny_mime_part_get_content_type (mime_part), NULL);
-                       show_size = TRUE;
+                       if (is_other_body) {
+                               file_icon_name = modest_platform_get_file_icon_name (NULL, "message/rfc822", NULL);
+                       } else {
+                               file_icon_name = modest_platform_get_file_icon_name (
+                                       filename, modest_tny_mime_part_get_content_type (mime_part), NULL);
+                               show_size = TRUE;
+                       }
                }
        }
 
@@ -471,6 +525,11 @@ modest_attachment_view_instance_init (GTypeInstance *instance, gpointer g_class)
 
        GTK_WIDGET_UNSET_FLAGS (GTK_WIDGET (instance), GTK_CAN_FOCUS);
 
+       g_signal_connect (G_OBJECT (instance), "notify::style", G_CALLBACK (on_notify_style), (gpointer) instance);
+
+       update_style (MODEST_ATTACHMENT_VIEW (instance));
+
+
        return;
 }