Added tmdb-image support
authorSimón Pena <spenap@gmail.com>
Fri, 18 Jun 2010 22:08:59 +0000 (00:08 +0200)
committerSimón Pena <spenap@gmail.com>
Fri, 18 Jun 2010 22:08:59 +0000 (00:08 +0200)
src/mvs-minfo-provider.c
src/mvs-tmdb-movie.c
src/mvs-tmdb-movie.h

index af4ff2b..afc18c4 100644 (file)
@@ -23,6 +23,7 @@
 #include <json-glib/json-glib.h>
 
 #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;
+
+        /* <image type="poster"
+         * url="http://....jpg"
+         * size="original"
+         * id="4bc91...e007304"/> */
+
+        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;
 }
 
index 4d789a9..52c33a3 100644 (file)
@@ -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);
index 83bb78d..57a0aa0 100644 (file)
@@ -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