diff options
author | Milan Crha <mcrha@redhat.com> | 2013-10-08 19:22:48 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2013-10-08 19:22:48 +0800 |
commit | b5023d32bdffdeb6cb626e74d0f3e464e66cec1b (patch) | |
tree | 3257d3e4755641f99a10b9ba58779f32c82fe428 /mail/e-mail-backend.c | |
parent | 8099b68e96a85857e41784d6e128d4ff69e2e702 (diff) | |
download | gsoc2013-evolution-b5023d32bdffdeb6cb626e74d0f3e464e66cec1b.tar gsoc2013-evolution-b5023d32bdffdeb6cb626e74d0f3e464e66cec1b.tar.gz gsoc2013-evolution-b5023d32bdffdeb6cb626e74d0f3e464e66cec1b.tar.bz2 gsoc2013-evolution-b5023d32bdffdeb6cb626e74d0f3e464e66cec1b.tar.lz gsoc2013-evolution-b5023d32bdffdeb6cb626e74d0f3e464e66cec1b.tar.xz gsoc2013-evolution-b5023d32bdffdeb6cb626e74d0f3e464e66cec1b.tar.zst gsoc2013-evolution-b5023d32bdffdeb6cb626e74d0f3e464e66cec1b.zip |
Bug #215115 - Per-folder From: email address
The change also allows setting accounts for certain recipients (based
on a part of the recipient address). The option can be found in Folder
Properties and in Edit->Preferences->Composer Preferences->Send Account.
Diffstat (limited to 'mail/e-mail-backend.c')
-rw-r--r-- | mail/e-mail-backend.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/mail/e-mail-backend.c b/mail/e-mail-backend.c index b7fb84735e..f15e7f8efb 100644 --- a/mail/e-mail-backend.c +++ b/mail/e-mail-backend.c @@ -63,11 +63,13 @@ struct _EMailBackendPrivate { EMailSession *session; GHashTable *jobs; + EMailSendAccountOverride *send_account_override; }; enum { PROP_0, - PROP_SESSION + PROP_SESSION, + PROP_SEND_ACCOUNT_OVERRIDE }; /* FIXME Kill this thing. It's a horrible hack. */ @@ -825,6 +827,13 @@ mail_backend_get_property (GObject *object, e_mail_backend_get_session ( E_MAIL_BACKEND (object))); return; + + case PROP_SEND_ACCOUNT_OVERRIDE: + g_value_set_object ( + value, + e_mail_backend_get_send_account_override ( + E_MAIL_BACKEND (object))); + return; } G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -862,6 +871,7 @@ mail_backend_finalize (GObject *object) priv = E_MAIL_BACKEND_GET_PRIVATE (object); g_hash_table_destroy (priv->jobs); + g_clear_object (&priv->send_account_override); /* Chain up to parent's finalize() method. */ G_OBJECT_CLASS (e_mail_backend_parent_class)->finalize (object); @@ -1016,6 +1026,7 @@ mail_backend_constructed (GObject *object) EShellBackend *shell_backend; MailFolderCache *folder_cache; ESourceRegistry *registry; + gchar *send_overrides_ini; priv = E_MAIL_BACKEND_GET_PRIVATE (object); @@ -1108,6 +1119,10 @@ mail_backend_constructed (GObject *object) /* Chain up to parent's constructed() method. */ G_OBJECT_CLASS (e_mail_backend_parent_class)->constructed (object); + + send_overrides_ini = g_build_filename (e_shell_backend_get_config_dir (shell_backend), "send-overrides.ini", NULL); + priv->send_account_override = e_mail_send_account_override_new (send_overrides_ini); + g_free (send_overrides_ini); } static void @@ -1138,6 +1153,16 @@ e_mail_backend_class_init (EMailBackendClass *class) NULL, E_TYPE_MAIL_SESSION, G_PARAM_READABLE)); + + g_object_class_install_property ( + object_class, + PROP_SEND_ACCOUNT_OVERRIDE, + g_param_spec_object ( + "send-account-override", + NULL, + NULL, + E_TYPE_MAIL_SEND_ACCOUNT_OVERRIDE, + G_PARAM_READABLE)); } static void @@ -1229,3 +1254,10 @@ e_mail_backend_empty_trash_policy_decision (EMailBackend *backend) return class->empty_trash_policy_decision (backend); } +EMailSendAccountOverride * +e_mail_backend_get_send_account_override (EMailBackend *backend) +{ + g_return_val_if_fail (E_IS_MAIL_BACKEND (backend), NULL); + + return backend->priv->send_account_override; +} |