[anjal] Support forwarding of mails
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Support forwarding of mails
- Date: Mon, 20 Jul 2009 09:00:08 +0000 (UTC)
commit 95841f924c4a97142a647ca68741fe4e4f90a692
Author: Srinivasa Ragavan <sragavan novell com>
Date: Mon Jul 20 14:29:21 2009 +0530
Support forwarding of mails
src/mail-conv-view.c | 8 ++++++--
src/mail-conv-view.h | 2 +-
src/mail-folder-view.c | 6 +++---
src/mail-message-view.c | 20 +++++++++++++++++---
src/mail-message-view.h | 2 +-
5 files changed, 28 insertions(+), 10 deletions(-)
---
diff --git a/src/mail-conv-view.c b/src/mail-conv-view.c
index 847e4c7..437454a 100644
--- a/src/mail-conv-view.c
+++ b/src/mail-conv-view.c
@@ -46,6 +46,7 @@ struct _MailConvViewPrivate {
gint position;
gboolean once;
MailMessageView *last_child;
+ char *folder_uri;
};
static void
@@ -66,6 +67,7 @@ mail_conv_view_finalize (GObject *object)
MailConvView *shell = (MailConvView *)object;
MailConvViewPrivate *priv = shell->priv;
+ g_free (priv->folder_uri);
g_free (priv);
G_OBJECT_CLASS (mail_conv_view_parent_class)->finalize (object);
@@ -363,7 +365,7 @@ mcv_msg_load_chain (MailMessageView *mmv, MailConvView *mcv)
}
void
-mail_conv_view_set_thread (MailConvView *mcv, CamelFolder *folder, GPtrArray *array)
+mail_conv_view_set_thread (MailConvView *mcv, CamelFolder *folder, const char *uri, GPtrArray *array)
{
GtkWidget *tmp = NULL;
int i, j;
@@ -372,6 +374,8 @@ mail_conv_view_set_thread (MailConvView *mcv, CamelFolder *folder, GPtrArray *ar
GtkWidget *unread = NULL;
gboolean last_mail_shown = FALSE;
+ mcv->priv->folder_uri = g_strdup(uri);
+
if (mcv->child_box) {
tmp = mcv->child_box;
gtk_widget_hide (tmp);
@@ -395,7 +399,7 @@ mail_conv_view_set_thread (MailConvView *mcv, CamelFolder *folder, GPtrArray *ar
gtk_box_pack_start ((GtkBox *)mcv->child_box, child, FALSE, FALSE, 4);
gtk_widget_show (child);
- mail_message_view_set_message ((MailMessageView *)child, folder, array->pdata[i], i == (array->len -1));
+ mail_message_view_set_message ((MailMessageView *)child, folder, uri, array->pdata[i], i == (array->len -1));
g_signal_connect (child, "message-selected", G_CALLBACK(mcv_message_selected), mcv);
g_signal_connect (child, "message-removed", G_CALLBACK(mcv_message_removed), mcv);
g_signal_connect (child, "message-reply", G_CALLBACK(mcv_message_reply), mcv);
diff --git a/src/mail-conv-view.h b/src/mail-conv-view.h
index 301d235..9a0492e 100644
--- a/src/mail-conv-view.h
+++ b/src/mail-conv-view.h
@@ -61,7 +61,7 @@ typedef struct _MailConvViewClass {
} MailConvViewClass;
MailConvView * mail_conv_view_new (void);
-void mail_conv_view_set_thread (MailConvView *, CamelFolder *folder, GPtrArray *);
+void mail_conv_view_set_thread (MailConvView *, CamelFolder *folder, const char *uri, GPtrArray *);
void mail_conv_view_activate (MailConvView *mcv, GtkWidget *tree, GtkWidget *folder_tree, GtkWidget *check_mail, GtkWidget *sort_by, gboolean act);
GtkWidget *mail_conv_view_get_tab_widget (MailConvView *);
#endif
diff --git a/src/mail-folder-view.c b/src/mail-folder-view.c
index f99ee29..a6b218e 100644
--- a/src/mail-folder-view.c
+++ b/src/mail-folder-view.c
@@ -1006,7 +1006,7 @@ mfv_popup_open_new_tab (EPopup *ep, EPopupItem *pitem, void *data)
if (!mcv)
return;
- mail_conv_view_set_thread (mcv, mfv->priv->folder, uids);
+ mail_conv_view_set_thread (mcv, mfv->priv->folder, mfv->uri, uids);
}
static void
@@ -1179,7 +1179,7 @@ mfv_button_clicked (GtkWidget *w, GdkEventButton *event, MailFolderView *mfv)
if (outgoing)
mfv_open_composer (mfv, (char *)uids->pdata[0]);
else
- mail_conv_view_set_thread (mcv, mfv->priv->folder, uids);
+ mail_conv_view_set_thread (mcv, mfv->priv->folder, mfv->uri, uids);
}
gtk_tree_path_free(path);
}
@@ -1227,7 +1227,7 @@ mfv_message_activated (GtkTreeView *tree_view, GtkTreePath *path, G
/* FIXME: Handle 'Sent' messages */
if (!outgoing)
- mail_conv_view_set_thread (shell->mail, shell->priv->folder, msgs);
+ mail_conv_view_set_thread (shell->mail, shell->priv->folder, shell->uri, msgs);
else
mfv_open_composer(shell, msgs->pdata[0]);
}
diff --git a/src/mail-message-view.c b/src/mail-message-view.c
index b02394a..8e12263 100644
--- a/src/mail-message-view.c
+++ b/src/mail-message-view.c
@@ -77,6 +77,8 @@ struct _MailMessageViewPrivate {
GtkWidget *attach_area;
GtkWidget *html_headers;
GtkWidget *table_headers;
+
+ char *folder_uri;
};
G_DEFINE_TYPE (MailMessageView, mail_message_view, GTK_TYPE_VBOX)
@@ -126,6 +128,7 @@ mail_message_view_finalize (GObject *object)
gtk_widget_destroy (shell->composer);
g_object_unref (shell->efwd);
g_free ((char *)priv->uid);
+ g_free (priv->folder_uri);
g_free (priv->normal[0]);
g_free (priv->normal[1]);
g_free (priv->bold[0]);
@@ -409,6 +412,13 @@ discard_composer_cb (GtkWidget *w, MailMessageView *mmv)
gtk_widget_hide (mmv->comp_view);
gtk_widget_hide (mmv->discard);
gtk_widget_hide (mmv->pop_out);
+ mmv->composer = NULL;
+ gtk_widget_destroy (mmv->frame);
+ mmv->frame = gtk_frame_new (NULL);
+ gtk_frame_set_shadow_type ((GtkFrame *)mmv->frame, GTK_SHADOW_IN);
+ gtk_widget_destroy(mmv->cbox);
+ mmv->cbox = gtk_hbox_new (FALSE, 0);
+
/* FIXME: Destroy the composer in here */
}
@@ -479,7 +489,10 @@ construct_reply_composer (MailMessageView *mmv, int mode)
GtkWidget *box = gtk_vbox_new (FALSE, 0);
gtk_widget_show(box);
- mmv->composer = (GtkWidget *)em_utils_reply_to_message (mmv->priv->folder, mmv->priv->uid, mmv->priv->msg, mode, NULL);
+ if (mode != -1)
+ mmv->composer = (GtkWidget *)em_utils_reply_to_message (mmv->priv->folder, mmv->priv->uid, mmv->priv->msg, mode, NULL);
+ else
+ mmv->composer = (GtkWidget *)em_utils_forward_message (mmv->priv->msg, mmv->priv->folder_uri);
mmv->comp_view = g_object_get_data((GObject *)mmv->composer,"vbox");
gtk_widget_reparent (mmv->comp_view, box);
gtk_widget_set_size_request (mmv->comp_view, -1, 400);
@@ -524,7 +537,7 @@ invoke_reply_all_composer_cb (GtkWidget *w, MailMessageView *mmv)
static void
invoke_forward_composer_cb (GtkWidget *w, MailMessageView *mmv)
{
-
+ construct_reply_composer (mmv, -1); /* Hack this to treat as Forward*/
}
static void
@@ -1058,7 +1071,7 @@ unread_leave(GtkWidget *widget, GdkEventCrossing *event, gpointer user_data)
}
void
-mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, const char *uid, gboolean show_composer)
+mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, const char *uri, const char *uid, gboolean show_composer)
{
GtkWidget *tmp, *menu;
GdkPixbuf *img;
@@ -1077,6 +1090,7 @@ mail_message_view_set_message (MailMessageView *mmview, CamelFolder *folder, con
/* FIXME: Ref & Use */
mmview->priv->uid = g_strdup(uid);
mmview->priv->folder = folder;
+ mmview->priv->folder_uri = g_strdup (uri);
box = gtk_vbox_new (FALSE, 0);
gtk_widget_show (box);
diff --git a/src/mail-message-view.h b/src/mail-message-view.h
index 6707a12..7199c95 100644
--- a/src/mail-message-view.h
+++ b/src/mail-message-view.h
@@ -74,7 +74,7 @@ typedef struct _MailMessageViewClass {
} MailMessageViewClass;
MailMessageView * mail_message_view_new (void);
-void mail_message_view_set_message (MailMessageView *mmview, struct _CamelFolder *folder, const char *uid, gboolean show_composer);
+void mail_message_view_set_message (MailMessageView *mmview, struct _CamelFolder *folder,const char *uri, const char *uid, gboolean show_composer);
GtkWidget * mail_message_view_create_webview (MailMessageView *mmv, GtkWidget *box);
CamelStream * mail_message_view_create_webstream (gpointer web, GtkWidget *w);
GtkWidget * mail_message_view_get_focus_widget (MailMessageView *mmv);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]