From: <svn...@op...> - 2010-09-04 22:21:37
|
Author: paule Date: Sun Sep 5 00:21:30 2010 New Revision: 6115 URL: http://www.opensync.org/changeset/6115 Log: opie-sync: add support for exceptions in calendar events Modified: plugins/opie-sync/src/opie_format.c Modified: plugins/opie-sync/src/opie_format.c ============================================================================== --- plugins/opie-sync/src/opie_format.c Sun Sep 5 00:20:02 2010 (r6114) +++ plugins/opie-sync/src/opie_format.c Sun Sep 5 00:21:30 2010 (r6115) @@ -993,6 +993,16 @@ } g_strfreev(categorytokens); } + else if(!strcasecmp(iprop->name, "exceptions")) + { + gchar** excepttokens = g_strsplit(iprop->children->content, " ", 0); + for(j=0;excepttokens[j]!=NULL;j++) + { + out_xmlfield = osync_xmlfield_new(out_xmlformat, "ExceptionDateTime", error); + osync_xmlfield_set_key_value(out_xmlfield, "Content", excepttokens[j], error); + } + g_strfreev(excepttokens); + } } /* FIXME Stuff to handle: timezone? @@ -1075,7 +1085,9 @@ /* Create a new output xml document */ xmlDoc *odoc = xmlNewDoc((xmlChar*)"1.0"); xmlNode *on_event = xmlNewDocNode(odoc, NULL, "event", NULL); - + + GString *exceptions = g_string_new(""); + OSyncXMLField *in_xmlfield = osync_xmlformat_get_first_field(in_xmlformat); while(in_xmlfield) { const char *fieldname = osync_xmlfield_get_name(in_xmlfield); @@ -1103,9 +1115,21 @@ else if(!strcmp("RecurrenceRule", fieldname)) { xmlfield_recur_to_attr(in_xmlfield, on_event, error); } + else if(!strcmp("ExceptionDateTime", fieldname)) { + const char *value = osync_xmlfield_get_key_value(in_xmlfield, "Content"); + gchar *datestr = g_strndup(value, 8); /* we only want the date part */ + g_string_append_printf(exceptions, "%s ", datestr); + g_free(datestr); + } in_xmlfield = osync_xmlfield_get_next(in_xmlfield); } + + if(exceptions->len > 0) { + g_string_truncate(exceptions, exceptions->len - 1); + xmlSetProp(on_event, "exceptions", exceptions->str); + } + g_string_free(exceptions, TRUE); /* Check for all-day event */ int timediff = end_time - start_time; |