aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--mail/ChangeLog12
-rw-r--r--mail/folder-browser-factory.c6
-rw-r--r--mail/mail-format.c56
-rw-r--r--mail/mail-ops.c19
-rw-r--r--mail/mail-ops.h2
5 files changed, 90 insertions, 5 deletions
diff --git a/mail/ChangeLog b/mail/ChangeLog
index 34da182243..ee0f155806 100644
--- a/mail/ChangeLog
+++ b/mail/ChangeLog
@@ -1,3 +1,15 @@
+2000-04-23 Dan Winship <danw@helixcode.com>
+
+ * folder-browser-factory.c: rename "send" to "send_msg", to avoid
+ name clash with the tcp function. Connect the "forward" button.
+
+ * mail-ops.c: rename "send" to "send_msg", to avoid name clash
+ with the tcp function. Add forward_msg function.
+
+ * mail-format.c (mail_generate_forward): support function for
+ forward_msg. Pretty much a big kludge right now, pending the
+ attachment/attachment-bar changes.
+
2000-04-22 Dan Winship <danw@helixcode.com>
* mail-display.c (on_url_requested): Change cid expectations to
diff --git a/mail/folder-browser-factory.c b/mail/folder-browser-factory.c
index e86fddd9e9..0f438a7118 100644
--- a/mail/folder-browser-factory.c
+++ b/mail/folder-browser-factory.c
@@ -107,7 +107,7 @@ random_cb (GtkWidget *button, gpointer user_data)
static GnomeUIInfo gnome_toolbar [] = {
GNOMEUIINFO_ITEM_STOCK (N_("New mail"), N_("Check for new mail"), fetch_mail, GNOME_STOCK_PIXMAP_MAIL_RCV),
- GNOMEUIINFO_ITEM_STOCK (N_("Send"), N_("Send a new message"), send, GNOME_STOCK_PIXMAP_MAIL_SND),
+ GNOMEUIINFO_ITEM_STOCK (N_("Send"), N_("Send a new message"), send_msg, GNOME_STOCK_PIXMAP_MAIL_SND),
GNOMEUIINFO_ITEM_STOCK (N_("Find"), N_("Find messages"), random_cb, GNOME_STOCK_PIXMAP_SEARCH),
GNOMEUIINFO_SEPARATOR,
@@ -115,7 +115,7 @@ static GnomeUIInfo gnome_toolbar [] = {
GNOMEUIINFO_ITEM_STOCK (N_("Reply"), N_("Reply to the sender of this message"), reply_to_sender, GNOME_STOCK_PIXMAP_MAIL_RPL),
GNOMEUIINFO_ITEM_STOCK (N_("Reply to All"), N_("Reply to all recipients of this message"), reply_to_all, GNOME_STOCK_PIXMAP_MAIL_RPL),
- GNOMEUIINFO_ITEM_STOCK (N_("Forward"), N_("Forward this message"), random_cb, GNOME_STOCK_PIXMAP_MAIL_FWD),
+ GNOMEUIINFO_ITEM_STOCK (N_("Forward"), N_("Forward this message"), forward_msg, GNOME_STOCK_PIXMAP_MAIL_FWD),
GNOMEUIINFO_SEPARATOR,
@@ -139,7 +139,7 @@ control_activate (BonoboControl *control, BonoboUIHandler *uih)
bonobo_ui_handler_menu_new_item (uih, "/File/Mail", N_("_Mail"),
NULL, -1,
BONOBO_UI_HANDLER_PIXMAP_NONE, NULL,
- 0, 0, send, NULL);
+ 0, 0, send_msg, NULL);
folder_browser = bonobo_control_get_widget (control);
diff --git a/mail/mail-format.c b/mail/mail-format.c
index 5fdf3b2d79..b5aba4ca32 100644
--- a/mail/mail-format.c
+++ b/mail/mail-format.c
@@ -1060,3 +1060,59 @@ mail_generate_reply (CamelMimeMessage *message, gboolean to_all)
return composer;
}
+
+/* This is part of the temporary kludge below. */
+#ifndef HAVE_MKSTEMP
+#include <fcntl.h>
+#include <sys/stat.h>
+#endif
+
+EMsgComposer *
+mail_generate_forward (CamelMimeMessage *mime_message,
+ gboolean forward_as_attachment,
+ gboolean keep_attachments)
+{
+ EMsgComposer *composer;
+ char *tmpfile;
+ int fd;
+ CamelStream *stream;
+
+ if (!forward_as_attachment)
+ g_warning ("Forward as non-attachment not implemented.");
+ if (!keep_attachments)
+ g_warning ("Forwarding without attachments not implemented.");
+
+ /* For now, we kludge by writing out a temp file. Later,
+ * EMsgComposer will support attaching CamelMimeParts directly,
+ * or something. FIXME.
+ */
+ tmpfile = g_strdup ("/tmp/evolution-kludge-XXXX");
+#ifdef HAVE_MKSTEMP
+ fd = mkstemp (tmpfile);
+#else
+ if (mktemp (tmpfile)) {
+ fd = open (tmpfile, O_RDWR | O_CREAT | O_EXCL,
+ S_IRUSR | S_IWUSR);
+ } else
+ fd = -1;
+#endif
+ if (fd == -1) {
+ g_warning ("Couldn't create temp file for forwarding");
+ g_free (tmpfile);
+ return NULL;
+ }
+
+ stream = camel_stream_fs_new_with_fd (fd);
+ camel_data_wrapper_write_to_stream (CAMEL_DATA_WRAPPER (mime_message),
+ stream);
+ camel_stream_close (stream);
+
+ composer = E_MSG_COMPOSER (e_msg_composer_new ());
+ e_msg_composer_attachment_bar_attach (composer->attachment_bar,
+ tmpfile);
+ g_free (tmpfile);
+
+ /* FIXME: should we default a subject? */
+
+ return composer;
+}
diff --git a/mail/mail-ops.c b/mail/mail-ops.c
index 731770c0c2..81724c4f43 100644
--- a/mail/mail-ops.c
+++ b/mail/mail-ops.c
@@ -275,7 +275,7 @@ composer_send_cb (EMsgComposer *composer, gpointer data)
void
-send (GtkWidget *widget, gpointer user_data)
+send_msg (GtkWidget *widget, gpointer user_data)
{
GtkWidget *composer;
@@ -312,3 +312,20 @@ reply_to_all (GtkWidget *button, gpointer user_data)
{
reply (FOLDER_BROWSER (user_data), TRUE);
}
+
+
+void
+forward_msg (GtkWidget *button, gpointer user_data)
+{
+ FolderBrowser *fb;
+ EMsgComposer *composer;
+
+ fb = FOLDER_BROWSER (user_data);
+ composer = mail_generate_forward (fb->mail_display->current_message,
+ TRUE, TRUE);
+
+ gtk_signal_connect (GTK_OBJECT (composer), "send",
+ GTK_SIGNAL_FUNC (composer_send_cb), NULL);
+
+ gtk_widget_show (GTK_WIDGET (composer));
+}
diff --git a/mail/mail-ops.h b/mail/mail-ops.h
index f7f3d3e0c7..86b6ac81ff 100644
--- a/mail/mail-ops.h
+++ b/mail/mail-ops.h
@@ -1,5 +1,5 @@
void fetch_mail (GtkWidget *button, gpointer user_data);
-void send (GtkWidget *button, gpointer user_data);
+void send_msg (GtkWidget *button, gpointer user_data);
void forward_msg (GtkWidget *button, gpointer user_data);
void reply_to_sender (GtkWidget *button, gpointer user_data);
void reply_to_all (GtkWidget *button, gpointer user_data);