From b8cfd5f9a43d4fefd89731257f0d1ac3863de7df Mon Sep 17 00:00:00 2001 From: Milan Crha Date: Thu, 16 Feb 2012 11:45:03 +0100 Subject: Bug #669113 - Add "File > New > Mail Account" --- modules/mail/e-mail-shell-backend.c | 57 +++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) (limited to 'modules/mail') diff --git a/modules/mail/e-mail-shell-backend.c b/modules/mail/e-mail-shell-backend.c index 48cde2c502..68ed9c39bc 100644 --- a/modules/mail/e-mail-shell-backend.c +++ b/modules/mail/e-mail-shell-backend.c @@ -33,6 +33,8 @@ #include #include +#include + #include #include @@ -73,6 +75,7 @@ struct _EMailShellBackendPrivate { gint mail_sync_in_progress; guint mail_sync_source_id; + gpointer assistant; /* weak pointer, when adding new mail account */ }; static void mbox_create_preview_cb (GObject *preview, GtkWidget **preview_widget); @@ -156,6 +159,53 @@ exit: GTK_WINDOW (shell_window), session, folder_tree, NULL); } +static void +action_mail_account_new_cb (GtkAction *action, + EShellWindow *shell_window) +{ + EShell *shell; + EShellBackend *shell_backend; + EMailShellBackend *backend; + + g_return_if_fail (shell_window != NULL); + + shell = e_shell_window_get_shell (shell_window); + shell_backend = e_shell_get_backend_by_name (shell, BACKEND_NAME); + g_return_if_fail (E_IS_MAIL_SHELL_BACKEND (shell_backend)); + + backend = E_MAIL_SHELL_BACKEND (shell_backend); + if (backend->priv->assistant) { + gtk_window_present (GTK_WINDOW (backend->priv->assistant)); + } else { + EMAccountEditor *emae; + GtkWindow *parent = GTK_WINDOW (shell_window); + + if (!e_shell_get_express_mode (shell)) { + /** @HookPoint-EMConfig: New Mail Account Assistant + * @Id: org.gnome.evolution.mail.config.accountAssistant + * @Type: E_CONFIG_ASSISTANT + * @Class: org.gnome.evolution.mail.config:1.0 + * @Target: EMConfigTargetAccount + * + * The new mail account assistant. + */ + emae = em_account_editor_new ( + NULL, EMAE_ASSISTANT, E_MAIL_BACKEND (backend), + "org.gnome.evolution.mail.config.accountAssistant"); + e_config_create_window ( + E_CONFIG (emae->config), NULL, + _("Evolution Account Assistant")); + backend->priv->assistant = E_CONFIG (emae->config)->window; + } else { + backend->priv->assistant = mail_capplet_shell_new (0, TRUE, FALSE); + } + + g_object_add_weak_pointer (G_OBJECT (backend->priv->assistant), &backend->priv->assistant); + gtk_window_set_transient_for (GTK_WINDOW (backend->priv->assistant), parent); + gtk_widget_show (backend->priv->assistant); + } +} + static void action_mail_message_new_cb (GtkAction *action, EShellWindow *shell_window) @@ -209,6 +259,13 @@ static GtkActionEntry item_entries[] = { static GtkActionEntry source_entries[] = { + { "mail-account-new", + "evolution-mail", + NC_("New", "Mail Acco_unt"), + NULL, + N_("Create a new mail account"), + G_CALLBACK (action_mail_account_new_cb) }, + { "mail-folder-new", "folder-new", NC_("New", "Mail _Folder"), -- cgit v1.2.3