* improve mu-widgets;

- support notes in mail body view
   - support cmd: pseudo urls in such views
This commit is contained in:
Dirk-Jan C. Binnema 2011-01-12 23:15:54 +02:00
parent 920f714859
commit e048b9607f
4 changed files with 53 additions and 8 deletions

View File

@ -35,9 +35,14 @@ enum {
LAST_SIGNAL
};
struct _MuMsgBodyViewPrivate {
WebKitWebSettings *_settings;
MuMsg *_message;
/* 'mu_mode' means some internal mode where cmd: urls are
* acceptable */
gboolean _mu_mode;
};
#define MU_MSG_BODY_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
MU_TYPE_MSG_BODY_VIEW, \
@ -110,10 +115,16 @@ on_navigation_requested (MuMsgBodyView *self, WebKitWebFrame *frame,
const char* uri;
uri = webkit_network_request_get_uri (request);
if (g_ascii_strncasecmp (uri, "cmd:", 4) == 0) {
if (self->_priv->_mu_mode)
g_printerr ("execute: '%s'\n", uri + 4);
return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
}
if (!mu_util_is_local_file(uri))
mu_util_play (uri, FALSE, TRUE);
return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
}
@ -127,6 +138,7 @@ on_resource_request_starting (MuMsgBodyView *self, WebKitWebFrame *frame,
msg = self->_priv->_message;
uri = webkit_network_request_get_uri (request);
if (g_ascii_strncasecmp (uri, "cid:", 4) == 0) {
gchar *filepath;
@ -148,6 +160,7 @@ mu_msg_body_view_init (MuMsgBodyView *obj)
obj->_priv = MU_MSG_BODY_VIEW_GET_PRIVATE(obj);
obj->_priv->_message = NULL;
obj->_priv->_mu_mode = FALSE;
obj->_priv->_settings = webkit_web_settings_new ();
g_object_set (G_OBJECT(obj->_priv->_settings),
@ -224,9 +237,11 @@ mu_msg_body_view_set_message (MuMsgBodyView *self, MuMsg *msg)
g_return_if_fail (self);
if (self->_priv->_message)
if (self->_priv->_message) {
mu_msg_unref (self->_priv->_message);
self->_priv->_message = NULL;
}
self->_priv->_message = msg ? mu_msg_ref (msg) : NULL;
data = msg ? mu_msg_get_body_html (msg) : "";
@ -234,4 +249,23 @@ mu_msg_body_view_set_message (MuMsgBodyView *self, MuMsg *msg)
set_html (self, data);
else
set_text (self, mu_msg_get_body_text (msg));
self->_priv->_mu_mode = FALSE;
}
void
mu_msg_body_view_set_note (MuMsgBodyView *self, const gchar *html)
{
g_return_if_fail (self);
g_return_if_fail (html);
if (self->_priv->_message) {
mu_msg_unref (self->_priv->_message);
self->_priv->_message = NULL;
}
set_html (self, html);
self->_priv->_mu_mode = TRUE;
}

View File

@ -59,7 +59,7 @@ GType mu_msg_body_view_get_type (void) G_GNUC_CONST;
GtkWidget* mu_msg_body_view_new (void);
void mu_msg_body_view_set_message (MuMsgBodyView *self, MuMsg *msg);
void mu_msg_body_view_set_note (MuMsgBodyView *self, const gchar *html);
G_END_DECLS

View File

@ -141,9 +141,6 @@ mu_msg_view_init (MuMsgView *self)
gtk_box_pack_start (GTK_BOX(self), get_body_widget (self),
TRUE, TRUE, 2);
}
static void
@ -169,6 +166,7 @@ update_attachment_area (MuMsgView *self, MuMsg *msg)
if (msg)
attach_num = mu_msg_attach_view_set_message
(MU_MSG_ATTACH_VIEW(self->_priv->_attach), msg);
if (attach_num > 0)
gtk_widget_show_all (self->_priv->_attacharea);
else
@ -189,3 +187,15 @@ mu_msg_view_set_message (MuMsgView *self, MuMsg *msg)
update_attachment_area (self, msg);
}
void
mu_msg_view_set_note (MuMsgView *self, const char *html)
{
g_return_if_fail (MU_IS_MSG_VIEW(self));
mu_msg_header_view_set_message (MU_MSG_HEADER_VIEW(self->_priv->_headers),
NULL);
mu_msg_body_view_set_note (MU_MSG_BODY_VIEW(self->_priv->_body),
html);
}

View File

@ -59,6 +59,7 @@ GType mu_msg_view_get_type (void) G_GNUC_CONST;
GtkWidget* mu_msg_view_new (void);
void mu_msg_view_set_message (MuMsgView *self, MuMsg *msg);
void mu_msg_view_set_note (MuMsgView *self, const char *html);
G_END_DECLS