4 * This file is part of maevies
5 * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 3 of the
10 * License, or (at your option) any later version.
12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * General Public License for more details.
19 #include "mvs-tmdb-movie.h"
20 #include "mvs-tmdb-image.h"
22 G_DEFINE_TYPE (MvsTmdbMovie, mvs_tmdb_movie, G_TYPE_OBJECT)
44 #define GET_PRIVATE(o) \
45 (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_TMDB_MOVIE, MvsTmdbMoviePrivate))
47 struct _MvsTmdbMoviePrivate {
67 mvs_tmdb_movie_get_property (GObject *object, guint property_id,
68 GValue *value, GParamSpec *pspec)
70 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
72 switch (property_id) {
74 g_value_set_string (value, self->priv->alt_name);
76 case PROP_CERTIFICATION:
77 g_value_set_string (value, self->priv->certification);
80 g_value_set_string (value, self->priv->id);
83 g_value_set_string (value, self->priv->imdb_id);
86 g_value_set_string (value, self->priv->language);
88 case PROP_LAST_MODIFIED:
89 g_value_set_string (value, self->priv->last_modified);
92 g_value_set_string (value, self->priv->name);
95 g_value_set_string (value, self->priv->overview);
98 g_value_set_string (value, self->priv->popularity);
101 g_value_set_string (value, self->priv->rating);
104 g_value_set_string (value, self->priv->released);
107 g_value_set_string (value, self->priv->score);
109 case PROP_TRANSLATED:
110 g_value_set_string (value, self->priv->id);
113 g_value_set_string (value, self->priv->id);
116 g_value_set_string (value, self->priv->url);
119 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
124 mvs_tmdb_movie_set_property (GObject *object, guint property_id,
125 const GValue *value, GParamSpec *pspec)
127 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
129 switch (property_id) {
131 mvs_tmdb_movie_set_alt_name (self, g_value_get_string (value));
133 case PROP_CERTIFICATION:
134 mvs_tmdb_movie_set_certification (self,
135 g_value_get_string (value));
138 mvs_tmdb_movie_set_id (self,
139 g_value_get_string (value));
142 mvs_tmdb_movie_set_imdb_id (self,
143 g_value_get_string (value));
146 mvs_tmdb_movie_set_language (self,
147 g_value_get_string (value));
149 case PROP_LAST_MODIFIED:
150 mvs_tmdb_movie_set_last_modified (self,
151 g_value_get_string (value));
154 mvs_tmdb_movie_set_name (self,
155 g_value_get_string (value));
158 mvs_tmdb_movie_set_overview (self,
159 g_value_get_string (value));
161 case PROP_POPULARITY:
162 mvs_tmdb_movie_set_popularity (self,
163 g_value_get_string (value));
166 mvs_tmdb_movie_set_rating (self,
167 g_value_get_string (value));
170 mvs_tmdb_movie_set_released (self,
171 g_value_get_string (value));
174 mvs_tmdb_movie_set_score (self,
175 g_value_get_string (value));
177 case PROP_TRANSLATED:
178 mvs_tmdb_movie_set_translated (self,
179 g_value_get_string (value));
182 mvs_tmdb_movie_set_type (self,
183 g_value_get_string (value));
186 mvs_tmdb_movie_set_url (self,
187 g_value_get_string (value));
190 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
195 mvs_tmdb_movie_finalize (GObject *object)
197 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
199 g_free (self->priv->alt_name);
200 g_free (self->priv->certification);
201 g_free (self->priv->id);
202 g_free (self->priv->imdb_id);
203 g_free (self->priv->language);
204 g_free (self->priv->last_modified);
205 g_free (self->priv->name);
206 g_free (self->priv->overview);
207 g_free (self->priv->popularity);
208 g_free (self->priv->rating);
209 g_free (self->priv->released);
210 g_free (self->priv->score);
211 g_free (self->priv->translated);
212 g_free (self->priv->type);
213 g_free (self->priv->url);
215 g_list_foreach (self->priv->images, (GFunc) g_object_unref, NULL);
216 g_list_free (self->priv->images);
218 G_OBJECT_CLASS (mvs_tmdb_movie_parent_class)->finalize (object);
222 mvs_tmdb_movie_class_init (MvsTmdbMovieClass *klass)
224 GObjectClass *object_class = G_OBJECT_CLASS (klass);
226 g_type_class_add_private (klass, sizeof (MvsTmdbMoviePrivate));
228 object_class->get_property = mvs_tmdb_movie_get_property;
229 object_class->set_property = mvs_tmdb_movie_set_property;
230 object_class->finalize = mvs_tmdb_movie_finalize;
232 g_object_class_install_property
233 (object_class, PROP_ALT_NAME,
234 g_param_spec_string ("alternative_name", "Alternative name",
235 "The movie alternative name",
237 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
239 g_object_class_install_property
240 (object_class, PROP_CERTIFICATION,
241 g_param_spec_string ("certification", "Movie certification",
242 "The movie certification",
244 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
246 g_object_class_install_property
247 (object_class, PROP_ID,
248 g_param_spec_string ("id", "Movie ID", "The movie ID",
250 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
252 g_object_class_install_property
253 (object_class, PROP_IMDB_ID,
254 g_param_spec_string ("imdb_id", "Movie IMDB ID",
257 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
259 g_object_class_install_property
260 (object_class, PROP_LANGUAGE,
261 g_param_spec_string ("language", "Movie language",
262 "The movie language",
264 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
266 g_object_class_install_property
267 (object_class, PROP_LAST_MODIFIED,
268 g_param_spec_string ("last_modified_at",
269 "Movie last modified date",
270 "The movie last modification date",
272 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
274 g_object_class_install_property
275 (object_class, PROP_NAME,
276 g_param_spec_string ("name", "Movie name", "The movie name",
278 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
280 g_object_class_install_property
281 (object_class, PROP_OVERVIEW,
282 g_param_spec_string ("overview", "Movie overview", "The movie overview",
284 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
286 g_object_class_install_property
287 (object_class, PROP_POPULARITY,
288 g_param_spec_string ("popularity", "Movie popularity", "The movie popularity",
290 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
292 g_object_class_install_property
293 (object_class, PROP_RATING,
294 g_param_spec_string ("rating", "Movie rating", "The movie rating",
296 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
298 g_object_class_install_property
299 (object_class, PROP_RELEASED,
300 g_param_spec_string ("released", "Movie released date", "The movie released date",
302 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
304 g_object_class_install_property
305 (object_class, PROP_SCORE,
306 g_param_spec_string ("score", "Movie score", "The movie score",
308 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
310 g_object_class_install_property
311 (object_class, PROP_TRANSLATED,
312 g_param_spec_string ("translated", "Movie translated status", "Tells if the movie is translated",
314 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
316 g_object_class_install_property
317 (object_class, PROP_TYPE,
318 g_param_spec_string ("type", "Movie type", "The movie type",
320 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
322 g_object_class_install_property
323 (object_class, PROP_URL,
324 g_param_spec_string ("url", "Movie url", "The movie url",
326 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
330 mvs_tmdb_movie_init (MvsTmdbMovie *self)
332 self->priv = GET_PRIVATE (self);
334 self->priv->alt_name = NULL;
335 self->priv->certification = NULL;
336 self->priv->id = NULL;
337 self->priv->images = NULL;
338 self->priv->imdb_id = NULL;
339 self->priv->language = NULL;
340 self->priv->last_modified = NULL;
341 self->priv->name = NULL;
342 self->priv->overview = NULL;
343 self->priv->popularity = NULL;
344 self->priv->rating = NULL;
345 self->priv->released = NULL;
346 self->priv->score = NULL;
347 self->priv->translated = NULL;
348 self->priv->type = NULL;
349 self->priv->url = NULL;
353 mvs_tmdb_movie_new (void)
355 return g_object_new (MVS_TYPE_TMDB_MOVIE, NULL);
359 set_property (gchar **property, const gchar *value)
362 *property = g_strdup (value);
364 return *property != NULL;
368 mvs_tmdb_movie_set_alt_name (MvsTmdbMovie *self, const gchar *alt_name)
370 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
371 return set_property (&self->priv->alt_name, alt_name);
375 mvs_tmdb_movie_get_alt_name (MvsTmdbMovie *self)
377 return self->priv->alt_name;
381 mvs_tmdb_movie_set_certification (MvsTmdbMovie *self,
382 const gchar *certification)
384 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
385 return set_property (&self->priv->certification, certification);
389 mvs_tmdb_movie_get_certification (MvsTmdbMovie *self)
391 return self->priv->certification;
395 mvs_tmdb_movie_set_id (MvsTmdbMovie *self, const gchar *id)
397 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
398 return set_property (&self->priv->id, id);
402 mvs_tmdb_movie_get_id (MvsTmdbMovie *self)
404 return self->priv->id;
408 mvs_tmdb_movie_set_images (MvsTmdbMovie *self, GList *images)
410 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
411 self->priv->images = images;
416 mvs_tmdb_movie_get_images (MvsTmdbMovie *self)
418 return self->priv->images;
422 mvs_tmdb_movie_set_imdb_id (MvsTmdbMovie *self, const gchar *imdb_id)
424 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
425 return set_property (&self->priv->imdb_id, imdb_id);
429 mvs_tmdb_movie_get_imdb_id (MvsTmdbMovie *self)
431 return self->priv->imdb_id;
435 mvs_tmdb_movie_set_language (MvsTmdbMovie *self, const gchar *language)
437 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
438 return set_property (&self->priv->language, language);
442 mvs_tmdb_movie_get_language (MvsTmdbMovie *self)
444 return self->priv->language;
448 mvs_tmdb_movie_set_last_modified (MvsTmdbMovie *self,
449 const gchar *last_modified)
451 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
452 return set_property (&self->priv->last_modified, last_modified);
456 mvs_tmdb_movie_get_last_movified (MvsTmdbMovie *self)
458 return self->priv->last_modified;
462 mvs_tmdb_movie_set_name (MvsTmdbMovie *self, const gchar *name)
464 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
465 return set_property (&self->priv->name, name);
469 mvs_tmdb_movie_get_name (MvsTmdbMovie *self)
471 return self->priv->name;
475 mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, const gchar *overview)
477 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
478 return set_property (&self->priv->overview, overview);
482 mvs_tmdb_movie_get_overview (MvsTmdbMovie *self)
484 return self->priv->overview;
488 mvs_tmdb_movie_set_popularity (MvsTmdbMovie *self, const gchar *popularity)
490 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
491 return set_property (&self->priv->popularity, popularity);
495 mvs_tmdb_movie_get_popularity (MvsTmdbMovie *self)
497 return self->priv->popularity;
501 mvs_tmdb_movie_set_rating (MvsTmdbMovie *self, const gchar *rating)
503 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
504 return set_property (&self->priv->rating, rating);
508 mvs_tmdb_movie_get_rating (MvsTmdbMovie *self)
510 return self->priv->rating;
514 mvs_tmdb_movie_set_released (MvsTmdbMovie *self, const gchar *released)
516 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
517 return set_property (&self->priv->released, released);
521 mvs_tmdb_movie_get_released (MvsTmdbMovie *self)
523 return self->priv->released;
527 mvs_tmdb_movie_set_score (MvsTmdbMovie *self, const gchar *score)
529 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
530 return set_property (&self->priv->score, score);
534 mvs_tmdb_movie_get_score (MvsTmdbMovie *self)
536 return self->priv->score;
540 mvs_tmdb_movie_set_translated (MvsTmdbMovie *self, const gchar *translated)
542 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
543 return set_property (&self->priv->translated, translated);
547 mvs_tmdb_movie_get_translated (MvsTmdbMovie *self)
549 return self->priv->translated;
553 mvs_tmdb_movie_set_type (MvsTmdbMovie *self, const gchar *type)
555 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
556 return set_property (&self->priv->type, type);
560 mvs_tmdb_movie_get_source_type (MvsTmdbMovie *self)
562 return self->priv->type;
566 mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url)
568 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
569 return set_property (&self->priv->url, url);
573 mvs_tmdb_movie_get_url (MvsTmdbMovie *self)
575 return self->priv->url;
579 mvs_tmdb_movie_print (MvsTmdbMovie *self)
581 g_return_if_fail (MVS_IS_TMDB_MOVIE (self));
583 g_print ("[Alternative name]: %s\n", self->priv->alt_name);
584 g_print ("[Certification]: %s\n", self->priv->certification);
585 g_print ("[Id]: %s\n", self->priv->id);
586 g_print ("[Images]: %d\n", g_list_length(self->priv->images));
587 g_list_foreach (self->priv->images, (GFunc) mvs_tmdb_image_print, NULL);
588 g_print ("[IMDB Id]: %s\n", self->priv->imdb_id);
589 g_print ("[Language]: %s\n", self->priv->language);
590 g_print ("[Last modified]: %s\n", self->priv->last_modified);
591 g_print ("[Name]: %s\n", self->priv->name);
592 g_print ("[Overview]: %s\n", self->priv->overview);
593 g_print ("[Popularity]: %s\n", self->priv->popularity);
594 g_print ("[Rating]: %s\n", self->priv->rating);
595 g_print ("[Released]: %s\n", self->priv->released);
596 g_print ("[Score]: %s\n", self->priv->score);
597 g_print ("[Translated]: %s\n", self->priv->translated);
598 g_print ("[Type]: %s\n", self->priv->type);
599 g_print ("[URL]: %s\n", self->priv->url);