* improve mu-widgets;
- support notes in mail body view - support cmd: pseudo urls in such views
This commit is contained in:
@ -35,9 +35,14 @@ enum {
|
|||||||
LAST_SIGNAL
|
LAST_SIGNAL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
struct _MuMsgBodyViewPrivate {
|
struct _MuMsgBodyViewPrivate {
|
||||||
WebKitWebSettings *_settings;
|
WebKitWebSettings *_settings;
|
||||||
MuMsg *_message;
|
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), \
|
#define MU_MSG_BODY_VIEW_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE((o), \
|
||||||
MU_TYPE_MSG_BODY_VIEW, \
|
MU_TYPE_MSG_BODY_VIEW, \
|
||||||
@ -110,10 +115,16 @@ on_navigation_requested (MuMsgBodyView *self, WebKitWebFrame *frame,
|
|||||||
const char* uri;
|
const char* uri;
|
||||||
|
|
||||||
uri = webkit_network_request_get_uri (request);
|
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))
|
if (!mu_util_is_local_file(uri))
|
||||||
mu_util_play (uri, FALSE, TRUE);
|
mu_util_play (uri, FALSE, TRUE);
|
||||||
|
|
||||||
return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
|
return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -127,6 +138,7 @@ on_resource_request_starting (MuMsgBodyView *self, WebKitWebFrame *frame,
|
|||||||
|
|
||||||
msg = self->_priv->_message;
|
msg = self->_priv->_message;
|
||||||
uri = webkit_network_request_get_uri (request);
|
uri = webkit_network_request_get_uri (request);
|
||||||
|
|
||||||
|
|
||||||
if (g_ascii_strncasecmp (uri, "cid:", 4) == 0) {
|
if (g_ascii_strncasecmp (uri, "cid:", 4) == 0) {
|
||||||
gchar *filepath;
|
gchar *filepath;
|
||||||
@ -148,6 +160,7 @@ mu_msg_body_view_init (MuMsgBodyView *obj)
|
|||||||
obj->_priv = MU_MSG_BODY_VIEW_GET_PRIVATE(obj);
|
obj->_priv = MU_MSG_BODY_VIEW_GET_PRIVATE(obj);
|
||||||
|
|
||||||
obj->_priv->_message = NULL;
|
obj->_priv->_message = NULL;
|
||||||
|
obj->_priv->_mu_mode = FALSE;
|
||||||
|
|
||||||
obj->_priv->_settings = webkit_web_settings_new ();
|
obj->_priv->_settings = webkit_web_settings_new ();
|
||||||
g_object_set (G_OBJECT(obj->_priv->_settings),
|
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);
|
g_return_if_fail (self);
|
||||||
|
|
||||||
if (self->_priv->_message)
|
if (self->_priv->_message) {
|
||||||
mu_msg_unref (self->_priv->_message);
|
mu_msg_unref (self->_priv->_message);
|
||||||
|
self->_priv->_message = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
self->_priv->_message = msg ? mu_msg_ref (msg) : NULL;
|
self->_priv->_message = msg ? mu_msg_ref (msg) : NULL;
|
||||||
|
|
||||||
data = msg ? mu_msg_get_body_html (msg) : "";
|
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);
|
set_html (self, data);
|
||||||
else
|
else
|
||||||
set_text (self, mu_msg_get_body_text (msg));
|
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;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,7 +59,7 @@ GType mu_msg_body_view_get_type (void) G_GNUC_CONST;
|
|||||||
GtkWidget* mu_msg_body_view_new (void);
|
GtkWidget* mu_msg_body_view_new (void);
|
||||||
|
|
||||||
void mu_msg_body_view_set_message (MuMsgBodyView *self, MuMsg *msg);
|
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
|
G_END_DECLS
|
||||||
|
|
||||||
|
|||||||
@ -141,9 +141,6 @@ mu_msg_view_init (MuMsgView *self)
|
|||||||
|
|
||||||
gtk_box_pack_start (GTK_BOX(self), get_body_widget (self),
|
gtk_box_pack_start (GTK_BOX(self), get_body_widget (self),
|
||||||
TRUE, TRUE, 2);
|
TRUE, TRUE, 2);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -169,6 +166,7 @@ update_attachment_area (MuMsgView *self, MuMsg *msg)
|
|||||||
if (msg)
|
if (msg)
|
||||||
attach_num = mu_msg_attach_view_set_message
|
attach_num = mu_msg_attach_view_set_message
|
||||||
(MU_MSG_ATTACH_VIEW(self->_priv->_attach), msg);
|
(MU_MSG_ATTACH_VIEW(self->_priv->_attach), msg);
|
||||||
|
|
||||||
if (attach_num > 0)
|
if (attach_num > 0)
|
||||||
gtk_widget_show_all (self->_priv->_attacharea);
|
gtk_widget_show_all (self->_priv->_attacharea);
|
||||||
else
|
else
|
||||||
@ -189,3 +187,15 @@ mu_msg_view_set_message (MuMsgView *self, MuMsg *msg)
|
|||||||
update_attachment_area (self, 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);
|
||||||
|
}
|
||||||
|
|||||||
@ -59,6 +59,7 @@ GType mu_msg_view_get_type (void) G_GNUC_CONST;
|
|||||||
GtkWidget* mu_msg_view_new (void);
|
GtkWidget* mu_msg_view_new (void);
|
||||||
|
|
||||||
void mu_msg_view_set_message (MuMsgView *self, MuMsg *msg);
|
void mu_msg_view_set_message (MuMsgView *self, MuMsg *msg);
|
||||||
|
void mu_msg_view_set_note (MuMsgView *self, const char *html);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user