From da7aacb87cd1d5d635f367928994c19af8c764f6 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Wed, 31 Mar 2010 17:42:14 -0400 Subject: Capplet cleanups. --- capplet/settings/mail-account-view.c | 176 +++++++++++++---------------------- 1 file changed, 64 insertions(+), 112 deletions(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index cb5b1aeda7..e97abdc6dc 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -10,7 +10,7 @@ * 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 + * License along with the program; if not, see * * * Authors: @@ -50,8 +50,8 @@ enum { }; struct _dialog_errors { - int error; - char *detail; + 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.") }, @@ -90,7 +90,7 @@ mail_account_view_class_init (MailAccountViewClass *klass) NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); - + } #ifdef NOT_USED @@ -101,21 +101,21 @@ enum { AOL }; struct _server_prefill { - char *key; - char *recv; - char *send; - char *proto; - char *ssl; + 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 int -check_servers (char *server) +static gint +check_servers (gchar *server) { - int len = G_N_ELEMENTS(std_server), i; + gint len = G_N_ELEMENTS(std_server), i; for (i=0; ioriginal) { - char *tmp = e_account_get_string(view->edit->account, E_ACCOUNT_ID_ADDRESS); - char **token; - int index; - - if (tmp && *tmp) { - token = g_strsplit (tmp, "@", 2); - index = check_servers(token[1]); - - if (index != -1) { - char *uri = e_account_get_string(view->edit->account, E_ACCOUNT_SOURCE_URL); - CamelURL *url; - if (uri == NULL || (url = camel_url_new(uri, NULL)) == NULL) - return; - - if (strcmp(url->protocol, std_server[index].proto)) { - camel_url_set_protocol (url, std_server[index].proto); - g_datalist_clear (&url->params); - } - camel_url_set_param(url, "use_ssl", std_server[index].ssl); - camel_url_set_host (url, std_server[index].recv); - camel_url_set_user (url, token[0]); - uri = camel_url_to_string(url, 0); - e_account_set_string(view->edit->account, E_ACCOUNT_SOURCE_URL, uri); - g_free(uri); - - uri = e_account_get_string(view->edit->account, E_ACCOUNT_TRANSPORT_URL); - if (uri == NULL || (url = camel_url_new(uri, NULL)) == NULL) - return; - - camel_url_set_protocol (url, "smtp"); - camel_url_set_param(url, "use_ssl", std_server[index].ssl); - camel_url_set_host (url, std_server[index].recv); - camel_url_set_user (url, token[0]); - uri = camel_url_to_string(url, 0); - e_account_set_string(view->edit->account, E_ACCOUNT_TRANSPORT_URL, uri); - g_free(uri); - } - g_strfreev(token); - } - } -#endif } -static int +static gint validate_identity (MailAccountView *view) { - char *user = (char *)e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_ID_NAME); - char *email = (char *)e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_ID_ADDRESS); - char *tmp; + 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; if (!user || !*user) return ERROR_NO_FULLNAME; - if (!email || !*email) + if (!email || !*email) return ERROR_NO_EMAIL; - tmp = strchr(email, '@'); + tmp = strchr(email, '@'); if (!tmp || tmp[1] == 0) return ERROR_INVALID_EMAIL; @@ -209,11 +166,11 @@ static GtkWidget * create_review (MailAccountView *view) { GtkWidget *table, *box, *label, *entry; - char *uri; - char *enc; + gchar *uri; + gchar *enc; CamelURL *url; - uri = (char *)e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_SOURCE_URL); + 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; @@ -268,7 +225,6 @@ create_review (MailAccountView *view) PACK_BOX(entry); gtk_table_attach ((GtkTable *)table, box, 1, 2, 5, 6, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - label = gtk_label_new (_("Username:")); gtk_widget_show (label); PACK_BOX(label); @@ -282,15 +238,14 @@ create_review (MailAccountView *view) gtk_widget_show (label); PACK_BOX(label); gtk_table_attach ((GtkTable *)table, box, 0, 1, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - enc = (char *)camel_url_get_param(url, "use_ssl"); + enc = (gchar *)camel_url_get_param(url, "use_ssl"); 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, 10, 3); - camel_url_free(url); - uri =(char *) e_account_get_string(em_account_editor_get_modified_account(view->edit), E_ACCOUNT_TRANSPORT_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; @@ -318,7 +273,6 @@ create_review (MailAccountView *view) PACK_BOX(entry); gtk_table_attach ((GtkTable *)table, box, 1, 2, 10, 11, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - label = gtk_label_new (_("Username:")); gtk_widget_show (label); PACK_BOX(label); @@ -332,12 +286,12 @@ create_review (MailAccountView *view) gtk_widget_show (label); PACK_BOX(label); gtk_table_attach ((GtkTable *)table, box, 0, 1, 12, 13, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - enc = (char *)camel_url_get_param(url, "use_ssl"); + enc = (gchar *)camel_url_get_param(url, "use_ssl"); entry = gtk_label_new (enc ? enc : _("never")); gtk_widget_show(entry); PACK_BOX(entry); gtk_table_attach ((GtkTable *)table, box, 1, 2, 12, 13, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - + /* label = gtk_label_new (_("Organization:")); gtk_widget_show (label); @@ -347,7 +301,7 @@ create_review (MailAccountView *view) gtk_table_attach (table, entry, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); */ - gtk_widget_show(table); + gtk_widget_show(table); return table; } @@ -362,18 +316,18 @@ create_review (MailAccountView *view) #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 { - int id; - char *head; - char *next; - char *prev; - char *next_edit; - char *prev_edit; - char *detail; - char *path; + 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); - int (*validate_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 }, @@ -389,7 +343,7 @@ static void mav_next_pressed (GtkButton *button, MailAccountView *mav) { if (mail_account_pages[mav->current_page].validate_page) { - int ret = (*mail_account_pages[mav->current_page].validate_page) (mav); + 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)); @@ -404,7 +358,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) } if (mav->current_page == MAV_LAST - 1) { - char *uri = (char *)e_account_get_string(em_account_editor_get_modified_account(mav->edit), E_ACCOUNT_SOURCE_URL); + 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)); @@ -425,7 +379,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) camel_url_free(url); } em_account_editor_commit (mav->edit); - g_signal_emit (mav, signals[VIEW_CLOSE], 0); + g_signal_emit (mav, signals[VIEW_CLOSE], 0); return; } @@ -478,19 +432,18 @@ mav_prev_pressed (GtkButton *button, MailAccountView *mav) } - static GtkWidget * mav_construct_page(MailAccountView *view, MAVPageType type) { MAVPage *page = g_new0(MAVPage, 1); GtkWidget *box, *tmp, *error_box; - char *str; + gchar *str; page->type = type; page->box = gtk_vbox_new (FALSE, 2); - error_box = gtk_hbox_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); @@ -552,7 +505,7 @@ mav_construct_page(MailAccountView *view, MAVPageType type) 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); + 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 (); @@ -560,7 +513,7 @@ mav_construct_page(MailAccountView *view, MAVPageType type) 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); @@ -578,17 +531,17 @@ emae_check_servers (const gchar *email) { ServerData *sdata = g_new0(ServerData, 1); EmailProvider *provider = g_new0(EmailProvider, 1); - char *dupe = g_strdup(email); - char *tmp; + gchar *dupe = g_strdup(email); + gchar *tmp; /* FIXME: Find a way to free the provider once given to account settings. */ - provider->email = (char *)email; + provider->email = (gchar *)email; tmp = strchr(email, '@'); tmp++; provider->domain = tmp; tmp = strchr(dupe, '@'); *tmp = 0; - provider->username = (char *)g_quark_to_string(g_quark_from_string(dupe)); + provider->username = (gchar *)g_quark_to_string(g_quark_from_string(dupe)); g_free(dupe); if (!mail_guess_servers (provider)) { @@ -596,11 +549,11 @@ emae_check_servers (const gchar *email) g_free (sdata); return NULL; } - /*printf("Recv: %s\n%s(%s), %s by %s \n Send: %s\n%s(%s), %s by %s\n via %s to %s\n", + /*printf("Recv: %s\n%s(%s), %s by %s \n Send: %s\n%s(%s), %s by %s\n via %s to %s\n", provider->recv_type, provider->recv_hostname, provider->recv_port, provider->recv_username, provider->recv_auth, provider->send_type, provider->send_hostname, provider->send_port, provider->send_username, provider->send_auth, provider->recv_socket_type, provider->send_socket_type); */ - + sdata->recv = provider->recv_hostname; sdata->recv_port = provider->recv_port; sdata->send = provider->send_hostname; @@ -612,32 +565,31 @@ emae_check_servers (const gchar *email) else sdata->proto = provider->recv_type; if (provider->recv_socket_type) { - if(g_ascii_strcasecmp(provider->recv_socket_type, "SSL") == 0) + if (g_ascii_strcasecmp(provider->recv_socket_type, "SSL") == 0) sdata->ssl = g_strdup("always"); - else if(g_ascii_strcasecmp(provider->recv_socket_type, "secure") == 0) + else if (g_ascii_strcasecmp(provider->recv_socket_type, "secure") == 0) sdata->ssl = g_strdup("always"); - else if(g_ascii_strcasecmp(provider->recv_socket_type, "STARTTLS") == 0) - sdata->ssl = g_strdup("when-possible"); - else if(g_ascii_strcasecmp(provider->recv_socket_type, "TLS") == 0) + else if (g_ascii_strcasecmp(provider->recv_socket_type, "STARTTLS") == 0) sdata->ssl = g_strdup("when-possible"); - else + else if (g_ascii_strcasecmp(provider->recv_socket_type, "TLS") == 0) + sdata->ssl = g_strdup("when-possible"); + else sdata->ssl = g_strdup("never"); } sdata->send_user = provider->send_username; sdata->recv_user = provider->recv_username; - g_free (provider); return sdata; } -void +static void mail_account_view_construct (MailAccountView *view) { - int i; - + gint i; + 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); @@ -676,7 +628,7 @@ mail_account_view_new (EAccount *account) view->uri = "account://"; view->original = account; mail_account_view_construct (view); - + return view; } @@ -697,7 +649,7 @@ mav_btn_expose (GtkWidget *w, GdkEventExpose *event, MailAccountView *mfv) static void mav_close (GtkButton *w, MailAccountView *mfv) { - g_signal_emit (mfv, signals[VIEW_CLOSE], 0); + g_signal_emit (mfv, signals[VIEW_CLOSE], 0); } GtkWidget * @@ -706,19 +658,19 @@ 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; - int w=-1, h=-1; + gint w=-1, h=-1; GtkWidget *tab_label; img = (GtkWidget *)gtk_image_new_from_pixbuf (pbuf); g_object_set_data ((GObject *)img, "pbuf", pbuf); g_signal_connect (img, "expose-event", G_CALLBACK(mav_btn_expose), mcv); - + 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); @@ -733,7 +685,7 @@ mail_account_view_get_tab_widget (MailAccountView *mcv) gtk_widget_show_all (tab_label); return tab_label; - + } void -- cgit v1.2.3 From 33fc38811d408db702c4fee7fa2ba61bf7826dd1 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Tue, 20 Apr 2010 10:52:01 +0530 Subject: Add Password field to the account setup and prestore password. --- capplet/settings/mail-account-view.c | 38 +++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index e97abdc6dc..07f4a7570e 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -30,6 +30,7 @@ #include "mail-view.h" #include "e-util/e-config.h" #include "mail/mail-config.h" +#include "mail/mail-session.h" #include "mail-guess-servers.h" struct _MailAccountViewPrivate { @@ -47,6 +48,7 @@ enum { ERROR_NO_FULLNAME = 1, ERROR_NO_EMAIL = 2, ERROR_INVALID_EMAIL = 3, + ERROR_NO_PASSWORD = 4, }; struct _dialog_errors { @@ -56,6 +58,7 @@ struct _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 }; @@ -136,11 +139,15 @@ 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 (!pwd || !*pwd) + return ERROR_NO_PASSWORD; + tmp = strchr(email, '@'); if (!tmp || tmp[1] == 0) return ERROR_INVALID_EMAIL; @@ -378,6 +385,19 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) g_free(uri); camel_url_free(url); } + + if (!mav->original) { + EAccount *account = em_account_editor_get_modified_account(mav->edit); + CamelURL *aurl; + char *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); + mail_session_add_password (surl, gtk_entry_get_text((GtkEntry *)mav->password)); + + camel_url_free(aurl); + g_free(surl); + } em_account_editor_commit (mav->edit); g_signal_emit (mav, signals[VIEW_CLOSE], 0); return; @@ -616,8 +636,24 @@ mail_account_view_construct (MailAccountView *view) em_account_editor_check (view->edit, mail_account_pages[0].path); view->pages[0]->done = TRUE; - if (e_shell_get_express_mode (e_shell_get_default ())) + if (e_shell_get_express_mode (e_shell_get_default ())) { + 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_frame")); + + + if (!view->original) { + label = gtk_label_new (_("Password:")); + pwd = gtk_entry_new (); + gtk_entry_set_visibility ((GtkEntry *)pwd, FALSE); + 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; + } + } } MailAccountView * -- cgit v1.2.3 From e9c4388490925de25b029fa0d6437a34a6386c05 Mon Sep 17 00:00:00 2001 From: Michael Meeks Date: Wed, 21 Apr 2010 16:52:25 +0100 Subject: Fix ergonomic details, and prettify (for small screens at least) --- capplet/settings/mail-account-view.c | 55 ++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 25 deletions(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index 07f4a7570e..413f755d66 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -209,11 +209,17 @@ create_review (MailAccountView *view) gtk_table_attach ((GtkTable *)table, box, 1, 2, 2, 3, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); label = gtk_label_new (NULL); - gtk_label_set_markup ((GtkLabel *)label, _("Receiving details:")); + gtk_label_set_markup ((GtkLabel *)label, _("Details:")); gtk_widget_show (label); PACK_BOXF(label); gtk_table_attach ((GtkTable *)table, box, 0, 1, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + label = gtk_label_new (NULL); + gtk_label_set_markup ((GtkLabel *)label, _("Receiving")); + gtk_widget_show (label); + PACK_BOXF(label); + gtk_table_attach ((GtkTable *)table, box, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + label = gtk_label_new (_("Server type:")); gtk_widget_show (label); PACK_BOX(label); @@ -257,47 +263,31 @@ create_review (MailAccountView *view) return NULL; label = gtk_label_new (NULL); - gtk_label_set_markup ((GtkLabel *)label, _("Sending details:")); + gtk_label_set_markup ((GtkLabel *)label, _("Sending")); gtk_widget_show (label); PACK_BOXF(label); - gtk_table_attach ((GtkTable *)table, box, 0, 1, 8, 9, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + gtk_table_attach ((GtkTable *)table, box, 2, 3, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - label = gtk_label_new (_("Server type:")); - gtk_widget_show (label); - PACK_BOX(label); - gtk_table_attach ((GtkTable *)table, box, 0, 1, 9, 10, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); entry = gtk_label_new (url->protocol); gtk_widget_show(entry); PACK_BOX(entry) - gtk_table_attach ((GtkTable *)table, box, 1, 2, 9, 10, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + gtk_table_attach ((GtkTable *)table, box, 2, 3, 4, 5, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - label = gtk_label_new (_("Server address:")); - gtk_widget_show (label); - PACK_BOX(label); - gtk_table_attach ((GtkTable *)table, box, 0, 1, 10, 11, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); entry = gtk_label_new (url->host); gtk_widget_show(entry); PACK_BOX(entry); - gtk_table_attach ((GtkTable *)table, box, 1, 2, 10, 11, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + gtk_table_attach ((GtkTable *)table, box, 2, 3, 5, 6, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - label = gtk_label_new (_("Username:")); - gtk_widget_show (label); - PACK_BOX(label); - gtk_table_attach ((GtkTable *)table, box, 0, 1, 11, 12, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); entry = gtk_label_new (url->user); gtk_widget_show(entry); PACK_BOX(entry); - gtk_table_attach ((GtkTable *)table, box, 1, 2, 11, 12, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + gtk_table_attach ((GtkTable *)table, box, 2, 3, 6, 7, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); - label = gtk_label_new (_("Use encryption:")); - gtk_widget_show (label); - PACK_BOX(label); - gtk_table_attach ((GtkTable *)table, box, 0, 1, 12, 13, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); enc = (gchar *)camel_url_get_param(url, "use_ssl"); entry = gtk_label_new (enc ? enc : _("never")); gtk_widget_show(entry); PACK_BOX(entry); - gtk_table_attach ((GtkTable *)table, box, 1, 2, 12, 13, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + gtk_table_attach ((GtkTable *)table, box, 2, 3, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); /* label = gtk_label_new (_("Organization:")); @@ -529,6 +519,9 @@ mav_construct_page(MailAccountView *view, MAVPageType type) gtk_box_pack_start((GtkBox *)box, tmp, FALSE, FALSE, 0); } page->next = gtk_button_new (); + gtk_widget_set_can_default (page->next, TRUE); + g_signal_connect (page->next, "hierarchy-changed", + G_CALLBACK (gtk_widget_grab_default), NULL); 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); @@ -605,10 +598,17 @@ emae_check_servers (const gchar *email) return sdata; } +static void +next_page (GtkWidget *entry, MailAccountView *mav) +{ + mav_next_pressed (NULL, mav); +} + static void mail_account_view_construct (MailAccountView *view) { 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); @@ -636,16 +636,18 @@ mail_account_view_construct (MailAccountView *view) em_account_editor_check (view->edit, mail_account_pages[0].path); view->pages[0]->done = TRUE; - if (e_shell_get_express_mode (e_shell_get_default ())) { + 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_frame")); - 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); @@ -654,6 +656,9 @@ mail_account_view_construct (MailAccountView *view) 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 * -- cgit v1.2.3 From ae650132caebf75728020f95fd48c7cb9c32c047 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Thu, 22 Apr 2010 12:18:45 +0530 Subject: Create Google Calendar and Contacts account optionally while creating gmail accounts. --- capplet/settings/mail-account-view.c | 214 ++++++++++++++++++++++++++++++++++- 1 file changed, 210 insertions(+), 4 deletions(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index 413f755d66..96ce317287 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -26,6 +26,9 @@ #include #include "mail-account-view.h" +#include +#include +#include #include #include "mail-view.h" #include "e-util/e-config.h" @@ -35,6 +38,16 @@ struct _MailAccountViewPrivate { GtkWidget *tab_str; + + GtkWidget *gcalendar; + GtkWidget *gcontacts; + GtkWidget *gmail_info_label; + + gboolean is_gmail; + gboolean do_gcontacts; + gboolean do_gcalendar; + + char *username; }; G_DEFINE_TYPE (MailAccountView, mail_account_view, GTK_TYPE_VBOX) @@ -67,12 +80,16 @@ mail_account_view_init (MailAccountView *shell) { shell->priv = g_new0(MailAccountViewPrivate, 1); + shell->priv->is_gmail = FALSE; + shell->priv->username = NULL; } static void mail_account_view_finalize (GObject *object) { - /*MailAccountView *shell = (MailAccountView *)object;*/ + MailAccountView *shell = (MailAccountView *)object; + + g_free(shell->priv->username); G_OBJECT_CLASS (mail_account_view_parent_class)->finalize (object); } @@ -169,6 +186,146 @@ save_account (MailAccountView *view) #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 CALENDAR_LOCATION "://www.google.com/calendar/feeds/" +#define CALENDAR_DEFAULT_PATH "/private/full" +#define SELECTED_CALENDARS "/apps/evolution/calendar/display/selected_calendars" + +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 +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_gcalendar = gtk_toggle_button_get_active((GtkToggleButton *)mav->priv->gcalendar); + + if (mav->priv->do_gcalendar) { + ESourceList *slist; + ESourceGroup *sgrp; + ESource *calendar; + char *sanitize_uname, *abs_uri, *rel_uri; + GSList *ids, *temp; + + slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/calendar/sources"); + sgrp = e_source_list_peek_group_by_base_uri (slist, "google://"); + + /* 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); + + 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 ("Calendar", abs_uri); + rel_uri = g_strconcat ("https", CALENDAR_LOCATION, sanitize_uname, CALENDAR_DEFAULT_PATH, NULL); + e_source_set_relative_uri (calendar, rel_uri); + + e_source_group_add_source (sgrp, calendar, -1); + e_source_list_sync (slist, NULL); + + ids = gconf_client_get_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, NULL); + ids = g_slist_append (ids, g_strdup (e_source_peek_uid (calendar))); + gconf_client_set_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, ids, NULL); + temp = ids; + + for (; temp != NULL; temp = g_slist_next (temp)) + g_free (temp->data); + g_slist_free (ids); + + 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; + ESource *abook; + char *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 ("Addressbook", 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 GtkWidget * create_review (MailAccountView *view) { @@ -257,6 +414,7 @@ create_review (MailAccountView *view) PACK_BOX(entry); gtk_table_attach ((GtkTable *)table, box, 1, 2, 7, 8, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + 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) @@ -383,11 +541,15 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) /* Save the password ahead of time */ aurl = camel_url_new (account->source->url, NULL); surl = camel_url_to_string(aurl, CAMEL_URL_HIDE_ALL); - mail_session_add_password (surl, gtk_entry_get_text((GtkEntry *)mav->password)); - + e_passwords_add_password (surl, gtk_entry_get_text((GtkEntry *)mav->password)); + e_passwords_remember_password ("Mail", surl); camel_url_free(aurl); g_free(surl); } + + if (mav->priv->is_gmail && !mav->original) + setup_google_accounts (mav); + em_account_editor_commit (mav->edit); g_signal_emit (mav, signals[VIEW_CLOSE], 0); return; @@ -403,7 +565,8 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) 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); @@ -413,6 +576,49 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) 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->gcalendar); + gtk_widget_destroy (mav->priv->gmail_info_label); + } + + if (mav->original == NULL && (g_strrstr(account->source->url, "gmail") || + g_strrstr(account->source->url, "googlemail"))) { + /* Google accounts*/ + GtkWidget *tmp; + mav->priv->is_gmail = TRUE; + printf("Google account: %s\n", account->source->url); + mav->priv->gcontacts = gtk_check_button_new_with_label (_("Setup Google contacts with Evolution")); + mav->priv->gcalendar = 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->gcalendar, TRUE); + + mav->priv->gmail_info_label = gtk_label_new (_("You 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->gcalendar); + gtk_widget_show (mav->priv->gmail_info_label); + + tmp = gtk_label_new (NULL); + gtk_label_set_markup ((GtkLabel *)tmp, _("Google account settings:")); + gtk_widget_show(tmp); + +#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, 3); } + + PACK_IN_BOX(page->box,tmp,12); + PACK_IN_BOX(page->box,mav->priv->gcontacts,24); + PACK_IN_BOX(page->box,mav->priv->gcalendar,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, 3); } + + PACK_IN_BOX(page->box,mav->priv->gmail_info_label,gtk_link_button_new("https://mail.google.com/mail/?ui=2&shva=1#settings/fwdandpop"), 24, 0); + + } else + mav->priv->is_gmail = FALSE; + } gtk_widget_show (mav->pages[mav->current_page]->box); -- cgit v1.2.3 From ce1bcb611b9fec105cc1d05ff8e2846b02545908 Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Thu, 22 Apr 2010 13:38:38 -0500 Subject: Reduce spacings in the mail capplet's Review page This makes the page fit in 1024x600 without having a vertical scrollbar. There was an extra 3 pixels between each row, added explicitly as ypadding when each widget was attached to its parent table. Now we just use the inter-row spacing from the table itself. Also, use a macro for each item's indentation instead of having the same magic value all over the place. Signed-off-by: Federico Mena Quintero --- capplet/settings/mail-account-view.c | 46 +++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 22 deletions(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index 96ce317287..c44bd2ac71 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -326,6 +326,8 @@ setup_google_accounts (MailAccountView *mav) g_object_unref (gconf); } +#define INDENTATION 10 + static GtkWidget * create_review (MailAccountView *view) { @@ -345,74 +347,74 @@ create_review (MailAccountView *view) gtk_label_set_markup ((GtkLabel *)label, _("Personal details:")); gtk_widget_show (label); PACK_BOXF(label) - gtk_table_attach ((GtkTable *)table, box, 0, 1, 0, 1, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + gtk_table_attach ((GtkTable *)table, box, 1, 2, 2, 3, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0); label = gtk_label_new (NULL); gtk_label_set_markup ((GtkLabel *)label, _("Details:")); gtk_widget_show (label); PACK_BOXF(label); - gtk_table_attach ((GtkTable *)table, box, 0, 1, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + gtk_table_attach ((GtkTable *)table, box, 0, 1, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, INDENTATION, 0); label = gtk_label_new (NULL); gtk_label_set_markup ((GtkLabel *)label, _("Receiving")); gtk_widget_show (label); PACK_BOXF(label); - gtk_table_attach ((GtkTable *)table, box, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, "use_ssl"); 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, 10, 3); + 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); @@ -424,36 +426,36 @@ create_review (MailAccountView *view) gtk_label_set_markup ((GtkLabel *)label, _("Sending")); gtk_widget_show (label); PACK_BOXF(label); - gtk_table_attach ((GtkTable *)table, box, 2, 3, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, 10, 3); + 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, "use_ssl"); 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, 10, 3); + 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, 10, 3); - gtk_table_attach (table, entry, 1, 2, 3, 4, GTK_EXPAND|GTK_FILL, GTK_SHRINK, 10, 3); + 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); -- cgit v1.2.3 From 346a481edc9afb01f063f6ccb0e13fb6a043d22f Mon Sep 17 00:00:00 2001 From: Federico Mena Quintero Date: Thu, 22 Apr 2010 14:54:56 -0500 Subject: Remove more ad-hoc spacings Signed-off-by: Federico Mena Quintero --- capplet/settings/mail-account-view.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index c44bd2ac71..f4b31beada 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -608,13 +608,13 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) gtk_label_set_markup ((GtkLabel *)tmp, _("Google account settings:")); gtk_widget_show(tmp); -#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, 3); } +#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,tmp,12); PACK_IN_BOX(page->box,mav->priv->gcontacts,24); PACK_IN_BOX(page->box,mav->priv->gcalendar,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, 3); } +#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); } PACK_IN_BOX(page->box,mav->priv->gmail_info_label,gtk_link_button_new("https://mail.google.com/mail/?ui=2&shva=1#settings/fwdandpop"), 24, 0); -- cgit v1.2.3 From 64b2fe23c4733a10181b213a380cd361518d008b Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Mon, 26 Apr 2010 12:16:22 +0530 Subject: Create Google group at instances when it is not created by default --- capplet/settings/mail-account-view.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index f4b31beada..e343927336 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -245,6 +245,11 @@ setup_google_accounts (MailAccountView *mav) slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/calendar/sources"); sgrp = e_source_list_peek_group_by_base_uri (slist, "google://"); + if (!sgrp) { + sgrp = e_source_list_ensure_group (slist, _("Google"), "google://", TRUE); + } + + printf("Setting up Google Calendar: list:%p GoogleGrp: %p\n", slist, sgrp); /* FIXME: Not sure if we should localize 'Calendar' */ calendar = e_source_new ("Calendar", ""); @@ -285,7 +290,8 @@ setup_google_accounts (MailAccountView *mav) g_object_unref(slist); g_object_unref(sgrp); g_object_unref(calendar); - } + } else + printf("Not setting up Google Calendar\n"); if (mav->priv->do_gcontacts) { ESourceList *slist; -- cgit v1.2.3 From b2121b1cf705447bdb3ac1708105b014cb6a8f3b Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Mon, 26 Apr 2010 15:18:32 +0530 Subject: Add yahoo calendars support. --- capplet/settings/mail-account-view.c | 187 ++++++++++++++++++++++++++++++++--- 1 file changed, 173 insertions(+), 14 deletions(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index e343927336..e25d144409 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -39,15 +39,18 @@ struct _MailAccountViewPrivate { GtkWidget *tab_str; - GtkWidget *gcalendar; + GtkWidget *calendar; GtkWidget *gcontacts; GtkWidget *gmail_info_label; gboolean is_gmail; + gboolean is_yahoo; gboolean do_gcontacts; - gboolean do_gcalendar; + gboolean do_calendar; char *username; + + GtkWidget *yahoo_cal_entry; }; G_DEFINE_TYPE (MailAccountView, mail_account_view, GTK_TYPE_VBOX) @@ -81,6 +84,7 @@ 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; } @@ -187,10 +191,10 @@ save_account (MailAccountView *view) #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 CALENDAR_LOCATION "://www.google.com/calendar/feeds/" +#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) { @@ -228,15 +232,121 @@ sanitize_user_mail (const gchar *user) } } +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; + char *sanitize_uname, *abs_uri, *rel_uri; + GSList *ids, *temp; + const char *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 ("Calendar", 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); + + ids = gconf_client_get_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, NULL); + ids = g_slist_append (ids, g_strdup (e_source_peek_uid (calendar))); + gconf_client_set_list (gconf, SELECTED_CALENDARS, GCONF_VALUE_STRING, ids, NULL); + temp = ids; + + for (; temp != NULL; temp = g_slist_next (temp)) + g_free (temp->data); + g_slist_free (ids); + + 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; + char *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 ("Addressbook", 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_gcalendar = gtk_toggle_button_get_active((GtkToggleButton *)mav->priv->gcalendar); + mav->priv->do_calendar = gtk_toggle_button_get_active((GtkToggleButton *)mav->priv->calendar); - if (mav->priv->do_gcalendar) { + if (mav->priv->do_calendar) { ESourceList *slist; ESourceGroup *sgrp; ESource *calendar; @@ -269,7 +379,7 @@ setup_google_accounts (MailAccountView *mav) e_passwords_add_password (abs_uri, gtk_entry_get_text((GtkEntry *)mav->password)); e_passwords_remember_password ("Calendar", abs_uri); - rel_uri = g_strconcat ("https", CALENDAR_LOCATION, sanitize_uname, CALENDAR_DEFAULT_PATH, NULL); + rel_uri = g_strconcat ("https", GMAIL_CALENDAR_LOCATION, sanitize_uname, CALENDAR_DEFAULT_PATH, NULL); e_source_set_relative_uri (calendar, rel_uri); e_source_group_add_source (sgrp, calendar, -1); @@ -557,6 +667,8 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) 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); @@ -587,8 +699,12 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) if (mav->priv->is_gmail) { gtk_widget_destroy (mav->priv->gcontacts); - gtk_widget_destroy (mav->priv->gcalendar); + gtk_widget_destroy (mav->priv->calendar); + gtk_widget_destroy (mav->priv->gmail_info_label); + } 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->original == NULL && (g_strrstr(account->source->url, "gmail") || @@ -596,18 +712,18 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) /* Google accounts*/ GtkWidget *tmp; mav->priv->is_gmail = TRUE; - printf("Google account: %s\n", account->source->url); + mav->priv->gcontacts = gtk_check_button_new_with_label (_("Setup Google contacts with Evolution")); - mav->priv->gcalendar = gtk_check_button_new_with_label (_("Setup Google calendar 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->gcalendar, TRUE); + gtk_toggle_button_set_active ((GtkToggleButton *)mav->priv->calendar, TRUE); mav->priv->gmail_info_label = gtk_label_new (_("You 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->gcalendar); + gtk_widget_show (mav->priv->calendar); gtk_widget_show (mav->priv->gmail_info_label); tmp = gtk_label_new (NULL); @@ -618,14 +734,57 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) PACK_IN_BOX(page->box,tmp,12); PACK_IN_BOX(page->box,mav->priv->gcontacts,24); - PACK_IN_BOX(page->box,mav->priv->gcalendar,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); } PACK_IN_BOX(page->box,mav->priv->gmail_info_label,gtk_link_button_new("https://mail.google.com/mail/?ui=2&shva=1#settings/fwdandpop"), 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*/ + GtkWidget *tmp; + char *cal_name; + GtkWidget *tmpbox; + + 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_selectable ((GtkLabel *)mav->priv->gmail_info_label, TRUE); + + gtk_widget_show (mav->priv->calendar); + gtk_widget_show (mav->priv->gmail_info_label); + + tmp = gtk_label_new (NULL); + gtk_label_set_markup ((GtkLabel *)tmp, _("Yahoo account settings:")); + gtk_widget_show(tmp); + +#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, child,num) { GtkWidget *txtlbl = gtk_label_new (txt); tmpbox = gtk_hbox_new (FALSE, 12); gtk_box_pack_start ((GtkBox *)tmpbox, txtlbl, FALSE, FALSE, num); gtk_box_pack_start ((GtkBox *)tmpbox, child, FALSE, FALSE, num); gtk_widget_show_all (tmpbox);} - } else + PACK_IN_BOX(page->box,tmp,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_entry, 0); + PACK_IN_BOX(page->box, tmpbox, 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; + } } -- cgit v1.2.3 From 7ef34bfaae3e776101ff086bfb18494869e39e55 Mon Sep 17 00:00:00 2001 From: Michael Meeks Date: Mon, 26 Apr 2010 12:33:02 +0100 Subject: equivocate on mail recommendation --- capplet/settings/mail-account-view.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index e25d144409..1446923c5a 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -719,7 +719,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) 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 need to enable IMAP access.")); + 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); -- cgit v1.2.3 From 4aa2552cb46f0daa67e135231f82f7d5403e2d19 Mon Sep 17 00:00:00 2001 From: Srinivasa Ragavan Date: Fri, 7 May 2010 13:55:33 +0530 Subject: Don't ask for password while editing accounts. --- capplet/settings/mail-account-view.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index 1446923c5a..a6751b9a1b 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -166,6 +166,8 @@ validate_identity (MailAccountView *view) 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; -- cgit v1.2.3 From 96538878911586a9e9ca26b81e1916c04e538980 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Tue, 25 May 2010 10:15:32 -0400 Subject: Coding style and whitespace cleanup. --- capplet/settings/mail-account-view.c | 86 ++++++++++++++++++------------------ 1 file changed, 42 insertions(+), 44 deletions(-) (limited to 'capplet/settings/mail-account-view.c') diff --git a/capplet/settings/mail-account-view.c b/capplet/settings/mail-account-view.c index a6751b9a1b..cd47ae5223 100644 --- a/capplet/settings/mail-account-view.c +++ b/capplet/settings/mail-account-view.c @@ -48,7 +48,7 @@ struct _MailAccountViewPrivate { gboolean do_gcontacts; gboolean do_calendar; - char *username; + gchar *username; GtkWidget *yahoo_cal_entry; }; @@ -246,10 +246,10 @@ setup_yahoo_account (MailAccountView *mav) ESourceList *slist; ESourceGroup *sgrp; ESource *calendar; - char *sanitize_uname, *abs_uri, *rel_uri; + gchar *sanitize_uname, *abs_uri, *rel_uri; GSList *ids, *temp; - const char *email = e_account_get_string(em_account_editor_get_modified_account(mav->edit), E_ACCOUNT_ID_ADDRESS); - + 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) { @@ -259,20 +259,20 @@ setup_yahoo_account (MailAccountView *mav) 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", ""); + 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, "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 ("Calendar", abs_uri); @@ -290,7 +290,7 @@ setup_yahoo_account (MailAccountView *mav) for (; temp != NULL; temp = g_slist_next (temp)) g_free (temp->data); - g_slist_free (ids); + g_slist_free (ids); g_free(abs_uri); g_free(rel_uri); @@ -305,14 +305,14 @@ setup_yahoo_account (MailAccountView *mav) ESourceList *slist; ESourceGroup *sgrp; ESource *abook; - char *rel_uri;; + 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", ""); + 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"); @@ -322,7 +322,7 @@ setup_yahoo_account (MailAccountView *mav) 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 ("Addressbook", rel_uri); @@ -334,7 +334,6 @@ setup_yahoo_account (MailAccountView *mav) g_object_unref(sgrp); g_object_unref(abook); - } g_object_unref (gconf); @@ -352,9 +351,9 @@ setup_google_accounts (MailAccountView *mav) ESourceList *slist; ESourceGroup *sgrp; ESource *calendar; - char *sanitize_uname, *abs_uri, *rel_uri; + gchar *sanitize_uname, *abs_uri, *rel_uri; GSList *ids, *temp; - + slist = e_source_list_new_for_gconf (gconf, "/apps/evolution/calendar/sources"); sgrp = e_source_list_peek_group_by_base_uri (slist, "google://"); if (!sgrp) { @@ -364,13 +363,13 @@ setup_google_accounts (MailAccountView *mav) printf("Setting up Google Calendar: list:%p GoogleGrp: %p\n", slist, sgrp); /* FIXME: Not sure if we should localize 'Calendar' */ - calendar = e_source_new ("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, "setup-username", mav->priv->username); e_source_set_property (calendar, "default", "true"); e_source_set_readonly (calendar, FALSE); @@ -378,7 +377,7 @@ setup_google_accounts (MailAccountView *mav) 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 ("Calendar", abs_uri); rel_uri = g_strconcat ("https", GMAIL_CALENDAR_LOCATION, sanitize_uname, CALENDAR_DEFAULT_PATH, NULL); @@ -394,7 +393,7 @@ setup_google_accounts (MailAccountView *mav) for (; temp != NULL; temp = g_slist_next (temp)) g_free (temp->data); - g_slist_free (ids); + g_slist_free (ids); g_free(abs_uri); g_free(rel_uri); @@ -409,14 +408,14 @@ setup_google_accounts (MailAccountView *mav) ESourceList *slist; ESourceGroup *sgrp; ESource *abook; - char *rel_uri;; + 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", ""); + 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"); @@ -426,7 +425,7 @@ setup_google_accounts (MailAccountView *mav) 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 ("Addressbook", rel_uri); @@ -438,7 +437,6 @@ setup_google_accounts (MailAccountView *mav) g_object_unref(sgrp); g_object_unref(abook); - } g_object_unref (gconf); @@ -657,7 +655,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) if (!mav->original) { EAccount *account = em_account_editor_get_modified_account(mav->edit); CamelURL *aurl; - char *surl; + 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); @@ -667,7 +665,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) g_free(surl); } - if (mav->priv->is_gmail && !mav->original) + if (mav->priv->is_gmail && !mav->original) setup_google_accounts (mav); else if (mav->priv->is_yahoo && !mav->original) setup_yahoo_account (mav); @@ -688,7 +686,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) 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); @@ -698,7 +696,7 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) 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); @@ -717,19 +715,19 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) 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); - + tmp = gtk_label_new (NULL); - gtk_label_set_markup ((GtkLabel *)tmp, _("Google account settings:")); + gtk_label_set_markup ((GtkLabel *)tmp, _("Google account settings:")); gtk_widget_show(tmp); #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); } @@ -742,29 +740,29 @@ mav_next_pressed (GtkButton *button, MailAccountView *mav) PACK_IN_BOX(page->box,mav->priv->gmail_info_label,gtk_link_button_new("https://mail.google.com/mail/?ui=2&shva=1#settings/fwdandpop"), 24, 0); #undef PACK_IN_BOX - } else if (mav->original == NULL && + } 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*/ GtkWidget *tmp; - char *cal_name; + gchar *cal_name; GtkWidget *tmpbox; 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_selectable ((GtkLabel *)mav->priv->gmail_info_label, TRUE); - + gtk_widget_show (mav->priv->calendar); gtk_widget_show (mav->priv->gmail_info_label); - + tmp = gtk_label_new (NULL); - gtk_label_set_markup ((GtkLabel *)tmp, _("Yahoo account settings:")); + gtk_label_set_markup ((GtkLabel *)tmp, _("Yahoo account settings:")); gtk_widget_show(tmp); #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); } @@ -1013,7 +1011,7 @@ mail_account_view_construct (MailAccountView *view) 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 *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_frame")); @@ -1027,7 +1025,7 @@ mail_account_view_construct (MailAccountView *view) 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; } } -- cgit v1.2.3