[anjal] Multiple account support for Anjal
- From: Srinivasa Ragavan <sragavan src gnome org>
- To: svn-commits-list gnome org
- Subject: [anjal] Multiple account support for Anjal
- Date: Sun, 19 Jul 2009 13:55:13 +0000 (UTC)
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]