aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/backend/ebook/e-card.c
diff options
context:
space:
mode:
authorChristopher James Lahey <clahey@helixcode.com>2000-04-10 23:46:25 +0800
committerChris Lahey <clahey@src.gnome.org>2000-04-10 23:46:25 +0800
commit99700ad43dcbf0bf95b335a9fc8f95934080d63c (patch)
treed325feef8319087bb323f592da432884d03b6e92 /addressbook/backend/ebook/e-card.c
parentc4f6086c2948f3384dd95393f7ea737db6143682 (diff)
downloadgsoc2013-evolution-99700ad43dcbf0bf95b335a9fc8f95934080d63c.tar
gsoc2013-evolution-99700ad43dcbf0bf95b335a9fc8f95934080d63c.tar.gz
gsoc2013-evolution-99700ad43dcbf0bf95b335a9fc8f95934080d63c.tar.bz2
gsoc2013-evolution-99700ad43dcbf0bf95b335a9fc8f95934080d63c.tar.lz
gsoc2013-evolution-99700ad43dcbf0bf95b335a9fc8f95934080d63c.tar.xz
gsoc2013-evolution-99700ad43dcbf0bf95b335a9fc8f95934080d63c.tar.zst
gsoc2013-evolution-99700ad43dcbf0bf95b335a9fc8f95934080d63c.zip
Fixed a bug where I was sending the wrong information to some callbacks.
2000-04-10 Christopher James Lahey <clahey@helixcode.com> * 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
Diffstat (limited to 'addressbook/backend/ebook/e-card.c')
-rw-r--r--addressbook/backend/ebook/e-card.c47
1 files changed, 40 insertions, 7 deletions
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,12 +466,20 @@ 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)
{
ParsePropertyFunc function = g_hash_table_lookup(E_CARD_CLASS(GTK_OBJECT(card)->klass)->attribute_jump_table, vObjectName(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;