* fixed bug which crashed modest after sending an email with attachment(s). The attac...
[modest] / src / modest-editor-window.c
index 72ef31b..7c36918 100644 (file)
@@ -22,6 +22,8 @@ struct _ModestEditorWindowPrivate {
        gpointer user_data;
        gboolean modified;
        GList *attachments;
+       gchar *identity;
+       gchar *transport;
 };
 #define MODEST_EDITOR_WINDOW_GET_PRIVATE(o)      (G_TYPE_INSTANCE_GET_PRIVATE((o), \
                                                   MODEST_TYPE_EDITOR_WINDOW, \
@@ -82,6 +84,8 @@ modest_editor_window_init (ModestEditorWindow *obj)
        priv->user_data = NULL;
        priv->modified = FALSE;
        priv->attachments = NULL;
+       priv->identity = NULL;
+       priv->transport = NULL;
 }
 
 static void
@@ -94,6 +98,10 @@ modest_editor_window_finalize (GObject *obj)
        if (priv->user_data)
                g_free(priv->user_data);
 
+       modest_editor_window_set_attachments(MODEST_EDITOR_WINDOW(obj), NULL);
+       g_free(priv->identity);
+       g_free(priv->transport);
+       
        G_OBJECT_CLASS(parent_class)->finalize (obj);
 }
 
@@ -233,7 +241,7 @@ gboolean modest_editor_window_set_body(ModestEditorWindow *edit_win, const gchar
 }
 
 
-gboolean modest_editor_window_attach_file(ModestEditorWindow *edit_win, const gchar *filename)
+gboolean modest_editor_window_attach_file(ModestEditorWindow *edit_win, ModestTnyAttachment *attachment)
 {
        ModestEditorWindowPrivate *priv;
 
@@ -243,20 +251,24 @@ gboolean modest_editor_window_attach_file(ModestEditorWindow *edit_win, const gc
        
        priv->attachments = g_list_append(
                                                        priv->attachments, 
-                                                       g_strdup(filename));
+                                                       attachment);
        
        return modest_ui_editor_window_update_attachments(priv->user_data);
 }
 
-GList * modest_editor_window_set_attachments(ModestEditorWindow *edit_win, GList* attachments)
+GList * modest_editor_window_set_attachments(ModestEditorWindow *edit_win, const GList* attachments)
 {
        ModestEditorWindowPrivate *priv;
+       GList *pos;
 
        g_return_val_if_fail(edit_win, NULL);
        
        priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
 
-       priv->attachments = attachments;
+       modest_tny_attachment_free_list(priv->attachments);
+       priv->attachments = g_list_copy((GList *)attachments);
+       for (pos = priv->attachments ; pos ; pos = pos->next )
+               g_object_ref(pos->data);
        return priv->attachments;
 }
 
@@ -268,4 +280,58 @@ GList * modest_editor_window_get_attachments(ModestEditorWindow *edit_win)
        
        priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
        return priv->attachments;
+}
+
+
+void
+modest_editor_window_set_identity(ModestEditorWindow *edit_win, const gchar *identity)
+{
+       ModestEditorWindowPrivate *priv;
+
+       g_return_if_fail(edit_win);
+
+       priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
+
+       g_free(priv->identity);
+       priv->identity = g_strdup(identity);
+}
+
+
+const gchar *
+modest_editor_window_get_identity(ModestEditorWindow *edit_win)
+{
+       ModestEditorWindowPrivate *priv;
+
+       g_return_val_if_fail(edit_win, NULL);
+
+       priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
+
+       return priv->identity;
+}      
+
+
+void
+modest_editor_window_set_transport(ModestEditorWindow *edit_win, const gchar *transport)
+{
+       ModestEditorWindowPrivate *priv;
+
+       g_return_if_fail(edit_win);
+
+       priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
+
+       g_free(priv->transport);
+       priv->transport = g_strdup(transport);
+}
+
+
+const gchar *
+modest_editor_window_get_transport(ModestEditorWindow *edit_win)
+{
+       ModestEditorWindowPrivate *priv;
+
+       g_return_val_if_fail(edit_win, NULL);
+
+       priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
+
+       return priv->transport;
 }