with a different body.
static void
-init_window (ModestMsgViewWindow *obj, TnyMsg *msg)
+init_window (ModestMsgViewWindow *obj, TnyMsg *msg, TnyMimePart *other_body)
{
GtkWidget *main_vbox, *scrolled_window;
ModestMsgViewWindowPrivate *priv;
parent_priv = MODEST_WINDOW_GET_PRIVATE(obj);
priv->msg_view = GTK_WIDGET (tny_platform_factory_new_msg_view (modest_tny_platform_factory_get_instance ()));
- tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+ if (other_body) {
+ modest_msg_view_set_msg_with_other_body (MODEST_MSG_VIEW (priv->msg_view), msg, other_body);
+ } else {
+ tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+ }
main_vbox = gtk_vbox_new (FALSE, 0);
gtk_box_pack_start (GTK_BOX(main_vbox), priv->menubar, FALSE, FALSE, 0);
ModestWindow *
-modest_msg_view_window_new_for_attachment (TnyMsg *msg,
- const gchar *modest_account_name,
- const gchar *mailbox, /* ignored */
- const gchar *msg_uid)
+modest_msg_view_window_new_with_other_body (TnyMsg *msg,
+ TnyMimePart *other_body,
+ const gchar *modest_account_name,
+ const gchar *mailbox, /* ignored */
+ const gchar *msg_uid)
{
GObject *obj;
ModestMsgViewWindowPrivate *priv;
gtk_toolbar_set_tooltips (GTK_TOOLBAR (priv->toolbar), TRUE);
/* Init window */
- init_window (MODEST_MSG_VIEW_WINDOW(obj), msg);
+ init_window (MODEST_MSG_VIEW_WINDOW(obj), msg, other_body);
restore_settings (MODEST_WINDOW(obj));
header = tny_msg_get_header (msg);
return MODEST_WINDOW(obj);
}
+ModestWindow *
+modest_msg_view_window_new_for_attachment (TnyMsg *msg,
+ const gchar *modest_account_name,
+ const gchar *mailbox, /* ignored */
+ const gchar *msg_uid)
+{
+
+ return modest_msg_view_new_with_other_body (msg, NULL, modest_account_name, mailbox, msg_uid);
+
+}
+
TnyMsg*
modest_msg_view_window_get_message (ModestMsgViewWindow *self)
}
ModestWindow *
-modest_msg_view_window_new_for_attachment (TnyMsg *msg,
- const gchar *modest_account_name,
- const gchar *mailbox,
- const gchar *msg_uid)
+modest_msg_view_window_new_with_other_body (TnyMsg *msg,
+ TnyMimePart *other_body,
+ const gchar *modest_account_name,
+ const gchar *mailbox,
+ const gchar *msg_uid)
{
GObject *obj = NULL;
ModestMsgViewWindowPrivate *priv;
modest_msg_view_window_construct (MODEST_MSG_VIEW_WINDOW (obj),
modest_account_name, mailbox, msg_uid);
- tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+ if (other_body) {
+ modest_msg_view_set_msg_with_other_body (MODEST_MSG_VIEW (priv->msg_view), msg, other_body);
+ } else {
+ tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+ }
update_window_title (MODEST_MSG_VIEW_WINDOW (obj));
/* gtk_widget_show_all (GTK_WIDGET (obj)); */
return MODEST_WINDOW(obj);
}
+ModestWindow *
+modest_msg_view_window_new_for_attachment (TnyMsg *msg,
+ const gchar *modest_account_name,
+ const gchar *mailbox,
+ const gchar *msg_uid)
+{
+ return modest_msg_view_window_new_with_other_body (msg, NULL, modest_account_name, mailbox, msg_uid);
+}
+
static void
modest_msg_view_window_on_row_changed (GtkTreeModel *header_model,
GtkTreePath *arg1,
}
ModestWindow *
-modest_msg_view_window_new_for_attachment (TnyMsg *msg,
- const gchar *modest_account_name,
- const gchar *mailbox, /* ignored */
- const gchar *msg_uid)
+modest_msg_view_window_new_with_other_body (TnyMsg *msg,
+ TnyMimePart *part,
+ const gchar *modest_account_name,
+ const gchar *mailbox, /* ignored */
+ const gchar *msg_uid)
{
GObject *obj = NULL;
ModestMsgViewWindowPrivate *priv;
modest_msg_view_window_construct (MODEST_MSG_VIEW_WINDOW (obj),
modest_account_name, msg_uid);
- tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+ if (other_body) {
+ modest_msg_view_set_msg_with_other_body (TNY_MSG_VIEW (priv->msg_view), msg, other_body);
+ } else {
+ tny_msg_view_set_msg (TNY_MSG_VIEW (priv->msg_view), msg);
+ }
update_window_title (MODEST_MSG_VIEW_WINDOW (obj));
gtk_widget_show_all (GTK_WIDGET (obj));
return MODEST_WINDOW(obj);
}
+ModestWindow *
+modest_msg_view_window_new_for_attachment (TnyMsg *msg,
+ const gchar *modest_account_name,
+ const gchar *mailbox, /* ignored */
+ const gchar *msg_uid)
+{
+ return modest_msg_view_window_new_with_other_body (msg, NULL, modest_account_name, mailbox, msg_uid);
+
+}
+
static void
modest_msg_view_window_on_row_changed (GtkTreeModel *header_model,
GtkTreePath *arg1,
static gboolean modest_msg_view_search_next (ModestISearchView *self);
static gboolean modest_msg_view_search_next_default (ModestISearchView *self);
/* ModestMsgView implementation */
+static void modest_gtkhtml_msg_view_set_msg_with_other_body (ModestMsgView *self, TnyMsg *msg, TnyMimePart *other_body);
static GtkAdjustment *modest_gtkhtml_msg_view_get_vadjustment (ModestMsgView *self);
static GtkAdjustment *modest_gtkhtml_msg_view_get_hadjustment (ModestMsgView *self);
static void modest_gtkhtml_msg_view_set_vadjustment (ModestMsgView *self, GtkAdjustment *vadj);
static void modest_gtkhtml_msg_view_remove_attachment (ModestMsgView *view, TnyMimePart *attachment);
static void modest_gtkhtml_msg_view_request_fetch_images (ModestMsgView *view);
static gboolean modest_gtkhtml_msg_view_has_blocked_external_images (ModestMsgView *view);
+static void modest_gtkhtml_msg_view_set_msg_with_other_body_default (ModestMsgView *view, TnyMsg *msg, TnyMimePart *part);
static GtkAdjustment *modest_gtkhtml_msg_view_get_vadjustment_default (ModestMsgView *self);
static GtkAdjustment *modest_gtkhtml_msg_view_get_hadjustment_default (ModestMsgView *self);
static void modest_gtkhtml_msg_view_set_vadjustment_default (ModestMsgView *self, GtkAdjustment *vadj);
/* internal api */
static void set_header (ModestGtkhtmlMsgView *self, TnyHeader *header);
static TnyMsg *get_message (ModestGtkhtmlMsgView *self);
-static void set_message (ModestGtkhtmlMsgView *self, TnyMsg *tny_msg);
+static void set_message (ModestGtkhtmlMsgView *self, TnyMsg *tny_msg, TnyMimePart *other_body);
static gboolean is_empty (ModestGtkhtmlMsgView *self);
static void set_zoom (ModestGtkhtmlMsgView *self, gdouble zoom);
static gdouble get_zoom (ModestGtkhtmlMsgView *self);
klass->zoom_plus_func = modest_msg_view_zoom_plus_default;
klass->search_func = modest_msg_view_search_default;
klass->search_next_func = modest_msg_view_search_next_default;
+ klass->set_msg_with_other_body_func = modest_gtkhtml_msg_view_set_msg_with_other_body_default;
klass->get_vadjustment_func = modest_gtkhtml_msg_view_get_vadjustment_default;
klass->get_hadjustment_func = modest_gtkhtml_msg_view_get_hadjustment_default;
klass->set_vadjustment_func = modest_gtkhtml_msg_view_set_vadjustment_default;
}
static void
-set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg)
+set_message (ModestGtkhtmlMsgView *self, TnyMsg *msg, TnyMimePart *other_body)
{
TnyMimePart *body;
ModestGtkhtmlMsgViewPrivate *priv;
tny_header_view_set_header (TNY_HEADER_VIEW (priv->mail_header_view), header);
g_object_unref (header);
- modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW(priv->attachments_view),
- msg);
+ modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view),
+ other_body?NULL:msg);
modest_mime_part_view_set_view_images (MODEST_MIME_PART_VIEW (priv->body_view), tny_msg_get_allow_external_images (msg));
- body = modest_tny_msg_find_body_part (msg, TRUE);
+ if (other_body) {
+ body = other_body;
+ g_object_ref (body);
+ } else {
+ body = modest_tny_msg_find_body_part (msg, TRUE);
+ }
if (body) {
ModestAttachmentsView *widget;
g_return_if_fail (self);
if (header == NULL) {
- set_message (self, NULL);
+ set_message (self, NULL, NULL);
return;
}
static void
modest_msg_view_clear_header_default (TnyHeaderView *self)
{
- set_message (MODEST_GTKHTML_MSG_VIEW (self), NULL);
+ set_message (MODEST_GTKHTML_MSG_VIEW (self), NULL, NULL);
}
/* TNY MSG IMPLEMENTATION */
static void
modest_msg_view_clear_default (TnyMsgView *self)
{
- set_message (MODEST_GTKHTML_MSG_VIEW (self), NULL);
+ set_message (MODEST_GTKHTML_MSG_VIEW (self), NULL, NULL);
}
static TnyMimePartView*
{
g_return_if_fail ((part == NULL) || TNY_IS_MSG (part));
- set_message (MODEST_GTKHTML_MSG_VIEW (self), TNY_MSG (part));
+ set_message (MODEST_GTKHTML_MSG_VIEW (self), TNY_MSG (part), NULL);
}
static void
{
ModestMsgViewIface *klass = (ModestMsgViewIface *)g;
+ klass->set_msg_with_other_body_func = modest_gtkhtml_msg_view_set_msg_with_other_body;
klass->get_vadjustment_func = modest_gtkhtml_msg_view_get_vadjustment;
klass->get_hadjustment_func = modest_gtkhtml_msg_view_get_hadjustment;
klass->set_vadjustment_func = modest_gtkhtml_msg_view_set_vadjustment;
return;
}
+static void
+modest_gtkhtml_msg_view_set_msg_with_other_body (ModestMsgView *self, TnyMsg *msg, TnyMimePart *other_body)
+{
+ MODEST_GTKHTML_MSG_VIEW_GET_CLASS (self)->set_msg_with_other_body_func (self, msg, other_body);
+}
+
+static void
+modest_gtkhtml_msg_view_set_msg_with_other_body_default (ModestMsgView *self, TnyMsg *msg, TnyMimePart *other_body)
+{
+ set_message (MODEST_GTKHTML_MSG_VIEW (self), msg, other_body);
+}
+
static GtkAdjustment*
modest_gtkhtml_msg_view_get_vadjustment (ModestMsgView *self)
{
gboolean (*search_func) (ModestISearchView *self, const gchar *string);
gboolean (*search_next_func) (ModestISearchView *self);
/* ModestMsgView interface methods */
+ void (*set_msg_with_other_body_func) (ModestMsgView *self, TnyMsg *msg, TnyMimePart *other_body);
GtkAdjustment* (*get_vadjustment_func) (ModestMsgView *self);
GtkAdjustment* (*get_hadjustment_func) (ModestMsgView *self);
void (*set_vadjustment_func) (ModestMsgView *self, GtkAdjustment *vadj);
static gboolean modest_msg_view_search_next (ModestISearchView *self);
static gboolean modest_msg_view_search_next_default (ModestISearchView *self);
/* ModestMsgView implementation */
+static void modest_mozembed_msg_view_set_msg_with_other_body (ModestMsgView *self, TnyMsg *msg, TnyMimePart *part);
static GtkAdjustment *modest_mozembed_msg_view_get_vadjustment (ModestMsgView *self);
static GtkAdjustment *modest_mozembed_msg_view_get_hadjustment (ModestMsgView *self);
static void modest_mozembed_msg_view_set_vadjustment (ModestMsgView *self, GtkAdjustment *vadj);
static void modest_mozembed_msg_view_remove_attachment (ModestMsgView *view, TnyMimePart *attachment);
static void modest_mozembed_msg_view_request_fetch_images (ModestMsgView *view);
static gboolean modest_mozembed_msg_view_has_blocked_external_images (ModestMsgView *view);
+static void modest_mozembed_msg_view_set_msg_with_other_body_default (ModestMsgView *self, TnyMsg *msg, TnyMimePart *part);
static GtkAdjustment *modest_mozembed_msg_view_get_vadjustment_default (ModestMsgView *self);
static GtkAdjustment *modest_mozembed_msg_view_get_hadjustment_default (ModestMsgView *self);
static void modest_mozembed_msg_view_set_vadjustment_default (ModestMsgView *self, GtkAdjustment *vadj);
/* internal api */
static void set_header (ModestMozembedMsgView *self, TnyHeader *header);
static TnyMsg *get_message (ModestMozembedMsgView *self);
-static void set_message (ModestMozembedMsgView *self, TnyMsg *tny_msg);
+static void set_message (ModestMozembedMsgView *self, TnyMsg *msg, TnyMimePart *other_body);
static gboolean is_empty (ModestMozembedMsgView *self);
static void set_zoom (ModestMozembedMsgView *self, gdouble zoom);
static gdouble get_zoom (ModestMozembedMsgView *self);
klass->zoom_plus_func = modest_msg_view_zoom_plus_default;
klass->search_func = modest_msg_view_search_default;
klass->search_next_func = modest_msg_view_search_next_default;
+ klass->set_msg_with_other_body_func = modest_mozembed_msg_view_set_msg_with_other_body_default;
klass->get_vadjustment_func = modest_mozembed_msg_view_get_vadjustment_default;
klass->get_hadjustment_func = modest_mozembed_msg_view_get_hadjustment_default;
klass->set_vadjustment_func = modest_mozembed_msg_view_set_vadjustment_default;
}
static void
-set_message (ModestMozembedMsgView *self, TnyMsg *msg)
+set_message (ModestMozembedMsgView *self, TnyMsg *msg, TnyMimePart *other_body)
{
TnyMimePart *body;
ModestMozembedMsgViewPrivate *priv;
g_object_unref (header);
modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW(priv->attachments_view),
- msg);
+ other_body?NULL:msg);
- body = modest_tny_msg_find_body_part (msg, TRUE);
+ if (other_body) {
+ body = other_body;
+ g_object_ref (body);
+ } else {
+ body = modest_tny_msg_find_body_part (msg, TRUE);
+ }
+
if (body) {
tny_mime_part_view_set_part (TNY_MIME_PART_VIEW (priv->body_view), body);
g_return_if_fail (self);
if (header == NULL)
- set_message (self, NULL);
+ set_message (self, NULL, NULL);
priv = MODEST_MOZEMBED_MSG_VIEW_GET_PRIVATE(self);
gtk_widget_set_no_show_all (priv->mail_header_view, FALSE);
static void
modest_msg_view_clear_header_default (TnyHeaderView *self)
{
- set_message (MODEST_MOZEMBED_MSG_VIEW (self), NULL);
+ set_message (MODEST_MOZEMBED_MSG_VIEW (self), NULL, NULL);
}
/* TNY MSG IMPLEMENTATION */
static void
modest_msg_view_clear_default (TnyMsgView *self)
{
- set_message (MODEST_MOZEMBED_MSG_VIEW (self), NULL);
+ set_message (MODEST_MOZEMBED_MSG_VIEW (self), NULL, NULL);
}
static TnyMimePartView*
{
g_return_if_fail ((part == NULL) || TNY_IS_MSG (part));
- set_message (MODEST_MOZEMBED_MSG_VIEW (self), TNY_MSG (part));
+ set_message (MODEST_MOZEMBED_MSG_VIEW (self), TNY_MSG (part), NULL);
}
static void
{
ModestMsgViewIface *klass = (ModestMsgViewIface *)g;
+ klass->set_msg_with_other_body_func = modest_mozembed_msg_view_set_msg_with_other_body;
klass->get_vadjustment_func = modest_mozembed_msg_view_get_vadjustment;
klass->get_hadjustment_func = modest_mozembed_msg_view_get_hadjustment;
klass->set_vadjustment_func = modest_mozembed_msg_view_set_vadjustment;
return;
}
+static void
+modest_mozembed_msg_view_set_msg_with_other_body (ModestMsgView *self, TnyMsg *msg, TnyMimePart *other_body)
+{
+ MODEST_MOZEMBED_MSG_VIEW_GET_CLASS (self)->set_msg_with_other_body_func (self, msg, other_body);
+}
+
+static void
+modest_mozembed_msg_view_set_msg_with_other_body_default (ModestMsgView *self, TnyMsg *msg, TnyMimePart *other_body)
+{
+ set_message (MODEST_MOZEMBED_MSG_VIWE (self), msg, other_body);
+}
+
static GtkAdjustment*
modest_mozembed_msg_view_get_vadjustment (ModestMsgView *self)
{
gboolean (*search_func) (ModestISearchView *self, const gchar *string);
gboolean (*search_next_func) (ModestISearchView *self);
/* ModestMsgView interface methods */
+ void (*set_msg_with_other_body) (ModestMsgView *self, TnyMsg *msg, TnyMimePart *part);
GtkAdjustment* (*get_vadjustment_func) (ModestMsgView *self);
GtkAdjustment* (*get_hadjustment_func) (ModestMsgView *self);
void (*set_vadjustment_func) (ModestMsgView *self, GtkAdjustment *vadj);
const gchar *msg_uid);
/**
+ * modest_msg_view_window_new_with_other_body:
+ * @msg: an #TnyMsg instance
+ * @modest_account_name: the account name
+ * @mailbox: the mailbox (if any)
+ *
+ * instantiates a new #ModestMsgViewWindow widget to view a message that is a different body
+ * in another message.
+ * The account name is used to
+ * set the proper account when choosing reply/forward from the msg view window
+ *
+ * Returns: a new #ModestMsgViewWindow, or NULL in case of error
+ */
+ModestWindow* modest_msg_view_window_new_with_other_body (TnyMsg *msg,
+ TnyMimePart *other_body,
+ const gchar *modest_account_name,
+ const gchar *mailbox,
+ const gchar *msg_uid);
+
+/**
* modest_msg_view_window_new_with_header_model:
* @msg: an #TnyMsg instance
* @modest_account_name: the account name
};
static guint signals[LAST_SIGNAL] = {0};
+void
+modest_msg_view_set_msg_with_other_body (ModestMsgView *self, TnyMsg *msg, TnyMimePart *part)
+{
+ return MODEST_MSG_VIEW_GET_IFACE (self)->set_msg_with_other_body_func (self, msg, part);
+}
+
GtkAdjustment*
modest_msg_view_get_vadjustment (ModestMsgView *self)
{
struct _ModestMsgViewIface {
GTypeInterface parent;
+ void (*set_msg_with_other_body_func) (ModestMsgView *self, TnyMsg *msg, TnyMimePart *other_body);
GtkAdjustment* (*get_vadjustment_func) (ModestMsgView *self);
GtkAdjustment* (*get_hadjustment_func) (ModestMsgView *self);
void (*set_vadjustment_func) (ModestMsgView *self, GtkAdjustment *vadj);
*/
GType modest_msg_view_get_type (void) G_GNUC_CONST;
-
+void modest_msg_view_set_msg_with_other_body (ModestMsgView *self, TnyMsg *msg, TnyMimePart *part);
GtkAdjustment *modest_msg_view_get_vadjustment (ModestMsgView *self);
GtkAdjustment *modest_msg_view_get_hadjustment (ModestMsgView *self);
void modest_msg_view_set_vadjustment (ModestMsgView *self, GtkAdjustment *vadj);