[anjal] Commit some sanity of account wizard.
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Commit some sanity of account wizard.
- Date: Fri, 22 May 2009 03:34:48 -0400 (EDT)
commit 7bf86383047a658dc702ad97df922015d68f3853
Author: Srinivasa Ragavan <sragavan novell com>
Date: Fri May 22 13:08:09 2009 +0530
Commit some sanity of account wizard.
---
src/mail-account-view.c | 70 +++++++++++++++++++++++++++++++++++++++++------
src/mail-account-view.h | 2 +
2 files changed, 63 insertions(+), 9 deletions(-)
diff --git a/src/mail-account-view.c b/src/mail-account-view.c
index fbe2916..dd5670b 100644
--- a/src/mail-account-view.c
+++ b/src/mail-account-view.c
@@ -44,6 +44,20 @@ enum {
LAST_SIGNAL
};
+enum {
+ ERROR_NO_FULLNAME = 1,
+ ERROR_NO_EMAIL = 2,
+ ERROR_INVALID_EMAIL = 3,
+};
+
+struct _dialog_errors {
+ int error;
+ char *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 addres you have entered is invalid.") },
+};
static guint signals[LAST_SIGNAL] = { 0 };
static void
@@ -160,6 +174,24 @@ save_identity (MailAccountView *view)
#endif
}
+static int
+validate_identity (MailAccountView *view)
+{
+ char *user = e_account_get_string(view->edit->account, E_ACCOUNT_ID_NAME);
+ char *email = e_account_get_string(view->edit->account, E_ACCOUNT_ID_ADDRESS);
+ char *tmp;
+
+ if (!user || !*user)
+ return ERROR_NO_FULLNAME;
+ if (!email || !*email)
+ return ERROR_NO_EMAIL;
+ tmp = strchr(email, '@');
+ if (!tmp || tmp[1] == 0)
+ return ERROR_INVALID_EMAIL;
+
+ return 0;
+}
+
static void
save_send (MailAccountView *view)
{
@@ -336,22 +368,33 @@ struct _page_text {
GtkWidget * (*create_page) (MailAccountView *view);
void (*fill_page) (MailAccountView *view);
void (*save_page) (MailAccountView *view);
+ int (*validate_page) (MailAccountView *view);
} mail_account_pages[] = {
//{ MAV_IDENTITY_PAGE, N_("Identity"), N_("Next - Receiving mail"), NULL, IDENTITY_DETAIL, create_identity_page, fill_identity, save_identity },
//{ MAV_RECV_PAGE, N_("Receiving mail"), N_("Next - Sending mail"), N_("Back - Identity"), RECEIVE_DETAIL, create_receive_page, fill_receive, save_receive},
//{ MAV_SEND_PAGE, N_("Sending mail"), N_("Next - Review account"), N_("Back - Receiving mail"), SEND_DETAIL, create_send_page, fill_send, save_send},
//{ MAV_REVIEW_PAGE, N_("Review account"), N_("Finish"), N_("Back - Sending"), REVIEW_DETAIL, NULL, NULL, save_account},
- { MAV_IDENTITY_PAGE, N_("Identity"), N_("Next - Receiving mail"), NULL, IDENTITY_DETAIL, "00.identity",NULL, NULL, save_identity, },
- { MAV_RECV_PAGE, N_("Receiving mail"), N_("Next - Sending mail"), N_("Back - Identity"), RECEIVE_DETAIL, "10.receive", NULL, NULL, NULL },
- { MAV_SEND_PAGE, N_("Sending mail"), N_("Next - Review account"), N_("Back - Receiving mail"), SEND_DETAIL, "30.send", NULL, NULL, NULL},
- { MAV_REVIEW_PAGE, N_("Review account"), N_("Finish"), N_("Back - Sending"), REVIEW_DETAIL, NULL, create_review, NULL},
+ { MAV_IDENTITY_PAGE, N_("Identity"), 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"), RECEIVE_DETAIL, "10.receive", NULL, NULL, NULL, NULL },
+ { MAV_SEND_PAGE, N_("Sending mail"), N_("Next - Review account"), N_("Back - Receiving mail"), SEND_DETAIL, "30.send", NULL, NULL, NULL, NULL},
+ { MAV_REVIEW_PAGE, N_("Review account"), 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) {
+ int ret = (*mail_account_pages[mav->current_page].validate_page) (mav);
+ MAVPage *page = mav->pages[mav->current_page];
+ if (ret) {
+ gtk_label_set_text (page->error_label, dialog_errors[ret-1].detail);
+ gtk_widget_show (page->error);
+ return;
+ }
+ gtk_widget_hide (page->error);
+ gtk_label_set_text (page->error_label, "");
+ }
if (mail_account_pages[mav->current_page].save_page) {
(*mail_account_pages[mav->current_page].save_page) (mav);
}
@@ -405,13 +448,22 @@ static GtkWidget *
mav_construct_page(MailAccountView *view, MAVPageType type)
{
MAVPage *page = g_new0(MAVPage, 1);
- GtkWidget *box, *tmp;
+ GtkWidget *box, *tmp, *error_box;
char *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 (error_box, tmp, FALSE, FALSE, 2);
+ gtk_box_pack_start (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);
@@ -469,7 +521,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 (box, page->prev, FALSE, FALSE, 12);
@@ -478,7 +530,7 @@ mav_construct_page(MailAccountView *view, MAVPageType type)
gtk_widget_show (box);
gtk_box_pack_end (page->box, box, FALSE, FALSE, 6);
gtk_widget_show(page->box);
-
+ gtk_box_pack_end (page->box, error_box, FALSE, FALSE, 2);
return page;
}
diff --git a/src/mail-account-view.h b/src/mail-account-view.h
index 72637c6..fef02a0 100644
--- a/src/mail-account-view.h
+++ b/src/mail-account-view.h
@@ -50,6 +50,8 @@ typedef enum {
typedef struct _MAVPage {
GtkWidget *box;
GtkWidget *main;
+ GtkWidget *error;
+ GtkWidget *error_label;
MAVPageType type;
GtkWidget *next;
GtkWidget *prev;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]