mirror of https://github.com/djcb/mu.git
* improve message display, support 'internal messages'again
This commit is contained in:
parent
aab3226d90
commit
abd1a45d6c
|
@ -20,8 +20,11 @@
|
|||
#include "mu-msg-view.h"
|
||||
|
||||
#include "mu-msg-normal-view.h"
|
||||
#include "mu-msg-body-view.h"
|
||||
#include "mu-msg-source-view.h"
|
||||
|
||||
#include <webkit/webkitwebview.h>
|
||||
|
||||
#include <mu-msg.h>
|
||||
#include <mu-msg-part.h>
|
||||
|
||||
|
@ -40,8 +43,8 @@ enum {
|
|||
struct _MuMsgViewPrivate {
|
||||
|
||||
/* 'normal' view */
|
||||
GtkWidget *_normal_view, *_source_view;
|
||||
|
||||
GtkWidget *_normal_view, *_source_view, *_internal_view;
|
||||
|
||||
/* TRUE if we're in view-source mode, FALSE otherwise */
|
||||
gboolean _view_source;
|
||||
|
||||
|
@ -93,13 +96,14 @@ clear_widgets (MuMsgView *self)
|
|||
(GtkCallback)each_child_remove,
|
||||
self);
|
||||
|
||||
self->_priv->_normal_view = NULL;
|
||||
self->_priv->_source_view = NULL;
|
||||
self->_priv->_normal_view = NULL;
|
||||
self->_priv->_source_view = NULL;
|
||||
self->_priv->_internal_view = NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
on_body_action_requested (GtkWidget *w, const char* action,
|
||||
MuMsgView *self)
|
||||
on_action_requested (GtkWidget *w, const char* action,
|
||||
MuMsgView *self)
|
||||
{
|
||||
if (g_strcmp0 (action, "view-source") == 0) {
|
||||
|
||||
|
@ -114,7 +118,12 @@ on_body_action_requested (GtkWidget *w, const char* action,
|
|||
if (self->_priv->_msg)
|
||||
mu_msg_ref (self->_priv->_msg);
|
||||
mu_msg_view_set_message (self, self->_priv->_msg);
|
||||
}
|
||||
|
||||
} else if (g_strcmp0 (action, "reindex") == 0) {
|
||||
g_warning ("reindex");
|
||||
} else {
|
||||
g_warning ("unknown action '%s'", action);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -126,7 +135,7 @@ get_source_view (MuMsgView *self, MuMsg *msg)
|
|||
self->_priv->_source_view = mu_msg_source_view_new ();
|
||||
g_signal_connect (self->_priv->_source_view,
|
||||
"action-requested",
|
||||
G_CALLBACK(on_body_action_requested),
|
||||
G_CALLBACK(on_action_requested),
|
||||
self);
|
||||
}
|
||||
|
||||
|
@ -147,7 +156,7 @@ get_normal_view (MuMsgView *self, MuMsg *msg)
|
|||
self->_priv->_normal_view = mu_msg_normal_view_new ();
|
||||
g_signal_connect (self->_priv->_normal_view,
|
||||
"action-requested",
|
||||
G_CALLBACK(on_body_action_requested),
|
||||
G_CALLBACK(on_action_requested),
|
||||
self);
|
||||
}
|
||||
|
||||
|
@ -165,12 +174,32 @@ get_normal_view (MuMsgView *self, MuMsg *msg)
|
|||
(GTK_SCROLLED_WINDOW(scrolledwin),
|
||||
self->_priv->_normal_view);
|
||||
|
||||
gtk_widget_show_all (scrolledwin);
|
||||
gtk_widget_show (scrolledwin);
|
||||
|
||||
return scrolledwin;
|
||||
}
|
||||
|
||||
|
||||
static GtkWidget*
|
||||
get_internal_view (MuMsgView *self, const char *html)
|
||||
{
|
||||
if (!self->_priv->_internal_view) {
|
||||
self->_priv->_internal_view = mu_msg_body_view_new();
|
||||
g_signal_connect (self->_priv->_internal_view,
|
||||
"action-requested",
|
||||
G_CALLBACK(on_action_requested),
|
||||
self);
|
||||
}
|
||||
mu_msg_body_view_set_note (MU_MSG_BODY_VIEW(self->_priv->_internal_view),
|
||||
html);
|
||||
|
||||
gtk_widget_show (self->_priv->_internal_view);
|
||||
|
||||
return self->_priv->_internal_view;
|
||||
}
|
||||
|
||||
|
||||
|
||||
static void
|
||||
mu_msg_view_init (MuMsgView *self)
|
||||
{
|
||||
|
@ -229,9 +258,14 @@ mu_msg_view_set_message (MuMsgView *self, MuMsg *msg)
|
|||
|
||||
|
||||
void
|
||||
mu_msg_view_set_note (MuMsgView *self, const char *html)
|
||||
mu_msg_view_set_note (MuMsgView *self, const gchar* html)
|
||||
{
|
||||
g_return_if_fail (MU_IS_MSG_VIEW(self));
|
||||
/* FIXME */
|
||||
}
|
||||
|
||||
g_return_if_fail (MU_IS_MSG_VIEW(self));
|
||||
|
||||
clear_widgets (self);
|
||||
|
||||
gtk_box_pack_start (GTK_BOX(self),
|
||||
get_internal_view (self, html),
|
||||
TRUE, TRUE, 0);
|
||||
}
|
||||
|
|
|
@ -59,9 +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);
|
||||
typedef enum _MuMsgViewDisplayType MuMsgViewDisplayType;
|
||||
|
||||
void mu_msg_view_set_note (MuMsgView *self, const char *markup);
|
||||
|
||||
G_END_DECLS
|
||||
|
||||
|
|
Loading…
Reference in New Issue