aboutsummaryrefslogtreecommitdiffstats
path: root/addressbook/conduit/address-conduit.c
diff options
context:
space:
mode:
Diffstat (limited to 'addressbook/conduit/address-conduit.c')
-rw-r--r--addressbook/conduit/address-conduit.c154
1 files changed, 84 insertions, 70 deletions
diff --git a/addressbook/conduit/address-conduit.c b/addressbook/conduit/address-conduit.c
index 0c79daaaee..d863d22af4 100644
--- a/addressbook/conduit/address-conduit.c
+++ b/addressbook/conduit/address-conduit.c
@@ -18,7 +18,6 @@
#include <gpilotd/gnome-pilot-conduit.h>
#include <gpilotd/gnome-pilot-conduit-standard-abs.h>
#include <address-conduit.h>
-#include <libversit/vcc.h>
#include "ebook/e-book-types.h"
#include <bonobo.h>
@@ -275,93 +274,106 @@ static ECard *
ecard_from_remote_record(AddressbookConduitContext *ctxt,
PilotRecord *remote)
{
- ECard *ecard;
struct Address address;
- VObject *vobj;
- VObject *nameprop, *addressprop;
+ ECard *ecard;
+ ECardSimple *simple;
int i;
- char *temp;
+ char *string;
+ char *stringparts[4];
+ char *commaparts[3];
+ char *spaceparts[3];
+ char *commastring, *spacestring;
g_return_val_if_fail(remote!=NULL,NULL);
memset (&address, 0, sizeof (struct Address));
unpack_Address (&address, remote->record, remote->length);
-
- vobj = newVObject (VCCardProp);
- nameprop = addProp (vobj, VCNameProp);
-
-#define ADD_PROP(v,pilotprop,vprop) \
- if (address.entry [(pilotprop)]) \
- addPropValue ((v), (vprop), address.entry [(pilotprop)])
-
- ADD_PROP (nameprop, entryFirstname, VCGivenNameProp);
- ADD_PROP (nameprop, entryLastname, VCFamilyNameProp);
-
- addressprop = addProp (vobj, VCAdrProp);
-
- ADD_PROP (addressprop, entryAddress, VCStreetAddressProp);
- ADD_PROP (addressprop, entryCity, VCCityProp);
- ADD_PROP (addressprop, entryState, VCRegionProp);
- ADD_PROP (addressprop, entryZip, VCPostalCodeProp);
- ADD_PROP (addressprop, entryCountry, VCCountryNameProp);
- ADD_PROP (vobj, entryTitle, VCTitleProp);
- if (address.entry [entryCompany]) {
- VObject *orgprop;
- orgprop = addProp (vobj, VCOrgProp);
- ADD_PROP (orgprop, entryCompany, VCOrgNameProp);
- }
+ ecard = e_card_new("");
+ simple = e_card_simple_new(ecard);
+
+#define get(pilotprop) \
+ (address.entry [(pilotprop)])
+#define check(pilotprop) \
+ (address.entry [(pilotprop)] && *address.entry [(pilotprop)])
+
+ i = 0;
+ if (check(entryFirstname))
+ stringparts[i++] = get(entryFirstname);
+ if (check(entryLastname))
+ stringparts[i++] = get(entryLastname);
+ stringparts[i] = NULL;
+ string = g_strjoinv(" ", stringparts);
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_FULL_NAME, string);
+ g_free(string);
+
+ i = 0;
+ if (check (entryAddress))
+ spaceparts[i++] = get (entryAddress);
+ if (check (entryZip))
+ spaceparts[i++] = get (entryZip);
+ spaceparts[i] = 0;
+ spacestring = g_strjoinv(" ", spaceparts);
+
+ i = 0;
+ if (check (entryCity))
+ commaparts[i++] = get (entryCity);
+ if (spacestring && *spacestring)
+ commaparts[i++] = spacestring;
+ commaparts[i] = 0;
+ commastring = g_strjoinv(", ", commaparts);
+
+ i = 0;
+ if (check (entryAddress))
+ stringparts[i++] = get (entryAddress);
+ if (commastring && *commastring)
+ stringparts[i++] = commastring;
+ if (check (entryCountry))
+ stringparts[i++] = get (entryCountry);
+ stringparts[i] = NULL;
+ string = g_strjoinv("\n", stringparts);
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_ADDRESS_HOME, string);
+
+ g_free(spacestring);
+ g_free(commastring);
+ g_free(string);
+
+ if (check (entryTitle))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_TITLE, get (entryTitle));
+
+ if (check (entryCompany))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_ORG, get (entryCompany));
for (i = entryPhone1; i <= entryPhone5; i ++) {
- if (address.entry [i]) {
+ if (address.entry [i] && *(address.entry [i])) {
char *phonelabel = ctxt->ai.phoneLabels[address.phoneLabel[i - entryPhone1]];
- if (!strcmp (phonelabel, "E-mail")) {
- VObject *emailprop = addPropValue (vobj,
- VCEmailAddressProp,
- address.entry[i]);
- addProp (emailprop, VCInternetProp);
- }
- else {
- const char* phone_type = VCHomeProp;
- VObject *phoneprop = addPropValue (vobj,
- VCTelephoneProp,
- address.entry[i]);
-
- printf ("added '%s' phone entry %s\n",
- phonelabel,
- address.entry[i]);
-
- if (!strcmp (phonelabel, "Home"))
- phone_type = VCHomeProp;
- else if (!strcmp (phonelabel, "Work"))
- phone_type = VCWorkProp;
- else if (!strcmp (phonelabel, "Fax"))
- phone_type = VCFaxProp;
- else if (!strcmp (phonelabel, "Other"))
- phone_type = VCHomeProp; /* XXX */
- else if (!strcmp (phonelabel, "Main")) { /* XXX */
- addProp (phoneprop, VCHomeProp);
- phone_type = VCPreferredProp;
- }
- else if (!strcmp (phonelabel, "Pager"))
- phone_type = VCPagerProp;
- else if (!strcmp (phonelabel, "Mobile"))
- phone_type = VCCellularProp;
- addProp (phoneprop, phone_type);
- }
+ if (!strcmp (phonelabel, "E-mail"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_EMAIL, address.entry[i]);
+ else if (!strcmp (phonelabel, "Home"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_PHONE_HOME, address.entry[i]);
+ else if (!strcmp (phonelabel, "Work"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_PHONE_BUSINESS, address.entry[i]);
+ else if (!strcmp (phonelabel, "Fax"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_PHONE_BUSINESS_FAX, address.entry[i]);
+ else if (!strcmp (phonelabel, "Other"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_PHONE_OTHER, address.entry[i]);
+ else if (!strcmp (phonelabel, "Main"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_PHONE_PRIMARY, address.entry[i]);
+ else if (!strcmp (phonelabel, "Pager"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_PHONE_PAGER, address.entry[i]);
+ else if (!strcmp (phonelabel, "Mobile"))
+ e_card_simple_set(simple, E_CARD_SIMPLE_FIELD_PHONE_MOBILE, address.entry[i]);
}
}
-#undef ADD_PROP
-
- temp = writeMemVObject (NULL, NULL, vobj);
- ecard = e_card_new (temp);
- free (temp);
- cleanVObject (vobj);
+#undef get
+#undef set
free_Address(&address);
gtk_object_set (GTK_OBJECT(ecard), "pilot_id", remote->ID, NULL);
+ gtk_object_unref(GTK_OBJECT(simple));
+
return ecard;
}
@@ -1186,7 +1198,9 @@ conduit_get_gpilot_conduit (guint32 pilotId)
printf ("in address's conduit_get_gpilot_conduit\n");
#ifdef NEED_OAF_INIT_HACK
+#ifndef NO_WARNINGS
#warning "need a better way to do this"
+#endif
/* we need to find wombat with oaf, so make sure oaf
is initialized here. once the desktop is converted
to oaf and gpilotd is built with oaf, this can go away */