From 99700ad43dcbf0bf95b335a9fc8f95934080d63c Mon Sep 17 00:00:00 2001 From: Christopher James Lahey Date: Mon, 10 Apr 2000 15:46:25 +0000 Subject: Fixed a bug where I was sending the wrong information to some callbacks. 2000-04-10 Christopher James Lahey * addressbook/backend/ebook/e-book-view.c: Fixed a bug where I was sending the wrong information to some callbacks. * addressbook/backend/ebook/e-card.c, addressbook/backend/ebook/e-card.h: Added an e_card_duplicate function. Made ids get stored in vcards. Made sure to delete the url if it exists. * addressbook/backend/pas/Makefile.am: Made pas include addressbook/backend/ebook/ in the search path. * addressbook/backend/pas/pas-backend-file.c: Fixed some bugs and made the create card function store the generated id in the card being saved. * addressbook/backend/pas/pas-book-view.c: Fixed a double free bug. * addressbook/contact-editor/e-contact-editor.c: Fixed some bugs. Made the contact editor actually return a valid card when gtk_object_get(editor, "card", ...) is called. * addressbook/contact-editor/e-contact-editor.h: Fixed a copy and paste error. * addressbook/gui/component/addressbook.c: Made this get the card properly. * addressbook/gui/minicard/Makefile.am: Made this include contact-editor directory in the search path and link against libecontacteditor so that double clicking can open a dialog. * addressbook/gui/minicard/e-minicard.c: Fixed some small bugs. Made double clicking open a contact editor dialog if this minicard is contained in a minicard view. (It needs the minicard view to get the EBook to save to. * wombat/Makefile.am: Link wombat against libebook, since pas-backend-file now uses ECard. svn path=/trunk/; revision=2360 --- addressbook/backend/ebook/e-book-view.c | 10 +++---- addressbook/backend/ebook/e-card.c | 47 ++++++++++++++++++++++++++++----- addressbook/backend/ebook/e-card.h | 2 ++ 3 files changed, 47 insertions(+), 12 deletions(-) (limited to 'addressbook/backend/ebook') diff --git a/addressbook/backend/ebook/e-book-view.c b/addressbook/backend/ebook/e-book-view.c index fa8deff67c..2931a9347d 100644 --- a/addressbook/backend/ebook/e-book-view.c +++ b/addressbook/backend/ebook/e-book-view.c @@ -51,9 +51,10 @@ e_book_view_do_modified_event (EBookView *book_view, EBookViewListenerResponse *resp) { gtk_signal_emit (GTK_OBJECT (book_view), e_book_view_signals [CARD_CHANGED], - resp->id); + resp->cards); - g_free (resp->id); + g_list_foreach (resp->cards, (GFunc) gtk_object_unref, NULL); + g_list_free (resp->cards); } static void @@ -61,10 +62,9 @@ e_book_view_do_removed_event (EBookView *book_view, EBookViewListenerResponse *resp) { gtk_signal_emit (GTK_OBJECT (book_view), e_book_view_signals [CARD_REMOVED], - resp->cards); + resp->id); - g_list_foreach (resp->cards, (GFunc) gtk_object_unref, NULL); - g_list_free (resp->cards); + g_free(resp->id); } diff --git a/addressbook/backend/ebook/e-card.c b/addressbook/backend/ebook/e-card.c index 227643fe8c..9c135e4d1f 100644 --- a/addressbook/backend/ebook/e-card.c +++ b/addressbook/backend/ebook/e-card.c @@ -31,7 +31,8 @@ enum { ARG_PHONE, ARG_EMAIL, ARG_BIRTH_DATE, - ARG_URL + ARG_URL, + ARG_ID }; #if 0 @@ -58,6 +59,7 @@ static void parse_email(ECard *card, VObject *object); static void parse_phone(ECard *card, VObject *object); static void parse_address(ECard *card, VObject *object); static void parse_url(ECard *card, VObject *object); +static void parse_id(ECard *card, VObject *object); static ECardPhoneFlags get_phone_flags (VObject *vobj); static void set_phone_flags (VObject *vobj, ECardPhoneFlags flags); @@ -77,7 +79,8 @@ struct { { VCEmailAddressProp, parse_email }, { VCTelephoneProp, parse_phone }, { VCAdrProp, parse_address }, - { VCURLProp, parse_url } + { VCURLProp, parse_url }, + { VCUniqueStringProp, parse_id } }; /** @@ -133,6 +136,14 @@ e_card_new (char *vcard) return card; } +ECard *e_card_duplicate(ECard *card) +{ + char *vcard = e_card_get_vcard(card); + ECard *new_card = e_card_new(vcard); + g_free (vcard); + return new_card; +} + /** * e_card_get_id: * @card: an #ECard @@ -255,9 +266,12 @@ char g_free(value); } - if ( card->url ) + if (card->url) addPropValue(vobj, VCURLProp, card->url); + if (card->id) + addPropValue (vobj, VCUniqueStringProp, card->id); + #if 0 @@ -349,9 +363,6 @@ char add_CardProperty (vprop, &crd->sound.prop); } - add_CardStrProperty (vobj, VCURLProp, &crd->url); - add_CardStrProperty (vobj, VCUniqueStringProp, &crd->uid); - if (crd->key.prop.used) { vprop = addPropValue (vobj, VCPublicKeyProp, crd->key.data); add_KeyType (vprop, crd->key.type); @@ -455,11 +466,19 @@ parse_address(ECard *card, VObject *vobj) static void parse_url(ECard *card, VObject *vobj) { - if ( card->url ) + if (card->url) g_free(card->url); assign_string(vobj, &(card->url)); } +static void +parse_id(ECard *card, VObject *vobj) +{ + if ( card->id ) + g_free(card->id); + assign_string(vobj, &(card->id)); +} + static void parse_attribute(ECard *card, VObject *vobj) { @@ -506,6 +525,8 @@ e_card_class_init (ECardClass *klass) GTK_TYPE_POINTER, GTK_ARG_READWRITE, ARG_BIRTH_DATE); gtk_object_add_arg_type ("ECard::url", GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_URL); + gtk_object_add_arg_type ("ECard::id", + GTK_TYPE_STRING, GTK_ARG_READWRITE, ARG_ID); object_class->destroy = e_card_destroy; @@ -592,6 +613,9 @@ e_card_destroy (GtkObject *object) if ( card->bday ) g_free(card->bday); + if (card->url) + g_free(card->url); + if (card->email) gtk_object_unref(GTK_OBJECT(card->email)); if (card->phone) @@ -629,6 +653,12 @@ e_card_set_arg (GtkObject *object, GtkArg *arg, guint arg_id) if ( card->url ) g_free(card->url); card->url = GTK_VALUE_STRING(*arg); + break; + case ARG_ID: + if (card->id) + g_free(card->id); + card->id = GTK_VALUE_STRING(*arg); + break; default: return; } @@ -676,6 +706,9 @@ e_card_get_arg (GtkObject *object, GtkArg *arg, guint arg_id) case ARG_URL: GTK_VALUE_STRING(*arg) = card->url; break; + case ARG_ID: + GTK_VALUE_STRING(*arg) = card->id; + break; default: arg->type = GTK_TYPE_INVALID; break; diff --git a/addressbook/backend/ebook/e-card.h b/addressbook/backend/ebook/e-card.h index 1f230159fb..8eaf235c81 100644 --- a/addressbook/backend/ebook/e-card.h +++ b/addressbook/backend/ebook/e-card.h @@ -88,6 +88,8 @@ char *e_card_get_id (ECard *card); void e_card_set_id (ECard *card, const gchar *character); char *e_card_get_vcard (ECard *card); +ECard *e_card_duplicate (ECard *card); + void e_card_phone_free (ECardPhone *phone); ECardPhone *e_card_phone_copy (const ECardPhone *phone); void e_card_delivery_address_free (ECardDeliveryAddress *addr); -- cgit v1.2.3