-
- /* we cannot disconnect sigs, because priv->body_view is
- * already dead */
-
- disconnect_vadjustment (MODEST_MSG_VIEW(obj));
- disconnect_hadjustment (MODEST_MSG_VIEW(obj));
-
- priv->body_view = NULL;
- priv->attachments_view = NULL;
-
- G_OBJECT_CLASS(parent_class)->finalize (obj);
-}
-
-static void
-modest_msg_view_destroy (GtkObject *obj)
-{
- disconnect_vadjustment (MODEST_MSG_VIEW(obj));
- disconnect_hadjustment (MODEST_MSG_VIEW(obj));
-
- GTK_OBJECT_CLASS(parent_class)->destroy (obj);
-}
-
-GtkAdjustment *
-modest_msg_view_get_vadjustment (ModestMsgView *msg_view)
-{
- ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
-
- if (!priv->vadj)
- modest_msg_view_set_vadjustment (msg_view, NULL);
-
- return priv->vadj;
-
-}
-
-GtkAdjustment *
-modest_msg_view_get_hadjustment (ModestMsgView *msg_view)
-{
- ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
-
- if (!priv->hadj)
- modest_msg_view_set_hadjustment (msg_view, NULL);
-
- return priv->hadj;
-
-}
-
-void
-modest_msg_view_set_hadjustment (ModestMsgView *msg_view, GtkAdjustment *hadj)
-{
- ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
- gboolean value_changed;
-
- if (hadj && hadj == priv->hadj)
- return;
-
- if (!hadj)
- hadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0,0.0,0.0,0.0,0.0,0.0));
- disconnect_hadjustment (msg_view);
- g_object_ref (G_OBJECT (hadj));
- gtk_object_sink (GTK_OBJECT (hadj));
- priv->hadj = hadj;
- set_hadjustment_values (msg_view, &value_changed);
-
- g_signal_connect (hadj, "value_changed", G_CALLBACK (adjustment_value_changed),
- msg_view);
-
- gtk_adjustment_changed (hadj);
- if (value_changed)
- gtk_adjustment_value_changed (hadj);
- else
- adjustment_value_changed (hadj, msg_view);
-
- g_object_notify (G_OBJECT (msg_view), "hadjustment");
-}
-
-void
-modest_msg_view_set_vadjustment (ModestMsgView *msg_view, GtkAdjustment *vadj)
-{
- ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
- gboolean value_changed;
-
- if (vadj && vadj == priv->vadj)
- return;
-
- if (!vadj)
- vadj = (GtkAdjustment *) gtk_adjustment_new (0.0,0.0,0.0,0.0,0.0,0.0);
- disconnect_vadjustment (msg_view);
- g_object_ref (G_OBJECT (vadj));
- gtk_object_sink (GTK_OBJECT (vadj));
- priv->vadj = vadj;
- set_vadjustment_values (msg_view, &value_changed);
-
- g_signal_connect (vadj, "value_changed", G_CALLBACK (adjustment_value_changed),
- msg_view);
-
- gtk_adjustment_changed (vadj);
- if (value_changed)
- gtk_adjustment_value_changed (vadj);
- else
- adjustment_value_changed (vadj, msg_view);
-
- g_object_notify (G_OBJECT (msg_view), "vadjustment");
-}
-
-/**
- * modest_msg_view_set_shadow_type:
- * @msg_view: a #ModestMsgView.
- * @shadow_type: new shadow type.
- *
- * Sets a shadow type of the message view.
- **/
-void
-modest_msg_view_set_shadow_type (ModestMsgView *msg_view,
- GtkShadowType shadow_type)
-{
- ModestMsgViewPrivate *priv;
- g_return_if_fail (MODEST_IS_MSG_VIEW (msg_view));
-
- priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
-
- if (priv->shadow_type != shadow_type) {
- priv->shadow_type = shadow_type;
-
- if (GTK_WIDGET_VISIBLE (msg_view)) {
- gtk_widget_size_allocate (GTK_WIDGET (msg_view), &(GTK_WIDGET (msg_view)->allocation));
- gtk_widget_queue_draw (GTK_WIDGET (msg_view));
- }
- g_object_notify (G_OBJECT (msg_view), "shadow-type");
- }
-}
-
-/**
- * modest_msg_view_get_shadow_type:
- * @msg_view: a #ModestMsgView
- *
- * Gets the current shadow type of the #ModestMsgView.
- *
- * Return value: the shadow type
- **/
-GtkShadowType
-modest_msg_view_get_shadow_type (ModestMsgView *msg_view)
-{
- ModestMsgViewPrivate *priv;
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (msg_view), GTK_SHADOW_NONE);
- priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
-
- return priv->shadow_type;
-}
-
-GtkWidget*
-modest_msg_view_new (TnyMsg *msg)
-{
- GObject *obj;
- ModestMsgView* self;
-
- obj = G_OBJECT(g_object_new(MODEST_TYPE_MSG_VIEW, NULL));
- self = MODEST_MSG_VIEW(obj);
- tny_msg_view_set_msg (TNY_MSG_VIEW (self), msg);
-
- return GTK_WIDGET(self);
-}
-
-#ifdef MAEMO_CHANGES
-static void
-on_tap_and_hold (GtkWidget *widget,
- gpointer data)
-{
- ModestMsgView *msg_view = (ModestMsgView *) data;
- ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
-
- g_signal_emit (G_OBJECT (msg_view), signals[LINK_CONTEXTUAL_SIGNAL],
- 0, priv->last_url);
-}
-#endif
-
-static void
-on_recpt_activated (ModestMailHeaderView *header_view,
- const gchar *address,
- ModestMsgView * view)
-{
- g_signal_emit (G_OBJECT (view), signals[RECPT_ACTIVATED_SIGNAL], 0, address);
-}
-
-static void
-on_attachment_activated (ModestAttachmentsView * att_view, TnyMimePart *mime_part, gpointer msg_view)
-{
-
- g_signal_emit (G_OBJECT(msg_view), signals[ATTACHMENT_CLICKED_SIGNAL],
- 0, mime_part);
-}
-
-static gboolean
-on_activate_link (GtkWidget *widget, const gchar *uri, ModestMsgView *msg_view)
-{
- g_return_val_if_fail (msg_view, FALSE);
-
- g_signal_emit (G_OBJECT(msg_view), signals[LINK_CLICKED_SIGNAL],
- 0, uri);
-
- return FALSE;
-}
-
-
-static gboolean
-on_link_hover (GtkWidget *widget, const gchar *uri, ModestMsgView *msg_view)
-{
- ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
-
- g_free (priv->last_url);
- priv->last_url = g_strdup (uri);
-
- g_signal_emit (G_OBJECT(msg_view), signals[LINK_HOVER_SIGNAL],
- 0, uri);
-
- return FALSE;
-}
-
-
-
-static TnyMimePart *
-find_cid_image (TnyMsg *msg, const gchar *cid)
-{
- TnyMimePart *part = NULL;
- TnyList *parts;
- TnyIterator *iter;
-
- g_return_val_if_fail (msg, NULL);
- g_return_val_if_fail (cid, NULL);
-
- parts = TNY_LIST (tny_simple_list_new());
-
- tny_mime_part_get_parts (TNY_MIME_PART (msg), parts);
- iter = tny_list_create_iterator (parts);
-
- while (!tny_iterator_is_done(iter)) {
- const gchar *part_cid;
-
- part = TNY_MIME_PART(tny_iterator_get_current(iter));
- part_cid = tny_mime_part_get_content_id (part);
-
- if (part_cid && strcmp (cid, part_cid) == 0)
- break;
-
- if (tny_mime_part_content_type_is (part, "multipart/related")) {
- TnyList *related_parts = TNY_LIST (tny_simple_list_new ());
- TnyIterator *related_iter = NULL;
- TnyMimePart *related_part = NULL;
-
- tny_mime_part_get_parts (part, related_parts);
- related_iter = tny_list_create_iterator (related_parts);
-
- while (!tny_iterator_is_done (related_iter)) {
- related_part = TNY_MIME_PART (tny_iterator_get_current (related_iter));
- part_cid = tny_mime_part_get_content_id (related_part);
- if (part_cid && strcmp (cid, part_cid) == 0) {
- break;
- }
- g_object_unref (related_part);
- related_part = NULL;
- tny_iterator_next (related_iter);
- }
-
- g_object_unref (related_iter);
- g_object_unref (related_parts);
- if (related_part != NULL) {
- g_object_unref (part);
- part = related_part;
- break;
- }
- }
-
- g_object_unref (G_OBJECT(part));
-
- part = NULL;
- tny_iterator_next (iter);
- }
-
- g_object_unref (G_OBJECT(iter));
- g_object_unref (G_OBJECT(parts));
-
- return part;
-}
-
-
-static gboolean
-on_fetch_url (GtkWidget *widget, const gchar *uri,
- TnyStream *stream, ModestMsgView *msg_view)
-{
- ModestMsgViewPrivate *priv;
- priv = MODEST_MSG_VIEW_GET_PRIVATE (msg_view);
- gboolean result = FALSE;
-
- if (g_str_has_prefix (uri, "cid:")) {
- /* +4 ==> skip "cid:" */
- TnyMimePart *part = find_cid_image (priv->msg, uri + 4);
- if (!part) {
- g_printerr ("modest: '%s' not found\n", uri + 4);
- result = FALSE;
- } else {
- tny_mime_part_decode_to_stream ((TnyMimePart*)part,
- stream);
- g_object_unref (G_OBJECT(part));
- result = TRUE;
- }
- } else {
- return TRUE;
- }
-
- return result;
-}
-
-static void
-set_message (ModestMsgView *self, TnyMsg *msg)
-{
- TnyMimePart *body;
- ModestMsgViewPrivate *priv;
- TnyHeader *header;
- GtkAdjustment *html_vadj;
-
- g_return_if_fail (self);
-
- priv = MODEST_MSG_VIEW_GET_PRIVATE(self);
- gtk_widget_set_no_show_all (priv->mail_header_view, FALSE);
-
- if (msg != priv->msg) {
- if (priv->msg)
- g_object_unref (G_OBJECT(priv->msg));
- if (msg)
- g_object_ref (G_OBJECT(msg));
- priv->msg = msg;
- }
-
- if (!msg) {
- tny_header_view_clear (TNY_HEADER_VIEW (priv->mail_header_view));
- modest_attachments_view_set_message (MODEST_ATTACHMENTS_VIEW (priv->attachments_view), NULL);
- gtk_widget_hide_all (priv->mail_header_view);
- gtk_widget_hide_all (priv->attachments_box);
- gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
- tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
- gtk_widget_queue_resize (GTK_WIDGET(self));
- gtk_widget_queue_draw (GTK_WIDGET(self));
- return;
- }
-
- header = tny_msg_get_header (msg);
- 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);
-
- 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);
-
- if(modest_attachments_view_has_attachments (MODEST_ATTACHMENTS_VIEW (priv->attachments_view))) {
- gtk_widget_show_all (priv->attachments_box);
- } else {
- gtk_widget_hide_all (priv->attachments_box);
- }
-
- } else
- tny_mime_part_view_clear (TNY_MIME_PART_VIEW (priv->body_view));
-
- gtk_widget_show (priv->body_view);
- gtk_widget_set_no_show_all (priv->attachments_box, TRUE);
- gtk_widget_show_all (priv->mail_header_view);
- gtk_widget_set_no_show_all (priv->attachments_box, FALSE);
- gtk_widget_set_no_show_all (priv->mail_header_view, TRUE);
- gtk_widget_queue_resize (GTK_WIDGET(self));
- gtk_widget_queue_draw (GTK_WIDGET(self));
-
- if (priv->hadj != NULL)
- priv->hadj->value = 0.0;
- if (priv->vadj != NULL)
- priv->vadj->value = 0.0;
-
- html_vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->html_scroll));
-
- g_signal_emit_by_name (G_OBJECT (html_vadj), "changed");
-
- /* This is a hack to force reallocation of scroll after drawing all the stuff. This
- * makes the html view get the proper and expected size and prevent being able to scroll
- * the buffer when it shouldn't be scrollable */
- g_object_ref (self);
- g_timeout_add (250, (GSourceFunc) idle_readjust_scroll, self);
-}
-
-
-static TnyMsg*
-get_message (ModestMsgView *self)
-{
- TnyMsg *msg;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (self), NULL);
-
- msg = MODEST_MSG_VIEW_GET_PRIVATE(self)->msg;
-
- if (msg)
- g_object_ref (msg);
-
- return msg;
-}
-
-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);
-}
-
-static gboolean
-modest_msg_view_zoom_minus (ModestZoomable *self)
-{
- return MODEST_MSG_VIEW_GET_CLASS (self)->zoom_minus_func (self);
-}
-
-static gboolean
-modest_msg_view_zoom_minus_default (ModestZoomable *self)
-{
- /* operation not supported in ModestMsgView */
- return FALSE;
-}
-
-static gboolean
-modest_msg_view_zoom_plus (ModestZoomable *self)
-{
- return MODEST_MSG_VIEW_GET_CLASS (self)->zoom_plus_func (self);
-}
-
-static gboolean
-modest_msg_view_zoom_plus_default (ModestZoomable *self)
-{
- /* operation not supported in ModestMsgView */
- return FALSE;
-}
-
-/* INCREMENTAL SEARCH IMPLEMENTATION */
-
-gboolean
-modest_msg_view_search (ModestMsgView *self, const gchar *search)
-{
- ModestMsgViewPrivate *priv;
- gboolean result;
- GtkAdjustment *vadj, *tmp_vadj;
- gdouble y_offset;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (self), FALSE);
-
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
- vadj = gtk_layout_get_vadjustment (GTK_LAYOUT (priv->body_view));
- g_object_ref (vadj);
- tmp_vadj = GTK_ADJUSTMENT (gtk_adjustment_new (0.0, vadj->lower, vadj->upper, vadj->step_increment, 32.0, 32.0));
- gtk_layout_set_vadjustment (GTK_LAYOUT (priv->body_view), tmp_vadj);
- result = modest_isearch_view_search (MODEST_ISEARCH_VIEW (priv->body_view),
- search);
-
- if (result) {
- gint x, y, w, h;
- gdouble offset_top, offset_bottom;
- GtkAdjustment *adj;
- modest_isearch_view_get_selection_area (MODEST_ISEARCH_VIEW (priv->body_view), &x, &y, &w, &h);
- offset_top = (gdouble) (priv->headers_box->requisition.height + y);
- offset_bottom = (gdouble) (priv->headers_box->requisition.height + y + h);
- adj = GTK_ADJUSTMENT (priv->vadj);
- if (offset_top < adj->value)
- gtk_adjustment_set_value (adj, offset_top + adj->page_increment - adj->page_size);
- else if (offset_bottom > adj->value + adj->page_increment)
- gtk_adjustment_set_value (adj, offset_bottom - adj->page_increment);
- }
-
- y_offset = tmp_vadj->value;
- gtk_layout_set_vadjustment (GTK_LAYOUT (priv->body_view), vadj);
- g_object_unref (vadj);
-
- return result;
-}
-
-gboolean
-modest_msg_view_search_next (ModestMsgView *self)
-{
- ModestMsgViewPrivate *priv;
- gboolean result;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (self), FALSE);
-
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
- result = modest_isearch_view_search_next (MODEST_ISEARCH_VIEW (priv->body_view));
-
- if (result) {
- gint x, y, w, h;
- gdouble offset_top, offset_bottom;
- GtkAdjustment *adj;
- modest_isearch_view_get_selection_area (MODEST_ISEARCH_VIEW (priv->body_view), &x, &y, &w, &h);
- offset_top = (gdouble) (priv->headers_box->requisition.height + y);
- offset_bottom = (gdouble) (priv->headers_box->requisition.height + y + h);
- adj = GTK_ADJUSTMENT (priv->vadj);
- if (offset_top < adj->value)
- gtk_adjustment_set_value (adj, offset_top + adj->page_increment - adj->page_size);
- else if (offset_bottom > adj->value + adj->page_increment)
- gtk_adjustment_set_value (adj, offset_bottom - adj->page_increment);
- }
- return result;
-}
-
-/* ZOOM IMPLEMENTATION */
-
-static void
-set_zoom (ModestMsgView *self, gdouble zoom)
-{
- ModestMsgViewPrivate *priv;
-
- g_return_if_fail (MODEST_IS_MSG_VIEW (self));
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
-
- modest_zoomable_set_zoom (MODEST_ZOOMABLE(priv->body_view), zoom);
-
- gtk_widget_queue_resize (priv->body_view);
-}
-
-static gdouble
-get_zoom (ModestMsgView *self)
-{
- ModestMsgViewPrivate *priv;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (self), 1.0);
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
-
- return modest_zoomable_get_zoom (MODEST_ZOOMABLE (priv->body_view));
-}
-
-TnyHeaderFlags
-modest_msg_view_get_priority (ModestMsgView *self)
-{
- ModestMsgViewPrivate *priv;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (self), 0);
-
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
-
- return priv->priority_flags;
-}
-
-void
-modest_msg_view_set_priority (ModestMsgView *self, TnyHeaderFlags flags)
-{
- ModestMsgViewPrivate *priv;
-
- g_return_if_fail (MODEST_IS_MSG_VIEW (self));
-
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
-
- priv->priority_flags = flags & (TNY_HEADER_FLAG_HIGH_PRIORITY);
-
- modest_mail_header_view_set_priority (MODEST_MAIL_HEADER_VIEW (priv->mail_header_view), flags);
-}
-
-GList *
-modest_msg_view_get_selected_attachments (ModestMsgView *self)
-{
- ModestMsgViewPrivate *priv;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (self), NULL);
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
-
- return modest_attachments_view_get_selection (MODEST_ATTACHMENTS_VIEW (priv->attachments_view));
-
-}
-
-GList *
-modest_msg_view_get_attachments (ModestMsgView *self)
-{
- ModestMsgViewPrivate *priv;
-
- g_return_val_if_fail (MODEST_IS_MSG_VIEW (self), NULL);
- priv = MODEST_MSG_VIEW_GET_PRIVATE (self);
-
- return modest_attachments_view_get_attachments (MODEST_ATTACHMENTS_VIEW (priv->attachments_view));
-
-}
-
-void
-modest_msg_view_grab_focus (ModestMsgView *view)
-{
- ModestMsgViewPrivate *priv = NULL;
-
- g_return_if_fail (MODEST_IS_MSG_VIEW (view));
- priv = MODEST_MSG_VIEW_GET_PRIVATE (view);
-
- gtk_widget_grab_focus (priv->body_view);
-}
-
-void
-modest_msg_view_remove_attachment (ModestMsgView *view, TnyMimePart *attachment)
-{
- ModestMsgViewPrivate *priv;
-
- g_return_if_fail (MODEST_IS_MSG_VIEW (view));
- g_return_if_fail (TNY_IS_MIME_PART (attachment));
- priv = MODEST_MSG_VIEW_GET_PRIVATE (view);
-
- modest_attachments_view_remove_attachment (MODEST_ATTACHMENTS_VIEW (priv->attachments_view),
- attachment);
-
-}
-
-gboolean
-idle_readjust_scroll (ModestMsgView *view)
-{
- if (GTK_WIDGET_DRAWABLE (view)) {
- ModestMsgViewPrivate *priv = MODEST_MSG_VIEW_GET_PRIVATE (view);
- GtkAdjustment *html_vadj;
- html_vadj = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (priv->html_scroll));
- html_vadj->page_size = html_vadj->upper;
- gtk_adjustment_changed (html_vadj);
- gtk_widget_queue_resize (GTK_WIDGET (view));
- gtk_widget_queue_draw (GTK_WIDGET (view));
-
- /* Just another hack for making readjust really work. This forces an update
- * of the scroll, and then, make the scroll really update properly the
- * the size and not corrupt scrollable area */
- gtk_adjustment_set_value (priv->vadj, 1.0);
- gtk_adjustment_set_value (priv->vadj, 0.0);
- }
- g_object_unref (G_OBJECT (view));
- return FALSE;