+gboolean
+modest_msg_view_get_message_is_empty (ModestMsgView *self)
+{
+ ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
+
+ return modest_mime_part_view_is_empty (MODEST_MIME_PART_VIEW (priv->body_view));
+}
+
+/* TNY MSG IMPLEMENTATION */
+
+static void
+tny_msg_view_init (gpointer g, gpointer iface_data)
+{
+ TnyMsgViewIface *klass = (TnyMsgViewIface *)g;
+
+ klass->get_msg_func = modest_msg_view_get_msg;
+ klass->set_msg_func = modest_msg_view_set_msg;
+ klass->set_unavailable_func = modest_msg_view_set_unavailable;
+ klass->clear_func = modest_msg_view_clear;
+ klass->create_mime_part_view_for_func = modest_msg_view_create_mime_part_view_for;
+ klass->create_new_inline_viewer_func = modest_msg_view_create_new_inline_viewer;
+
+ return;
+}
+
+static TnyMsg *
+modest_msg_view_get_msg (TnyMsgView *self)
+{
+ return MODEST_MSG_VIEW_GET_CLASS (self)->get_msg_func (self);
+}
+
+static TnyMsg *
+modest_msg_view_get_msg_default (TnyMsgView *self)
+{
+ return TNY_MSG (tny_mime_part_view_get_part (TNY_MIME_PART_VIEW (self)));
+}
+
+static void
+modest_msg_view_set_msg (TnyMsgView *self, TnyMsg *msg)
+{
+ MODEST_MSG_VIEW_GET_CLASS (self)->set_msg_func (self, msg);
+}
+
+static void
+modest_msg_view_set_msg_default (TnyMsgView *self, TnyMsg *msg)
+{
+
+ tny_mime_part_view_set_part (TNY_MIME_PART_VIEW (self), TNY_MIME_PART (msg));
+
+ return;
+}
+
+static void
+modest_msg_view_set_unavailable (TnyMsgView *self)
+{
+ MODEST_MSG_VIEW_GET_CLASS (self)->set_unavailable_func (self);
+}
+
+static void
+modest_msg_view_set_unavailable_default (TnyMsgView *self)
+{
+ tny_msg_view_clear (self);
+
+ return;
+}
+
+static void
+modest_msg_view_clear (TnyMsgView *self)
+{
+ MODEST_MSG_VIEW_GET_CLASS (self)->clear_func (self);
+}
+
+static void
+modest_msg_view_clear_default (TnyMsgView *self)
+{
+ set_message (MODEST_MSG_VIEW (self), NULL);
+}
+
+static TnyMimePartView*
+modest_msg_view_create_mime_part_view_for (TnyMsgView *self, TnyMimePart *part)
+{
+ return MODEST_MSG_VIEW_GET_CLASS (self)->create_mime_part_view_for_func (self, part);
+}
+
+static TnyMimePartView*
+modest_msg_view_create_mime_part_view_for_default (TnyMsgView *self, TnyMimePart *part)
+{
+ g_warning ("modest_msg_view_create_mime_part_view_for_default is not implemented");
+ return NULL;
+}
+
+static TnyMsgView*
+modest_msg_view_create_new_inline_viewer (TnyMsgView *self)
+{
+ return MODEST_MSG_VIEW_GET_CLASS (self)->create_new_inline_viewer_func (self);
+}
+
+static TnyMsgView*
+modest_msg_view_create_new_inline_viewer_default (TnyMsgView *self)
+{
+ g_warning ("modest_msg_view_create_new_inline_viewer_default is not implemented");
+
+ return NULL;
+}
+
+/* TNY MIME PART IMPLEMENTATION */
+
+static void
+tny_mime_part_view_init (gpointer g, gpointer iface_data)
+{
+ TnyMimePartViewIface *klass = (TnyMimePartViewIface *)g;
+
+ klass->get_part_func = modest_msg_view_mp_get_part;
+ klass->set_part_func = modest_msg_view_mp_set_part;
+ klass->clear_func = modest_msg_view_mp_clear;
+
+ return;
+}
+
+static TnyMimePart*
+modest_msg_view_mp_get_part (TnyMimePartView *self)
+{
+ return MODEST_MSG_VIEW_GET_CLASS (self)->get_part_func (self);
+}
+
+
+static TnyMimePart*
+modest_msg_view_mp_get_part_default (TnyMimePartView *self)
+{
+ return TNY_MIME_PART (get_message (MODEST_MSG_VIEW (self)));
+}
+
+static void
+modest_msg_view_mp_set_part (TnyMimePartView *self,
+ TnyMimePart *part)
+{
+ MODEST_MSG_VIEW_GET_CLASS (self)->set_part_func (self, part);
+}
+
+static void
+modest_msg_view_mp_set_part_default (TnyMimePartView *self,
+ TnyMimePart *part)
+{
+ g_return_if_fail ((part == NULL) || TNY_IS_MSG (part));
+
+ set_message (MODEST_MSG_VIEW (self), TNY_MSG (part));
+}
+
+static void
+modest_msg_view_mp_clear (TnyMimePartView *self)
+{
+ tny_msg_view_clear (TNY_MSG_VIEW (self));
+}
+
+/* MODEST ZOOMABLE IMPLEMENTATION */
+static void
+modest_zoomable_init (gpointer g, gpointer iface_data)
+{
+ ModestZoomableIface *klass = (ModestZoomableIface *)g;
+
+ klass->get_zoom_func = modest_msg_view_get_zoom;
+ klass->set_zoom_func = modest_msg_view_set_zoom;
+ klass->zoom_minus_func = modest_msg_view_zoom_minus;
+ klass->zoom_plus_func = modest_msg_view_zoom_plus;
+
+ return;
+}
+
+static gdouble
+modest_msg_view_get_zoom (ModestZoomable *self)
+{
+ return MODEST_MSG_VIEW_GET_CLASS (self)->get_zoom_func (self);
+}
+
+static gdouble
+modest_msg_view_get_zoom_default (ModestZoomable *self)
+{
+ return get_zoom (MODEST_MSG_VIEW (self));
+}
+
+static void
+modest_msg_view_set_zoom (ModestZoomable *self, gdouble value)
+{
+ MODEST_MSG_VIEW_GET_CLASS (self)->set_zoom_func (self, value);
+}
+
+static void
+modest_msg_view_set_zoom_default (ModestZoomable *self, gdouble value)
+{
+ set_zoom (MODEST_MSG_VIEW (self), value);
+}
+