Cool! Thanks for the work!
I will look over your patches when i find time to. It is only 3 weeks
till our exams at university so im a bit low on time...
Armin
On Sun, 2004-01-25 at 17:18, Thomas Stieler wrote:
> Hello,
>
> on my way getting a resync between Evolution and Palm Tungsten E working
> I applied some patches to plugins/palm_sync/src/vcard.c, perhaps these
> are useful for others working with both evolution and palm devices?
>
> Here are some comments, the full diff is at the end of the mail:
>
> @@ -145,6 +146,9 @@
>
> As described in my mail from 2004-01-05: Just take the summary of the
> event as the description for the alarm (this is the default behaviour
> from evolution).
>
>
> @@ -693,12 +697,54 @@
>
> (Be warned: I am very unexercised in programming in C (in general I use
> java), so check my code. Perhaps the strncpy-stuff could be solved much
> smarter using string functions from gtk-api?)
>
> With this patch I generate a FN property within the vcard, simply by
> combining firstname and lastname. This provides a better synchronization
> with evolution!
>
>
> @@ -743,8 +789,8 @@
>
> Just swap the sequence of "WORK" and "FAX".
>
>
> @@ -773,7 +819,7 @@
>
> Put the streetname into "STREET" and not into "EXT ADD"
>
>
> @@ -943,17 +989,22 @@
>
> Now the values of the "ADR" property are used to fill the address fields
> in palm's address db.
>
>
> @@ -970,7 +1021,7 @@
>
> Added "LABEL" to the list of ignored properties
>
>
>
>
>
> Now the complete diff:
>
>
> [EMAIL PROTECTED]:~/palmprg/multisync> cvs diff -uw plugins/palm_sync/src/vcard.c
> Index: plugins/palm_sync/src/vcard.c
> ===================================================================
> RCS file: /cvsroot/multisync/multisync/plugins/palm_sync/src/vcard.c,v
> retrieving revision 1.16
> diff -u -w -r1.16 vcard.c
> --- plugins/palm_sync/src/vcard.c 29 Nov 2003 14:14:43 -0000 1.16
> +++ plugins/palm_sync/src/vcard.c 25 Jan 2004 15:48:31 -0000
> @@ -145,6 +146,9 @@
> break;
> }
>
> + if (appointment.description)
> + addPropValueO(prop, VCDescriptionPropO,
> appointment.description);
> +
> prop = addPropValueO(prop, VCTriggerPropO, buffer);
> addPropValueO(prop, VCRelatedPropO, "START");
> addPropValueO(prop, VCValuePropO, "DURATION");
> @@ -693,12 +697,54 @@
> GString *vcardstr;
> char *vcardptr;
> gchar *label = NULL;
> + int firstnamelength = 0, lastnamelength = 0;
>
> palm_debug(conn, 2, "Converting address to vcard");
>
> vcard = newVObjectO(VCCardPropO);
> addPropValueO(vcard, VCVersionPropO, "2.1");
>
> +
> + if (address.entry[0])
> + lastnamelength = strlen(address.entry[0]);
> +
> + if (address.entry[1])
> + firstnamelength= strlen(address.entry[1]);
> +
> + // if we have first- or lastname compose a fullname
> + if (firstnamelength + lastnamelength > 0) {
> + char *tmp;
> + char *fname = NULL;
> +
> + if (firstnamelength > 0) {
> + // we have firstname, so allocate place for firstname,
> lastname, a space
> + // and trailing zero (we don't need the space, if we have no
> lastname, but
> + // I don't mind, do you?
> +
> + fname = malloc(firstnamelength + lastnamelength + 2);
> + strncpy(fname, address.entry[1], firstnamelength + 1);
> +
> + if (lastnamelength > 0) {
> + // now append lastname
> + fname[firstnamelength] = ' ';
> + strncpy(fname + firstnamelength + 1,
> address.entry[0], lastnamelength + 1);
> + }
> + } else {
> + // no firstname, so allocate place for lastname and trailing
> zero
> + fname = malloc(lastnamelength + 1);
> + strncpy(fname, address.entry[0], lastnamelength + 1);
> + }
> +
> + // do the conversion and use converted string
> + tmp = g_convert(fname, strlen(fname), "utf8", "cp1252", NULL, NULL,
> NULL);
> + free(fname);
> + fname = tmp;
> +
> + addPropValueO(vcard, VCFullNamePropO, fname);
> + }
> +
> +
> +
> for (i = 0; i < 19; i++) {
> if (address.entry[i]) {
> char *tmp;
> @@ -743,8 +789,8 @@
> break;
> case 2:
> prop = addPropValueO(vcard,
> "TEL", address.entry[i]);
> - addPropO(prop, "FAX");
> addPropO(prop, "WORK");
> + addPropO(prop, "FAX");
> break;
> case 3:
> prop = addPropValueO(vcard,
> "TEL", address.entry[i]);
> @@ -773,7 +819,7 @@
> addrprop = addPropO(vcard, "ADR");
> addPropValueO(addrprop, "ENCODING",
> "QUOTED-PRINTABLE");
> }
> - addPropValueO(addrprop, "EXT ADD",
> address.entry[i]);
> + addPropValueO(addrprop, "STREET",
> address.entry[i]);
> break;
> case 9:
> if (!addrprop) {
> @@ -943,17 +989,22 @@
> goto next;
> }
>
> - //Address
> - //TODO
> - if (!strcmp(attributes, "LABEL")) {
> - if (isAPropertyOfO(v, "WORK"))
> - entry->address.entry[8] =
> fakeCStringO(vObjectUStringZValueO(v));
> - if (!entry->address.entry[8])
> - entry->address.entry[8] =
> fakeCStringO(vObjectUStringZValueO(v));
> - goto next;
> - }
> -
> if (!strcmp(attributes, "ADR")) {
> + if (prop = isAPropertyOfO(v, VCStreetAddressPropO)) {
> + entry->address.entry[8] =
> fakeCStringO(vObjectUStringZValueO(prop));
> + }
> + if (prop = isAPropertyOfO(v, VCCityPropO)) {
> + entry->address.entry[9] =
> fakeCStringO(vObjectUStringZValueO(prop));
> + }
> + if (prop = isAPropertyOfO(v, VCRegionPropO)) {
> + entry->address.entry[10] =
> fakeCStringO(vObjectUStringZValueO(prop));
> + }
> + if (prop = isAPropertyOfO(v, VCPostalCodePropO)) {
> + entry->address.entry[11] =
> fakeCStringO(vObjectUStringZValueO(prop));
> + }
> + if (prop = isAPropertyOfO(v, VCCountryNamePropO)) {
> + entry->address.entry[12] =
> fakeCStringO(vObjectUStringZValueO(prop));
> + }
> goto next;
> }
>
> @@ -970,7 +1021,7 @@
> }
>
> //Ignore these
> - if (!strcmp(attributes, "FN") || !strcmp(attributes, "VERSION") ||
> !strcmp(attributes, "X-EVOLUTION-FILE-AS") || !strcmp(attributes, "UID"))
> + if (!strcmp(attributes, "LABEL") || !strcmp(attributes, "FN") ||
> !strcmp(attributes, "VERSION") || !strcmp(attributes, "X-EVOLUTION-FILE-AS") ||
> !strcmp(attributes, "UID"))
> goto next;
>
> //Catch all
>
>
> Regards,
> Thomas
-------------------------------------------------------
The SF.Net email is sponsored by EclipseCon 2004
Premiere Conference on Open Tools Development and Integration
See the breadth of Eclipse activity. February 3-5 in Anaheim, CA.
http://www.eclipsecon.org/osdn
_______________________________________________
Multisync-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/multisync-devel