aboutsummaryrefslogtreecommitdiffstats
path: root/modules
diff options
context:
space:
mode:
authorMatthew Barnes <mbarnes@redhat.com>2011-05-24 05:09:24 +0800
committerMatthew Barnes <mbarnes@redhat.com>2011-05-24 09:50:50 +0800
commit9692758dc5c3a03597f0eb0b16edd10134153823 (patch)
treeae48699ccfd792672b0b3c4e382fbc5ce13eb584 /modules
parent61d1530c76341f1a69fa528071e3a6ffa07ed333 (diff)
downloadgsoc2013-evolution-9692758dc5c3a03597f0eb0b16edd10134153823.tar
gsoc2013-evolution-9692758dc5c3a03597f0eb0b16edd10134153823.tar.gz
gsoc2013-evolution-9692758dc5c3a03597f0eb0b16edd10134153823.tar.bz2
gsoc2013-evolution-9692758dc5c3a03597f0eb0b16edd10134153823.tar.lz
gsoc2013-evolution-9692758dc5c3a03597f0eb0b16edd10134153823.tar.xz
gsoc2013-evolution-9692758dc5c3a03597f0eb0b16edd10134153823.tar.zst
gsoc2013-evolution-9692758dc5c3a03597f0eb0b16edd10134153823.zip
EMFolderTree: Store an EMailBackend instead of an EMailSession.
All this so EMFolderTree can submit EActivity instances for async ops. You can obtain an EMailSession from an EMailBackend, but not vice versa. Creates lots of pretty ripples in the mail code, but ultimately reduces complexity. So it's a code cleanup of sorts.
Diffstat (limited to 'modules')
-rw-r--r--modules/mail/e-mail-shell-backend.c17
-rw-r--r--modules/mail/e-mail-shell-sidebar.c7
-rw-r--r--modules/mail/e-mail-shell-view-actions.c13
-rw-r--r--modules/mail/em-account-prefs.c68
-rw-r--r--modules/mail/em-account-prefs.h4
-rw-r--r--modules/startup-wizard/evolution-startup-wizard.c2
6 files changed, 51 insertions, 60 deletions
diff --git a/modules/mail/e-mail-shell-backend.c b/modules/mail/e-mail-shell-backend.c
index 0c02a48a05..f7e9b81ae1 100644
--- a/modules/mail/e-mail-shell-backend.c
+++ b/modules/mail/e-mail-shell-backend.c
@@ -106,7 +106,7 @@ action_mail_folder_new_cb (GtkAction *action,
{
EMFolderTree *folder_tree = NULL;
EMailShellSidebar *mail_shell_sidebar;
- EMailSession *mail_session;
+ EMailBackend *backend;
EShellSidebar *shell_sidebar;
EShellView *shell_view;
const gchar *view_name;
@@ -114,19 +114,16 @@ action_mail_folder_new_cb (GtkAction *action,
/* Take care not to unnecessarily load the mail shell view. */
view_name = e_shell_window_get_active_view (shell_window);
if (g_strcmp0 (view_name, BACKEND_NAME) != 0) {
- EShellBackend *mail_backend;
+ EShellBackend *shell_backend;
EShell *shell;
shell = e_shell_window_get_shell (shell_window);
- mail_backend =
+ shell_backend =
e_shell_get_backend_by_name (shell, BACKEND_NAME);
- g_return_if_fail (mail_backend != NULL);
+ g_return_if_fail (E_IS_MAIL_BACKEND (shell_backend));
- mail_session =
- e_mail_backend_get_session (
- E_MAIL_BACKEND (mail_backend));
- g_return_if_fail (mail_session != NULL);
+ backend = E_MAIL_BACKEND (shell_backend);
goto exit;
}
@@ -136,11 +133,11 @@ action_mail_folder_new_cb (GtkAction *action,
mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (shell_sidebar);
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
- mail_session = em_folder_tree_get_session (folder_tree);
+ backend = em_folder_tree_get_backend (folder_tree);
exit:
em_folder_utils_create_folder (
- GTK_WINDOW (shell_window), folder_tree, mail_session, NULL);
+ GTK_WINDOW (shell_window), backend, folder_tree, NULL);
}
static void
diff --git a/modules/mail/e-mail-shell-sidebar.c b/modules/mail/e-mail-shell-sidebar.c
index c910310010..760ebb0b2e 100644
--- a/modules/mail/e-mail-shell-sidebar.c
+++ b/modules/mail/e-mail-shell-sidebar.c
@@ -116,8 +116,6 @@ mail_shell_sidebar_constructed (GObject *object)
EShellWindow *shell_window;
EShellView *shell_view;
EShell *shell;
- EMailBackend *backend;
- EMailSession *session;
GtkTreeSelection *selection;
GtkTreeView *tree_view;
GtkWidget *container;
@@ -134,9 +132,6 @@ mail_shell_sidebar_constructed (GObject *object)
shell = e_shell_window_get_shell (shell_window);
shell_settings = e_shell_get_shell_settings (shell);
- backend = E_MAIL_BACKEND (shell_backend);
- session = e_mail_backend_get_session (backend);
-
mail_shell_sidebar = E_MAIL_SHELL_SIDEBAR (object);
/* Build sidebar widgets. */
@@ -154,7 +149,7 @@ mail_shell_sidebar_constructed (GObject *object)
container = widget;
- widget = e_mail_sidebar_new (session);
+ widget = e_mail_sidebar_new (E_MAIL_BACKEND (shell_backend));
gtk_container_add (GTK_CONTAINER (container), widget);
mail_shell_sidebar->priv->folder_tree = g_object_ref (widget);
gtk_widget_show (widget);
diff --git a/modules/mail/e-mail-shell-view-actions.c b/modules/mail/e-mail-shell-view-actions.c
index f5c5524648..7c55908b31 100644
--- a/modules/mail/e-mail-shell-view-actions.c
+++ b/modules/mail/e-mail-shell-view-actions.c
@@ -125,7 +125,6 @@ action_mail_create_search_folder_cb (GtkAction *action,
EFilterRule *search_rule;
EMVFolderRule *vfolder_rule;
EMailBackend *backend;
- EMailSession *session;
EMailView *mail_view;
CamelFolder *folder;
const gchar *search_text;
@@ -135,9 +134,6 @@ action_mail_create_search_folder_cb (GtkAction *action,
shell_view = E_SHELL_VIEW (mail_shell_view);
shell_backend = e_shell_view_get_shell_backend (shell_view);
- backend = E_MAIL_BACKEND (shell_backend);
- session = e_mail_backend_get_session (backend);
-
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);
@@ -152,7 +148,8 @@ action_mail_create_search_folder_cb (GtkAction *action,
reader = E_MAIL_READER (mail_view);
folder = e_mail_reader_get_folder (reader);
- search_rule = vfolder_clone_rule (session, search_rule);
+ backend = E_MAIL_BACKEND (shell_backend);
+ search_rule = vfolder_clone_rule (backend, search_rule);
g_return_if_fail (search_rule != NULL);
rule_name = g_strdup_printf ("%s %s", search_rule->name, search_text);
@@ -426,7 +423,7 @@ action_mail_folder_new_cb (GtkAction *action,
{
EShellView *shell_view;
EShellWindow *shell_window;
- EMailSession *session;
+ EMailBackend *backend;
EMailShellSidebar *mail_shell_sidebar;
EMFolderTree *folder_tree;
gchar *selected_uri;
@@ -437,12 +434,12 @@ action_mail_folder_new_cb (GtkAction *action,
mail_shell_sidebar = mail_shell_view->priv->mail_shell_sidebar;
folder_tree = e_mail_shell_sidebar_get_folder_tree (mail_shell_sidebar);
- session = em_folder_tree_get_session (folder_tree);
+ backend = em_folder_tree_get_backend (folder_tree);
selected_uri = em_folder_tree_get_selected_uri (folder_tree);
em_folder_utils_create_folder (
GTK_WINDOW (shell_window),
- folder_tree, session, selected_uri);
+ backend, folder_tree, selected_uri);
g_free (selected_uri);
}
diff --git a/modules/mail/em-account-prefs.c b/modules/mail/em-account-prefs.c
index 356351a2f1..b5c458385c 100644
--- a/modules/mail/em-account-prefs.c
+++ b/modules/mail/em-account-prefs.c
@@ -43,14 +43,14 @@
#include "capplet/settings/mail-capplet-shell.h"
struct _EMAccountPrefsPrivate {
- EMailSession *session;
+ EMailBackend *backend;
gpointer assistant; /* weak pointer */
gpointer editor; /* weak pointer */
};
enum {
PROP_0,
- PROP_SESSION
+ PROP_BACKEND
};
G_DEFINE_TYPE (
@@ -63,11 +63,13 @@ account_prefs_enable_account_cb (EAccountTreeView *tree_view,
EMAccountPrefs *prefs)
{
EAccount *account;
+ EMailSession *session;
account = e_account_tree_view_get_selected (tree_view);
g_return_if_fail (account != NULL);
- e_mail_store_add_by_account (prefs->priv->session, account);
+ session = e_mail_backend_get_session (prefs->priv->backend);
+ e_mail_store_add_by_account (session, account);
}
static void
@@ -75,6 +77,7 @@ account_prefs_disable_account_cb (EAccountTreeView *tree_view,
EMAccountPrefs *prefs)
{
EAccountList *account_list;
+ EMailSession *session;
EAccount *account;
gpointer parent;
gint response;
@@ -85,8 +88,10 @@ account_prefs_disable_account_cb (EAccountTreeView *tree_view,
account_list = e_account_tree_view_get_account_list (tree_view);
g_return_if_fail (account_list != NULL);
+ session = e_mail_backend_get_session (prefs->priv->backend);
+
if (!e_account_list_account_has_proxies (account_list, account)) {
- e_mail_store_remove_by_account (prefs->priv->session, account);
+ e_mail_store_remove_by_account (session, account);
return;
}
@@ -103,17 +108,17 @@ account_prefs_disable_account_cb (EAccountTreeView *tree_view,
e_account_list_remove_account_proxies (account_list, account);
- e_mail_store_remove_by_account (prefs->priv->session, account);
+ e_mail_store_remove_by_account (session, account);
}
static void
-account_prefs_set_session (EMAccountPrefs *prefs,
- EMailSession *session)
+account_prefs_set_backend (EMAccountPrefs *prefs,
+ EMailBackend *backend)
{
- g_return_if_fail (E_IS_MAIL_SESSION (session));
- g_return_if_fail (prefs->priv->session == NULL);
+ g_return_if_fail (E_IS_MAIL_BACKEND (backend));
+ g_return_if_fail (prefs->priv->backend == NULL);
- prefs->priv->session = g_object_ref (session);
+ prefs->priv->backend = g_object_ref (backend);
}
static void
@@ -123,8 +128,8 @@ account_prefs_set_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
- case PROP_SESSION:
- account_prefs_set_session (
+ case PROP_BACKEND:
+ account_prefs_set_backend (
EM_ACCOUNT_PREFS (object),
g_value_get_object (value));
return;
@@ -140,10 +145,10 @@ account_prefs_get_property (GObject *object,
GParamSpec *pspec)
{
switch (property_id) {
- case PROP_SESSION:
+ case PROP_BACKEND:
g_value_set_object (
value,
- em_account_prefs_get_session (
+ em_account_prefs_get_backend (
EM_ACCOUNT_PREFS (object)));
return;
}
@@ -158,9 +163,9 @@ account_prefs_dispose (GObject *object)
priv = EM_ACCOUNT_PREFS (object)->priv;
- if (priv->session != NULL) {
- g_object_unref (priv->session);
- priv->session = NULL;
+ if (priv->backend != NULL) {
+ g_object_unref (priv->backend);
+ priv->backend = NULL;
}
if (priv->assistant != NULL) {
@@ -206,7 +211,7 @@ account_prefs_add_account (EAccountManager *manager)
* The new mail account assistant.
*/
emae = em_account_editor_new (
- NULL, EMAE_ASSISTANT, priv->session,
+ NULL, EMAE_ASSISTANT, priv->backend,
"org.gnome.evolution.mail.config.accountAssistant");
e_config_create_window (
E_CONFIG (emae->config), NULL,
@@ -256,7 +261,7 @@ account_prefs_edit_account (EAccountManager *manager)
* The account editor window.
*/
emae = em_account_editor_new (
- account, EMAE_NOTEBOOK, priv->session,
+ account, EMAE_NOTEBOOK, priv->backend,
"org.gnome.evolution.mail.config.accountEditor");
e_config_create_window (
E_CONFIG (emae->config), parent, _("Account Editor"));
@@ -275,12 +280,14 @@ account_prefs_delete_account (EAccountManager *manager)
EMAccountPrefsPrivate *priv;
EAccountTreeView *tree_view;
EAccountList *account_list;
+ EMailSession *session;
EAccount *account;
gboolean has_proxies;
gpointer parent;
gint response;
priv = EM_ACCOUNT_PREFS (manager)->priv;
+ session = e_mail_backend_get_session (priv->backend);
account_list = e_account_manager_get_account_list (manager);
tree_view = e_account_manager_get_tree_view (manager);
@@ -309,7 +316,7 @@ account_prefs_delete_account (EAccountManager *manager)
/* Remove the account from the folder tree. */
if (account->enabled)
- e_mail_store_remove_by_account (priv->session, account);
+ e_mail_store_remove_by_account (session, account);
/* Remove all the proxies the account has created. */
if (has_proxies)
@@ -341,12 +348,12 @@ em_account_prefs_class_init (EMAccountPrefsClass *class)
g_object_class_install_property (
object_class,
- PROP_SESSION,
+ PROP_BACKEND,
g_param_spec_object (
- "session",
+ "backend",
NULL,
NULL,
- E_TYPE_MAIL_SESSION,
+ E_TYPE_MAIL_BACKEND,
G_PARAM_READWRITE |
G_PARAM_CONSTRUCT_ONLY));
}
@@ -377,30 +384,25 @@ em_account_prefs_new (EPreferencesWindow *window)
{
EShell *shell;
EShellBackend *shell_backend;
- EMailBackend *backend;
- EMailSession *session;
EAccountList *account_list;
account_list = e_get_account_list ();
g_return_val_if_fail (E_IS_ACCOUNT_LIST (account_list), NULL);
- /* XXX Figure out a better way to get the EMailSession. */
+ /* XXX Figure out a better way to get the mail backend. */
shell = e_preferences_window_get_shell (window);
shell_backend = e_shell_get_backend_by_name (shell, "mail");
- backend = E_MAIL_BACKEND (shell_backend);
- session = e_mail_backend_get_session (backend);
-
return g_object_new (
EM_TYPE_ACCOUNT_PREFS,
"account-list", account_list,
- "session", session, NULL);
+ "backend", shell_backend, NULL);
}
-EMailSession *
-em_account_prefs_get_session (EMAccountPrefs *prefs)
+EMailBackend *
+em_account_prefs_get_backend (EMAccountPrefs *prefs)
{
g_return_val_if_fail (EM_IS_ACCOUNT_PREFS (prefs), NULL);
- return prefs->priv->session;
+ return prefs->priv->backend;
}
diff --git a/modules/mail/em-account-prefs.h b/modules/mail/em-account-prefs.h
index c00b860d35..667b83f42f 100644
--- a/modules/mail/em-account-prefs.h
+++ b/modules/mail/em-account-prefs.h
@@ -25,7 +25,7 @@
#include <gtk/gtk.h>
#include <table/e-table.h>
#include <libedataserver/e-account-list.h>
-#include <mail/e-mail-session.h>
+#include <mail/e-mail-backend.h>
#include <misc/e-account-manager.h>
#include <widgets/misc/e-preferences-window.h>
@@ -65,7 +65,7 @@ struct _EMAccountPrefsClass {
GType em_account_prefs_get_type (void);
GtkWidget * em_account_prefs_new (EPreferencesWindow *window);
-EMailSession * em_account_prefs_get_session (EMAccountPrefs *prefs);
+EMailBackend * em_account_prefs_get_backend (EMAccountPrefs *prefs);
G_END_DECLS
diff --git a/modules/startup-wizard/evolution-startup-wizard.c b/modules/startup-wizard/evolution-startup-wizard.c
index 8f1b118a53..605e10ce6a 100644
--- a/modules/startup-wizard/evolution-startup-wizard.c
+++ b/modules/startup-wizard/evolution-startup-wizard.c
@@ -447,7 +447,7 @@ startup_wizard_new_assistant (EStartupWizard *extension)
e_mail_local_init (session, data_dir);
emae = em_account_editor_new (
- NULL, EMAE_ASSISTANT, session,
+ NULL, EMAE_ASSISTANT, backend,
"org.gnome.evolution.mail.config.accountWizard");
config = E_CONFIG (emae->config);