aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/gui/widgets/e-minicard.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/gui/widgets/e-minicard.c')
-rw-r--r--addressbook/gui/widgets/e-minicard.c31
1 files changed, 21 insertions, 10 deletions
diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c
index 6208f1f23f..22566ec749 100644
--- a/addressbook/gui/widgets/e-minicard.c
+++ b/addressbook/gui/widgets/e-minicard.c
@@ -557,6 +557,24 @@ editor_closed_cb (EContactEditor *ce, gpointer data)
minicard->editor = NULL;
}
+static void
+supported_fields_cb (EBook *book, EBookStatus status, EList *fields, EMinicard *e_minicard)
+{
+ e_minicard->editor = e_contact_editor_new (e_minicard->card, FALSE, fields);
+
+ if (book != NULL) {
+ gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "add_card",
+ GTK_SIGNAL_FUNC (add_card_cb), book);
+ gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "commit_card",
+ GTK_SIGNAL_FUNC (commit_card_cb), book);
+ gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "delete_card",
+ GTK_SIGNAL_FUNC (delete_card_cb), book);
+ }
+
+ gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "editor_closed",
+ GTK_SIGNAL_FUNC (editor_closed_cb), e_minicard);
+}
+
static gboolean
e_minicard_event (GnomeCanvasItem *item, GdkEvent *event)
{
@@ -641,19 +659,12 @@ e_minicard_event (GnomeCanvasItem *item, GdkEvent *event)
"book", &book,
NULL);
}
- e_minicard->editor = e_contact_editor_new (e_minicard->card, FALSE);
if (book != NULL) {
- gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "add_card",
- GTK_SIGNAL_FUNC (add_card_cb), book);
- gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "commit_card",
- GTK_SIGNAL_FUNC (commit_card_cb), book);
- gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "delete_card",
- GTK_SIGNAL_FUNC (delete_card_cb), book);
+ e_book_get_supported_fields (book,
+ (EBookFieldsCallback)supported_fields_cb,
+ e_minicard);
}
-
- gtk_signal_connect (GTK_OBJECT (e_minicard->editor), "editor_closed",
- GTK_SIGNAL_FUNC (editor_closed_cb), e_minicard);
}
return TRUE;
}