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).
Ok Accepted

> 
> @@ -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!
> 
The Idea is good. Just changed your code and put it into the switch
> 
> @@ -743,8 +789,8 @@
> 
> Just swap the sequence of "WORK" and "FAX".
> 
Shouldnt do anything... afaik... anyways cant hurt then if they are
swapped :)
> 
> @@ -773,7 +819,7 @@
> 
> Put the streetname into "STREET" and not into "EXT ADD"
> 
ok
> 
> @@ -943,17 +989,22 @@
> 
> Now the values of the "ADR" property are used to fill the address fields
> in palm's address db.
> 
The problem that i encountered that kept me from doing this:
Evolution has one large box where you can enter your address as a long
text. now... how should the evo plugin are anything else parse this
address into the little pieces that we require (split into street city
region etc)? every address in the world looks different. So i just took
the label and put everything into the street field. I took your code
since then we pass the buck to evolution to do the parsing. But i
definetly need to test it
> 
> @@ -970,7 +1021,7 @@
> 
> Added "LABEL" to the list of ignored properties
> 
> 

thanks for your help!

> 
> 
> 
> 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



-------------------------------------------------------
SF.Net is sponsored by: Speed Start Your Linux Apps Now.
Build and deploy apps & Web services for Linux with
a free DVD software kit from IBM. Click Now!
http://ads.osdn.com/?ad_id=1356&alloc_id=3438&op=click
_______________________________________________
Multisync-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/multisync-devel

Reply via email to