aboutsummaryrefslogtreecommitdiffstats
path: root/mail/e-mail-shell-content.c
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@src.gnome.org>2008-12-27 23:14:29 +0800
committerMatthew Barnes <mbarnes@src.gnome.org>2008-12-27 23:14:29 +0800
commit8e2b445e9dd2ec76be420bfffdf13bbacae14a3e (patch)
tree182a6a6c87b319bef202a14129a96e4afd996d9f /mail/e-mail-shell-content.c
parent780c042e12aa71bfa3498d3976d28a63aafb259e (diff)
downloadgsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar.gz
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.tar.zst
gsoc2013-evolution-8e2b445e9dd2ec76be420bfffdf13bbacae14a3e.zip
Define a new interface called EMailReader, which implements operations
common to both the main shell window and the message browser. Replaces EMFolderView. Also begin to define EMailBrowser (GtkWindow subclass), which implements EMailReader and replaces EMMessageBrowser. svn path=/branches/kill-bonobo/; revision=36933
Diffstat (limited to 'mail/e-mail-shell-content.c')
-rw-r--r--mail/e-mail-shell-content.c120
1 files changed, 120 insertions, 0 deletions
diff --git a/mail/e-mail-shell-content.c b/mail/e-mail-shell-content.c
index f6b07ea728..271b8b2635 100644
--- a/mail/e-mail-shell-content.c
+++ b/mail/e-mail-shell-content.c
@@ -34,6 +34,9 @@
#include "em-utils.h"
#include "mail-config.h"
+#include "e-mail-reader.h"
+#include "e-mail-shell-module.h"
+
#define E_MAIL_SHELL_CONTENT_GET_PRIVATE(obj) \
(G_TYPE_INSTANCE_GET_PRIVATE \
((obj), E_TYPE_MAIL_SHELL_CONTENT, EMailShellContentPrivate))
@@ -359,6 +362,101 @@ mail_shell_content_check_state (EShellContent *shell_content)
return state;
}
+static GtkActionGroup *
+mail_shell_content_get_action_group (EMailReader *reader)
+{
+ EShellContent *shell_content;
+ EShellWindow *shell_window;
+ EShellView *shell_view;
+
+ shell_content = E_SHELL_CONTENT (reader);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ shell_window = e_shell_view_get_shell_window (shell_view);
+
+ return e_shell_window_get_action_group (shell_window, "mail");
+}
+
+static EMFormatHTMLDisplay *
+mail_shell_content_get_display (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+
+ return e_mail_shell_content_get_preview_format (mail_shell_content);
+}
+
+static CamelFolder *
+mail_shell_content_get_folder (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+ EMFolderView *folder_view;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+ folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
+
+ return folder_view->folder;
+}
+
+static const gchar *
+mail_shell_content_get_folder_uri (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+ EMFolderView *folder_view;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+ folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
+
+ return folder_view->folder_uri;
+}
+
+static gboolean
+mail_shell_content_get_hide_deleted (EMailReader *reader)
+{
+ /* FIXME */
+ return TRUE;
+}
+
+static MessageList *
+mail_shell_content_get_message_list (EMailReader *reader)
+{
+ EMailShellContent *mail_shell_content;
+ EMFolderView *folder_view;
+
+ mail_shell_content = E_MAIL_SHELL_CONTENT (reader);
+ folder_view = e_mail_shell_content_get_folder_view (mail_shell_content);
+
+ return folder_view->list;
+}
+
+static EMFolderTreeModel *
+mail_shell_content_get_tree_model (EMailReader *reader)
+{
+ EShellContent *shell_content;
+ EShellModule *shell_module;
+ EShellView *shell_view;
+
+ shell_content = E_SHELL_CONTENT (reader);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ shell_module = e_shell_view_get_shell_module (shell_view);
+
+ return e_mail_shell_module_get_folder_tree_model (shell_module);
+}
+
+static GtkWindow *
+mail_shell_content_get_window (EMailReader *reader)
+{
+ EShellContent *shell_content;
+ EShellWindow *shell_window;
+ EShellView *shell_view;
+
+ shell_content = E_SHELL_CONTENT (reader);
+ shell_view = e_shell_content_get_shell_view (shell_content);
+ shell_window = e_shell_view_get_shell_window (shell_view);
+
+ return GTK_WINDOW (shell_window);
+}
+
static void
mail_shell_content_class_init (EMailShellContentClass *class)
{
@@ -401,6 +499,19 @@ mail_shell_content_class_init (EMailShellContentClass *class)
}
static void
+mail_shell_content_iface_init (EMailReaderIface *iface)
+{
+ iface->get_action_group = mail_shell_content_get_action_group;
+ iface->get_display = mail_shell_content_get_display;
+ iface->get_folder = mail_shell_content_get_folder;
+ iface->get_folder_uri = mail_shell_content_get_folder_uri;
+ iface->get_hide_deleted = mail_shell_content_get_hide_deleted;
+ iface->get_message_list = mail_shell_content_get_message_list;
+ iface->get_tree_model = mail_shell_content_get_tree_model;
+ iface->get_window = mail_shell_content_get_window;
+}
+
+static void
mail_shell_content_init (EMailShellContent *mail_shell_content)
{
mail_shell_content->priv =
@@ -430,9 +541,18 @@ e_mail_shell_content_get_type (void)
NULL /* value_table */
};
+ static const GInterfaceInfo iface_info = {
+ (GInterfaceInitFunc) mail_shell_content_iface_init,
+ (GInterfaceFinalizeFunc) NULL,
+ NULL /* interface_data */
+ };
+
type = g_type_register_static (
E_TYPE_SHELL_CONTENT, "EMailShellContent",
&type_info, 0);
+
+ g_type_add_interface_static (
+ type, E_TYPE_MAIL_READER, &iface_info);
}
return type;