From 2a03c19124650da44b7bf0a838309da1f9982f9d Mon Sep 17 00:00:00 2001 From: =?utf8?q?Sim=C3=B3n=20Pena?= Date: Sat, 19 Jun 2010 00:08:59 +0200 Subject: [PATCH] Added tmdb-image support --- src/mvs-minfo-provider.c | 33 ++++++++++++++++++++++++++++++--- src/mvs-tmdb-movie.c | 29 +++++++++-------------------- src/mvs-tmdb-movie.h | 4 ++-- 3 files changed, 41 insertions(+), 25 deletions(-) diff --git a/src/mvs-minfo-provider.c b/src/mvs-minfo-provider.c index af4ff2b..afc18c4 100644 --- a/src/mvs-minfo-provider.c +++ b/src/mvs-minfo-provider.c @@ -23,6 +23,7 @@ #include #include "mvs-tmdb-movie.h" +#include "mvs-tmdb-image.h" #include "mvs-watc-movie.h" #define TMDB_API_KEY "249e1a42df9bee09fac5e92d3a51396b" @@ -143,11 +144,35 @@ mvs_minfo_provider_new (void) return g_object_new (MVS_TYPE_MINFO_PROVIDER, NULL); } +static MvsTmdbImage* +create_tmdb_image (xmlNodePtr node) +{ + MvsTmdbImage *image = mvs_tmdb_image_new (); + gchar *value = NULL; + int i; + + /* */ + + for (i = 0; i < LAST_FIELD; i ++) { + value = xmlGetProp (node, image_fields[i]); + + g_object_set (image, image_fields[i], value, NULL); + + g_free (value); + } + + return image; +} + static MvsTmdbMovie* create_tmdb_movie (xmlNodePtr node) { xmlNodePtr cur_node = NULL; MvsTmdbMovie *movie_info = mvs_tmdb_movie_new (); + GList *image_list = NULL; /* We use the loop to append each property to the movie object */ for (cur_node = node; cur_node; cur_node = cur_node->next) { @@ -159,9 +184,8 @@ create_tmdb_movie (xmlNodePtr node) for (cur_image = cur_node->children; cur_image; cur_image = cur_image->next) { - value = xmlGetProp (cur_image, "url"); - g_message ("(%s: %s)", cur_image->name, value); - g_free (value); + MvsTmdbImage *tmdb_image = create_tmdb_image (cur_image); + image_list = g_list_append (image_list, tmdb_image); } } else { @@ -171,6 +195,9 @@ create_tmdb_movie (xmlNodePtr node) } } } + + mvs_tmdb_movie_set_images (movie_info, image_list); + return movie_info; } diff --git a/src/mvs-tmdb-movie.c b/src/mvs-tmdb-movie.c index 4d789a9..52c33a3 100644 --- a/src/mvs-tmdb-movie.c +++ b/src/mvs-tmdb-movie.c @@ -58,7 +58,7 @@ struct _MvsTmdbMoviePrivate { gchar *certification; gchar *overview; gchar *released; - gchar *images; + GList *images; gchar *last_modified; }; @@ -78,9 +78,6 @@ mvs_tmdb_movie_get_property (GObject *object, guint property_id, case PROP_ID: g_value_set_string (value, self->priv->id); break; - case PROP_IMAGES: - g_value_set_string (value, self->priv->images); - break; case PROP_IMDB_ID: g_value_set_string (value, self->priv->imdb_id); break; @@ -140,10 +137,6 @@ mvs_tmdb_movie_set_property (GObject *object, guint property_id, mvs_tmdb_movie_set_id (self, g_value_get_string (value)); break; - case PROP_IMAGES: - mvs_tmdb_movie_set_images (self, - g_value_get_string (value)); - break; case PROP_IMDB_ID: mvs_tmdb_movie_set_imdb_id (self, g_value_get_string (value)); @@ -205,7 +198,6 @@ mvs_tmdb_movie_finalize (GObject *object) g_free (self->priv->alt_name); g_free (self->priv->certification); g_free (self->priv->id); - g_free (self->priv->images); g_free (self->priv->imdb_id); g_free (self->priv->language); g_free (self->priv->last_modified); @@ -219,6 +211,9 @@ mvs_tmdb_movie_finalize (GObject *object) g_free (self->priv->type); g_free (self->priv->url); + g_list_foreach (self->priv->images, (GFunc) g_object_unref, NULL); + g_list_free (self->priv->images); + G_OBJECT_CLASS (mvs_tmdb_movie_parent_class)->finalize (object); } @@ -254,13 +249,6 @@ mvs_tmdb_movie_class_init (MvsTmdbMovieClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_IMAGES, - g_param_spec_string ("images", "Movie images", - "The movie images", - NULL, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); - - g_object_class_install_property (object_class, PROP_IMDB_ID, g_param_spec_string ("imdb_id", "Movie IMDB ID", "The movie IMDB ID", @@ -416,13 +404,14 @@ mvs_tmdb_movie_get_id (MvsTmdbMovie *self) } gboolean -mvs_tmdb_movie_set_images (MvsTmdbMovie *self, const gchar *images) +mvs_tmdb_movie_set_images (MvsTmdbMovie *self, GList *images) { g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); - return set_property (&self->priv->images, images); + self->priv->images = images; + return TRUE; } -const gchar* +GList* mvs_tmdb_movie_get_images (MvsTmdbMovie *self) { return self->priv->images; @@ -593,7 +582,7 @@ mvs_tmdb_movie_print (MvsTmdbMovie *self) g_print ("[Alternative name]: %s\n", self->priv->alt_name); g_print ("[Certification]: %s\n", self->priv->certification); g_print ("[Id]: %s\n", self->priv->id); - g_print ("[Images]: %s\n", self->priv->images); + g_print ("[Images]: %d\n", g_list_length(self->priv->images)); g_print ("[IMDB Id]: %s\n", self->priv->imdb_id); g_print ("[Language]: %s\n", self->priv->language); g_print ("[Last modified]: %s\n", self->priv->last_modified); diff --git a/src/mvs-tmdb-movie.h b/src/mvs-tmdb-movie.h index 83bb78d..57a0aa0 100644 --- a/src/mvs-tmdb-movie.h +++ b/src/mvs-tmdb-movie.h @@ -70,9 +70,9 @@ const gchar* mvs_tmdb_movie_get_id (MvsTmdbMovie *self); gboolean -mvs_tmdb_movie_set_images (MvsTmdbMovie *self, const gchar *images); +mvs_tmdb_movie_set_images (MvsTmdbMovie *self, GList *images); -const gchar* +GList* mvs_tmdb_movie_get_images (MvsTmdbMovie *self); gboolean -- 1.7.9.5