[anjal] Commit some sanity of account wizard.



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]