1 /* modest-editor-window.c */
3 /* insert (c)/licensing information) */
6 #include "modest-editor-window.h"
8 /* 'private'/'protected' functions */
9 static void modest_editor_window_class_init (ModestEditorWindowClass *klass);
10 static void modest_editor_window_init (ModestEditorWindow *obj);
11 static void modest_editor_window_finalize (GObject *obj);
20 typedef struct _ModestEditorWindowPrivate ModestEditorWindowPrivate;
21 struct _ModestEditorWindowPrivate {
28 #define MODEST_EDITOR_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
29 MODEST_TYPE_EDITOR_WINDOW, \
30 ModestEditorWindowPrivate))
32 static GtkWindowClass *parent_class = NULL;
34 /* uncomment the following if you have defined any signals */
35 /* static guint signals[LAST_SIGNAL] = {0}; */
38 modest_editor_window_get_type (void)
40 static GType my_type = 0;
42 static const GTypeInfo my_info = {
43 sizeof(ModestEditorWindowClass),
45 NULL, /* base finalize */
46 (GClassInitFunc) modest_editor_window_class_init,
47 NULL, /* class finalize */
48 NULL, /* class data */
49 sizeof(ModestEditorWindow),
51 (GInstanceInitFunc) modest_editor_window_init,
53 my_type = g_type_register_static (GTK_TYPE_WINDOW,
61 modest_editor_window_class_init (ModestEditorWindowClass *klass)
63 GObjectClass *gobject_class;
64 gobject_class = (GObjectClass*) klass;
66 parent_class = g_type_class_peek_parent (klass);
67 gobject_class->finalize = modest_editor_window_finalize;
69 g_type_class_add_private (gobject_class, sizeof(ModestEditorWindowPrivate));
71 /* signal definitions go here, e.g.: */
72 /* signals[MY_SIGNAL_1] = */
73 /* g_signal_new ("my_signal_1",....); */
74 /* signals[MY_SIGNAL_2] = */
75 /* g_signal_new ("my_signal_2",....); */
80 modest_editor_window_init (ModestEditorWindow *obj)
82 ModestEditorWindowPrivate *priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(obj);
84 priv->user_data = NULL;
85 priv->modified = FALSE;
86 priv->attachments = NULL;
87 priv->identity = NULL;
88 priv->transport = NULL;
92 modest_editor_window_finalize (GObject *obj)
94 ModestEditorWindowPrivate *priv;
96 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(obj);
99 g_free(priv->user_data);
101 modest_editor_window_set_attachments(MODEST_EDITOR_WINDOW(obj), NULL);
102 g_free(priv->identity);
103 g_free(priv->transport);
105 G_OBJECT_CLASS(parent_class)->finalize (obj);
109 modest_editor_window_new (ModestUI *ui)
112 ModestEditorWindowPrivate *priv;
116 self = G_OBJECT(g_object_new(MODEST_TYPE_EDITOR_WINDOW, NULL));
117 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(self);
119 /* for now create a local test-window */
122 w = GTK_WIDGET(modest_ui_new_editor_window(ui, &data));
123 // g_message("new data = %p", data);
127 g_message("editor window user data is emtpy");
129 gtk_container_add(GTK_CONTAINER(self), w);
130 priv->user_data = data;
131 // g_message("new priv->data = %p", priv->user_data);
133 return GTK_WIDGET(self);
137 * return user defined data from a ModestEditorWindow instance
138 * like e.g. a refernce to a GladeXML*
140 gpointer modest_editor_window_get_data(ModestEditorWindow *edit_win)
142 ModestEditorWindowPrivate *priv;
147 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
149 // g_message("get priv->data = %p", priv->user_data);
151 return priv->user_data;
154 gboolean modest_editor_window_set_modified(ModestEditorWindow *edit_win, gboolean modified)
156 ModestEditorWindowPrivate *priv;
161 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
163 priv->modified = modified;
165 return priv->modified;
168 gboolean modest_editor_window_get_modified(ModestEditorWindow *edit_win)
170 ModestEditorWindowPrivate *priv;
175 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
177 // g_message("get priv->data = %p", priv->user_data);
179 return priv->modified;
182 gboolean modest_editor_window_set_to_header(ModestEditorWindow *edit_win, const gchar *to)
184 ModestEditorWindowPrivate *priv;
189 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
191 return modest_ui_editor_window_set_to_header(to, priv->user_data);
195 gboolean modest_editor_window_set_cc_header(ModestEditorWindow *edit_win, const gchar *cc)
197 ModestEditorWindowPrivate *priv;
202 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
204 return modest_ui_editor_window_set_cc_header(cc, priv->user_data);
207 gboolean modest_editor_window_set_bcc_header(ModestEditorWindow *edit_win, const gchar *bcc)
209 ModestEditorWindowPrivate *priv;
214 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
216 return modest_ui_editor_window_set_bcc_header(bcc, priv->user_data);
219 gboolean modest_editor_window_set_subject_header(ModestEditorWindow *edit_win, const gchar *subject)
221 ModestEditorWindowPrivate *priv;
226 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
228 return modest_ui_editor_window_set_subject_header(subject, priv->user_data);
231 gboolean modest_editor_window_set_body(ModestEditorWindow *edit_win, const gchar *body)
233 ModestEditorWindowPrivate *priv;
238 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
240 return modest_ui_editor_window_set_body(body, priv->user_data);
244 gboolean modest_editor_window_attach_file(ModestEditorWindow *edit_win, ModestTnyAttachment *attachment)
246 ModestEditorWindowPrivate *priv;
250 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
252 priv->attachments = g_list_append(
256 return modest_ui_editor_window_update_attachments(priv->user_data);
259 GList * modest_editor_window_set_attachments(ModestEditorWindow *edit_win, const GList* attachments)
261 ModestEditorWindowPrivate *priv;
264 g_return_val_if_fail(edit_win, NULL);
266 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
268 modest_tny_attachment_free_list(priv->attachments);
269 priv->attachments = g_list_copy((GList *)attachments);
270 for (pos = priv->attachments ; pos ; pos = pos->next )
271 g_object_ref(pos->data);
272 return priv->attachments;
275 GList * modest_editor_window_get_attachments(ModestEditorWindow *edit_win)
277 ModestEditorWindowPrivate *priv;
279 g_return_val_if_fail(edit_win, NULL);
281 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
282 return priv->attachments;
287 modest_editor_window_set_identity(ModestEditorWindow *edit_win, const gchar *identity)
289 ModestEditorWindowPrivate *priv;
291 g_return_if_fail(edit_win);
293 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
295 g_free(priv->identity);
296 priv->identity = g_strdup(identity);
301 modest_editor_window_get_identity(ModestEditorWindow *edit_win)
303 ModestEditorWindowPrivate *priv;
305 g_return_val_if_fail(edit_win, NULL);
307 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
309 return priv->identity;
314 modest_editor_window_set_transport(ModestEditorWindow *edit_win, const gchar *transport)
316 ModestEditorWindowPrivate *priv;
318 g_return_if_fail(edit_win);
320 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
322 g_free(priv->transport);
323 priv->transport = g_strdup(transport);
328 modest_editor_window_get_transport(ModestEditorWindow *edit_win)
330 ModestEditorWindowPrivate *priv;
332 g_return_val_if_fail(edit_win, NULL);
334 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
336 return priv->transport;