Mail module + EMailView cleanups.

This commit is contained in:
Matthew Barnes
2010-08-26 10:20:12 -04:00
parent 5270b3042f
commit 87a3fac95c
8 changed files with 438 additions and 252 deletions

View File

@ -140,7 +140,7 @@ mnv_page_changed (GtkNotebook *book,
em_folder_tree_set_selected (folder_tree, uri, FALSE);
if (mview != priv->current_view) {
mview->prev = priv->current_view;
e_mail_view_set_previous_view (mview, priv->current_view);
priv->current_view = mview;
}
@ -268,7 +268,7 @@ mnv_tab_closed_cb (ClutterTimeline *timeline,
if (E_IS_MAIL_FOLDER_PANE (page))
g_hash_table_remove (data->view->priv->views, folder_uri);
prev = page->prev;
prev = e_mail_view_get_previous_view (page);
if (prev) {
num = emnv_get_page_num (data->view, (GtkWidget *)prev);
mnv_set_current_tab (data->view, num);
@ -343,7 +343,7 @@ tab_remove_gtk_cb (GtkWidget *button,
if (E_IS_MAIL_FOLDER_PANE (page))
g_hash_table_remove (view->priv->views, folder_uri);
prev = page->prev;
prev = e_mail_view_get_previous_view (page);
if (prev) {
num = emnv_get_page_num (view, (GtkWidget *)prev);
gtk_notebook_set_current_page (view->priv->book, num);
@ -865,7 +865,7 @@ mail_netbook_view_open_mail (EMailView *view,
shell_view = e_mail_view_get_shell_view (E_MAIL_VIEW (nview));
pos = emnv_get_page_num (nview, GTK_WIDGET (priv->current_view));
pane = e_mail_message_pane_new (shell_view);
pane->prev = priv->current_view;
e_mail_view_set_previous_view (pane, priv->current_view);
E_MAIL_MESSAGE_PANE(pane)->parent_folder_view = priv->current_view;
priv->current_view = pane;
@ -1086,7 +1086,7 @@ mail_notebook_view_set_folder (EMailReader *reader,
shell_view = e_mail_view_get_shell_view (E_MAIL_VIEW (reader));
priv->current_view = e_mail_folder_pane_new (shell_view);
gtk_widget_show ((GtkWidget *)priv->current_view);
priv->current_view->prev = old_view;
e_mail_view_set_previous_view (priv->current_view, old_view);
page = gtk_notebook_append_page (
priv->book, (GtkWidget *)priv->current_view,
create_tab_label (

View File

@ -35,11 +35,21 @@
struct _EMailViewPrivate {
EShellView *shell_view;
GtkOrientation orientation;
EMailView *previous_view;
guint preview_visible : 1;
guint show_deleted : 1;
};
enum {
PROP_0,
PROP_ORIENTATION,
PROP_PREVIEW_VISIBLE,
PROP_PREVIOUS_VIEW,
PROP_SHELL_VIEW,
PROP_SHOW_DELETED
};
enum {
PANE_CLOSE,
VIEW_CHANGED,
@ -47,14 +57,6 @@ enum {
LAST_SIGNAL
};
enum {
PROP_0,
PROP_ORIENTATION,
PROP_PREVIEW_VISIBLE,
PROP_SHELL_VIEW,
PROP_SHOW_DELETED
};
static guint signals[LAST_SIGNAL];
G_DEFINE_TYPE (EMailView, e_mail_view, GTK_TYPE_VBOX)
@ -88,6 +90,12 @@ mail_view_set_property (GObject *object,
g_value_get_boolean (value));
return;
case PROP_PREVIOUS_VIEW:
e_mail_view_set_previous_view (
E_MAIL_VIEW (object),
g_value_get_object (value));
return;
case PROP_SHELL_VIEW:
mail_view_set_shell_view (
E_MAIL_VIEW (object),
@ -123,6 +131,12 @@ mail_view_get_property (GObject *object,
E_MAIL_VIEW (object)));
return;
case PROP_PREVIOUS_VIEW:
g_value_set_object (
value, e_mail_view_get_previous_view (
E_MAIL_VIEW (object)));
return;
case PROP_SHELL_VIEW:
g_value_set_object (
value, e_mail_view_get_shell_view (
@ -151,6 +165,11 @@ mail_view_dispose (GObject *object)
priv->shell_view = NULL;
}
if (priv->previous_view != NULL) {
g_object_unref (priv->previous_view);
priv->previous_view = NULL;
}
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (e_mail_view_parent_class)->dispose (object);
}
@ -269,6 +288,16 @@ e_mail_view_class_init (EMailViewClass *class)
FALSE,
G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_PREVIOUS_VIEW,
g_param_spec_object (
"previous-view",
"Previous View",
NULL,
E_TYPE_MAIL_VIEW,
G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_SHELL_VIEW,
@ -399,6 +428,33 @@ e_mail_view_set_preview_visible (EMailView *view,
class->set_preview_visible (view, visible);
}
EMailView *
e_mail_view_get_previous_view (EMailView *view)
{
g_return_val_if_fail (E_IS_MAIL_VIEW (view), NULL);
return view->priv->previous_view;
}
void
e_mail_view_set_previous_view (EMailView *view,
EMailView *previous_view)
{
g_return_if_fail (E_IS_MAIL_VIEW (view));
if (previous_view != NULL) {
g_return_if_fail (E_IS_MAIL_VIEW (previous_view));
g_object_ref (previous_view);
}
if (view->priv->previous_view != NULL)
g_object_unref (view->priv->previous_view);
view->priv->previous_view = previous_view;
g_object_notify (G_OBJECT (view), "previous-view");
}
gboolean
e_mail_view_get_show_deleted (EMailView *view)
{

View File

@ -55,7 +55,6 @@ typedef struct _EMailViewPrivate EMailViewPrivate;
struct _EMailView {
GtkVBox parent;
EMailViewPrivate *priv;
EMailView *prev;
};
struct _EMailViewClass {
@ -97,6 +96,9 @@ GtkOrientation e_mail_view_get_orientation (EMailView *);
void e_mail_view_set_preview_visible (EMailView *view,
gboolean visible);
gboolean e_mail_view_get_preview_visible (EMailView *view);
EMailView * e_mail_view_get_previous_view (EMailView *view);
void e_mail_view_set_previous_view (EMailView *view,
EMailView *previous_view);
gboolean e_mail_view_get_show_deleted (EMailView *view);
void e_mail_view_set_show_deleted (EMailView *view,
gboolean show_deleted);

View File

@ -38,7 +38,6 @@
#include "mail-ops.h"
#include "message-list.h"
#include "e-mail-view.h"
#include "e-mail-paned-view.h"
#include "e-mail-notebook-view.h"
#include "e-mail-reader.h"
@ -51,31 +50,18 @@
((obj), E_TYPE_MAIL_SHELL_CONTENT, EMailShellContentPrivate))
struct _EMailShellContentPrivate {
gint temp;
EMailView *mail_view;
};
enum {
PROP_0,
PROP_GROUP_BY_THREADS,
PROP_ORIENTATION,
PROP_PREVIEW_VISIBLE,
PROP_SHOW_DELETED
PROP_MAIL_VIEW
};
static gpointer parent_class;
static GType mail_shell_content_type;
static void
mail_shell_content_dispose (GObject *object)
{
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (object);
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
reconnect_changed_event (EMailReader *child, EMailReader *parent)
{
@ -94,12 +80,65 @@ mail_shell_content_view_changed_cb (EMailView *view,
{
g_object_freeze_notify (G_OBJECT (content));
g_object_notify (G_OBJECT (content), "group-by-threads");
g_object_notify (G_OBJECT (content), "show-deleted");
g_object_notify (G_OBJECT (content), "preview-visible");
g_object_notify (G_OBJECT (content), "orientation");
g_object_thaw_notify (G_OBJECT (content));
}
static void
mail_shell_content_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_GROUP_BY_THREADS:
e_mail_reader_set_group_by_threads (
E_MAIL_READER (object),
g_value_get_boolean (value));
return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
mail_shell_content_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_GROUP_BY_THREADS:
g_value_set_boolean (
value, e_mail_reader_get_group_by_threads (
E_MAIL_READER (object)));
return;
case PROP_MAIL_VIEW:
g_value_set_object (
value, e_mail_shell_content_get_mail_view (
E_MAIL_SHELL_CONTENT (object)));
return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
mail_shell_content_dispose (GObject *object)
{
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (object);
if (priv->mail_view != NULL) {
g_object_unref (priv->mail_view);
priv->mail_view = NULL;
}
/* Chain up to parent's dispose() method. */
G_OBJECT_CLASS (parent_class)->dispose (object);
}
static void
mail_shell_content_constructed (GObject *object)
{
@ -113,7 +152,7 @@ mail_shell_content_constructed (GObject *object)
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (object);
/* Chain up to parent's constructed() method. */
/* Chain up to parent's constructed () method. */
G_OBJECT_CLASS (parent_class)->constructed (object);
shell_content = E_SHELL_CONTENT (object);
@ -125,7 +164,7 @@ mail_shell_content_constructed (GObject *object)
container = GTK_WIDGET (object);
if (e_shell_get_express_mode(e_shell_get_default ())) {
if (e_shell_get_express_mode (e_shell_get_default ())) {
widget = e_mail_notebook_view_new (shell_view);
g_signal_connect (
widget, "view-changed",
@ -134,8 +173,8 @@ mail_shell_content_constructed (GObject *object)
} else
widget = e_mail_paned_view_new (shell_view);
E_MAIL_SHELL_CONTENT(object)->view = (EMailView *)widget;
gtk_container_add (GTK_CONTAINER (container), widget);
priv->mail_view = g_object_ref (widget);
gtk_widget_show (widget);
g_signal_connect (
@ -150,23 +189,45 @@ mail_shell_content_constructed (GObject *object)
static guint32
mail_shell_content_check_state (EShellContent *shell_content)
{
return e_mail_reader_check_state (E_MAIL_READER (E_MAIL_SHELL_CONTENT(shell_content)->view));
EMailShellContentPrivate *priv;
EMailReader *reader;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (shell_content);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_check_state (reader);
}
static void
mail_shell_content_focus_search_results (EShellContent *shell_content)
{
EMailShellContentPrivate *priv;
GtkWidget *message_list;
EMailReader *reader;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (shell_content);
gtk_widget_grab_focus (e_mail_reader_get_message_list(E_MAIL_READER (E_MAIL_SHELL_CONTENT(shell_content)->view)));
reader = E_MAIL_READER (priv->mail_view);
message_list = e_mail_reader_get_message_list (reader);
gtk_widget_grab_focus (message_list);
}
static guint
mail_shell_content_open_selected_mail (EMailReader *reader)
{
return e_mail_reader_open_selected_mail (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_open_selected_mail (reader);
}
static GtkActionGroup *
@ -186,37 +247,85 @@ mail_shell_content_get_action_group (EMailReader *reader)
static EMFormatHTML *
mail_shell_content_get_formatter (EMailReader *reader)
{
return e_mail_reader_get_formatter (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_get_formatter (reader);
}
static gboolean
mail_shell_content_get_hide_deleted (EMailReader *reader)
{
return e_mail_reader_get_hide_deleted (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_get_hide_deleted (reader);
}
static GtkWidget *
mail_shell_content_get_message_list (EMailReader *reader)
{
return e_mail_reader_get_message_list (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_get_message_list (reader);
}
static GtkMenu *
mail_shell_content_get_popup_menu (EMailReader *reader)
{
return e_mail_reader_get_popup_menu (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_get_popup_menu (reader);
}
static EShellBackend *
mail_shell_content_get_shell_backend (EMailReader *reader)
{
return e_mail_reader_get_shell_backend (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_get_shell_backend (reader);
}
static GtkWindow *
mail_shell_content_get_window (EMailReader *reader)
{
return e_mail_reader_get_window (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_get_window (reader);
}
static void
@ -224,93 +333,29 @@ mail_shell_content_set_folder (EMailReader *reader,
CamelFolder *folder,
const gchar *folder_uri)
{
return e_mail_reader_set_folder (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view),
folder,
folder_uri);
EMailShellContentPrivate *priv;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
return e_mail_reader_set_folder (reader, folder, folder_uri);
}
static void
mail_shell_content_show_search_bar (EMailReader *reader)
{
e_mail_reader_show_search_bar (E_MAIL_READER(E_MAIL_SHELL_CONTENT(reader)->view));
}
EMailShellContentPrivate *priv;
static void
mail_shell_content_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_GROUP_BY_THREADS:
g_object_set (
E_MAIL_READER (E_MAIL_SHELL_CONTENT(object)->view),
"group-by-threads",
g_value_get_boolean (value),
NULL);
return;
priv = E_MAIL_SHELL_CONTENT_GET_PRIVATE (reader);
case PROP_ORIENTATION:
e_mail_view_set_orientation (
E_MAIL_SHELL_CONTENT(object)->view,
g_value_get_enum (value));
return;
/* Forward this to our internal EMailView, which
* also implements the EMailReader interface. */
reader = E_MAIL_READER (priv->mail_view);
case PROP_PREVIEW_VISIBLE:
e_mail_view_set_preview_visible (
E_MAIL_SHELL_CONTENT(object)->view,
g_value_get_boolean (value));
return;
case PROP_SHOW_DELETED:
e_mail_view_set_show_deleted (
E_MAIL_SHELL_CONTENT(object)->view,
g_value_get_boolean (value));
return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
static void
mail_shell_content_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec)
{
switch (property_id) {
case PROP_GROUP_BY_THREADS: {
gboolean thr;
g_object_get ((GObject *)E_MAIL_SHELL_CONTENT(object)->view, "group-by-threads", &thr, NULL);
g_value_set_boolean (
value,
thr);
return;
}
case PROP_ORIENTATION:
g_value_set_enum (
value,
e_mail_view_get_orientation (
E_MAIL_SHELL_CONTENT(object)->view));
return;
case PROP_PREVIEW_VISIBLE:
g_value_set_boolean (
value,
e_mail_view_get_preview_visible (
E_MAIL_SHELL_CONTENT(object)->view));
return;
case PROP_SHOW_DELETED:
g_value_set_boolean (
value,
e_mail_view_get_show_deleted (
E_MAIL_SHELL_CONTENT(object)->view));
return;
}
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
e_mail_reader_show_search_bar (reader);
}
static void
@ -323,10 +368,10 @@ mail_shell_content_class_init (EMailShellContentClass *class)
g_type_class_add_private (class, sizeof (EMailShellContentPrivate));
object_class = G_OBJECT_CLASS (class);
object_class->dispose = mail_shell_content_dispose;
object_class->constructed = mail_shell_content_constructed;
object_class->set_property = mail_shell_content_set_property;
object_class->get_property = mail_shell_content_get_property;
object_class->dispose = mail_shell_content_dispose;
object_class->constructed = mail_shell_content_constructed;
shell_content_class = E_SHELL_CONTENT_CLASS (class);
shell_content_class->check_state = mail_shell_content_check_state;
@ -339,26 +384,13 @@ mail_shell_content_class_init (EMailShellContentClass *class)
g_object_class_install_property (
object_class,
PROP_PREVIEW_VISIBLE,
g_param_spec_boolean (
"preview-visible",
"Preview is Visible",
"Whether the preview pane is visible",
TRUE,
G_PARAM_READWRITE));
g_object_class_install_property (
object_class,
PROP_SHOW_DELETED,
g_param_spec_boolean (
"show-deleted",
"Show Deleted",
PROP_MAIL_VIEW,
g_param_spec_object (
"mail-view",
"Mail View",
NULL,
FALSE,
G_PARAM_READWRITE));
g_object_class_override_property (
object_class, PROP_ORIENTATION, "orientation");
E_TYPE_MAIL_VIEW,
G_PARAM_READABLE));
}
static void
@ -413,12 +445,6 @@ e_mail_shell_content_register_type (GTypeModule *type_module)
NULL /* interface_data */
};
static const GInterfaceInfo orientable_info = {
(GInterfaceInitFunc) NULL,
(GInterfaceFinalizeFunc) NULL,
NULL /* interface_data */
};
mail_shell_content_type = g_type_module_register_type (
type_module, E_TYPE_SHELL_CONTENT,
"EMailShellContent", &type_info, 0);
@ -426,10 +452,6 @@ e_mail_shell_content_register_type (GTypeModule *type_module)
g_type_module_add_interface (
type_module, mail_shell_content_type,
E_TYPE_MAIL_READER, &reader_info);
g_type_module_add_interface (
type_module, mail_shell_content_type,
GTK_TYPE_ORIENTABLE, &orientable_info);
}
GtkWidget *
@ -442,6 +464,15 @@ e_mail_shell_content_new (EShellView *shell_view)
"shell-view", shell_view, NULL);
}
EMailView *
e_mail_shell_content_get_mail_view (EMailShellContent *mail_shell_content)
{
g_return_val_if_fail (
E_IS_MAIL_SHELL_CONTENT (mail_shell_content), NULL);
return mail_shell_content->priv->mail_view;
}
EShellSearchbar *
e_mail_shell_content_get_searchbar (EMailShellContent *mail_shell_content)
{
@ -458,23 +489,3 @@ e_mail_shell_content_get_searchbar (EMailShellContent *mail_shell_content)
return E_SHELL_SEARCHBAR (searchbar);
}
void
e_mail_shell_content_set_search_strings (EMailShellContent *mail_shell_content,
GSList *search_strings)
{
e_mail_view_set_search_strings (mail_shell_content->view, search_strings);
}
GalViewInstance *
e_mail_shell_content_get_view_instance (EMailShellContent *mail_shell_content)
{
return e_mail_view_get_view_instance (mail_shell_content->view);
}
void
e_mail_shell_content_update_view_instance (EMailShellContent *mail_shell_content)
{
e_mail_view_update_view_instance (mail_shell_content->view);
}

View File

@ -55,7 +55,6 @@ typedef struct _EMailShellContentPrivate EMailShellContentPrivate;
struct _EMailShellContent {
EShellContent parent;
EMailView *view;
EMailShellContentPrivate *priv;
};
@ -67,27 +66,11 @@ GType e_mail_shell_content_get_type (void);
void e_mail_shell_content_register_type
(GTypeModule *type_module);
GtkWidget * e_mail_shell_content_new(EShellView *shell_view);
gboolean e_mail_shell_content_get_preview_visible
EMailView * e_mail_shell_content_get_mail_view
(EMailShellContent *mail_shell_content);
void e_mail_shell_content_set_preview_visible
(EMailShellContent *mail_shell_content,
gboolean preview_visible);
EShellSearchbar *
e_mail_shell_content_get_searchbar
(EMailShellContent *mail_shell_content);
gboolean e_mail_shell_content_get_show_deleted
(EMailShellContent *mail_shell_content);
void e_mail_shell_content_set_show_deleted
(EMailShellContent *mail_shell_content,
gboolean show_deleted);
GalViewInstance *
e_mail_shell_content_get_view_instance
(EMailShellContent *mail_shell_content);
void e_mail_shell_content_set_search_strings
(EMailShellContent *mail_shell_content,
GSList *search_strings);
void e_mail_shell_content_update_view_instance
(EMailShellContent *mail_shell_content);
G_END_DECLS

View File

@ -28,6 +28,7 @@ action_gal_save_custom_view_cb (GtkAction *action,
{
EMailShellContent *mail_shell_content;
EShellView *shell_view;
EMailView *mail_view;
GalViewInstance *view_instance;
/* All shell views repond to the activation of this action,
@ -38,7 +39,9 @@ action_gal_save_custom_view_cb (GtkAction *action,
return;
mail_shell_content = mail_shell_view->priv->mail_shell_content;
view_instance = e_mail_shell_content_get_view_instance (mail_shell_content);
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
view_instance = e_mail_view_get_view_instance (mail_view);
gal_view_instance_save_as (view_instance);
}
@ -87,6 +90,7 @@ action_mail_create_search_folder_cb (GtkAction *action,
EShellSearchbar *searchbar;
EFilterRule *search_rule;
EMVFolderRule *vfolder_rule;
EMailView *mail_view;
const gchar *folder_uri;
const gchar *search_text;
gchar *rule_name;
@ -98,13 +102,14 @@ action_mail_create_search_folder_cb (GtkAction *action,
g_return_if_fail (search_rule != NULL);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
searchbar = e_mail_shell_content_get_searchbar (mail_shell_content);
search_text = e_shell_searchbar_get_search_text (searchbar);
search_text = e_shell_searchbar_get_search_text (searchbar);
if (search_text == NULL || *search_text == '\0')
search_text = "''";
reader = E_MAIL_READER (mail_shell_content->view);
reader = E_MAIL_READER (mail_view);
folder_uri = e_mail_reader_get_folder_uri (reader);
search_rule = vfolder_clone_rule (search_rule);
@ -212,13 +217,15 @@ static void
action_mail_folder_mark_all_as_read_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
EMailReader *reader;
EShellWindow *shell_window;
EShellView *shell_view;
EShellWindow *shell_window;
EMailShellContent *mail_shell_content;
EMailReader *reader;
EMailView *mail_view;
CamelFolder *folder;
GtkWindow *parent;
MailFolderCache *cache;
MessageList *message_list;
GtkWidget *message_list;
GPtrArray *uids;
const gchar *key;
const gchar *prompt;
@ -228,7 +235,10 @@ action_mail_folder_mark_all_as_read_cb (GtkAction *action,
shell_window = e_shell_view_get_shell_window (shell_view);
parent = GTK_WINDOW (shell_window);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
g_return_if_fail (folder != NULL);
@ -243,10 +253,10 @@ action_mail_folder_mark_all_as_read_cb (GtkAction *action,
if (!em_utils_prompt_user (parent, key, prompt, NULL))
return;
message_list = MESSAGE_LIST (e_mail_reader_get_message_list (reader));
message_list = e_mail_reader_get_message_list (reader);
g_return_if_fail (message_list != NULL);
uids = message_list_get_uids (message_list);
uids = message_list_get_uids (MESSAGE_LIST (message_list));
camel_folder_freeze (folder);
for (ii = 0; ii < uids->len; ii++)
@ -364,10 +374,15 @@ static void
action_mail_folder_select_thread_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
GtkWidget *message_list;
EMailReader *reader;
EMailView *mail_view;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
message_list_select_thread (MESSAGE_LIST (message_list));
@ -377,10 +392,15 @@ static void
action_mail_folder_select_subthread_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
GtkWidget *message_list;
EMailReader *reader;
EMailView *mail_view;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
message_list_select_subthread (MESSAGE_LIST (message_list));
@ -419,7 +439,9 @@ static void
action_mail_label_cb (GtkToggleAction *action,
EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
EMailReader *reader;
EMailView *mail_view;
CamelFolder *folder;
GPtrArray *uids;
const gchar *tag;
@ -428,7 +450,10 @@ action_mail_label_cb (GtkToggleAction *action,
tag = g_object_get_data (G_OBJECT (action), "tag");
g_return_if_fail (tag != NULL);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
uids = e_mail_reader_get_selected_uids (reader);
@ -452,12 +477,14 @@ action_mail_label_new_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
EShell *shell;
EShellSettings *shell_settings;
EShellWindow *shell_window;
EShellView *shell_view;
EShellWindow *shell_window;
EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailLabelDialog *label_dialog;
EMailLabelListStore *store;
EMailReader *reader;
EMailView *mail_view;
CamelFolder *folder;
GtkTreeModel *model;
GtkTreeIter iter;
@ -502,7 +529,10 @@ action_mail_label_new_cb (GtkAction *action,
gtk_tree_model_iter_nth_child (model, &iter, NULL, n_children - 1);
label_tag = e_mail_label_list_store_get_tag (store, &iter);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
uids = e_mail_reader_get_selected_uids (reader);
@ -524,9 +554,11 @@ action_mail_label_none_cb (GtkAction *action,
{
EShell *shell;
EShellView *shell_view;
EShellSettings *shell_settings;
EShellWindow *shell_window;
EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailReader *reader;
EMailView *mail_view;
GtkTreeModel *tree_model;
CamelFolder *folder;
GtkTreeIter iter;
@ -542,7 +574,10 @@ action_mail_label_none_cb (GtkAction *action,
tree_model = e_shell_settings_get_object (
shell_settings, "mail-label-list-store");
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
uids = e_mail_reader_get_selected_uids (reader);
@ -573,11 +608,16 @@ static void
action_mail_show_deleted_cb (GtkToggleAction *action,
EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
GtkWidget *message_list;
EMailReader *reader;
EMailView *mail_view;
gboolean active;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
active = gtk_toggle_action_get_active (action);
@ -592,10 +632,12 @@ action_mail_smart_backward_cb (GtkAction *action,
EShellView *shell_view;
EShellWindow *shell_window;
EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailShellSidebar *mail_shell_sidebar;
EMFolderTree *folder_tree;
EMFormatHTML *formatter;
EMailReader *reader;
EMailView *mail_view;
GtkWidget *message_list;
GtkToggleAction *toggle_action;
EWebView *web_view;
@ -609,10 +651,13 @@ action_mail_smart_backward_cb (GtkAction *action,
shell = e_shell_window_get_shell (shell_window);
shell_settings = e_shell_get_shell_settings (shell);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar;
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
reader = E_MAIL_READER (mail_view);
formatter = e_mail_reader_get_formatter (reader);
message_list = e_mail_reader_get_message_list (reader);
@ -658,10 +703,12 @@ action_mail_smart_forward_cb (GtkAction *action,
EShellView *shell_view;
EShellWindow *shell_window;
EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailShellSidebar *mail_shell_sidebar;
EMFolderTree *folder_tree;
EMFormatHTML *formatter;
EMailReader *reader;
EMailView *mail_view;
GtkWidget *message_list;
GtkToggleAction *toggle_action;
EWebView *web_view;
@ -675,10 +722,13 @@ action_mail_smart_forward_cb (GtkAction *action,
shell = e_shell_window_get_shell (shell_window);
shell_settings = e_shell_get_shell_settings (shell);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar;
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
reader = E_MAIL_READER (mail_view);
formatter = e_mail_reader_get_formatter (reader);
message_list = e_mail_reader_get_message_list (reader);
@ -727,10 +777,15 @@ static void
action_mail_threads_collapse_all_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
GtkWidget *message_list;
EMailReader *reader;
EMailView *mail_view;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
message_list_set_threaded_collapse_all (MESSAGE_LIST (message_list));
@ -740,10 +795,15 @@ static void
action_mail_threads_expand_all_cb (GtkAction *action,
EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
GtkWidget *message_list;
EMailReader *reader;
EMailView *mail_view;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
message_list_set_threaded_expand_all (MESSAGE_LIST (message_list));
@ -793,11 +853,11 @@ action_mail_view_cb (GtkRadioAction *action,
EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
GtkOrientable *orientable;
GtkOrientation orientation;
EMailView *mail_view;
mail_shell_content = mail_shell_view->priv->mail_shell_content;
orientable = GTK_ORIENTABLE (mail_shell_content);
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
switch (gtk_radio_action_get_current_value (action)) {
case 0:
@ -810,7 +870,7 @@ action_mail_view_cb (GtkRadioAction *action,
g_return_if_reached ();
}
gtk_orientable_set_orientation (orientable, orientation);
e_mail_view_set_orientation (mail_view, orientation);
}
static GtkActionEntry mail_entries[] = {
@ -1289,6 +1349,7 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
EShell *shell;
EShellSearchbar *searchbar;
EActionComboBox *combo_box;
EMailView *mail_view;
GtkActionGroup *action_group;
GtkAction *action;
GConfBridge *bridge;
@ -1302,6 +1363,7 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
shell = e_shell_window_get_shell (shell_window);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
searchbar = e_mail_shell_content_get_searchbar (mail_shell_content);
/* Mail Actions */
@ -1371,7 +1433,7 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
e_mutual_binding_new (
ACTION (MAIL_PREVIEW), "active",
mail_shell_content, "preview-visible");
mail_view, "preview-visible");
e_mutual_binding_new (
ACTION (MAIL_THREADS_GROUP_BY), "active",
@ -1387,7 +1449,7 @@ e_mail_shell_view_actions_init (EMailShellView *mail_shell_view)
e_mutual_binding_new (
ACTION (MAIL_SHOW_DELETED), "active",
mail_shell_content, "show-deleted");
mail_view, "show-deleted");
/* Keep the sensitivity of "Create Search Folder from Search"
* in sync with "Save Search" so that its only selectable when
@ -1464,10 +1526,12 @@ void
e_mail_shell_view_update_popup_labels (EMailShellView *mail_shell_view)
{
EShell *shell;
EShellSettings *shell_settings;
EShellWindow *shell_window;
EShellView *shell_view;
EShellWindow *shell_window;
EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailReader *reader;
EMailView *mail_view;
GtkUIManager *ui_manager;
GtkActionGroup *action_group;
GtkTreeModel *tree_model;
@ -1498,7 +1562,10 @@ e_mail_shell_view_update_popup_labels (EMailShellView *mail_shell_view)
gtk_ui_manager_remove_ui (ui_manager, merge_id);
e_action_group_remove_all_actions (action_group);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
uids = e_mail_reader_get_selected_uids (reader);
valid = gtk_tree_model_get_iter_first (tree_model, &iter);

View File

@ -32,12 +32,18 @@ mail_shell_view_folder_tree_selected_cb (EMailShellView *mail_shell_view,
guint32 flags,
EMFolderTree *folder_tree)
{
EMailShellContent *mail_shell_content;
EShellView *shell_view;
EMailReader *reader;
EMailView *mail_view;
gboolean folder_selected;
shell_view = E_SHELL_VIEW (mail_shell_view);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder_selected =
!(flags & CAMEL_FOLDER_NOSELECT) &&
@ -55,9 +61,13 @@ static gboolean
mail_shell_view_folder_tree_key_press_event_cb (EMailShellView *mail_shell_view,
GdkEventKey *event)
{
EMailReader *reader;
EMailShellContent *mail_shell_content;
EMailView *mail_view;
gboolean handled = FALSE;
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
if ((event->state & GDK_CONTROL_MASK) != 0)
goto ctrl;
@ -89,8 +99,7 @@ ctrl:
emit:
/* Forward the key press to the EMailReader interface. */
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
g_signal_emit_by_name (reader, "key-press-event", event, &handled);
g_signal_emit_by_name (mail_view, "key-press-event", event, &handled);
exit:
return handled;
@ -100,19 +109,24 @@ static void
mail_shell_view_folder_tree_selection_done_cb (EMailShellView *mail_shell_view,
GtkWidget *menu)
{
EMailShellContent *mail_shell_content;
EMailShellSidebar *mail_shell_sidebar;
EMFolderTree *folder_tree;
GtkWidget *message_list;
EMailReader *reader;
EMailView *mail_view;
const gchar *list_uri;
gchar *tree_uri;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
message_list = e_mail_reader_get_message_list (reader);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar;
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
/* Don't use e_mail_reader_get_folder_uri() here. The fact that
* the method gets the folder URI from the message list is supposed
* to be a hidden implementation detail, and we want to explicitly
@ -223,17 +237,22 @@ mail_shell_view_popup_event_cb (EMailShellView *mail_shell_view,
GdkEventButton *event,
const gchar *uri)
{
EMailShellContent *mail_shell_content;
EShellView *shell_view;
EMailReader *reader;
EMailView *mail_view;
GtkMenu *menu;
if (uri != NULL)
return FALSE;
shell_view = E_SHELL_VIEW (mail_shell_view);
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
menu = e_mail_reader_get_popup_menu (reader);
shell_view = E_SHELL_VIEW (mail_shell_view);
e_shell_view_update_actions (shell_view);
if (event == NULL)
@ -259,7 +278,9 @@ mail_shell_view_scroll_cb (EMailShellView *mail_shell_view,
EShellView *shell_view;
EShellWindow *shell_window;
EShellSettings *shell_settings;
EMailShellContent *mail_shell_content;
EMailReader *reader;
EMailView *mail_view;
EWebView *web_view;
GtkWidget *message_list;
gboolean magic_spacebar;
@ -283,7 +304,10 @@ mail_shell_view_scroll_cb (EMailShellView *mail_shell_view,
if (!magic_spacebar)
return;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
if (scroll_type == GTK_SCROLL_PAGE_FORWARD)
@ -372,17 +396,22 @@ static void
mail_shell_view_prepare_for_quit_cb (EMailShellView *mail_shell_view,
EActivity *activity)
{
EMailShellContent *mail_shell_content;
CamelFolder *folder;
EMailReader *reader;
EMailView *mail_view;
GtkWidget *message_list;
/* If we got here, it means the application is shutting down
* and this is the last EMailShellView instance. Synchronize
* the currently selected folder before we terminate. */
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
message_list = e_mail_reader_get_message_list (reader);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
message_list = e_mail_reader_get_message_list (reader);
message_list_save_state (MESSAGE_LIST (message_list));
@ -427,10 +456,13 @@ mail_shell_view_notify_view_id_cb (EMailShellView *mail_shell_view)
{
EMailShellContent *mail_shell_content;
GalViewInstance *view_instance;
EMailView *mail_view;
const gchar *view_id;
mail_shell_content = mail_shell_view->priv->mail_shell_content;
view_instance = e_mail_shell_content_get_view_instance (mail_shell_content);
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
view_instance = e_mail_view_get_view_instance (mail_view);
view_id = e_shell_view_get_view_id (E_SHELL_VIEW (mail_shell_view));
/* A NULL view ID implies we're in a custom view. But you can
@ -481,6 +513,7 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view)
GtkUIManager *ui_manager;
GtkWidget *message_list;
EMailReader *reader;
EMailView *mail_view;
EWebView *web_view;
const gchar *source;
guint merge_id;
@ -513,19 +546,21 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view)
priv->mail_shell_content = g_object_ref (shell_content);
priv->mail_shell_sidebar = g_object_ref (shell_sidebar);
reader = E_MAIL_READER (E_MAIL_SHELL_CONTENT(shell_content)->view);
formatter = e_mail_reader_get_formatter (reader);
message_list = e_mail_reader_get_message_list (reader);
mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
em_folder_tree_set_selectable_widget (folder_tree, message_list);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_tree));
mail_shell_content = E_MAIL_SHELL_CONTENT (shell_content);
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
searchbar = e_mail_shell_content_get_searchbar (mail_shell_content);
combo_box = e_shell_searchbar_get_scope_combo_box (searchbar);
reader = E_MAIL_READER (shell_content);
formatter = e_mail_reader_get_formatter (reader);
message_list = e_mail_reader_get_message_list (reader);
em_folder_tree_set_selectable_widget (folder_tree, message_list);
/* The folder tree and scope combo box are both insensitive
* when searching beyond the currently selected folder. */
e_mutual_binding_new (
@ -571,8 +606,8 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view)
g_signal_connect_object (
reader, "folder-loaded",
G_CALLBACK (e_mail_shell_content_update_view_instance),
shell_content, G_CONNECT_SWAPPED);
G_CALLBACK (e_mail_view_update_view_instance),
mail_view, G_CONNECT_SWAPPED);
/* Use the same callback as "changed". */
g_signal_connect_object (
@ -634,6 +669,11 @@ e_mail_shell_view_private_constructed (EMailShellView *mail_shell_view)
e_mail_shell_view_actions_init (mail_shell_view);
e_mail_shell_view_update_search_filter (mail_shell_view);
/* This binding must come after e_mail_reader_init(). */
e_mutual_binding_new (
shell_content, "group-by-threads",
mail_view, "group-by-threads");
/* Populate built-in rules for search entry popup menu.
* Keep the assertions, please. If the conditions aren't
* met we're going to crash anyway, just more mysteriously. */
@ -707,6 +747,7 @@ e_mail_shell_view_restore_state (EMailShellView *mail_shell_view)
EMailShellContent *mail_shell_content;
EShellSearchbar *searchbar;
EMailReader *reader;
EMailView *mail_view;
CamelFolder *folder;
CamelVeeFolder *vee_folder;
const gchar *old_state_group;
@ -718,9 +759,10 @@ e_mail_shell_view_restore_state (EMailShellView *mail_shell_view)
g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
searchbar = e_mail_shell_content_get_searchbar (mail_shell_content);
reader = E_MAIL_READER (mail_shell_content->view);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
folder_uri = e_mail_reader_get_folder_uri (reader);
@ -774,7 +816,9 @@ void
e_mail_shell_view_create_filter_from_selected (EMailShellView *mail_shell_view,
gint filter_type)
{
EMailShellContent *mail_shell_content;
EMailReader *reader;
EMailView *mail_view;
CamelFolder *folder;
const gchar *filter_source;
const gchar *folder_uri;
@ -787,7 +831,10 @@ e_mail_shell_view_create_filter_from_selected (EMailShellView *mail_shell_view,
g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
folder_uri = e_mail_reader_get_folder_uri (reader);
uids = e_mail_reader_get_selected_uids (reader);
@ -837,7 +884,9 @@ void
e_mail_shell_view_create_vfolder_from_selected (EMailShellView *mail_shell_view,
gint vfolder_type)
{
EMailShellContent *mail_shell_content;
EMailReader *reader;
EMailView *mail_view;
CamelFolder *folder;
const gchar *folder_uri;
GPtrArray *uids;
@ -849,7 +898,10 @@ e_mail_shell_view_create_vfolder_from_selected (EMailShellView *mail_shell_view,
g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
folder_uri = e_mail_reader_get_folder_uri (reader);
uids = e_mail_reader_get_selected_uids (reader);
@ -875,6 +927,7 @@ e_mail_shell_view_update_sidebar (EMailShellView *mail_shell_view)
EShellSidebar *shell_sidebar;
EShellView *shell_view;
EMailReader *reader;
EMailView *mail_view;
CamelStore *local_store;
CamelStore *parent_store;
CamelFolder *folder;
@ -893,11 +946,12 @@ e_mail_shell_view_update_sidebar (EMailShellView *mail_shell_view)
g_return_if_fail (E_IS_MAIL_SHELL_VIEW (mail_shell_view));
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
shell_view = E_SHELL_VIEW (mail_shell_view);
shell_sidebar = e_shell_view_get_shell_sidebar (shell_view);
reader = E_MAIL_READER (mail_shell_content->view);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
folder_uri = e_mail_reader_get_folder_uri (reader);

View File

@ -119,10 +119,15 @@ mail_shell_view_show_search_results_folder (EMailShellView *mail_shell_view,
CamelFolder *folder,
const gchar *folder_uri)
{
EMailShellContent *mail_shell_content;
GtkWidget *message_list;
EMailView *mail_view;
EMailReader *reader;
reader = E_MAIL_READER (mail_shell_view->priv->mail_shell_content->view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
message_list = e_mail_reader_get_message_list (reader);
message_list_freeze (MESSAGE_LIST (message_list));
@ -177,10 +182,14 @@ mail_shell_view_toggled (EShellView *shell_view)
basename = E_MAIL_READER_UI_DEFINITION;
if (view_is_active && priv->merge_id == 0) {
EMailView *mail_view;
priv->merge_id = e_ui_manager_add_ui_from_file (
E_UI_MANAGER (ui_manager), basename);
mail_view = e_mail_shell_content_get_mail_view (
priv->mail_shell_content);
e_mail_reader_create_charset_menu (
E_MAIL_READER (priv->mail_shell_content->view),
E_MAIL_READER (mail_view),
ui_manager, priv->merge_id);
} else if (!view_is_active && priv->merge_id != 0) {
gtk_ui_manager_remove_ui (ui_manager, priv->merge_id);
@ -210,6 +219,7 @@ mail_shell_view_execute_search (EShellView *shell_view)
GtkWidget *message_list;
EFilterRule *rule;
EMailReader *reader;
EMailView *mail_view;
CamelVeeFolder *search_folder;
CamelFolder *folder;
CamelStore *store;
@ -242,13 +252,14 @@ mail_shell_view_execute_search (EShellView *shell_view)
shell_settings = e_shell_get_shell_settings (shell);
mail_shell_content = E_MAIL_SHELL_CONTENT (shell_content);
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
searchbar = e_mail_shell_content_get_searchbar (mail_shell_content);
mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
selection = gtk_tree_view_get_selection (GTK_TREE_VIEW (folder_tree));
reader = E_MAIL_READER (E_MAIL_SHELL_CONTENT (shell_content)->view);
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
folder_uri = e_mail_reader_get_folder_uri (reader);
message_list = e_mail_reader_get_message_list (reader);
@ -698,8 +709,7 @@ execute:
message_list_set_search (MESSAGE_LIST (message_list), query);
e_mail_shell_content_set_search_strings (
mail_shell_content, search_strings);
e_mail_view_set_search_strings (mail_view, search_strings);
g_slist_foreach (search_strings, (GFunc) g_free, NULL);
g_slist_free (search_strings);
@ -769,6 +779,7 @@ mail_shell_view_update_actions (EShellView *shell_view)
EShellWindow *shell_window;
EMFolderTree *folder_tree;
EMailReader *reader;
EMailView *mail_view;
EAccount *account = NULL;
GtkAction *action;
const gchar *label;
@ -795,7 +806,9 @@ mail_shell_view_update_actions (EShellView *shell_view)
shell_window = e_shell_view_get_shell_window (shell_view);
mail_shell_content = mail_shell_view->priv->mail_shell_content;
reader = E_MAIL_READER (mail_shell_content->view);
mail_view = e_mail_shell_content_get_mail_view (mail_shell_content);
reader = E_MAIL_READER (mail_view);
state = e_mail_reader_check_state (reader);
e_mail_reader_update_actions (reader, state);