diff options
Diffstat (limited to 'capplet/settings')
-rw-r--r-- | capplet/settings/Makefile.am.orig | 65 | ||||
-rw-r--r-- | capplet/settings/anjal-mail-view.c | 44 | ||||
-rw-r--r-- | capplet/settings/mail-account-view.c | 49 | ||||
-rw-r--r-- | capplet/settings/mail-account-view.c.orig | 1104 | ||||
-rw-r--r-- | capplet/settings/mail-capplet-shell.c | 28 | ||||
-rw-r--r-- | capplet/settings/mail-capplet-shell.c.orig | 395 | ||||
-rw-r--r-- | capplet/settings/mail-settings-view.c | 22 | ||||
-rw-r--r-- | capplet/settings/mail-view.c | 97 |
8 files changed, 136 insertions, 1668 deletions
diff --git a/capplet/settings/Makefile.am.orig b/capplet/settings/Makefile.am.orig deleted file mode 100644 index 1367fd5a75..0000000000 --- a/capplet/settings/Makefile.am.orig +++ /dev/null @@ -1,65 +0,0 @@ -privsolib_LTLIBRARIES = libevolution-mail-settings.la - -libevolution_mail_settings_la_CPPFLAGS = \ - $(AM_CPPFLAGS) \ - -I$(top_srcdir)/widgets \ - -I$(top_srcdir)/widgets/misc \ - -I$(top_srcdir) \ - -I$(top_srcdir)/e-util \ - -I$(top_srcdir)/em-format \ - -I$(top_srcdir)/mail \ - -I$(top_srcdir)/composer \ - -I$(top_builddir)/composer \ - -I$(top_builddir)/shell \ - -I$(top_srcdir)/shell \ - -I$(top_srcdir)/smime/lib \ - -I$(top_srcdir)/smime/gui \ - $(EVOLUTION_DATA_SERVER_CFLAGS) \ - $(GNOME_PLATFORM_CFLAGS) \ - $(CERT_UI_CFLAGS) \ - $(CANBERRA_CFLAGS) \ - $(GTKHTML_CFLAGS) \ - -DANJAL_SETTINGS \ - -DEVOLUTION_DATADIR=\""$(datadir)"\" \ - -DEVOLUTION_PRIVDATADIR=\""$(privdatadir)"\" \ - -DEVOLUTION_ETSPECDIR=\""$(etspecdir)"\" \ - -DEVOLUTION_ICONSDIR=\""$(imagesdir)"\" \ - -DEVOLUTION_MODULEDIR=\""$(moduledir)"\" \ - -DEVOLUTION_IMAGES=\""$(imagesdir)"\" \ - -DEVOLUTION_GALVIEWSDIR=\""$(viewsdir)"\" \ - -DEVOLUTION_BUTTONSDIR=\""$(buttonsdir)"\" \ - -DEVOLUTION_LOCALEDIR=\""$(localedir)"\" \ - -DEVOLUTION_UIDIR=\""$(uidir)"\" \ - -DCAMEL_PROVIDERDIR=\""$(camel_providerdir)"\" \ - -DPREFIX=\""$(prefix)"\" \ - -DG_LOG_DOMAIN=\"evolution-mail\" \ - -DPACKAGE_LOCALE_DIR=\""$(prefix)/$(DATADIRNAME)/locale"\" \ - -DPACKAGE_DATA_DIR=\""$(datadir)"\" - -libevolution_mail_settings_la_SOURCES = \ - mail-settings-view.c \ - mail-settings-view.h \ - mail-account-view.c \ - mail-account-view.h \ - mail-view.c \ - mail-view.h \ - mail-capplet-shell.c \ - mail-capplet-shell.h \ - anjal-mail-view.h \ - anjal-mail-view.c - -libevolution_mail_settings_la_LIBADD = \ - $(EVOLUTION_DATA_SERVER_LIBS) \ - $(GNOME_PLATFORM_LIBS) \ - $(CERT_UI_LIBS) \ - $(CANBERRA_LIBS) \ - $(GTKHTML_LIBS) \ - $(SMIME_LIBS) \ - $(top_builddir)/widgets/misc/libemiscwidgets.la \ - $(top_builddir)/filter/libfilter.la \ - $(top_builddir)/mail/libevolution-mail.la \ - $(top_builddir)/shell/libeshell.la \ - $(top_builddir)/e-util/libeutil.la - -libevolution_mail_settings_la_LDFLAGS = $(NO_UNDEFINED) - diff --git a/capplet/settings/anjal-mail-view.c b/capplet/settings/anjal-mail-view.c index 232b8ff118..9307b0aeca 100644 --- a/capplet/settings/anjal-mail-view.c +++ b/capplet/settings/anjal-mail-view.c @@ -31,32 +31,9 @@ #include "libemail-engine/mail-ops.h" #include "mail/em-folder-tree.h" -struct _AnjalMailViewPrivate { - - gboolean started; -}; - G_DEFINE_TYPE (AnjalMailView, anjal_mail_view, GTK_TYPE_NOTEBOOK) static void -anjal_mail_view_init (AnjalMailView *shell) -{ - shell->priv = g_new0 (AnjalMailViewPrivate, 1); - shell->priv->started = TRUE; -} - -static void -anjal_mail_view_finalize (GObject *object) -{ - AnjalMailView *shell = (AnjalMailView *) object; - AnjalMailViewPrivate *priv = shell->priv; - - g_free (priv); - - G_OBJECT_CLASS (anjal_mail_view_parent_class)->finalize (object); -} - -static void view_set_folder_uri (AnjalMailView *mail_view, const gchar *uri) { @@ -87,16 +64,17 @@ view_init_search (AnjalMailView *mail_view, } static void -anjal_mail_view_class_init (AnjalMailViewClass *klass) +anjal_mail_view_class_init (AnjalMailViewClass *class) { - GObjectClass * object_class = G_OBJECT_CLASS (klass); - - anjal_mail_view_parent_class = g_type_class_peek_parent (klass); - object_class->finalize = anjal_mail_view_finalize; - klass->set_folder_uri = view_set_folder_uri; - klass->set_folder_tree_widget = view_set_folder_tree_widget; - klass->set_folder_tree = view_set_folder_tree; - klass->set_search = view_set_search; - klass->init_search = view_init_search; + class->set_folder_uri = view_set_folder_uri; + class->set_folder_tree_widget = view_set_folder_tree_widget; + class->set_folder_tree = view_set_folder_tree; + class->set_search = view_set_search; + class->init_search = view_init_search; }; +static void +anjal_mail_view_init (AnjalMailView *shell) +{ +} + diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index 4150c9b51c..7ee0a868f4 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -103,11 +103,11 @@ mail_account_view_finalize (GObject *object) } static void -mail_account_view_class_init (MailAccountViewClass *klass) +mail_account_view_class_init (MailAccountViewClass *class) { - GObjectClass * object_class = G_OBJECT_CLASS (klass); + GObjectClass * object_class = G_OBJECT_CLASS (class); - mail_account_view_parent_class = g_type_class_peek_parent (klass); + mail_account_view_parent_class = g_type_class_peek_parent (class); object_class->finalize = mail_account_view_finalize; signals[VIEW_CLOSE] = @@ -481,9 +481,8 @@ create_review (MailAccountView *view) gchar *user = NULL; CamelNetworkSecurityMethod method; EMConfigTargetSettings *target; - - target = (EMConfigTargetSettings *) ((EConfig *)view->edit->config)->target; + target = (EMConfigTargetSettings *) ((EConfig *) view->edit->config)->target; g_object_get (view->edit, "store-settings", &source_settings, NULL); g_object_get (view->edit, "transport-settings", &transport_settings, NULL); @@ -596,7 +595,7 @@ create_review (MailAccountView *view) "host", &host, "user", &user, "security-method", &method, NULL); protocol = target->transport_protocol; - + switch (method) { case CAMEL_NETWORK_SECURITY_METHOD_SSL_ON_ALTERNATE_PORT: encryption = _("Always (SSL)"); @@ -608,7 +607,7 @@ create_review (MailAccountView *view) encryption = _("Never"); break; } - + label = gtk_label_new (NULL); buff = g_markup_printf_escaped ("<span size=\"large\" weight=\"bold\">%s</span>", _("Sending")); gtk_label_set_markup ((GtkLabel *) label, buff); @@ -689,7 +688,7 @@ struct _page_text { static gboolean mav_check_same_source_transport (MailAccountView *mav) { - EAccount *account = em_account_editor_get_modified_account(mav->edit); + EAccount *account = em_account_editor_get_modified_account (mav->edit); const gchar *uri; gchar *current = NULL; gboolean ret = FALSE; @@ -700,8 +699,8 @@ mav_check_same_source_transport (MailAccountView *mav) gint len; if (colon) { - len = colon-uri; - current = g_alloca (len+1); + len = colon - uri; + current = g_alloca (len + 1); memcpy (current, uri, len); current[len] = 0; } @@ -709,9 +708,9 @@ mav_check_same_source_transport (MailAccountView *mav) if (current) { GList *l; - for (l=mav->priv->providers; l; l=l->next) { + for (l = mav->priv->providers; l; l = l->next) { CamelProvider *provider = l->data; - + if (strcmp (provider->protocol, current) == 0 && CAMEL_PROVIDER_IS_STORE_AND_TRANSPORT (provider)) { ret = TRUE; @@ -794,7 +793,7 @@ mav_next_pressed (GtkButton *button, if (mav->current_page == MAV_RECV_OPT_PAGE && mav->original == NULL) mav->current_page++; /* Skip recv options in new account creation. */ if (mav->current_page == MAV_SEND_PAGE && mav_check_same_source_transport (mav)) { - mav->current_page++; /* Skip send page if the provider does both source and transport*/ + mav->current_page++; /* Skip send page if the provider does both source and transport */ } if (mav->current_page == MAV_DEFAULTS_PAGE && mav->original == NULL) mav->current_page++; /* Skip defaults in new account creation. */ @@ -805,10 +804,10 @@ mav_next_pressed (GtkButton *button, EAccount *account = em_account_editor_get_modified_account (mav->edit); CamelNetworkSettings *settings = NULL; const gchar *host = NULL; - + g_object_get (mav->edit, "store-settings", &settings, NULL); host = camel_network_settings_get_host (settings); - + if (page->main) gtk_widget_destroy (page->main); @@ -958,8 +957,8 @@ mav_prev_pressed (GtkButton *button, if (mav->current_page == MAV_DEFAULTS_PAGE && mav->original == NULL) mav->current_page--; /* Skip defaults in new account creation. */ if (mav->current_page == MAV_SEND_PAGE && mav_check_same_source_transport (mav)) { - mav->current_page--; /* Skip send page if the provider does both source and transport*/ - } + mav->current_page--; /* Skip send page if the provider does both source and transport */ + } if (mav->current_page == MAV_RECV_OPT_PAGE && mav->original == NULL) mav->current_page--; /* Skip recv options in new account creation. */ gtk_widget_show (mav->pages[mav->current_page]->box); @@ -1032,7 +1031,9 @@ mav_construct_page (MailAccountView *view, page->prev = gtk_button_new (); gtk_container_add ((GtkContainer *) page->prev, box); gtk_widget_show_all (page->prev); - g_signal_connect (page->prev, "clicked", G_CALLBACK(mav_prev_pressed), view); + g_signal_connect ( + page->prev, "clicked", + G_CALLBACK (mav_prev_pressed), view); } if ((view->original && mail_account_pages[type].next_edit) || mail_account_pages[type].next) { @@ -1047,7 +1048,9 @@ mav_construct_page (MailAccountView *view, gtk_widget_set_can_default (page->next, TRUE); gtk_container_add ((GtkContainer *) page->next, box); gtk_widget_show_all (page->next); - g_signal_connect (page->next, "clicked", G_CALLBACK(mav_next_pressed), view); + g_signal_connect ( + page->next, "clicked", + G_CALLBACK (mav_next_pressed), view); } box = gtk_hbox_new (FALSE, 0); @@ -1117,7 +1120,9 @@ mail_account_view_construct (MailAccountView *view, pwd = gtk_entry_new (); gtk_entry_set_visibility ((GtkEntry *) pwd, FALSE); /* gtk_entry_set_activates_default ((GtkEntry *)pwd, TRUE); */ - g_signal_connect (pwd, "activate", G_CALLBACK (next_page), view); + g_signal_connect ( + pwd, "activate", + G_CALLBACK (next_page), view); gtk_widget_show (label); gtk_widget_show (pwd); gtk_table_attach ((GtkTable *) table, label, 0, 1, 2, 3, GTK_FILL, 0, 0, 0); @@ -1166,7 +1171,9 @@ mail_account_view_get_tab_widget (MailAccountView *mcv) gtk_button_set_relief ((GtkButton *) tool, GTK_RELIEF_NONE); gtk_button_set_focus_on_click ((GtkButton *) tool, FALSE); gtk_widget_set_tooltip_text (tool, _("Close Tab")); - g_signal_connect (tool, "clicked", G_CALLBACK(mav_close), mcv); + g_signal_connect ( + tool, "clicked", + G_CALLBACK (mav_close), mcv); box = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *) box, img, FALSE, FALSE, 0); diff --git a/capplet/settings/mail-account-view.c.orig b/capplet/settings/mail-account-view.c.orig deleted file mode 100644 index 594744021b..0000000000 --- a/capplet/settings/mail-account-view.c.orig +++ /dev/null @@ -1,1104 +0,0 @@ -/* - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see <http://www.gnu.org/licenses/> - * - * - * Authors: - * Srinivasa Ragavan <sragavan@novell.com> - * - * Copyright (C) 2009 Novell, Inc. (www.novell.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <glib/gi18n.h> -#include "mail-account-view.h" -#include <libedataserverui/e-passwords.h> -#include <libedataserver/e-source-group.h> -#include <libedataserver/e-source-list.h> -#include <libedataserver/e-account-list.h> -#include "mail-view.h" -#include "e-util/e-config.h" -#include "mail/e-mail-backend.h" - -struct _MailAccountViewPrivate { - GtkWidget *tab_str; - - GtkWidget *calendar; - GtkWidget *gcontacts; - GtkWidget *gmail_info_label; - - GtkWidget *account_label; - GtkWidget *gmail_link; - GtkWidget *yahoo_cal_box; - - gboolean is_gmail; - gboolean is_yahoo; - gboolean do_gcontacts; - gboolean do_calendar; - - gchar *username; - - GtkWidget *yahoo_cal_entry; -}; - -G_DEFINE_TYPE (MailAccountView, mail_account_view, GTK_TYPE_VBOX) - -enum { - VIEW_CLOSE, - LAST_SIGNAL -}; - -enum { - ERROR_NO_FULLNAME = 1, - ERROR_NO_EMAIL = 2, - ERROR_INVALID_EMAIL = 3, - ERROR_NO_PASSWORD = 4, -}; - -struct _dialog_errors { - gint error; - const gchar *detail; -} dialog_errors[] = { - { ERROR_NO_FULLNAME, N_("Please enter your full name.") }, - { ERROR_NO_EMAIL, N_("Please enter your email address.") }, - { ERROR_INVALID_EMAIL, N_("The email address you have entered is invalid.") }, - { ERROR_NO_PASSWORD, N_("Please enter your password.") } -}; -static guint signals[LAST_SIGNAL] = { 0 }; - -static void -mail_account_view_init (MailAccountView *shell) -{ - shell->priv = g_new0 (MailAccountViewPrivate, 1); - - shell->priv->is_gmail = FALSE; - shell->priv->is_yahoo = FALSE; - shell->priv->username = NULL; -} - -static void -mail_account_view_finalize (GObject *object) -{ - MailAccountView *shell = (MailAccountView *) object; - - g_free (shell->priv->username); - - G_OBJECT_CLASS (mail_account_view_parent_class)->finalize (object); -} - -static void -mail_account_view_class_init (MailAccountViewClass *klass) -{ - GObjectClass * object_class = G_OBJECT_CLASS (klass); - - mail_account_view_parent_class = g_type_class_peek_parent (klass); - object_class->finalize = mail_account_view_finalize; - - signals[VIEW_CLOSE] = - g_signal_new ("view-close", - G_OBJECT_CLASS_TYPE (object_class), - G_SIGNAL_RUN_FIRST, - G_STRUCT_OFFSET (MailAccountViewClass , view_close), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - -} - -#ifdef NOT_USED - -enum { - GMAIL = 0, - YAHOO, - AOL -}; -struct _server_prefill { - gchar *key; - gchar *recv; - gchar *send; - gchar *proto; - gchar *ssl; -} std_server[] = { - {"gmail", "imap.gmail.com", "smtp.gmail.com", "imap", "always"}, - {"yahoo", "pop3.yahoo.com", "smtp.yahoo.com", "pop", "never"}, - {"aol", "imap.aol.com", "smtp.aol.com", "pop", "never"}, - {"msn", "pop3.email.msn.com", "smtp.email.msn.com", "pop", "never"} -}; -static gint -check_servers (gchar *server) -{ - gint len = G_N_ELEMENTS (std_server), i; - - for (i = 0; i < len; i++) { - if (strstr (server, std_server[i].key) != NULL) - return i; - } - - return -1; -} -#endif -static void -save_identity (MailAccountView *view) -{ -} - -static gint -validate_identity (MailAccountView *view) -{ - gchar *user = (gchar *) e_account_get_string (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_ID_NAME); - gchar *email = (gchar *) e_account_get_string (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_ID_ADDRESS); - gchar *tmp; - const gchar *pwd = gtk_entry_get_text ((GtkEntry *) view->password); - - if (!user || !*user) - return ERROR_NO_FULLNAME; - if (!email || !*email) - return ERROR_NO_EMAIL; - if (view->original) /* We don't query/store pwd on edit. */ - return 0; - if (!pwd || !*pwd) - return ERROR_NO_PASSWORD; - - tmp = strchr (email, '@'); - if (!tmp || tmp[1] == 0) - return ERROR_INVALID_EMAIL; - - return 0; -} -#ifdef NOT_USED -static void -save_send (MailAccountView *view) -{ -} - -static void -save_account (MailAccountView *view) -{ -} -#endif - -#define PACK_BOX(w) box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start((GtkBox *)box, w, FALSE, FALSE, 12); gtk_widget_show(box); -#define PACK_BOXF(w) box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start((GtkBox *)box, w, FALSE, FALSE, 0); gtk_widget_show(box); - -#define CALENDAR_CALDAV_URI "caldav://%s@www.google.com/calendar/dav/%s/events" -#define GMAIL_CALENDAR_LOCATION "://www.google.com/calendar/feeds/" -#define CALENDAR_DEFAULT_PATH "/private/full" -#define SELECTED_CALENDARS "/apps/evolution/calendar/display/selected_calendars" -#define YAHOO_CALENDAR_LOCATION "%s@caldav.calendar.yahoo.com/dav/%s/Calendar/%s" -static gboolean -is_email (const gchar *address) -{ - /* This is supposed to check if the address's domain could be - * an FQDN but alas, it's not worth the pain and suffering. */ - const gchar *at; - - at = strchr (address, '@'); - /* make sure we have an '@' and that it's not the first or last gchar */ - if (!at || at == address || *(at + 1) == '\0') - return FALSE; - - return TRUE; -} - -static gchar * -sanitize_user_mail (const gchar *user) -{ - if (!user) - return NULL; - - if (strstr (user, "%40") != NULL) { - return g_strdup (user); - } else if (!is_email (user)) { - return g_strconcat (user, "%40gmail.com", NULL); - } else { - gchar *tmp = g_malloc0 (sizeof (gchar) * (1 + strlen (user) + 2)); - gchar *at = strchr (user, '@'); - - strncpy (tmp, user, at - user); - strcat (tmp, "%40"); - strcat (tmp, at + 1); - - return tmp; - } -} - -static void -add_selected_calendar (const gchar *uid) -{ - gchar **ids; - gint i; - GPtrArray *array; - GSettings *settings; - - settings = g_settings_new ("org.gnome.evolution.calendar"); - ids = g_settings_get_strv (settings, "selected-calendars"); - - array = g_ptr_array_new (); - for (i = 0; ids[i] != NULL; i++) - g_ptr_array_add (array, ids[i]); - g_ptr_array_add (array, (gpointer) uid); - g_ptr_array_add (array, NULL); - - g_settings_set_strv (settings, "selected-calendars", (const gchar* const *) array->pdata); - - g_ptr_array_free (array, TRUE); - g_object_unref (settings); -} - -static void -setup_yahoo_account (MailAccountView *mav) -{ - GConfClient *gconf = gconf_client_get_default (); - - mav->priv->do_gcontacts = gtk_toggle_button_get_active ((GtkToggleButton *) mav->priv->gcontacts); - mav->priv->do_calendar = gtk_toggle_button_get_active ((GtkToggleButton *) mav->priv->calendar); - - if (mav->priv->do_calendar) { - ESourceList *slist; - ESourceGroup *sgrp; - ESource *calendar; - gchar *sanitize_uname, *abs_uri, *rel_uri; - const gchar *email = e_account_get_string (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_ID_ADDRESS); - - slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/calendar/sources"); - sgrp = e_source_list_peek_group_by_base_uri (slist, "caldav://"); - if (!sgrp) { - sgrp = e_source_list_ensure_group (slist, _("CalDAV"), "caldav://", TRUE); - } - - printf("Setting up Yahoo Calendar: list:%p CalDAVGrp: %p\n", slist, sgrp); - - /* FIXME: Not sure if we should localize 'Calendar' */ - calendar = e_source_new ("Yahoo", ""); - e_source_set_property (calendar, "ssl", "1"); - e_source_set_property (calendar, "refresh", "30"); - e_source_set_property (calendar, "refresh-type", "0"); - e_source_set_property (calendar, "auth", "1"); - e_source_set_property (calendar, "offline_sync", "1"); - e_source_set_property (calendar, "username", email); - e_source_set_property (calendar, "default", "true"); - e_source_set_property (calendar, "alarm", "true"); - - e_source_set_readonly (calendar, FALSE); - - sanitize_uname = sanitize_user_mail (email); - - abs_uri = g_strdup_printf ("caldav://%s@caldav.calendar.yahoo.com/dav/%s/Calendar/%s/", sanitize_uname, email, gtk_entry_get_text((GtkEntry *)mav->priv->yahoo_cal_entry)); - e_passwords_add_password (abs_uri, gtk_entry_get_text ((GtkEntry *) mav->password)); - e_passwords_remember_password (NULL, abs_uri); - - rel_uri = g_strdup_printf (YAHOO_CALENDAR_LOCATION, sanitize_uname, email, gtk_entry_get_text ((GtkEntry *) mav->priv->yahoo_cal_entry)); - e_source_set_relative_uri (calendar, rel_uri); - - e_source_group_add_source (sgrp, calendar, -1); - e_source_list_sync (slist, NULL); - - add_selected_calendar (e_source_peek_uid (calendar)); - - g_free (abs_uri); - g_free (rel_uri); - g_free (sanitize_uname); - g_object_unref (slist); - g_object_unref (sgrp); - g_object_unref (calendar); - } else - printf("Not setting up Yahoo Calendar\n"); - - if (mav->priv->do_gcontacts) { - ESourceList *slist; - ESourceGroup *sgrp; - ESource *abook; - gchar *rel_uri;; - - slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/addressbook/sources" ); - - sgrp = e_source_list_peek_group_by_base_uri (slist, "google://"); - - /* FIXME: Not sure if we should localize 'Contacts' */ - abook = e_source_new ("Contacts", ""); - e_source_set_property (abook, "default", "true"); - e_source_set_property (abook, "offline_sync", "1"); - e_source_set_property (abook, "auth", "plain/password"); - e_source_set_property (abook, "use-ssl", "true"); - e_source_set_property (abook, "remember_password", "true"); - e_source_set_property (abook, "refresh-interval", "86400"); - e_source_set_property (abook, "completion", "true"); - e_source_set_property (abook, "username", mav->priv->username); - e_source_set_relative_uri (abook, mav->priv->username); - - rel_uri = g_strdup_printf("google://%s/", mav->priv->username); - e_passwords_add_password (rel_uri, gtk_entry_get_text ((GtkEntry *) mav->password)); - e_passwords_remember_password (NULL, rel_uri); - e_source_group_add_source (sgrp, abook, -1); - e_source_list_sync (slist, NULL); - - g_free (rel_uri); - g_object_unref (slist); - g_object_unref (sgrp); - g_object_unref (abook); - - } - - g_object_unref (gconf); -} - -static void -setup_google_accounts (MailAccountView *mav) -{ - GConfClient *gconf = gconf_client_get_default (); - - mav->priv->do_gcontacts = gtk_toggle_button_get_active ((GtkToggleButton *) mav->priv->gcontacts); - mav->priv->do_calendar = gtk_toggle_button_get_active ((GtkToggleButton *) mav->priv->calendar); - - if (mav->priv->do_calendar) { - ESourceList *slist; - ESourceGroup *sgrp; - ESource *calendar; - gchar *sanitize_uname, *abs_uri, *rel_uri; - - slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/calendar/sources"); - sgrp = e_source_list_ensure_group (slist, _("Google"), "google://", TRUE); - - /* FIXME: Not sure if we should localize 'Calendar' */ - calendar = e_source_new ("Calendar", ""); - e_source_set_property (calendar, "ssl", "1"); - e_source_set_property (calendar, "refresh", "30"); - e_source_set_property (calendar, "auth", "1"); - e_source_set_property (calendar, "offline_sync", "1"); - e_source_set_property (calendar, "username", mav->priv->username); - e_source_set_property (calendar, "setup-username", mav->priv->username); - e_source_set_property (calendar, "default", "true"); - e_source_set_readonly (calendar, FALSE); - - e_source_group_add_source (sgrp, calendar, -1); - - sanitize_uname = sanitize_user_mail (mav->priv->username); - - abs_uri = g_strdup_printf (CALENDAR_CALDAV_URI, sanitize_uname, mav->priv->username); - e_source_set_absolute_uri (calendar, abs_uri); - - e_passwords_add_password (abs_uri, gtk_entry_get_text ((GtkEntry *) mav->password)); - e_passwords_remember_password (NULL, abs_uri); - rel_uri = g_strconcat ("https", GMAIL_CALENDAR_LOCATION, sanitize_uname, CALENDAR_DEFAULT_PATH, NULL); - e_source_set_relative_uri (calendar, rel_uri); - - e_source_list_sync (slist, NULL); - - add_selected_calendar (e_source_peek_uid (calendar)); - - g_free (abs_uri); - g_free (rel_uri); - g_free (sanitize_uname); - g_object_unref (slist); - g_object_unref (sgrp); - g_object_unref (calendar); - } - - if (mav->priv->do_gcontacts) { - ESourceList *slist; - ESourceGroup *sgrp; - GSList *sources; - gboolean source_already_exists = FALSE; - - slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/addressbook/sources" ); - - sgrp = e_source_list_ensure_group (slist, _("Google"), "google://", TRUE); - - sources = e_source_group_peek_sources (sgrp); - for (; sources; sources = sources->next) { - ESource *existing = (ESource *) sources->data; - - if (!g_strcmp0 (e_source_peek_relative_uri (existing), - mav->priv->username)) { - source_already_exists = TRUE; - break; - } - } - - if (!source_already_exists) { - ESource *abook; - gchar *rel_uri; - - /* FIXME: Not sure if we should localize 'Contacts' */ - abook = e_source_new ("Contacts", ""); - e_source_set_property (abook, "default", "true"); - e_source_set_property (abook, "offline_sync", "1"); - e_source_set_property (abook, "auth", "plain/password"); - e_source_set_property (abook, "use-ssl", "true"); - e_source_set_property (abook, "remember_password", "true"); - e_source_set_property (abook, "refresh-interval", "86400"); - e_source_set_property (abook, "completion", "true"); - e_source_set_property (abook, "username", mav->priv->username); - - e_source_group_add_source (sgrp, abook, -1); - - e_source_set_relative_uri (abook, mav->priv->username); - - rel_uri = g_strdup_printf ("google://%s/", mav->priv->username); - e_passwords_add_password (rel_uri, gtk_entry_get_text ((GtkEntry *) mav->password)); - e_passwords_remember_password (NULL, rel_uri); - e_source_list_sync (slist, NULL); - - g_free (rel_uri); - g_object_unref (abook); - } - - g_object_unref (slist); - g_object_unref (sgrp); - } - - g_object_unref (gconf); -} - -#define INDENTATION 10 - -static GtkWidget * -create_review (MailAccountView *view) -{ - GtkWidget *table, *box, *label, *entry; - gchar *uri; - gchar *enc; - CamelURL *url; - gchar *buff; - - uri = (gchar *) e_account_get_string (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_SOURCE_URL); - if (!uri || (url = camel_url_new (uri, NULL)) == NULL) - return NULL; - - table = gtk_table_new (4,2, FALSE); - gtk_table_set_row_spacings ((GtkTable *) table, 4); - - label = gtk_label_new (NULL); - buff = g_markup_printf_escaped ("<span size=\"large\" weight=\"bold\">%s</span>", _("Personal details:")); - gtk_label_set_markup ((GtkLabel *) label, buff); - g_free (buff); - gtk_widget_show (label); - PACK_BOXF (label) - gtk_table_attach ((GtkTable *) table, box, 0, 1, 0, 1, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (_("Name:")); - gtk_widget_show (label); - PACK_BOX (label); - gtk_table_attach ((GtkTable *) table, box, 0, 1, 1, 2, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - entry = gtk_label_new (e_account_get_string (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_ID_NAME)); - gtk_widget_show (entry); - PACK_BOX (entry) - gtk_table_attach ((GtkTable *) table, box, 1, 2, 1, 2, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (_("Email address:")); - gtk_widget_show (label); - PACK_BOX (label) - gtk_table_attach ((GtkTable *) table, box, 0, 1, 2, 3, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - entry = gtk_label_new (e_account_get_string (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_ID_ADDRESS)); - gtk_widget_show (entry); - PACK_BOX (entry) - gtk_table_attach ((GtkTable *) table, box, 1, 2, 2, 3, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (NULL); - buff = g_markup_printf_escaped ("<span size=\"large\" weight=\"bold\">%s</span>", _("Details:")); - gtk_label_set_markup ((GtkLabel *) label, buff); - g_free (buff); - gtk_widget_show (label); - PACK_BOXF (label); - gtk_table_attach ((GtkTable *) table, box, 0, 1, 3, 4, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (NULL); - buff = g_markup_printf_escaped ("<span size=\"large\" weight=\"bold\">%s</span>", _("Receiving")); - gtk_label_set_markup ((GtkLabel *) label, buff); - g_free (buff); - gtk_widget_show (label); - PACK_BOXF (label); - gtk_table_attach ((GtkTable *) table, box, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (_("Server type:")); - gtk_widget_show (label); - PACK_BOX (label); - gtk_table_attach ((GtkTable *) table, box, 0, 1, 4, 5, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - entry = gtk_label_new (url->protocol); - gtk_widget_show (entry); - PACK_BOX (entry) - gtk_table_attach ((GtkTable *) table, box, 1, 2, 4, 5, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (_("Server address:")); - gtk_widget_show (label); - PACK_BOX (label); - gtk_table_attach ((GtkTable *) table, box, 0, 1, 5, 6, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - entry = gtk_label_new (url->host); - gtk_widget_show (entry); - PACK_BOX (entry); - gtk_table_attach ((GtkTable *) table, box, 1, 2, 5, 6, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (_("Username:")); - gtk_widget_show (label); - PACK_BOX (label); - gtk_table_attach ((GtkTable *) table, box, 0, 1, 6, 7, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - entry = gtk_label_new (url->user); - gtk_widget_show (entry); - PACK_BOX (entry); - gtk_table_attach ((GtkTable *) table, box, 1, 2, 6, 7, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - label = gtk_label_new (_("Use encryption:")); - gtk_widget_show (label); - PACK_BOX (label); - gtk_table_attach ((GtkTable *) table, box, 0, 1, 7, 8, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - enc = (gchar *)camel_url_get_param(url, "security-method"); - entry = gtk_label_new (enc ? enc : _("never")); - gtk_widget_show (entry); - PACK_BOX (entry); - gtk_table_attach ((GtkTable *) table, box, 1, 2, 7, 8, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - view->priv->username = g_strdup (url->user); - camel_url_free (url); - uri =(gchar *) e_account_get_string (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_TRANSPORT_URL); - if (!uri || (url = camel_url_new (uri, NULL)) == NULL) - return NULL; - - label = gtk_label_new (NULL); - buff = g_markup_printf_escaped ("<span size=\"large\" weight=\"bold\">%s</span>", _("Sending")); - gtk_label_set_markup ((GtkLabel *) label, buff); - g_free (buff); - gtk_widget_show (label); - PACK_BOXF (label); - gtk_table_attach ((GtkTable *) table, box, 2, 3, 3, 4, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - entry = gtk_label_new (url->protocol); - gtk_widget_show (entry); - PACK_BOX (entry) - gtk_table_attach ((GtkTable *) table, box, 2, 3, 4, 5, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - entry = gtk_label_new (url->host); - gtk_widget_show (entry); - PACK_BOX (entry); - gtk_table_attach ((GtkTable *) table, box, 2, 3, 5, 6, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - entry = gtk_label_new (url->user); - gtk_widget_show (entry); - PACK_BOX (entry); - gtk_table_attach ((GtkTable *) table, box, 2, 3, 6, 7, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - - enc = (gchar *)camel_url_get_param(url, "security-method"); - entry = gtk_label_new (enc ? enc : _("never")); - gtk_widget_show (entry); - PACK_BOX (entry); - gtk_table_attach ((GtkTable *) table, box, 2, 3, 7, 8, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - -/* - label = gtk_label_new (_("Organization:")); - gtk_widget_show (label); - entry = gtk_entry_new (); - gtk_widget_show (entry); - gtk_table_attach (table, label, 0, 1, 3, 4, GTK_SHRINK, GTK_SHRINK, INDENTATION, 0); - gtk_table_attach (table, entry, 1, 2, 3, 4, GTK_EXPAND | GTK_FILL, GTK_SHRINK, INDENTATION, 0); - */ - - gtk_widget_show (table); - - return table; -} - -#define IDENTITY_DETAIL N_("To use the email application you'll need to setup an account. Put your email address and password in below and we'll try and work out all the settings. If we can't do it automatically you'll need your server details as well.") - -#define RECEIVE_DETAIL N_("Sorry, we can't work out the settings to get your mail automatically. Please enter them below. We've tried to make a start with the details you just entered but you may need to change them.") - -#define RECEIVE_OPT_DETAIL N_("You can specify more options to configure the account.") - -#define SEND_DETAIL N_("Now we need your settings for sending mail. We've tried to make some guesses but you should check them over to make sure.") -#define DEFAULTS_DETAIL N_("You can specify your default settings for your account.") -#define REVIEW_DETAIL N_("Time to check things over before we try and connect to the server and fetch your mail.") -struct _page_text { - gint id; - const gchar *head; - const gchar *next; - const gchar *prev; - const gchar *next_edit; - const gchar *prev_edit; - const gchar *detail; - const gchar *path; - GtkWidget * (*create_page) (MailAccountView *view); - void (*fill_page) (MailAccountView *view); - void (*save_page) (MailAccountView *view); - gint (*validate_page) (MailAccountView *view); -} mail_account_pages[] = { - { MAV_IDENTITY_PAGE, N_("Identity"), N_("Next - Receiving mail"), NULL, N_("Next - Receiving mail"), NULL, IDENTITY_DETAIL, "00.identity",NULL, NULL, save_identity, validate_identity}, - { MAV_RECV_PAGE, N_("Receiving mail"), N_("Next - Sending mail"), N_("Back - Identity"), N_("Next - Receiving options"), N_("Back - Identity"), RECEIVE_DETAIL, "10.receive", NULL, NULL, NULL, NULL }, - { MAV_RECV_OPT_PAGE, N_("Receiving options"), NULL, NULL, N_("Next - Sending mail"), N_("Back - Receiving mail"), RECEIVE_OPT_DETAIL, "10.receive", NULL, NULL, NULL, NULL }, - - { MAV_SEND_PAGE, N_("Sending mail"), N_("Next - Review account"), N_("Back - Receiving mail"), N_("Next - Defaults"), N_("Back - Receiving options"), SEND_DETAIL, "30.send", NULL, NULL, NULL, NULL}, - { MAV_DEFAULTS_PAGE, N_("Defaults"), NULL, NULL, N_("Next - Review account"), N_("Back - Sending mail"), DEFAULTS_DETAIL, "40.defaults", NULL, NULL, NULL, NULL}, - - { MAV_REVIEW_PAGE, N_("Review account"), N_("Finish"), N_("Back - Sending"), N_("Finish"), N_("Back - Sending"), REVIEW_DETAIL, NULL, create_review, NULL, NULL}, -}; - -static void -mav_next_pressed (GtkButton *button, - MailAccountView *mav) -{ - if (mail_account_pages[mav->current_page].validate_page) { - gint ret = (*mail_account_pages[mav->current_page].validate_page) (mav); - MAVPage *page = mav->pages[mav->current_page]; - if (ret) { - gtk_label_set_text ((GtkLabel *) page->error_label, _(dialog_errors[ret - 1].detail)); - gtk_widget_show (page->error); - return; - } - gtk_widget_hide (page->error); - gtk_label_set_text ((GtkLabel *)page->error_label, ""); - } - if (mail_account_pages[mav->current_page].save_page) { - (*mail_account_pages[mav->current_page].save_page) (mav); - } - - if (mav->current_page == MAV_LAST - 1) { - gchar *uri = (gchar *) e_account_get_string (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_SOURCE_URL); - CamelURL *url; - - e_account_set_string (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_NAME, e_account_get_string (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_ID_ADDRESS)); - if (uri != NULL && (url = camel_url_new (uri, NULL)) != NULL) { - camel_url_set_param(url, "check-all", "true"); - camel_url_set_param(url, "stay-synchronized", "true"); - if (!mav->original) { - e_account_set_bool (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_SOURCE_AUTO_CHECK, TRUE); - } - - if (!mav->original && strcmp (url->protocol, "pop") == 0) { - e_account_set_bool (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_SOURCE_KEEP_ON_SERVER, TRUE); - } - - uri = camel_url_to_string (url, 0); - e_account_set_string (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_SOURCE_URL, uri); - g_free (uri); - camel_url_free (url); - } - - if (!mav->original) { - EAccount *account = em_account_editor_get_modified_account (mav->edit); - CamelURL *aurl; - gchar *surl; - /* Save the password ahead of time */ - aurl = camel_url_new (account->source->url, NULL); - surl = camel_url_to_string (aurl, CAMEL_URL_HIDE_ALL); - e_passwords_add_password (surl, gtk_entry_get_text ((GtkEntry *) mav->password)); - e_passwords_remember_password (NULL, surl); - camel_url_free (aurl); - g_free (surl); - } - - if (mav->priv->is_gmail && !mav->original) - setup_google_accounts (mav); - else if (mav->priv->is_yahoo && !mav->original) - setup_yahoo_account (mav); - - em_account_editor_commit (mav->edit); - g_signal_emit (mav, signals[VIEW_CLOSE], 0); - return; - } - - gtk_widget_hide (mav->pages[mav->current_page]->box); - mav->current_page++; - if (mav->current_page == MAV_RECV_OPT_PAGE && mav->original == NULL) - mav->current_page++; /* Skip recv options in new account creation. */ - if (mav->current_page == MAV_DEFAULTS_PAGE && mav->original == NULL) - mav->current_page++; /* Skip defaults in new account creation. */ - - if (mav->current_page == MAV_LAST - 1) { - MAVPage *page = mav->pages[mav->current_page]; - GtkWidget *tmp; - EAccount *account = em_account_editor_get_modified_account (mav->edit); - - if (page->main) - gtk_widget_destroy (page->main); - - tmp = mail_account_pages[mav->current_page].create_page (mav); - page->main = gtk_hbox_new (FALSE, 0); - gtk_widget_show (page->main); - if (tmp) { - gtk_box_pack_start ((GtkBox *) page->main, tmp, FALSE, FALSE, 0); - gtk_widget_show (tmp); - } - gtk_box_pack_start ((GtkBox *) page->box, page->main, FALSE, FALSE, 3); - - if (mav->priv->is_gmail) { - gtk_widget_destroy (mav->priv->gcontacts); - gtk_widget_destroy (mav->priv->calendar); - gtk_widget_destroy (mav->priv->gmail_info_label); - if (mav->priv->account_label) { - gtk_widget_destroy (mav->priv->account_label); - mav->priv->account_label = NULL; - } - if (mav->priv->gmail_link) { - gtk_widget_destroy (mav->priv->gmail_link); - mav->priv->gmail_link = NULL; - } - } else if (mav->priv->is_yahoo) { - gtk_widget_destroy (mav->priv->calendar); - gtk_widget_destroy (mav->priv->gmail_info_label); - gtk_widget_destroy (mav->priv->yahoo_cal_entry); - if (mav->priv->account_label) { - gtk_widget_destroy (mav->priv->account_label); - mav->priv->account_label = NULL; - } - if (mav->priv->yahoo_cal_box) { - gtk_widget_destroy (mav->priv->yahoo_cal_box); - mav->priv->yahoo_cal_box = NULL; - } - } - - if (mav->original == NULL && (g_strrstr(account->source->url, "gmail") || - g_strrstr(account->source->url, "googlemail"))) { - /* Google accounts*/ - gchar *buff; - mav->priv->is_gmail = TRUE; - - mav->priv->gcontacts = gtk_check_button_new_with_label (_("Setup Google contacts with Evolution")); - mav->priv->calendar = gtk_check_button_new_with_label (_("Setup Google calendar with Evolution")); - - gtk_toggle_button_set_active ((GtkToggleButton *) mav->priv->gcontacts, TRUE); - gtk_toggle_button_set_active ((GtkToggleButton *) mav->priv->calendar, TRUE); - - mav->priv->gmail_info_label = gtk_label_new (_("You may need to enable IMAP access.")); - gtk_label_set_selectable ((GtkLabel *) mav->priv->gmail_info_label, TRUE); - - gtk_widget_show (mav->priv->gcontacts); - gtk_widget_show (mav->priv->calendar); - gtk_widget_show (mav->priv->gmail_info_label); - - mav->priv->account_label = gtk_label_new (NULL); - buff = g_markup_printf_escaped ("<span size=\"large\" weight=\"bold\">%s</span>", _("Google account settings:")); - gtk_label_set_markup ((GtkLabel *) mav->priv->account_label, buff); - g_free (buff); - gtk_widget_show (mav->priv->account_label); - -#define PACK_IN_BOX(wid,child,num) { GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, child, FALSE, FALSE, num); gtk_widget_show (tbox); gtk_box_pack_start ((GtkBox *)wid, tbox, FALSE, FALSE, 0); } - - PACK_IN_BOX (page->box,mav->priv->account_label,12); - PACK_IN_BOX (page->box,mav->priv->gcontacts,24); - PACK_IN_BOX (page->box,mav->priv->calendar,24); -#undef PACK_IN_BOX -#define PACK_IN_BOX(wid,child1,child2,num1,num2) { GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, child1, FALSE, FALSE, num1); gtk_box_pack_start ((GtkBox *)tbox, child2, FALSE, FALSE, num2); gtk_widget_show_all (tbox); gtk_box_pack_start ((GtkBox *)wid, tbox, FALSE, FALSE, 0); } - - mav->priv->gmail_link = gtk_link_button_new ("https://mail.google.com/mail/?ui=2&shva=1#settings/fwdandpop"); - PACK_IN_BOX (page->box,mav->priv->gmail_info_label,mav->priv->gmail_link, 24, 0); -#undef PACK_IN_BOX - } else if (mav->original == NULL && - (g_strrstr(account->source->url, "yahoo.") || - g_strrstr(account->source->url, "ymail.") || - g_strrstr(account->source->url, "rocketmail."))) { - /* Yahoo accounts*/ - gchar *cal_name; - gchar *buff; - - mav->priv->is_yahoo = TRUE; - printf("Google account: %s\n", account->source->url); - mav->priv->calendar = gtk_check_button_new_with_label (_("Setup Yahoo calendar with Evolution")); - - gtk_toggle_button_set_active ((GtkToggleButton *) mav->priv->calendar, TRUE); - - mav->priv->gmail_info_label = gtk_label_new (_("Yahoo calendars are named as firstname_lastname. We have tried to form the calendar name. So please confirm and re-enter the calendar name if it is not correct.")); - gtk_label_set_line_wrap ((GtkLabel *) mav->priv->gmail_info_label, TRUE); - gtk_label_set_line_wrap_mode ((GtkLabel *) mav->priv->gmail_info_label, PANGO_WRAP_WORD); - gtk_label_set_selectable ((GtkLabel *) mav->priv->gmail_info_label, TRUE); - - gtk_widget_show (mav->priv->calendar); - gtk_widget_show (mav->priv->gmail_info_label); - - mav->priv->account_label = gtk_label_new (NULL); - buff = g_markup_printf_escaped ("<span size=\"large\" weight=\"bold\">%s</span>", _("Yahoo account settings:")); - gtk_label_set_markup ((GtkLabel *) mav->priv->account_label, buff); - g_free (buff); - gtk_widget_show (mav->priv->account_label); - -#define PACK_IN_BOX(wid,child,num) { GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, child, FALSE, FALSE, num); gtk_widget_show (tbox); gtk_box_pack_start ((GtkBox *)wid, tbox, FALSE, FALSE, 0); } -#define PACK_IN_BOX_AND_TEXT(txt,box,child,num) { GtkWidget *txtlbl = gtk_label_new (txt); box = gtk_hbox_new (FALSE, 12); gtk_box_pack_start ((GtkBox *)box, txtlbl, FALSE, FALSE, num); gtk_box_pack_start ((GtkBox *)box, child, FALSE, FALSE, num); gtk_widget_show_all (box);} - - PACK_IN_BOX (page->box,mav->priv->account_label,12); - PACK_IN_BOX (page->box,mav->priv->calendar,24); - - mav->priv->yahoo_cal_entry = gtk_entry_new (); - gtk_widget_show (mav->priv->yahoo_cal_entry); - PACK_IN_BOX (page->box,mav->priv->gmail_info_label, 24); - PACK_IN_BOX_AND_TEXT(_("Yahoo Calendar name:"), mav->priv->yahoo_cal_box, mav->priv->yahoo_cal_entry, 0); - PACK_IN_BOX (page->box, mav->priv->yahoo_cal_box, 24); - cal_name = g_strdup (e_account_get_string (em_account_editor_get_modified_account (mav->edit), E_ACCOUNT_ID_NAME)); - cal_name = g_strdelimit(cal_name, " ", '_'); - gtk_entry_set_text ((GtkEntry *) mav->priv->yahoo_cal_entry, cal_name); - g_free (cal_name); -#undef PACK_IN_BOX - } else { - mav->priv->is_gmail = FALSE; - mav->priv->is_yahoo = FALSE; - } - - } - - gtk_widget_show (mav->pages[mav->current_page]->box); - if (!mav->pages[mav->current_page]->done) { - mav->pages[mav->current_page]->done = TRUE; - if (mail_account_pages[mav->current_page].path) { - - if (!mav->original && em_account_editor_check (mav->edit, mail_account_pages[mav->current_page].path)) - mav_next_pressed (NULL, mav); - } - } -} - -static void -mav_prev_pressed (GtkButton *button, - MailAccountView *mav) -{ - if (mav->current_page == 0) - return; - - gtk_widget_hide (mav->pages[mav->current_page]->box); - mav->current_page--; - if (mav->current_page == MAV_RECV_OPT_PAGE && mav->original == NULL) - mav->current_page--; /* Skip recv options in new account creation. */ - if (mav->current_page == MAV_DEFAULTS_PAGE && mav->original == NULL) - mav->current_page--; /* Skip defaults in new account creation. */ - gtk_widget_show (mav->pages[mav->current_page]->box); - -} - -static GtkWidget * -mav_construct_page (MailAccountView *view, - MAVPageType type) -{ - MAVPage *page = g_new0 (MAVPage, 1); - GtkWidget *box, *tmp, *error_box; - gchar *str; - - page->type = type; - - page->box = gtk_vbox_new (FALSE, 2); - - error_box = gtk_hbox_new (FALSE, 2); - page->error_label = gtk_label_new (""); - tmp = gtk_image_new_from_stock (GTK_STOCK_DIALOG_WARNING, GTK_ICON_SIZE_MENU); - gtk_box_pack_start ((GtkBox *) error_box, tmp, FALSE, FALSE, 2); - gtk_box_pack_start ((GtkBox *) error_box, page->error_label, FALSE, FALSE, 2); - gtk_widget_hide (tmp); - gtk_widget_show (page->error_label); - page->error = tmp; - gtk_widget_show (error_box); - - box = gtk_hbox_new (FALSE, 12); - gtk_widget_show (box); - gtk_box_pack_start ((GtkBox *) page->box, box, FALSE, FALSE, 12); - tmp = gtk_label_new (NULL); - str = g_strdup_printf("<span size=\"xx-large\" weight=\"heavy\">%s</span>", _(mail_account_pages[type].head)); - gtk_label_set_markup ((GtkLabel *) tmp, str); - g_free (str); - gtk_widget_show (tmp); - gtk_box_pack_start ((GtkBox *) box, tmp, FALSE, FALSE, 12); - - box = gtk_hbox_new (FALSE, 12); - gtk_widget_show (box); - gtk_box_pack_start ((GtkBox *) page->box, box, FALSE, FALSE, 12); - tmp = gtk_label_new (_(mail_account_pages[type].detail)); - gtk_widget_set_size_request (tmp, 600, -1); - gtk_label_set_line_wrap ((GtkLabel *) tmp, TRUE); - gtk_label_set_line_wrap_mode ((GtkLabel *) tmp, PANGO_WRAP_WORD); - gtk_widget_show (tmp); - gtk_box_pack_start ((GtkBox *) box, tmp, FALSE, FALSE, 12); - - page->main = NULL; - if (mail_account_pages[type].create_page && mail_account_pages[type].path) { - tmp = (*mail_account_pages[type].create_page) (view); - gtk_box_pack_start ((GtkBox *) page->box, tmp, FALSE, FALSE, 3); - page->main = gtk_hbox_new (FALSE, 0); - gtk_widget_show (page->main); - gtk_box_pack_start ((GtkBox *) page->main, tmp, FALSE, FALSE, 0); - } - - if (mail_account_pages[type].fill_page) { - (*mail_account_pages[type].fill_page) (view); - } - - if ((view->original && mail_account_pages[type].prev_edit) || mail_account_pages[type].prev) { - box = gtk_hbox_new (FALSE, 0); - if (FALSE) { - tmp = gtk_image_new_from_icon_name ("go-previous", GTK_ICON_SIZE_BUTTON); - gtk_box_pack_start ((GtkBox *) box, tmp, FALSE, FALSE, 0); - } - tmp = gtk_label_new (_(view->original ? mail_account_pages[type].prev_edit : mail_account_pages[type].prev)); - gtk_box_pack_start ((GtkBox *) box, tmp, FALSE, FALSE, 3); - page->prev = gtk_button_new (); - gtk_container_add ((GtkContainer *) page->prev, box); - gtk_widget_show_all (page->prev); - g_signal_connect (page->prev, "clicked", G_CALLBACK(mav_prev_pressed), view); - } - - if ((view->original && mail_account_pages[type].next_edit) || mail_account_pages[type].next) { - box = gtk_hbox_new (FALSE, 0); - tmp = gtk_label_new (_(view->original ? mail_account_pages[type].next_edit : mail_account_pages[type].next)); - gtk_box_pack_start ((GtkBox *) box, tmp, FALSE, FALSE, 3); - if (FALSE) { - tmp = gtk_image_new_from_icon_name ("go-next", GTK_ICON_SIZE_BUTTON); - gtk_box_pack_start ((GtkBox *) box, tmp, FALSE, FALSE, 0); - } - page->next = gtk_button_new (); - gtk_widget_set_can_default (page->next, TRUE); - gtk_container_add ((GtkContainer *) page->next, box); - gtk_widget_show_all (page->next); - g_signal_connect (page->next, "clicked", G_CALLBACK(mav_next_pressed), view); - } - - box = gtk_hbox_new (FALSE, 0); - if (page->prev) - gtk_box_pack_start ((GtkBox *) box, page->prev, FALSE, FALSE, 12); - if (page->next) - gtk_box_pack_end ((GtkBox *) box, page->next, FALSE, FALSE, 12); - gtk_widget_show (box); - gtk_box_pack_end ((GtkBox *) page->box, box, FALSE, FALSE, 6); - gtk_widget_show (page->box); - gtk_box_pack_end ((GtkBox *) page->box, error_box, FALSE, FALSE, 2); - return (GtkWidget *) page; -} - -static void -next_page (GtkWidget *entry, - MailAccountView *mav) -{ - mav_next_pressed (NULL, mav); -} - -static void -mail_account_view_construct (MailAccountView *view, - EMailBackend *backend) -{ - gint i; - EShell *shell; - - view->scroll = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy ((GtkScrolledWindow *) view->scroll, GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - gtk_scrolled_window_set_shadow_type ((GtkScrolledWindow *) view->scroll, GTK_SHADOW_NONE); - view->page_widget = gtk_vbox_new (FALSE, 3); - gtk_scrolled_window_add_with_viewport ((GtkScrolledWindow *) view->scroll, view->page_widget); - gtk_widget_show_all (view->scroll); - gtk_widget_set_size_request ((GtkWidget *) view, -1, 300); - for (i = 0; i < MAV_LAST; i++) { - view->pages[i] = (MAVPage *) mav_construct_page (view, i); - view->pages[i]->done = FALSE; - view->wpages[i] = view->pages[i]->box; - gtk_box_pack_start ((GtkBox *) view->page_widget, view->pages[i]->box, TRUE, TRUE, 0); - gtk_widget_hide (view->pages[i]->box); - } - gtk_widget_show (view->pages[0]->box); - view->current_page = 0; - gtk_box_pack_start ((GtkBox *) view, view->scroll, TRUE, TRUE, 0); - view->edit = em_account_editor_new_for_pages ( - view->original, EMAE_PAGES, backend, - "org.gnome.evolution.mail.config.accountWizard", view->wpages); - gtk_widget_hide (e_config_create_widget (E_CONFIG (view->edit->config))); - if (!view->original) { - e_account_set_bool (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_SOURCE_SAVE_PASSWD, TRUE); - e_account_set_bool (em_account_editor_get_modified_account (view->edit), E_ACCOUNT_TRANSPORT_SAVE_PASSWD, TRUE); - } - em_account_editor_check (view->edit, mail_account_pages[0].path); - view->pages[0]->done = TRUE; - - shell = e_shell_get_default (); - if (!shell || e_shell_get_express_mode (shell)) { - GtkWidget *table = em_account_editor_get_widget (view->edit, "identity-required-table"); - GtkWidget *label, *pwd; - gtk_widget_hide (em_account_editor_get_widget (view->edit, "identity-optional-section")); - - if (!view->original) { - label = gtk_label_new (_("Password:")); - pwd = gtk_entry_new (); - gtk_entry_set_visibility ((GtkEntry *) pwd, FALSE); -/* gtk_entry_set_activates_default ((GtkEntry *)pwd, TRUE); */ - g_signal_connect (pwd, "activate", G_CALLBACK (next_page), view); - gtk_widget_show (label); - gtk_widget_show (pwd); - gtk_table_attach ((GtkTable *) table, label, 0, 1, 2, 3, GTK_FILL, 0, 0, 0); - gtk_table_attach ((GtkTable *) table, pwd, 1, 2, 2, 3, GTK_FILL | GTK_EXPAND, 0, 0, 0); - - view->password = pwd; - } - } - - /* assume the full name is known from the system */ - gtk_widget_grab_focus (em_account_editor_get_widget (view->edit, "identity_address")); -} - -MailAccountView * -mail_account_view_new (EAccount *account, - EMailBackend *backend) -{ - MailAccountView *view = g_object_new (MAIL_ACCOUNT_VIEW_TYPE, NULL); - view->type = MAIL_VIEW_ACCOUNT; - view->uri = "account://"; - view->original = account; - mail_account_view_construct (view, backend); - - return view; -} - -static void -mav_close (GtkButton *w, - MailAccountView *mfv) -{ - g_signal_emit (mfv, signals[VIEW_CLOSE], 0); -} - -GtkWidget * -mail_account_view_get_tab_widget (MailAccountView *mcv) -{ - GdkPixbuf *pbuf = gtk_widget_render_icon ((GtkWidget *)mcv, "gtk-close", GTK_ICON_SIZE_MENU, NULL); - - GtkWidget *tool, *box, *img; - gint w=-1, h=-1; - GtkWidget *tab_label; - - img = (GtkWidget *) gtk_image_new_from_pixbuf (pbuf); - - tool = gtk_button_new (); - gtk_button_set_relief ((GtkButton *) tool, GTK_RELIEF_NONE); - gtk_button_set_focus_on_click ((GtkButton *) tool, FALSE); - gtk_widget_set_tooltip_text (tool, _("Close Tab")); - g_signal_connect (tool, "clicked", G_CALLBACK(mav_close), mcv); - - box = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start ((GtkBox *) box, img, FALSE, FALSE, 0); - gtk_container_add ((GtkContainer *) tool, box); - gtk_widget_show_all (tool); - gtk_icon_size_lookup_for_settings (gtk_widget_get_settings (tool) , GTK_ICON_SIZE_MENU, &w, &h); - gtk_widget_set_size_request (tool, w + 2, h + 2); - - box = gtk_label_new (_("Account Wizard")); - tab_label = gtk_hbox_new (FALSE, 0); - gtk_box_pack_start ((GtkBox *) tab_label, box, FALSE, FALSE, 2); - gtk_box_pack_start ((GtkBox *) tab_label, tool, FALSE, FALSE, 0); - gtk_widget_show_all (tab_label); - - return tab_label; - -} - -void -mail_account_view_activate (MailAccountView *mcv, - GtkWidget *tree, - GtkWidget *folder_tree, - GtkWidget *check_mail, - GtkWidget *sort_by, - gboolean act) -{ - if (!check_mail || !sort_by) - return; - gtk_widget_set_sensitive (check_mail, TRUE); - gtk_widget_set_sensitive (sort_by, FALSE); -} diff --git a/capplet/settings/mail-capplet-shell.c b/capplet/settings/mail-capplet-shell.c index c80c36e038..6369baff85 100644 --- a/capplet/settings/mail-capplet-shell.c +++ b/capplet/settings/mail-capplet-shell.c @@ -114,15 +114,15 @@ ms_ctrl_q_pressed (MailCappletShell *shell) } static void -mail_capplet_shell_class_init (MailCappletShellClass *klass) +mail_capplet_shell_class_init (MailCappletShellClass *class) { - GObjectClass * object_class = G_OBJECT_CLASS (klass); + GObjectClass * object_class = G_OBJECT_CLASS (class); GtkBindingSet *binding_set; - mail_capplet_shell_parent_class = g_type_class_peek_parent (klass); + mail_capplet_shell_parent_class = g_type_class_peek_parent (class); object_class->finalize = mail_capplet_shell_finalize; - klass->ctrl_w_pressed = ms_ctrl_w_pressed; - klass->ctrl_q_pressed = ms_ctrl_q_pressed; + class->ctrl_w_pressed = ms_ctrl_w_pressed; + class->ctrl_q_pressed = ms_ctrl_q_pressed; mail_capplet_shell_signals[CTRL_W_PRESSED] = g_signal_new ("ctrl_w_pressed", @@ -142,7 +142,7 @@ mail_capplet_shell_class_init (MailCappletShellClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - binding_set = gtk_binding_set_by_class (klass); + binding_set = gtk_binding_set_by_class (class); gtk_binding_entry_add_signal (binding_set, GDK_KEY_W, GDK_CONTROL_MASK, "ctrl_w_pressed", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_w, GDK_CONTROL_MASK, "ctrl_w_pressed", 0); gtk_binding_entry_add_signal (binding_set, GDK_KEY_Q, GDK_CONTROL_MASK, "ctrl_q_pressed", 0); @@ -175,7 +175,7 @@ mail_capplet_shell_quit (MailCappletShell *shell) MailCappletShellPrivate *priv = shell->priv; if (!priv->main_loop) - gtk_widget_hide ((GtkWidget *)shell); + gtk_widget_hide ((GtkWidget *) shell); } static void @@ -184,7 +184,7 @@ ms_delete_event (MailCappletShell *shell, gpointer data G_GNUC_UNUSED) { mail_capplet_shell_quit (shell); - gtk_main_quit(); + gtk_main_quit (); } static void @@ -211,7 +211,9 @@ mail_capplet_shell_construct (MailCappletShell *shell, gtk_window_set_icon_name ((GtkWindow *)shell, "evolution"); gtk_window_set_title ((GtkWindow *)shell, _("Evolution account assistant")); ms_init_style (style); - g_signal_connect ((GObject *)shell, "delete-event", G_CALLBACK (ms_delete_event), NULL); + g_signal_connect ( + shell, "delete-event", + G_CALLBACK (ms_delete_event), NULL); gtk_window_set_type_hint ((GtkWindow *) shell, GDK_WINDOW_TYPE_HINT_NORMAL); if (g_getenv("ANJAL_NO_MAX") == NULL && FALSE) { GdkScreen *scr = gtk_widget_get_screen ((GtkWidget *) shell); @@ -231,7 +233,9 @@ mail_capplet_shell_construct (MailCappletShell *shell, GtkWidget *plug = gtk_plug_new (socket_id); gtk_container_add ((GtkContainer *) plug, priv->box); - g_signal_connect (plug, "destroy", G_CALLBACK (gtk_main_quit), NULL); + g_signal_connect ( + plug, "destroy", + G_CALLBACK (gtk_main_quit), NULL); gtk_widget_show (plug); gtk_widget_hide ((GtkWidget *) shell); @@ -281,7 +285,9 @@ mail_capplet_shell_construct (MailCappletShell *shell, gtk_notebook_set_show_tabs ((GtkNotebook *) shell->view, FALSE); mc = mail_view_add_page ((MailView *) shell->view, MAIL_VIEW_ACCOUNT, NULL); - g_signal_connect (mc, "view-close", G_CALLBACK(ms_show_post_druid), shell); + g_signal_connect ( + mc, "view-close", + G_CALLBACK (ms_show_post_druid), shell); setup_abooks (); } else shell->priv->settings_view = mail_view_add_page ((MailView *) shell->view, MAIL_VIEW_SETTINGS, NULL); diff --git a/capplet/settings/mail-capplet-shell.c.orig b/capplet/settings/mail-capplet-shell.c.orig deleted file mode 100644 index 3d3e015e94..0000000000 --- a/capplet/settings/mail-capplet-shell.c.orig +++ /dev/null @@ -1,395 +0,0 @@ -/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */ - -/* - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2 of the License, or (at your option) version 3. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with the program; if not, see <http://www.gnu.org/licenses/> - * - * - * Authors: - * Srinivasa Ragavan <sragavan@gnome.org> - * Srinivasa Ragavan <srini@linux.intel.com> - * - * Copyright (C) 2010 Intel Corporation. (www.intel.com) - * - */ - -#ifdef HAVE_CONFIG_H -#include <config.h> -#endif - -#include <gtk/gtkx.h> -#include <glib/gi18n.h> -#include <glib/gstdio.h> -#include "mail-capplet-shell.h" -#include "mail-view.h" -#include <gdk/gdkkeysyms.h> - -#include <e-util/e-util.h> - -#include <mail/em-utils.h> -#include <mail/em-composer-utils.h> -#include <libemail-engine/mail-config.h> -#include <libemail-utils/mail-mt.h> - -#include <shell/e-shell.h> - -enum { - CTRL_W_PRESSED, - CTRL_Q_PRESSED, - LAST_SIGNAL -}; - -/* Re usable colors */ - -GdkColor *pcolor_sel; -gchar *scolor_sel; -GdkColor *pcolor_fg_sel; -gchar *scolor_fg_sel; -GdkColor *pcolor_bg_norm; -gchar *scolor_bg_norm; -GdkColor *pcolor_norm; -gchar *scolor_norm; -GdkColor *pcolor_fg_norm; -gchar *scolor_fg_norm; - -static guint mail_capplet_shell_signals[LAST_SIGNAL]; - -struct _MailCappletShellPrivate { - - EMailBackend *backend; - GtkWidget *box; - - GtkWidget * top_bar; - GtkWidget *message_pane; - GtkWidget *bottom_bar; - - /* Top Bar */ - GtkWidget *action_bar; - GtkWidget *quit; - - gboolean main_loop; - - MailViewChild *settings_view; -}; - -static void mail_capplet_shell_quit (MailCappletShell *shell); - -G_DEFINE_TYPE (MailCappletShell, mail_capplet_shell, GTK_TYPE_WINDOW) - -static void setup_abooks (void); - -static void -mail_capplet_shell_init (MailCappletShell *shell) -{ - shell->priv = g_new0 (MailCappletShellPrivate, 1); - shell->priv->settings_view = NULL; -} - -static void -mail_capplet_shell_finalize (GObject *object) -{ - G_OBJECT_CLASS (mail_capplet_shell_parent_class)->finalize (object); -} - -static void -ms_ctrl_w_pressed (MailCappletShell *shell) -{ - mail_view_close_view ((MailView *) shell->view); -} - -static void -ms_ctrl_q_pressed (MailCappletShell *shell) -{ - mail_capplet_shell_quit (shell); -} - -static void -mail_capplet_shell_class_init (MailCappletShellClass *klass) -{ - GObjectClass * object_class = G_OBJECT_CLASS (klass); - GtkBindingSet *binding_set; - - mail_capplet_shell_parent_class = g_type_class_peek_parent (klass); - object_class->finalize = mail_capplet_shell_finalize; - klass->ctrl_w_pressed = ms_ctrl_w_pressed; - klass->ctrl_q_pressed = ms_ctrl_q_pressed; - - mail_capplet_shell_signals[CTRL_W_PRESSED] = - g_signal_new ("ctrl_w_pressed", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (MailCappletShellClass, ctrl_w_pressed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - mail_capplet_shell_signals[CTRL_Q_PRESSED] = - g_signal_new ("ctrl_q_pressed", - G_TYPE_FROM_CLASS (object_class), - G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (MailCappletShellClass, ctrl_q_pressed), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - binding_set = gtk_binding_set_by_class (klass); - gtk_binding_entry_add_signal (binding_set, GDK_KEY_W, GDK_CONTROL_MASK, "ctrl_w_pressed", 0); - gtk_binding_entry_add_signal (binding_set, GDK_KEY_w, GDK_CONTROL_MASK, "ctrl_w_pressed", 0); - gtk_binding_entry_add_signal (binding_set, GDK_KEY_Q, GDK_CONTROL_MASK, "ctrl_q_pressed", 0); - gtk_binding_entry_add_signal (binding_set, GDK_KEY_Q, GDK_CONTROL_MASK, "ctrl_q_pressed", 0); - -}; - -static void -ms_init_style (GtkStyle *style) -{ - pcolor_sel = &style->base[GTK_STATE_SELECTED]; - scolor_sel = gdk_color_to_string (pcolor_sel); - - pcolor_norm = &style->bg[GTK_STATE_NORMAL]; - scolor_norm = gdk_color_to_string (pcolor_norm); - - pcolor_bg_norm = &style->base[GTK_STATE_NORMAL]; - scolor_bg_norm = gdk_color_to_string (pcolor_bg_norm); - - pcolor_fg_sel =&style->fg[GTK_STATE_SELECTED]; - scolor_fg_sel = gdk_color_to_string (pcolor_fg_sel); - - pcolor_fg_norm =&style->fg[GTK_STATE_NORMAL]; - scolor_fg_norm = gdk_color_to_string (pcolor_fg_norm); -} - -static void -mail_capplet_shell_quit (MailCappletShell *shell) -{ - MailCappletShellPrivate *priv = shell->priv; - - if (priv->main_loop) - gtk_main_quit (); - else - gtk_widget_destroy ((GtkWidget *) shell); -} - -static void -ms_delete_event (MailCappletShell *shell, - GdkEvent *event G_GNUC_UNUSED, - gpointer data G_GNUC_UNUSED) -{ - mail_capplet_shell_quit (shell); -} - -static void -ms_show_post_druid (MailViewChild *mfv G_GNUC_UNUSED, - MailCappletShell *shell) -{ - gtk_widget_destroy (GTK_WIDGET (shell)); -} - -#define PACK_IN_TOOL(wid,icon) { GtkWidget *tbox; tbox = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *)tbox, gtk_image_new_from_icon_name(icon, GTK_ICON_SIZE_BUTTON), FALSE, FALSE, 0); wid = (GtkWidget *)gtk_tool_button_new (tbox, NULL); } - -static void -mail_capplet_shell_construct (MailCappletShell *shell, - gint socket_id, - gboolean just_druid, - gboolean main_loop) -{ - MailCappletShellPrivate *priv = shell->priv; - GtkStyle *style = gtk_widget_get_default_style (); - EShell *eshell; - EMailSession *session; - - gtk_window_set_icon_name ((GtkWindow *)shell, "evolution"); - gtk_window_set_title ((GtkWindow *)shell, _("Evolution account assistant")); - ms_init_style (style); - g_signal_connect ((GObject *)shell, "delete-event", G_CALLBACK (ms_delete_event), NULL); - gtk_window_set_type_hint ((GtkWindow *) shell, GDK_WINDOW_TYPE_HINT_NORMAL); - if (g_getenv("ANJAL_NO_MAX") == NULL && FALSE) { - GdkScreen *scr = gtk_widget_get_screen ((GtkWidget *) shell); - gtk_window_set_default_size ((GtkWindow *) shell, gdk_screen_get_width (scr), gdk_screen_get_height (scr)); - gtk_window_set_decorated ((GtkWindow *) shell, FALSE); - } else { - gtk_window_set_default_size ((GtkWindow *) shell, 1024, 500); - } - - priv->main_loop = main_loop; - priv->box = (GtkWidget *) gtk_vbox_new (FALSE, 0); - gtk_widget_show ((GtkWidget *) priv->box); - - if (!socket_id) { - gtk_container_add ((GtkContainer *) shell, priv->box); - } else { - GtkWidget *plug = gtk_plug_new (socket_id); - - gtk_container_add ((GtkContainer *) plug, priv->box); - g_signal_connect (plug, "destroy", G_CALLBACK (gtk_main_quit), NULL); - gtk_widget_show (plug); - gtk_widget_hide ((GtkWidget *) shell); - - } - - if (camel_init (e_get_user_data_dir (), TRUE) != 0) - exit (0); - - camel_provider_init (); - - eshell = e_shell_get_default (); - - if (eshell == NULL) { - GError *error = NULL; - - eshell = g_initable_new ( - E_TYPE_SHELL, NULL, &error, - "application-id", "org.gnome.Evolution", - "flags", 0, - "geometry", NULL, - "module-directory", EVOLUTION_MODULEDIR, - "meego-mode", FALSE, - "express-mode", FALSE, - "small-screen-mode", FALSE, - "online", FALSE, - NULL); - - if (error != NULL) - g_error ("%s", error->message); - - e_shell_load_modules (eshell); - } - - shell->priv->backend = E_MAIL_BACKEND (e_shell_get_backend_by_name (eshell, "mail")); - session = e_mail_backend_get_session (shell->priv->backend); - - shell->view = mail_view_new (); - shell->view->backend = shell->priv->backend; - gtk_widget_show ((GtkWidget *) shell->view); - gtk_box_pack_end ((GtkBox *) priv->box, (GtkWidget *) shell->view, TRUE, TRUE, 2); - - mail_config_init (session); - mail_msg_init (); - - if (just_druid) { - MailViewChild *mc; - - gtk_notebook_set_show_tabs ((GtkNotebook *) shell->view, FALSE); - mc = mail_view_add_page ((MailView *) shell->view, MAIL_VIEW_ACCOUNT, NULL); - g_signal_connect (mc, "view-close", G_CALLBACK(ms_show_post_druid), shell); - setup_abooks (); - } else - shell->priv->settings_view = mail_view_add_page ((MailView *) shell->view, MAIL_VIEW_SETTINGS, NULL); - -} - -GtkWidget * -mail_capplet_shell_new (gint socket_id, - gboolean just_druid, - gboolean main_loop) -{ - MailCappletShell *shell = g_object_new (MAIL_CAPPLET_SHELL_TYPE, NULL); - mail_capplet_shell_construct (shell, socket_id, just_druid, main_loop); - - return GTK_WIDGET (shell); -} - -#define LOCAL_BASE_URI "local:" -#define PERSONAL_RELATIVE_URI "system" - -static void -setup_abooks (void) -{ - GSList *groups; - ESourceGroup *group; - ESourceList *list = NULL; - ESourceGroup *on_this_computer = NULL; - ESource *personal_source = NULL; - GError *error = NULL; - - e_book_client_get_sources (&list, &error); - - if (error != NULL) { - g_warning ( - "%s: Unable to get books: %s", - G_STRFUNC, error->message); - g_error_free (error); - return; - } - - groups = e_source_list_peek_groups (list); - if (groups) { - /* groups are already there, we need to search for things... */ - GSList *g; - gchar *base_dir, *base_uri; - - base_dir = g_build_filename ( - e_get_user_data_dir (), "addressbook", "local", NULL); - base_uri = g_filename_to_uri (base_dir, NULL, NULL); - - for (g = groups; g; g = g->next) { - group = E_SOURCE_GROUP (g->data); - - if (strcmp (base_uri, e_source_group_peek_base_uri (group)) == 0) - e_source_group_set_base_uri (group, LOCAL_BASE_URI); - - if (!on_this_computer && !strcmp (LOCAL_BASE_URI, e_source_group_peek_base_uri (group))) { - on_this_computer = g_object_ref (group); - break; - } - } - - g_free (base_dir); - g_free (base_uri); - } - - if (on_this_computer) { - /* make sure "Personal" shows up as a source under - * this group */ - GSList *sources = e_source_group_peek_sources (on_this_computer); - GSList *s; - for (s = sources; s; s = s->next) { - ESource *source = E_SOURCE (s->data); - const gchar *relative_uri; - - relative_uri = e_source_peek_relative_uri (source); - if (relative_uri == NULL) - continue; - if (!strcmp (PERSONAL_RELATIVE_URI, relative_uri)) { - personal_source = g_object_ref (source); - break; - } - } - } - else { - /* create the local source group */ - group = e_source_group_new (_("On This Computer"), LOCAL_BASE_URI); - e_source_list_add_group (list, group, -1); - - on_this_computer = group; - } - - if (!personal_source) { - /* Create the default Person addressbook */ - ESource *source = e_source_new (_("Personal"), PERSONAL_RELATIVE_URI); - e_source_group_add_source (on_this_computer, source, -1); - - e_source_set_property (source, "completion", "true"); - - personal_source = source; - } - - if (on_this_computer) - g_object_unref (on_this_computer); - if (personal_source) - g_object_unref (personal_source); - - e_source_list_sync (list, NULL); - g_object_unref (list); -} - diff --git a/capplet/settings/mail-settings-view.c b/capplet/settings/mail-settings-view.c index 992f705826..2f284c685d 100644 --- a/capplet/settings/mail-settings-view.c +++ b/capplet/settings/mail-settings-view.c @@ -69,11 +69,11 @@ mail_settings_view_finalize (GObject *object) } static void -mail_settings_view_class_init (MailSettingsViewClass *klass) +mail_settings_view_class_init (MailSettingsViewClass *class) { - GObjectClass * object_class = G_OBJECT_CLASS (klass); + GObjectClass * object_class = G_OBJECT_CLASS (class); - mail_settings_view_parent_class = g_type_class_peek_parent (klass); + mail_settings_view_parent_class = g_type_class_peek_parent (class); object_class->finalize = mail_settings_view_finalize; signals[VIEW_CLOSE] = @@ -160,7 +160,9 @@ build_account_button (MailSettingsView *acview, gtk_widget_show (tbox); gtk_container_add ((GtkContainer *) label, tbox); g_object_set_data ((GObject *)label, "account", account); - g_signal_connect (label, "clicked", G_CALLBACK(msv_edit_account), acview); + g_signal_connect ( + label, "clicked", + G_CALLBACK (msv_edit_account), acview); gtk_box_pack_start ((GtkBox *) box1, label, FALSE, FALSE, 0); gtk_widget_show (label); @@ -169,7 +171,9 @@ build_account_button (MailSettingsView *acview, gtk_box_pack_start ((GtkBox *) box1, tlabel, FALSE, FALSE, 12); gtk_widget_show (tlabel); g_object_set_data ((GObject *)tlabel, "account", account); - g_signal_connect (tlabel, "clicked", G_CALLBACK(msv_delete_account), acview); + g_signal_connect ( + tlabel, "clicked", + G_CALLBACK (msv_delete_account), acview); } PACK_BOX (box1,24); @@ -214,7 +218,9 @@ mail_settings_view_construct (MailSettingsView *acview) gtk_scrolled_window_add_with_viewport ((GtkScrolledWindow *) acview->priv->scroll, acview->priv->box); acview->priv->accounts = e_get_account_list (); - g_signal_connect (acview->priv->accounts, "account-added", G_CALLBACK(msv_account_added), acview); + g_signal_connect ( + acview->priv->accounts, "account-added", + G_CALLBACK (msv_account_added), acview); msv_regen_view (acview); gtk_widget_show ((GtkWidget *) acview); @@ -254,7 +260,9 @@ mail_settings_view_get_tab_widget (MailSettingsView *mcv) gtk_button_set_relief ((GtkButton *) tool, GTK_RELIEF_NONE); gtk_button_set_focus_on_click ((GtkButton *) tool, FALSE); gtk_widget_set_tooltip_text (tool, _("Close Tab")); - g_signal_connect (tool, "clicked", G_CALLBACK(msv_close), mcv); + g_signal_connect ( + tool, "clicked", + G_CALLBACK (msv_close), mcv); box = gtk_hbox_new (FALSE, 0); gtk_box_pack_start ((GtkBox *) box, img, FALSE, FALSE, 0); diff --git a/capplet/settings/mail-view.c b/capplet/settings/mail-view.c index 4477be517a..db4002b87b 100644 --- a/capplet/settings/mail-view.c +++ b/capplet/settings/mail-view.c @@ -42,8 +42,11 @@ #include "mail/em-folder-tree.h" #include <shell/e-shell-searchbar.h> -struct _MailViewPrivate { +#define MAIL_VIEW_GET_PRIVATE(obj) \ + (G_TYPE_INSTANCE_GET_PRIVATE \ + ((obj), MAIL_VIEW_TYPE, MailViewPrivate)) +struct _MailViewPrivate { GtkWidget *box; GList *children; MailViewChild *current_view; @@ -74,22 +77,17 @@ void anjal_shell_view_restore_state (EShellView *view, const gchar *uri); static void mail_view_init (MailView *shell) { - shell->priv = g_new0 (MailViewPrivate, 1); - shell->priv->children = NULL; - shell->priv->current_view = NULL; - shell->folder_tree = NULL; - shell->check_mail = NULL; - shell->sort_by = NULL; + shell->priv = MAIL_VIEW_GET_PRIVATE (shell); } static void mail_view_finalize (GObject *object) { - MailView *shell = (MailView *) object; - MailViewPrivate *priv = shell->priv; + MailViewPrivate *priv; + + priv = MAIL_VIEW_GET_PRIVATE (object); g_list_free (priv->children); - g_free (priv); G_OBJECT_CLASS (mail_view_parent_class)->finalize (object); } @@ -103,7 +101,9 @@ mv_set_folder_uri (AnjalMailView *mv, #endif } -static void set_folder_tree (AnjalMailView *mv, EMFolderTree *tree) +static void +set_folder_tree (AnjalMailView *mv, + EMFolderTree *tree) { mail_view_set_folder_tree ((MailView *) mv, (GtkWidget *) tree); } @@ -118,9 +118,15 @@ set_search (AnjalMailView *mv, } static void -mail_view_class_init (MailViewClass *klass) +mail_view_class_init (MailViewClass *class) { - GObjectClass * object_class = G_OBJECT_CLASS (klass); + GObjectClass *object_class; + + g_type_class_add_private (class, sizeof (MailViewPrivate)); + + object_class = G_OBJECT_CLASS (class); + object_class->finalize = mail_view_finalize; + signals[VIEW_NEW] = g_signal_new ("view-new", G_OBJECT_CLASS_TYPE (object_class), @@ -130,12 +136,9 @@ mail_view_class_init (MailViewClass *klass) g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - mail_view_parent_class = g_type_class_peek_parent (klass); - ((AnjalMailViewClass *) klass)->set_folder_uri = mv_set_folder_uri; - ((AnjalMailViewClass *) klass)->set_folder_tree = set_folder_tree; - ((AnjalMailViewClass *) klass)->set_search = set_search; - - object_class->finalize = mail_view_finalize; + ((AnjalMailViewClass *) class)->set_folder_uri = mv_set_folder_uri; + ((AnjalMailViewClass *) class)->set_folder_tree = set_folder_tree; + ((AnjalMailViewClass *) class)->set_search = set_search; }; @@ -184,7 +187,10 @@ mail_view_construct (MailView *shell) gtk_notebook_set_show_tabs ((GtkNotebook *) shell, TRUE); gtk_notebook_set_scrollable ((GtkNotebook *) shell, TRUE); gtk_notebook_popup_disable ((GtkNotebook *) shell); - g_signal_connect_after (shell, "switch-page", G_CALLBACK(mv_switch), shell); + + g_signal_connect_after ( + shell, "switch-page", + G_CALLBACK (mv_switch), shell); } MailView * @@ -330,13 +336,26 @@ mail_view_add_folder (MailView *mv, gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (mv), (GtkWidget *) mfv, TRUE); gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (mv), (GtkWidget *) mfv, FALSE); - g_signal_connect (mfv, "view-close", G_CALLBACK(mv_close_mcv), mv); + g_signal_connect ( + mfv, "view-close", + G_CALLBACK (mv_close_mcv), mv); + if (!block) gtk_notebook_set_current_page ((GtkNotebook *) mv, position); - g_signal_connect (mfv, "message-shown", G_CALLBACK(mv_message_shown), mv); - g_signal_connect (mfv, "message-new", G_CALLBACK(mv_message_new), mv); - g_signal_connect (mfv, "search-set", G_CALLBACK(mv_search_set), mv); - g_signal_connect (mfv, "view-loaded", G_CALLBACK (mv_folder_loaded), mv); + + g_signal_connect ( + mfv, "message-shown", + G_CALLBACK (mv_message_shown), mv); + g_signal_connect ( + mfv, "message-new", + G_CALLBACK (mv_message_new), mv); + g_signal_connect ( + mfv, "search-set", + G_CALLBACK (mv_search_set), mv); + g_signal_connect ( + mfv, "view-loaded", + G_CALLBACK (mv_folder_loaded), mv); + if (!block) mail_folder_view_activate (mfv, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, mv->slider, TRUE); @@ -377,8 +396,12 @@ mail_view_add_composer (MailView *mv, if (!block) mail_composer_view_activate (mcv, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE); - g_signal_connect (mcv, "view-close", G_CALLBACK(mv_close_mcv), mv); - g_signal_connect (mcv, "message-shown", G_CALLBACK(mv_message_shown), mv); + g_signal_connect ( + mcv, "view-close", + G_CALLBACK (mv_close_mcv), mv); + g_signal_connect ( + mcv, "message-shown", + G_CALLBACK (mv_message_shown), mv); return (MailViewChild *) mcv; } @@ -406,8 +429,12 @@ mail_view_add_message (MailView *mv, if (!block) mail_conv_view_activate (mcv, mv->tree, mv->folder_tree, mv->check_mail, mv->sort_by, FALSE); - g_signal_connect (mcv, "view-close", G_CALLBACK(mv_close_mcv), mv); - g_signal_connect (mcv, "message-shown", G_CALLBACK(mv_message_shown), mv); + g_signal_connect ( + mcv, "view-close", + G_CALLBACK (mv_close_mcv), mv); + g_signal_connect ( + mcv, "message-shown", + G_CALLBACK (mv_message_shown), mv); return (MailViewChild *) mcv; } @@ -436,8 +463,12 @@ mail_view_add_settings (MailView *mv, mv->priv->children = block ? g_list_append (mv->priv->children, msv) : g_list_prepend (mv->priv->children, msv); position = gtk_notebook_append_page ((GtkNotebook *) mv, (GtkWidget *) msv, mail_settings_view_get_tab_widget (msv)); - g_signal_connect (msv, "view-close", G_CALLBACK(mv_close_mcv), mv); - g_signal_connect (msv, "show-account", G_CALLBACK(mv_show_acc_mcv), mv); + g_signal_connect ( + msv, "view-close", + G_CALLBACK (mv_close_mcv), mv); + g_signal_connect ( + msv, "show-account", + G_CALLBACK (mv_show_acc_mcv), mv); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (mv), (GtkWidget *) msv, TRUE); gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (mv), (GtkWidget *) msv, FALSE); if (!block) @@ -462,7 +493,9 @@ mail_view_add_account (MailView *mv, mv->priv->current_view = (MailViewChild *) msv; mv->priv->children = block ? g_list_append (mv->priv->children, msv) : g_list_prepend (mv->priv->children, msv); position = gtk_notebook_append_page ((GtkNotebook *) mv, (GtkWidget *) msv, mail_account_view_get_tab_widget (msv)); - g_signal_connect_after (msv, "view-close", G_CALLBACK(mv_close_mcv), mv); + g_signal_connect_after ( + msv, "view-close", + G_CALLBACK (mv_close_mcv), mv); gtk_notebook_set_tab_reorderable (GTK_NOTEBOOK (mv), (GtkWidget *) msv, TRUE); gtk_notebook_set_tab_detachable (GTK_NOTEBOOK (mv), (GtkWidget *) msv, FALSE); if (!block) |