[anjal] Multiple account support for Anjal



commit 4f321d7d207e22f9687777a288058249e65b37fc
Author: Srinivasa Ragavan <sragavan novell com>
Date:   Sun Jul 19 19:24:00 2009 +0530

    Multiple account support for Anjal

 src/mail-settings-view.c |   53 ++++++++++++++++++++++++++++++++++-----------
 src/mail-settings-view.h |    2 +-
 src/mail-view.c          |    6 ++--
 3 files changed, 44 insertions(+), 17 deletions(-)
---
diff --git a/src/mail-settings-view.c b/src/mail-settings-view.c
index e1ff77f..debe120 100644
--- a/src/mail-settings-view.c
+++ b/src/mail-settings-view.c
@@ -82,46 +82,73 @@ mail_settings_view_class_init (MailSettingsViewClass *klass)
 			      G_SIGNAL_RUN_FIRST,
 			      G_STRUCT_OFFSET (MailSettingsViewClass , show_account),
 			      NULL, NULL,
-			      g_cclosure_marshal_VOID__VOID,
-			      G_TYPE_NONE, 0);
+			      g_cclosure_marshal_VOID__POINTER,
+			      G_TYPE_NONE, 1, G_TYPE_POINTER);
 	
 }
 
 static void
 msv_edit_account(GtkButton *button, MailSettingsView *msv)
 {
-	g_signal_emit (msv, signals[SHOW_ACCOUNT], 0);
+	EAccount *acc = g_object_get_data(button, "account");
+
+	g_signal_emit (msv, signals[SHOW_ACCOUNT], 0, acc);
 }
 
 #define PACK_BOX(w,s) box = gtk_hbox_new(FALSE, 0); gtk_box_pack_start((GtkBox *)box, w, FALSE, FALSE, s); gtk_widget_show(box); gtk_widget_show(w); gtk_box_pack_start((GtkBox *)acview, box, FALSE, FALSE, 3);
 
-void
-mail_settings_view_construct (MailSettingsView *acview)
+
+static void
+build_account_button (MailSettingsView *acview, EAccount *account)
 {
 	GtkWidget *box, *label, *tbox, *tlabel;
-	struct _EAccount *account = mail_config_get_default_account();
 	char *tmp;
 
-	label = gtk_label_new (NULL);
-	gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Account management</span>"));
-	PACK_BOX(label,12);
-
 	label = gtk_button_new ();
 	tbox = gtk_hbox_new (FALSE, 0);
 
-	tlabel = (GtkWidget *)gtk_image_new_from_stock ("gtk-edit", GTK_ICON_SIZE_BUTTON);
+	tlabel = (GtkWidget *)gtk_image_new_from_stock (account ? "gtk-edit" : "gtk-new", GTK_ICON_SIZE_BUTTON);
 	gtk_widget_show(tlabel);
 	gtk_box_pack_start((GtkBox *)tbox, tlabel, FALSE, FALSE, 6);
 
-	tmp = g_strdup_printf("%s %s...", _("Modify"), e_account_get_string(account, E_ACCOUNT_ID_ADDRESS));
+	if (account)
+		tmp = g_strdup_printf("%s %s...", _("Modify"), e_account_get_string(account, E_ACCOUNT_ID_ADDRESS));
+	else
+		tmp = _("Add a new account");
 	tlabel = gtk_label_new(tmp);
-	g_free(tmp);
+	if (account)
+		g_free(tmp);
 	gtk_widget_show(tlabel);
 	gtk_box_pack_start((GtkBox *)tbox, tlabel, FALSE, FALSE, 0);
 	gtk_widget_show(tbox);
 	gtk_container_add((GtkContainer *)label, tbox);
 	PACK_BOX(label,24);
+	g_object_set_data ((GObject *)label, "account", account);
 	g_signal_connect(label, "clicked", G_CALLBACK(msv_edit_account), acview);
+}
+
+void
+mail_settings_view_construct (MailSettingsView *acview)
+{
+	GtkWidget *box, *label;
+	struct _EAccount *account;
+	EAccountList *accounts;
+	EIterator *node;
+
+	label = gtk_label_new (NULL);
+	gtk_label_set_markup ((GtkLabel *)label, _("<span size=\"large\" weight=\"bold\">Account management</span>"));
+	PACK_BOX(label,12);
+
+	accounts = mail_config_get_accounts ();
+	node = e_list_get_iterator ((EList *) accounts);
+	while (e_iterator_is_valid (node)) {
+		account = (EAccount *) e_iterator_get (node);
+		build_account_button (acview, account);
+		e_iterator_next (node);
+	}
+	g_object_unref (node);
+	build_account_button (acview, NULL);
+
 	gtk_widget_show((GtkWidget *)acview);
 
 }
diff --git a/src/mail-settings-view.h b/src/mail-settings-view.h
index bf0407a..73dc44f 100644
--- a/src/mail-settings-view.h
+++ b/src/mail-settings-view.h
@@ -51,7 +51,7 @@ typedef struct _MailSettingsViewClass {
 	GtkVBoxClass parent_class;
 
 	void (* view_close) (MailSettingsView *);	
-	void (* show_account) (MailSettingsView *);
+	void (* show_account) (MailSettingsView *, gpointer);
 } MailSettingsViewClass;
 
 MailSettingsView *mail_settings_view_new (void);
diff --git a/src/mail-view.c b/src/mail-view.c
index 79a51da..145754f 100644
--- a/src/mail-view.c
+++ b/src/mail-view.c
@@ -406,9 +406,9 @@ mail_view_add_message (MailView *mv, gpointer data, gboolean block)
 }
 
 static void
-mv_show_acc_mcv (MailFolderView *mfv, MailView *mv)
+mv_show_acc_mcv (MailFolderView *mfv, EAccount *account, MailView *mv)
 {
-	mail_view_add_page(mv, MAIL_VIEW_ACCOUNT, NULL);
+	mail_view_add_page(mv, MAIL_VIEW_ACCOUNT, account);
 }
 
 static MailViewChild *
@@ -470,7 +470,7 @@ mail_view_add_people (MailView *mv, gpointer data, gboolean block)
 static MailViewChild *
 mail_view_add_account (MailView *mv, gpointer data, gboolean block)
 {
-	MailAccountView *msv  = mail_account_view_new (NULL);
+	MailAccountView *msv  = mail_account_view_new (data);
 	gint position = 0;
 	
 	gtk_widget_show ((GtkWidget *)msv);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]