diff options
author | Milan Crha <mcrha@redhat.com> | 2009-05-04 22:31:12 +0800 |
---|---|---|
committer | Milan Crha <mcrha@redhat.com> | 2009-05-04 22:31:12 +0800 |
commit | b73ed1d9ffd6975d94638364b6a7fcd7f29a6c23 (patch) | |
tree | 8d4629a4e1e88fbd807e115667bcad514e81c378 /plugins/publish-calendar/publish-location.c | |
parent | 62085ae755dcd578448ffb35be6cb911c58a89e7 (diff) | |
download | gsoc2013-evolution-b73ed1d9ffd6975d94638364b6a7fcd7f29a6c23.tar.gz gsoc2013-evolution-b73ed1d9ffd6975d94638364b6a7fcd7f29a6c23.tar.zst gsoc2013-evolution-b73ed1d9ffd6975d94638364b6a7fcd7f29a6c23.zip |
BUGFIX: 547414 - Publish Free/Busy calendar for configurable time
Allow user define time duration for the Free/Busy calendar information
in the publish-calendar plugin.
Diffstat (limited to 'plugins/publish-calendar/publish-location.c')
-rw-r--r-- | plugins/publish-calendar/publish-location.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/plugins/publish-calendar/publish-location.c b/plugins/publish-calendar/publish-location.c index 2de877b093..1ebe2cfefb 100644 --- a/plugins/publish-calendar/publish-location.c +++ b/plugins/publish-calendar/publish-location.c @@ -120,7 +120,7 @@ e_publish_uri_from_xml (const gchar *xml) { xmlDocPtr doc; xmlNodePtr root, p; - xmlChar *location, *enabled, *frequency; + xmlChar *location, *enabled, *frequency, *fb_duration_value, *fb_duration_type; xmlChar *publish_time, *format, *username = NULL; GSList *events = NULL; EPublishUri *uri; @@ -146,6 +146,8 @@ e_publish_uri_from_xml (const gchar *xml) frequency = xmlGetProp (root, (const unsigned char *)"frequency"); format = xmlGetProp (root, (const unsigned char *)"format"); publish_time = xmlGetProp (root, (const unsigned char *)"publish_time"); + fb_duration_value = xmlGetProp (root, (xmlChar *)"fb_duration_value"); + fb_duration_type = xmlGetProp (root, (xmlChar *)"fb_duration_type"); if (location != NULL) uri->location = (char *)location; @@ -158,6 +160,23 @@ e_publish_uri_from_xml (const gchar *xml) if (publish_time != NULL) uri->last_pub_time = (char *)publish_time; + if (fb_duration_value) + uri->fb_duration_value = atoi ((char *)fb_duration_value); + else + uri->fb_duration_value = -1; + + if (uri->fb_duration_value < 1) + uri->fb_duration_value = 6; + else if (uri->fb_duration_value > 100) + uri->fb_duration_value = 100; + + if (fb_duration_type && g_str_equal ((char *)fb_duration_type, "days")) + uri->fb_duration_type = FB_DURATION_DAYS; + else if (fb_duration_type && g_str_equal ((char *)fb_duration_type, "months")) + uri->fb_duration_type = FB_DURATION_MONTHS; + else + uri->fb_duration_type = FB_DURATION_WEEKS; + uri->password = g_strdup (""); for (p = root->children; p != NULL; p = p->next) { @@ -173,6 +192,8 @@ e_publish_uri_from_xml (const gchar *xml) xmlFree (enabled); xmlFree (frequency); xmlFree (format); + xmlFree (fb_duration_value); + xmlFree (fb_duration_type); xmlFreeDoc (doc); return uri; @@ -204,6 +225,17 @@ e_publish_uri_to_xml (EPublishUri *uri) xmlSetProp (root, (const unsigned char *)"format", (unsigned char *)format); xmlSetProp (root, (const unsigned char *)"publish_time", (unsigned char *)uri->last_pub_time); + g_free (format); + format = g_strdup_printf ("%d", uri->fb_duration_value); + xmlSetProp (root, (xmlChar *)"fb_duration_value", (xmlChar *)format); + + if (uri->fb_duration_type == FB_DURATION_DAYS) + xmlSetProp (root, (xmlChar *)"fb_duration_type", (xmlChar *)"days"); + else if (uri->fb_duration_type == FB_DURATION_MONTHS) + xmlSetProp (root, (xmlChar *)"fb_duration_type", (xmlChar *)"months"); + else + xmlSetProp (root, (xmlChar *)"fb_duration_type", (xmlChar *)"weeks"); + for (calendars = uri->events; calendars != NULL; calendars = g_slist_next (calendars)) { xmlNodePtr node; node = xmlNewChild (root, NULL, (const unsigned char *)"event", NULL); |