g_warning ("failed to create message view");
return FALSE;
}
+ g_signal_connect(G_OBJECT(message_view), "on_mailto_clicked",
+ G_CALLBACK(ui_on_mailto_clicked), modest_ui);
mail_paned = glade_xml_get_widget (priv->glade_xml, "mail_paned");
gtk_paned_add2 (GTK_PANED(mail_paned), message_view);
new_editor_with_presets(modest_ui, "", "", "", "", "", NULL);
}
+void
+ui_on_mailto_clicked (GtkWidget *widget, const gchar *uri, gpointer user_data)
+{
+ ModestUI *modest_ui = (ModestUI *) user_data;
+
+ new_editor_with_presets(modest_ui, uri, "", "", "", "", NULL);
+}
+
void
quoted_send_msg (ModestUI *modest_ui, quoted_send_type qstype)
*/
void on_new_mail_clicked (GtkWidget *widget, gpointer user_data);
+void ui_on_mailto_clicked (GtkWidget *widget, const gchar * uri, gpointer user_data);
#endif /* _MODEST_UI_MESSAGE_EDITOR_H */
g_warning ("failed to create message view");
return FALSE;
}
-
+ g_signal_connect(G_OBJECT(message_view), "on_mailto_clicked",
+ G_CALLBACK(ui_on_mailto_clicked), modest_ui);
+
mail_paned = glade_xml_get_widget (priv->glade_xml, "mail_paned");
gtk_paned_add2 (GTK_PANED(mail_paned), message_view);
new_editor_with_presets(modest_ui, "", "", "", "", "", NULL);
}
+void
+ui_on_mailto_clicked (GtkWidget *widget, const gchar *uri, gpointer user_data)
+{
+ ModestUI *modest_ui = (ModestUI *) user_data;
+
+ new_editor_with_presets(modest_ui, uri, "", "", "", "", NULL);
+}
+
void
quoted_send_msg (ModestUI *modest_ui, quoted_send_type qstype)
body,
attachments);
- modest_editor_window_set_attachments(modest_editwin, NULL);
+ modest_editor_window_set_attachments(modest_editwin, NULL); /* This unrefs them, too. */
g_free (body);
g_object_unref (G_OBJECT(actions));
*/
void on_new_mail_clicked (GtkWidget *widget, gpointer user_data);
+void ui_on_mailto_clicked (GtkWidget *widget, const gchar * uri, gpointer user_data);
#endif /* _MODEST_UI_MESSAGE_EDITOR_H */
#define ATTACHMENT_ID_INLINE "attachment-inline"
#define ATTACHMENT_ID_LINK "attachment-link"
+#define PREFIX_LINK_EMAIL "mailto:"
gint virtual_filename_get_pos(const gchar *filename);
/*
/* list my signals */
enum {
- /* MY_SIGNAL_1, */
+ MAILTO_CLICKED_SIGNAL,
/* MY_SIGNAL_2, */
LAST_SIGNAL
};
static GtkContainerClass *parent_class = NULL;
/* uncomment the following if you have defined any signals */
-/* static guint signals[LAST_SIGNAL] = {0}; */
+static guint signals[LAST_SIGNAL] = {0};
GType
modest_tny_msg_view_get_type (void)
gobject_class->finalize = modest_tny_msg_view_finalize;
g_type_class_add_private (gobject_class, sizeof(ModestTnyMsgViewPrivate));
+
+ signals[MAILTO_CLICKED_SIGNAL] =
+ g_signal_new ("on_mailto_clicked",
+ G_TYPE_FROM_CLASS (gobject_class),
+ G_SIGNAL_RUN_FIRST,
+ G_STRUCT_OFFSET(ModestTnyMsgViewClass, mailto_clicked),
+ NULL, NULL,
+ g_cclosure_marshal_VOID__STRING,
+ G_TYPE_NONE, 1, G_TYPE_STRING/*, 1, G_TYPE_POINTER*/);
}
static void
on_link_clicked (GtkWidget *widget, const gchar *uri,
ModestTnyMsgView *msg_view)
{
-
- if (g_str_has_prefix(uri, ATTACHMENT_ID_LINK)) {
+ if (g_str_has_prefix(uri, PREFIX_LINK_EMAIL)) {
+ gchar *s, *p;
+ /* skip over "mailto:" */
+ s = g_strdup(uri + strlen(PREFIX_LINK_EMAIL));
+ /* strip ?subject=... and the like */
+ for (p = s; p[0]; p++)
+ if (p[0] == '?') {
+ p[0] = 0;
+ break;
+ }
+ g_signal_emit(msg_view, signals[MAILTO_CLICKED_SIGNAL], 0, s);
+ g_free(s);
+ return TRUE;
+ } else if (g_str_has_prefix(uri, ATTACHMENT_ID_LINK)) {
/* save or open attachment */
g_message ("link-to-save: %s", uri); /* FIXME */
return TRUE;
struct _ModestTnyMsgViewClass {
GtkScrolledWindowClass parent_class;
+ void (*mailto_clicked) (GtkWidget *widget, gpointer user_data);
};