[libgdata] [core] Add support for atom:icon to GDataFeed



commit ceb151b4f8b80722516478a577297431eed056d9
Author: Richard Schwarting <aquarichy gmail com>
Date:   Thu Oct 8 22:43:42 2009 +0100

    [core] Add support for atom:icon to GDataFeed
    
    Add support for the atom:icon element to GDataFeed. Helps: bgo#589858

 docs/reference/gdata-sections.txt |    1 +
 gdata/gdata-feed.c                |   44 +++++++++++++++++++++++++++++++++++++
 gdata/gdata-feed.h                |    1 +
 gdata/gdata.symbols               |    1 +
 gdata/tests/picasaweb.c           |    1 +
 5 files changed, 48 insertions(+), 0 deletions(-)
---
diff --git a/docs/reference/gdata-sections.txt b/docs/reference/gdata-sections.txt
index 9f1b8ab..63d7b27 100644
--- a/docs/reference/gdata-sections.txt
+++ b/docs/reference/gdata-sections.txt
@@ -110,6 +110,7 @@ gdata_feed_get_generator
 gdata_feed_get_links
 gdata_feed_look_up_link
 gdata_feed_get_logo
+gdata_feed_get_icon
 gdata_feed_get_updated
 gdata_feed_get_start_index
 gdata_feed_get_total_results
diff --git a/gdata/gdata-feed.c b/gdata/gdata-feed.c
index 378acf0..3cf0346 100644
--- a/gdata/gdata-feed.c
+++ b/gdata/gdata-feed.c
@@ -60,6 +60,7 @@ struct _GDataFeedPrivate {
 	GTimeVal updated;
 	GList *categories; /* GDataCategory */
 	gchar *logo;
+	gchar *icon;
 	GList *links; /* GDataLink */
 	GList *authors; /* GDataAuthor */
 	GDataGenerator *generator;
@@ -75,6 +76,7 @@ enum {
 	PROP_TITLE,
 	PROP_SUBTITLE,
 	PROP_LOGO,
+	PROP_ICON,
 	PROP_GENERATOR,
 	PROP_ITEMS_PER_PAGE,
 	PROP_START_INDEX,
@@ -184,6 +186,21 @@ gdata_feed_class_init (GDataFeedClass *klass)
 					G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
 
 	/**
+	 * GDataFeed:icon:
+	 *
+	 * The URI of an icon for the feed.
+	 *
+	 * API reference: <ulink type="http" url="http://www.atomenabled.org/developers/syndication/atom-format-spec.php#element.icon";>atom:icon</ulink>
+	 *
+	 * Since: 0.6.0
+	 **/
+	g_object_class_install_property (gobject_class, PROP_ICON,
+					 g_param_spec_string ("icon",
+							      "Icon", "The URI of an icon for the feed.",
+							      NULL,
+							      G_PARAM_READABLE | G_PARAM_STATIC_STRINGS));
+
+	/**
 	 * GDataFeed:generator:
 	 *
 	 * Details of the software used to generate the feed.
@@ -299,6 +316,7 @@ gdata_feed_finalize (GObject *object)
 	xmlFree (priv->id);
 	xmlFree (priv->etag);
 	xmlFree (priv->logo);
+	xmlFree (priv->icon);
 
 	/* Chain up to the parent class */
 	G_OBJECT_CLASS (gdata_feed_parent_class)->finalize (object);
@@ -328,6 +346,9 @@ gdata_feed_get_property (GObject *object, guint property_id, GValue *value, GPar
 		case PROP_LOGO:
 			g_value_set_string (value, priv->logo);
 			break;
+		case PROP_ICON:
+			g_value_set_string (value, priv->icon);
+			break;
 		case PROP_GENERATOR:
 			g_value_set_object (value, priv->generator);
 			break;
@@ -444,6 +465,12 @@ parse_xml (GDataParsable *parsable, xmlDoc *doc, xmlNode *node, gpointer user_da
 			return gdata_parser_error_duplicate_element (node, error);
 
 		self->priv->logo = (gchar*) xmlNodeListGetString (doc, node->children, TRUE);
+	} else if (xmlStrcmp (node->name, (xmlChar*) "icon") == 0) {
+		/* atom:icon */
+		if (self->priv->icon != NULL)
+			return gdata_parser_error_duplicate_element (node, error);
+
+		self->priv->icon = (gchar*) xmlNodeListGetString (doc, node->children, TRUE);
 	} else if (xmlStrcmp (node->name, (xmlChar*) "link") == 0) {
 		/* atom:link */
 		GDataLink *link = GDATA_LINK (_gdata_parsable_new_from_xml_node (GDATA_TYPE_LINK, doc, node, NULL, error));
@@ -781,6 +808,23 @@ gdata_feed_get_logo (GDataFeed *self)
 }
 
 /**
+ * gdata_feed_get_icon:
+ * @self: a #GDataFeed
+ *
+ * Returns the icon URI of the feed.
+ *
+ * Return value: the feed's icon URI, or %NULL
+ *
+ * Since: 0.6.0
+ **/
+const gchar *
+gdata_feed_get_icon (GDataFeed *self)
+{
+	g_return_val_if_fail (GDATA_IS_FEED (self), NULL);
+	return self->priv->icon;
+}
+
+/**
  * gdata_feed_get_generator:
  * @self: a #GDataFeed
  *
diff --git a/gdata/gdata-feed.h b/gdata/gdata-feed.h
index 15adf85..444c635 100644
--- a/gdata/gdata-feed.h
+++ b/gdata/gdata-feed.h
@@ -79,6 +79,7 @@ GDataGenerator *gdata_feed_get_generator (GDataFeed *self);
 guint gdata_feed_get_items_per_page (GDataFeed *self);
 guint gdata_feed_get_start_index (GDataFeed *self);
 guint gdata_feed_get_total_results (GDataFeed *self);
+const gchar *gdata_feed_get_icon (GDataFeed *self);
 
 G_END_DECLS
 
diff --git a/gdata/gdata.symbols b/gdata/gdata.symbols
index c32c42c..2ee91d5 100644
--- a/gdata/gdata.symbols
+++ b/gdata/gdata.symbols
@@ -35,6 +35,7 @@ gdata_feed_get_id
 gdata_feed_get_etag
 gdata_feed_get_updated
 gdata_feed_get_logo
+gdata_feed_get_icon
 gdata_feed_get_generator
 gdata_feed_get_items_per_page
 gdata_feed_get_start_index
diff --git a/gdata/tests/picasaweb.c b/gdata/tests/picasaweb.c
index c2abfaa..d3b5784 100644
--- a/gdata/tests/picasaweb.c
+++ b/gdata/tests/picasaweb.c
@@ -546,6 +546,7 @@ test_album_feed (GDataService *service)
 	/* TODO find out why subtitle == null when returned: no subtitle for feed? printf("feed subtitle: %s\n", gdata_feed_get_subtitle(feed)); */
 	g_assert_cmpstr (gdata_feed_get_id (album_feed), ==, "http://picasaweb.google.com/data/feed/user/libgdata.picasaweb";);
 	g_assert_cmpstr (gdata_feed_get_etag (album_feed), !=, NULL); /* this varies as albums change, like when a new image is uploaded in our test! */
+	g_assert_cmpstr (gdata_feed_get_icon (album_feed), ==, "http://lh6.ggpht.com/_1kdcGyvOb8c/AAAA9mDag3s/AAAAAAAAAAA/Jq-NWYWKFao/s64-c/libgdata.picasaweb.jpg";);
 	g_assert_cmpuint (gdata_feed_get_items_per_page (album_feed), ==, 1000);
 	g_assert_cmpuint (gdata_feed_get_start_index (album_feed), ==, 1);
 	g_assert_cmpuint (gdata_feed_get_total_results (album_feed), ==, NUM_ALBUMS);



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]