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 {
29 #define MODEST_EDITOR_WINDOW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
30 MODEST_TYPE_EDITOR_WINDOW, \
31 ModestEditorWindowPrivate))
33 static GObjectClass *parent_class = NULL;
35 /* uncomment the following if you have defined any signals */
36 /* static guint signals[LAST_SIGNAL] = {0}; */
39 modest_editor_window_get_type (void)
41 static GType my_type = 0;
43 static const GTypeInfo my_info = {
44 sizeof(ModestEditorWindowClass),
46 NULL, /* base finalize */
47 (GClassInitFunc) modest_editor_window_class_init,
48 NULL, /* class finalize */
49 NULL, /* class data */
50 sizeof(ModestEditorWindow),
52 (GInstanceInitFunc) modest_editor_window_init,
54 my_type = g_type_register_static (G_TYPE_OBJECT,
62 modest_editor_window_class_init (ModestEditorWindowClass *klass)
64 GObjectClass *gobject_class;
65 gobject_class = (GObjectClass*) klass;
67 parent_class = g_type_class_peek_parent (klass);
68 gobject_class->finalize = modest_editor_window_finalize;
70 g_type_class_add_private (gobject_class, sizeof(ModestEditorWindowPrivate));
75 modest_editor_window_init (ModestEditorWindow *obj)
77 ModestEditorWindowPrivate *priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(obj);
79 priv->user_data = NULL;
80 priv->modified = FALSE;
81 priv->attachments = NULL;
82 priv->identity = NULL;
83 priv->transport = NULL;
88 modest_editor_window_finalize (GObject *obj)
90 ModestEditorWindowPrivate *priv;
92 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(obj);
95 g_free(priv->user_data);
97 modest_editor_window_set_attachments(MODEST_EDITOR_WINDOW(obj), NULL);
98 g_free(priv->identity);
99 g_free(priv->transport);
100 g_object_unref (MODEST_EDITOR_WINDOW(obj)->window);
101 MODEST_EDITOR_WINDOW(obj)->window = NULL;
103 G_OBJECT_CLASS(parent_class)->finalize (obj);
107 modest_editor_window_new (ModestUI *ui)
110 ModestEditorWindowPrivate *priv;
114 self = G_OBJECT(g_object_new(MODEST_TYPE_EDITOR_WINDOW, NULL));
115 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(self);
117 /* for now create a local test-window */
120 edit_win = modest_ui_new_editor_window(ui, &data);
125 g_message("editor window user data is emtpy");
127 MODEST_EDITOR_WINDOW(self)->window = edit_win;
128 priv->user_data = data;
134 * return user defined data from a ModestEditorWindow instance
135 * like e.g. a refernce to a GladeXML*
137 gpointer modest_editor_window_get_data(ModestEditorWindow *edit_win)
139 ModestEditorWindowPrivate *priv;
144 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
146 // g_message("get priv->data = %p", priv->user_data);
148 return priv->user_data;
151 gboolean modest_editor_window_set_modified(ModestEditorWindow *edit_win, gboolean modified)
153 ModestEditorWindowPrivate *priv;
158 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
160 priv->modified = modified;
162 return priv->modified;
165 gboolean modest_editor_window_get_modified(ModestEditorWindow *edit_win)
167 ModestEditorWindowPrivate *priv;
172 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
174 // g_message("get priv->data = %p", priv->user_data);
176 return priv->modified;
179 gboolean modest_editor_window_set_to_header(ModestEditorWindow *edit_win, const gchar *to)
181 ModestEditorWindowPrivate *priv;
186 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
188 return modest_ui_editor_window_set_to_header(to, priv->user_data);
192 gboolean modest_editor_window_set_cc_header(ModestEditorWindow *edit_win, const gchar *cc)
194 ModestEditorWindowPrivate *priv;
199 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
201 return modest_ui_editor_window_set_cc_header(cc, priv->user_data);
204 gboolean modest_editor_window_set_bcc_header(ModestEditorWindow *edit_win, const gchar *bcc)
206 ModestEditorWindowPrivate *priv;
211 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
213 return modest_ui_editor_window_set_bcc_header(bcc, priv->user_data);
216 gboolean modest_editor_window_set_subject_header(ModestEditorWindow *edit_win, const gchar *subject)
218 ModestEditorWindowPrivate *priv;
223 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
225 return modest_ui_editor_window_set_subject_header(subject, priv->user_data);
228 gboolean modest_editor_window_set_body(ModestEditorWindow *edit_win, const gchar *body)
230 ModestEditorWindowPrivate *priv;
235 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
237 return modest_ui_editor_window_set_body(body, priv->user_data);
241 gboolean modest_editor_window_attach_file(ModestEditorWindow *edit_win, ModestTnyAttachment *attachment)
243 ModestEditorWindowPrivate *priv;
247 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
249 priv->attachments = g_list_append(
253 return modest_ui_editor_window_update_attachments(priv->user_data);
256 GList * modest_editor_window_set_attachments(ModestEditorWindow *edit_win, const GList* attachments)
258 ModestEditorWindowPrivate *priv;
261 g_return_val_if_fail(edit_win, NULL);
263 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
265 modest_tny_attachment_free_list(priv->attachments);
266 priv->attachments = g_list_copy((GList *)attachments);
267 for (pos = priv->attachments ; pos ; pos = pos->next )
268 g_object_ref(pos->data);
269 return priv->attachments;
272 GList * modest_editor_window_get_attachments(ModestEditorWindow *edit_win)
274 ModestEditorWindowPrivate *priv;
276 g_return_val_if_fail(edit_win, NULL);
278 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
279 return priv->attachments;
284 modest_editor_window_set_identity(ModestEditorWindow *edit_win, const gchar *identity)
286 ModestEditorWindowPrivate *priv;
288 g_return_if_fail(edit_win);
290 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
292 g_free(priv->identity);
293 priv->identity = g_strdup(identity);
298 modest_editor_window_get_identity(ModestEditorWindow *edit_win)
300 ModestEditorWindowPrivate *priv;
302 g_return_val_if_fail(edit_win, NULL);
304 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
306 return priv->identity;
311 modest_editor_window_set_transport(ModestEditorWindow *edit_win, const gchar *transport)
313 ModestEditorWindowPrivate *priv;
315 g_return_if_fail(edit_win);
317 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
319 g_free(priv->transport);
320 priv->transport = g_strdup(transport);
325 modest_editor_window_get_transport(ModestEditorWindow *edit_win)
327 ModestEditorWindowPrivate *priv;
329 g_return_val_if_fail(edit_win, NULL);
331 priv = MODEST_EDITOR_WINDOW_GET_PRIVATE(edit_win);
333 return priv->transport;