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

Reply via email to