diff options
| author | Milan Crha <mcrha@redhat.com> | 2008-07-28 10:28:44 +0000 |
|---|---|---|
| committer | Milan Crha <mcrha@src.gnome.org> | 2008-07-28 10:28:44 +0000 |
| commit | d3b1e3003ef5322eaacbfc236e7a8b5395cf54d8 (patch) | |
| tree | cabcd6fadcfbe890835987fd8e383dcefb462977 /servers/google | |
| parent | ebb5bc93c42ded911f7d1915b973f0bb732b1e26 (diff) | |
| download | evolution-data-server-d3b1e3003ef5322eaacbfc236e7a8b5395cf54d8.tar.gz | |
** Fix for bug #468671
2008-07-28 Milan Crha <mcrha@redhat.com>
** Fix for bug #468671
* servers/google/libgdata/gdata-entry.h: (gdata_entry_get_custom), (gdata_entry_set_custom):
* servers/google/libgdata/gdata-entry.c: (gdata_entry_get_custom), (gdata_entry_set_custom):
Read/write custom values withing entry.
* servers/google/libgdata/gdata-feed.h: (gdata_feed_get_timezone):
* servers/google/libgdata/gdata-feed.c: (gdata_feed_get_timezone), (struct _GDataFeedPrivate),
(gdata_feed_init), (gdata_feed_finalize), (gdata_feed_new_from_xml):
Read timezone name of the calendar and let it be available for others.
* calendar/backends/google/e-cal-backend-google-utils.c: (gd_date_to_ical),
(e_go_item_to_cal_component), (utils_update_insertion):
Read time values in proper timezone as returned by Google Calendar.
svn path=/trunk/; revision=9210
Diffstat (limited to 'servers/google')
| -rw-r--r-- | servers/google/libgdata/ChangeLog | 12 | ||||
| -rw-r--r-- | servers/google/libgdata/gdata-entry.c | 35 | ||||
| -rw-r--r-- | servers/google/libgdata/gdata-entry.h | 3 | ||||
| -rw-r--r-- | servers/google/libgdata/gdata-feed.c | 25 | ||||
| -rw-r--r-- | servers/google/libgdata/gdata-feed.h | 2 |
5 files changed, 77 insertions, 0 deletions
diff --git a/servers/google/libgdata/ChangeLog b/servers/google/libgdata/ChangeLog index 683a7f603..434510896 100644 --- a/servers/google/libgdata/ChangeLog +++ b/servers/google/libgdata/ChangeLog @@ -1,3 +1,15 @@ +2008-07-28 Milan Crha <mcrha@redhat.com> + + ** Part of fix for bug #468671 + + * gdata-entry.h: (gdata_entry_get_custom), (gdata_entry_set_custom): + * gdata-entry.c: (gdata_entry_get_custom), (gdata_entry_set_custom): + Read/write custom values withing entry. + * gdata-feed.h: (gdata_feed_get_timezone): + * gdata-feed.c: (gdata_feed_get_timezone), (struct _GDataFeedPrivate), + (gdata_feed_init), (gdata_feed_finalize), (gdata_feed_new_from_xml): + Read timezone name of the calendar and let it be available for others. + 2008-06-13 Wang Xin <jedy.wang@sun.com> ** Fix for bug #527544. diff --git a/servers/google/libgdata/gdata-entry.c b/servers/google/libgdata/gdata-entry.c index 2c8f1f4c4..9844a7ebb 100644 --- a/servers/google/libgdata/gdata-entry.c +++ b/servers/google/libgdata/gdata-entry.c @@ -2145,4 +2145,39 @@ gdata_entry_set_postal_addresses (GDataEntry *entry, GSList *addresses) priv->entry_needs_update = TRUE; } +/** + * gdata_entry_get_custom: + * entry owns the returned pointer and is valid as long as the item is alive + * and the value isn't changed by gdata_entry_set_custom or other method. + * Do not use this method if there is direct method for your value! + **/ +const gchar * +gdata_entry_get_custom (GDataEntry *entry, const gchar *name) +{ + GDataEntryPrivate *priv; + g_return_val_if_fail (entry != NULL, NULL); + g_return_val_if_fail (name != NULL, NULL); + g_return_val_if_fail (GDATA_IS_ENTRY (entry), NULL); + + priv = GDATA_ENTRY_GET_PRIVATE (entry); + return g_hash_table_lookup (priv->field_table, name); +} + +/** + * gdata_entry_set_custom: + * Sets the custom value. + * Do not use this function when there exists direct method for your value! + **/ +void +gdata_entry_set_custom (GDataEntry *entry, const gchar *name, const gchar *value) +{ + GDataEntryPrivate *priv; + + g_return_if_fail (entry != NULL); + g_return_if_fail (name != NULL); + g_return_if_fail (GDATA_IS_ENTRY (entry)); + + priv = GDATA_ENTRY_GET_PRIVATE (entry); + g_hash_table_insert (priv->field_table, g_strdup (name), g_strdup (value ? value : "")); +} diff --git a/servers/google/libgdata/gdata-entry.h b/servers/google/libgdata/gdata-entry.h index 8e980ed9e..8d8941ed5 100644 --- a/servers/google/libgdata/gdata-entry.h +++ b/servers/google/libgdata/gdata-entry.h @@ -268,5 +268,8 @@ GDataEntryPhoneNumber * gdata_entry_get_primary_phone_number (GDataEntry *entry) GDataEntryPostalAddress * gdata_entry_get_primary_postal_address (GDataEntry *entry); +const gchar *gdata_entry_get_custom (GDataEntry *entry, const gchar *name); +void gdata_entry_set_custom (GDataEntry *entry, const gchar *name, const gchar *value); + #endif diff --git a/servers/google/libgdata/gdata-feed.c b/servers/google/libgdata/gdata-feed.c index 6142a3c46..b730b8dd3 100644 --- a/servers/google/libgdata/gdata-feed.c +++ b/servers/google/libgdata/gdata-feed.c @@ -82,6 +82,7 @@ struct _GDataFeedPrivate { gchar *summary; gchar *title; gchar *updated; + gchar *timezone; GHashTable *field_table; gchar *feedXML; @@ -177,6 +178,7 @@ gdata_feed_init(GTypeInstance *instance, priv->summary = NULL; priv->title = NULL; priv->updated = NULL; + priv->timezone = NULL; priv->authors = NULL; priv->links = NULL; @@ -241,6 +243,7 @@ gdata_feed_finalize(GObject *obj) } g_free (priv->updated); + g_free (priv->timezone); if (priv->field_table != NULL) g_hash_table_destroy(priv->field_table); @@ -578,6 +581,11 @@ gdata_feed_new_from_xml(const gchar* feedXML, const gint length) value = xmlNodeListGetString(doc, cur->xmlChildrenNode, 1); priv->updated = g_strdup ((gchar*)value); xmlFree(value); + } else if (!xmlStrcmp(cur->name, (xmlChar *)"timezone")) { + value = xmlGetProp (cur, (xmlChar *)"value"); + g_free (priv->timezone); + priv->timezone = g_strdup ((gchar*)value); + xmlFree (value); } else if (!xmlStrcmp(cur->name, (xmlChar *)"entry")) { priv->entries = g_slist_prepend(priv->entries, gdata_entry_new_from_xmlptr(doc,cur)); @@ -692,3 +700,20 @@ gdata_feed_get_entries (GDataFeed *feed) return priv->entries; } + +/** + * gdata_feed_get_timezone: + * Returned pointer owns the feed, its value is like 'Indian/Christmas' + **/ +const gchar * +gdata_feed_get_timezone (GDataFeed *feed) +{ + GDataFeedPrivate *priv; + + g_return_val_if_fail (feed != NULL, NULL); + g_return_val_if_fail (GDATA_IS_FEED (feed), NULL); + + priv = GDATA_FEED_GET_PRIVATE (feed); + + return priv->timezone; +} diff --git a/servers/google/libgdata/gdata-feed.h b/servers/google/libgdata/gdata-feed.h index 075092e18..c616a1d82 100644 --- a/servers/google/libgdata/gdata-feed.h +++ b/servers/google/libgdata/gdata-feed.h @@ -71,3 +71,5 @@ gchar * gdata_feed_generate_xml(GDataFeed *feed); gchar * gdata_feed_get_updated (GDataFeed *feed); GSList * gdata_feed_get_entries (GDataFeed *feed); + +const gchar *gdata_feed_get_timezone (GDataFeed *feed); |
