Added msg view window reload feature. Now we can force a message reload
[modest] / src / gnome / modest-msg-edit-window.c
index ecff6bb..1fe4b9e 100644 (file)
@@ -89,6 +89,9 @@ struct _ModestMsgEditWindowPrivate {
        TnyMsg      *outbox_msg;
        gchar       *msg_uid;
 
+       gchar       *references;
+       gchar       *in_reply_to;
+
        gboolean    sent;
 };
 
@@ -179,6 +182,8 @@ modest_msg_edit_window_init (ModestMsgEditWindow *obj)
        priv->draft_msg = NULL;
        priv->outbox_msg = NULL;
        priv->msg_uid = NULL;
+       priv->references = NULL;
+       priv->in_reply_to = NULL;
 }
 
 /** 
@@ -196,7 +201,7 @@ get_transports (void)
        while (cursor) {
                gchar *account_name = cursor->data ? g_strdup((gchar*)cursor->data) : NULL;
                gchar *from_string  = modest_account_mgr_get_from_string (account_mgr,
-                                                                         account_name);
+                                                                         account_name, NULL);
                if (!from_string)  {
                        /* something went wrong: ignore this one */
                        g_free (account_name);
@@ -339,6 +344,8 @@ modest_msg_edit_window_finalize (GObject *obj)
                priv->outbox_msg = NULL;
        }
        g_free (priv->msg_uid);
+       g_free (priv->references);
+       g_free (priv->in_reply_to);
        
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
@@ -381,7 +388,7 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg)
 {
        TnyHeader *header;
        TnyFolder *msg_folder;
-       const gchar *to, *cc, *bcc, *subject;
+       gchar *to, *cc, *bcc, *subject;
        ModestMsgEditWindowPrivate *priv;
        gchar *body;
        
@@ -391,10 +398,10 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg)
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (self);
 
        header  = tny_msg_get_header (msg);
-       to      = tny_header_get_to (header);
-       cc      = tny_header_get_cc (header);
-       bcc     = tny_header_get_bcc (header);
-       subject = tny_header_get_subject (header);
+       to      = tny_header_dup_to (header);
+       cc      = tny_header_dup_cc (header);
+       bcc     = tny_header_dup_bcc (header);
+       subject = tny_header_dup_subject (header);
 
        if (to)
                gtk_entry_set_text (GTK_ENTRY(priv->to_field), to);
@@ -405,6 +412,8 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg)
        if (subject)
                gtk_entry_set_text (GTK_ENTRY(priv->subject_field), subject);
 
+       modest_tny_msg_get_references (TNY_MSG (msg), NULL, &(priv->references), &(priv->in_reply_to));
+
        modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), msg);
        priv->attachments = modest_attachments_view_get_attachments (MODEST_ATTACHMENTS_VIEW (priv->attachments_view));
        update_next_cid (self, priv->attachments);
@@ -440,11 +449,17 @@ set_msg (ModestMsgEditWindow *self, TnyMsg *msg)
                }
                g_object_unref (msg_folder);
        }
+
+       g_free (subject);
+       g_free (to);
+       g_free (cc);
+       g_free (bcc);
 }
 
 
 ModestWindow *
 modest_msg_edit_window_new (TnyMsg *msg, const gchar *account,
+                           const gchar *mailbox,
                            gboolean preserve_is_rich)
 {
        ModestMsgEditWindow *self;
@@ -579,8 +594,8 @@ modest_msg_edit_window_get_msg_data (ModestMsgEditWindow *edit_window)
        
        account_name = (gchar*)modest_combo_box_get_active_id (MODEST_COMBO_BOX (priv->from_field));
        if (account_name) 
-               from_string = modest_account_mgr_get_from_string (
-                       modest_runtime_get_account_mgr(), account_name);
+               from_string = modest_account_mgr_get_from_string (modest_runtime_get_account_mgr(), 
+                                                                 account_name, NULL);
        if (!from_string) {
                g_printerr ("modest: cannot get from string\n");
                return NULL;
@@ -594,6 +609,8 @@ modest_msg_edit_window_get_msg_data (ModestMsgEditWindow *edit_window)
        data->cc      =  g_strdup ( gtk_entry_get_text (GTK_ENTRY(priv->cc_field)));
        data->bcc     =  g_strdup ( gtk_entry_get_text (GTK_ENTRY(priv->bcc_field)));
        data->subject =  g_strdup ( gtk_entry_get_text (GTK_ENTRY(priv->subject_field)));
+       data->references = g_strdup (priv->references);
+       data->in_reply_to = g_strdup (priv->in_reply_to);
 
 /*     GtkTextBuffer *buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (priv->msg_body)); */
 /*     GtkTextIter b, e; */
@@ -658,6 +675,8 @@ modest_msg_edit_window_free_msg_data (ModestMsgEditWindow *edit_window,
        g_free (data->subject);
        g_free (data->plain_body);
        g_free (data->html_body);
+       g_free (data->references);
+       g_free (data->in_reply_to);
 
        if (data->draft_msg != NULL) {
                g_object_unref (data->draft_msg);
@@ -796,7 +815,7 @@ modest_msg_edit_window_remove_attachments (ModestMsgEditWindow *window,
                        if (TNY_IS_MSG (part)) {
                                TnyHeader *header = tny_msg_get_header (TNY_MSG (part));
                                if (header) {
-                                       filename = g_strdup (tny_header_get_subject (header));
+                                       filename = tny_header_dup_subject (header);
                                        g_object_unref (header);
                                }
                                if (filename == NULL) {
@@ -816,7 +835,7 @@ modest_msg_edit_window_remove_attachments (ModestMsgEditWindow *window,
                                                              GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, 
                                                              GTK_MESSAGE_QUESTION,
                                                              GTK_BUTTONS_OK_CANCEL,
-                                                             message);
+                                                             "%s", message);
                g_free (message);
                dialog_response = (gtk_dialog_run (GTK_DIALOG (confirmation_dialog))==GTK_RESPONSE_OK);
                gtk_widget_destroy (confirmation_dialog);
@@ -1044,21 +1063,23 @@ modest_msg_edit_window_offer_attach_file           (ModestMsgEditWindow *window)
 
        for (uri_node = uris; uri_node != NULL; uri_node = g_slist_next (uri_node)) {
                const gchar *uri = (const gchar *) uri_node->data;
-               modest_msg_edit_window_attach_file_one (window, uri);
+               modest_msg_edit_window_attach_file_one (window, uri, MODEST_MAX_ATTACHMENT_SIZE);
        }
        g_slist_foreach (uris, (GFunc) g_free, NULL);
        g_slist_free (uris);
 }
 
-void                    
-modest_msg_edit_window_attach_file_one           (ModestMsgEditWindow *window, const gchar *uri)
+GnomeVFSFileSize
+modest_msg_edit_window_attach_file_one (ModestMsgEditWindow *window, 
+                                       const gchar *uri,
+                                       GnomeVFSFileSize allowed_size)
 {
        GnomeVFSHandle *handle = NULL;
        ModestMsgEditWindowPrivate *priv;
        GnomeVFSResult result;
 
-       g_return_if_fail (window);
-       g_return_if_fail (uri);
+       g_return_val_if_fail (window, 0);
+       g_return_val_if_fail (uri, 0);
                
        priv = MODEST_MSG_EDIT_WINDOW_GET_PRIVATE (window);
        
@@ -1113,11 +1134,13 @@ modest_msg_edit_window_attach_file_one           (ModestMsgEditWindow *window, c
                g_object_unref (mime_part);
                gnome_vfs_file_info_unref (info);
        }
+       /* TODO: return proper file size */
+       return 0;
 }
 
 void            
-modest_msg_edit_window_set_draft           (ModestMsgEditWindow *window,
-                                           TnyMsg *draft)
+modest_msg_edit_window_set_draft (ModestMsgEditWindow *window,
+                                 TnyMsg *draft)
 {
        ModestMsgEditWindowPrivate *priv;
        TnyHeader *header = NULL;
@@ -1141,7 +1164,7 @@ modest_msg_edit_window_set_draft           (ModestMsgEditWindow *window,
                }
                priv->msg_uid = modest_tny_folder_get_header_unique_id (header);
                if (GTK_WIDGET_REALIZED (window))
-                       modest_window_mgr_register_window (mgr, MODEST_WINDOW (window));
+                       modest_window_mgr_register_window (mgr, MODEST_WINDOW (window), NULL);
        }
 
        priv->draft_msg = draft;