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"
21 G_DEFINE_TYPE (MvsTmdbMovie, mvs_tmdb_movie, G_TYPE_OBJECT)
45 #define GET_PRIVATE(o) \
46 (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_TMDB_MOVIE, MvsTmdbMoviePrivate))
48 struct _MvsTmdbMoviePrivate {
68 mvs_tmdb_movie_get_property (GObject *object, guint property_id,
69 GValue *value, GParamSpec *pspec)
71 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
73 switch (property_id) {
75 g_value_set_string (value, self->priv->alt_name);
77 case PROP_CERTIFICATION:
78 g_value_set_string (value, self->priv->certification);
81 g_value_set_string (value, self->priv->id);
84 g_value_set_string (value, self->priv->images);
87 g_value_set_string (value, self->priv->imdb_id);
90 g_value_set_string (value, self->priv->language);
92 case PROP_LAST_MODIFIED:
93 g_value_set_string (value, self->priv->last_modified);
96 g_value_set_string (value, self->priv->name);
99 g_value_set_string (value, self->priv->overview);
101 case PROP_POPULARITY:
102 g_value_set_string (value, self->priv->popularity);
105 g_value_set_string (value, self->priv->rating);
108 g_value_set_string (value, self->priv->released);
111 g_value_set_string (value, self->priv->score);
113 case PROP_TRANSLATED:
114 g_value_set_string (value, self->priv->id);
117 g_value_set_string (value, self->priv->id);
120 g_value_set_string (value, self->priv->url);
123 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
128 mvs_tmdb_movie_set_property (GObject *object, guint property_id,
129 const GValue *value, GParamSpec *pspec)
131 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
134 switch (property_id) {
136 mvs_tmdb_movie_set_alt_name (self, g_value_get_string (value));
138 case PROP_CERTIFICATION:
139 mvs_tmdb_movie_set_certification (self,
140 g_value_get_string (value));
143 mvs_tmdb_movie_set_id (self,
144 g_value_get_string (value));
147 mvs_tmdb_movie_set_images (self,
148 g_value_get_string (value));
151 mvs_tmdb_movie_set_imdb_id (self,
152 g_value_get_string (value));
155 mvs_tmdb_movie_set_language (self,
156 g_value_get_string (value));
158 case PROP_LAST_MODIFIED:
159 mvs_tmdb_movie_set_last_modified (self,
160 g_value_get_string (value));
163 mvs_tmdb_movie_set_name (self,
164 g_value_get_string (value));
167 mvs_tmdb_movie_set_overview (self,
168 g_value_get_string (value));
170 case PROP_POPULARITY:
171 mvs_tmdb_movie_set_popularity (self,
172 g_value_get_string (value));
175 mvs_tmdb_movie_set_rating (self,
176 g_value_get_string (value));
179 mvs_tmdb_movie_set_released (self,
180 g_value_get_string (value));
183 mvs_tmdb_movie_set_score (self,
184 g_value_get_string (value));
186 case PROP_TRANSLATED:
187 mvs_tmdb_movie_set_translated (self,
188 g_value_get_string (value));
191 mvs_tmdb_movie_set_type (self,
192 g_value_get_string (value));
195 mvs_tmdb_movie_set_url (self,
196 g_value_get_string (value));
199 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
204 mvs_tmdb_movie_finalize (GObject *object)
206 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
208 g_free (self->priv->alt_name);
209 g_free (self->priv->certification);
210 g_free (self->priv->id);
211 g_free (self->priv->images);
212 g_free (self->priv->imdb_id);
213 g_free (self->priv->language);
214 g_free (self->priv->last_modified);
215 g_free (self->priv->name);
216 g_free (self->priv->overview);
217 g_free (self->priv->popularity);
218 g_free (self->priv->rating);
219 g_free (self->priv->released);
220 g_free (self->priv->score);
221 g_free (self->priv->translated);
222 g_free (self->priv->type);
223 g_free (self->priv->url);
225 G_OBJECT_CLASS (mvs_tmdb_movie_parent_class)->finalize (object);
229 mvs_tmdb_movie_class_init (MvsTmdbMovieClass *klass)
231 GObjectClass *object_class = G_OBJECT_CLASS (klass);
233 g_type_class_add_private (klass, sizeof (MvsTmdbMoviePrivate));
235 object_class->get_property = mvs_tmdb_movie_get_property;
236 object_class->set_property = mvs_tmdb_movie_set_property;
237 object_class->finalize = mvs_tmdb_movie_finalize;
239 g_object_class_install_property
240 (object_class, PROP_ALT_NAME,
241 g_param_spec_string ("alternative_name", "Alternative name",
242 "The movie alternative name",
244 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
246 g_object_class_install_property
247 (object_class, PROP_CERTIFICATION,
248 g_param_spec_string ("certification", "Movie certification",
249 "The movie certification",
251 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
253 g_object_class_install_property
254 (object_class, PROP_ID,
255 g_param_spec_string ("id", "Movie ID", "The movie ID",
257 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
259 g_object_class_install_property
260 (object_class, PROP_IMAGES,
261 g_param_spec_string ("images", "Movie images",
264 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
266 g_object_class_install_property
267 (object_class, PROP_IMDB_ID,
268 g_param_spec_string ("imdb_id", "Movie IMDB ID",
271 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
273 g_object_class_install_property
274 (object_class, PROP_LANGUAGE,
275 g_param_spec_string ("language", "Movie language",
276 "The movie language",
278 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
280 g_object_class_install_property
281 (object_class, PROP_LAST_MODIFIED,
282 g_param_spec_string ("last_modified_at",
283 "Movie last modified date",
284 "The movie last modification date",
286 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
288 g_object_class_install_property
289 (object_class, PROP_NAME,
290 g_param_spec_string ("name", "Movie name", "The movie name",
292 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
294 g_object_class_install_property
295 (object_class, PROP_OVERVIEW,
296 g_param_spec_string ("overview", "Movie overview", "The movie overview",
298 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
300 g_object_class_install_property
301 (object_class, PROP_POPULARITY,
302 g_param_spec_string ("popularity", "Movie popularity", "The movie popularity",
304 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
306 g_object_class_install_property
307 (object_class, PROP_RATING,
308 g_param_spec_string ("rating", "Movie rating", "The movie rating",
310 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
312 g_object_class_install_property
313 (object_class, PROP_RELEASED,
314 g_param_spec_string ("released", "Movie released date", "The movie released date",
316 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
318 g_object_class_install_property
319 (object_class, PROP_SCORE,
320 g_param_spec_string ("score", "Movie score", "The movie score",
322 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
324 g_object_class_install_property
325 (object_class, PROP_TRANSLATED,
326 g_param_spec_string ("translated", "Movie translated status", "Tells if the movie is translated",
328 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
330 g_object_class_install_property
331 (object_class, PROP_TYPE,
332 g_param_spec_string ("type", "Movie type", "The movie type",
334 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
336 g_object_class_install_property
337 (object_class, PROP_URL,
338 g_param_spec_string ("url", "Movie url", "The movie url",
340 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
344 mvs_tmdb_movie_init (MvsTmdbMovie *self)
346 self->priv = GET_PRIVATE (self);
348 self->priv->alt_name = NULL;
349 self->priv->certification = NULL;
350 self->priv->id = NULL;
351 self->priv->images = NULL;
352 self->priv->imdb_id = NULL;
353 self->priv->language = NULL;
354 self->priv->last_modified = NULL;
355 self->priv->name = NULL;
356 self->priv->overview = NULL;
357 self->priv->popularity = NULL;
358 self->priv->rating = NULL;
359 self->priv->released = NULL;
360 self->priv->score = NULL;
361 self->priv->translated = NULL;
362 self->priv->type = NULL;
363 self->priv->url = NULL;
367 mvs_tmdb_movie_new (void)
369 return g_object_new (MVS_TYPE_TMDB_MOVIE, NULL);
373 set_property (gchar **property, const gchar *value)
376 *property = g_strdup (value);
382 mvs_tmdb_movie_set_alt_name (MvsTmdbMovie *self, const gchar *alt_name)
384 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
385 return set_property (&self->priv->alt_name, alt_name);
389 mvs_tmdb_movie_get_alt_name (MvsTmdbMovie *self)
391 return self->priv->alt_name;
395 mvs_tmdb_movie_set_certification (MvsTmdbMovie *self,
396 const gchar *certification)
398 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
399 return set_property (&self->priv->certification, certification);
403 mvs_tmdb_movie_get_certification (MvsTmdbMovie *self)
405 return self->priv->certification;
409 mvs_tmdb_movie_set_id (MvsTmdbMovie *self, const gchar *id)
411 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
412 return set_property (&self->priv->id, id);
416 mvs_tmdb_movie_get_id (MvsTmdbMovie *self)
418 return self->priv->id;
422 mvs_tmdb_movie_set_images (MvsTmdbMovie *self, const gchar *images)
424 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
425 return set_property (&self->priv->images, images);
429 mvs_tmdb_movie_get_images (MvsTmdbMovie *self)
431 return self->priv->images;
435 mvs_tmdb_movie_set_imdb_id (MvsTmdbMovie *self, const gchar *imdb_id)
437 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
438 return set_property (&self->priv->imdb_id, imdb_id);
442 mvs_tmdb_movie_get_imdb_id (MvsTmdbMovie *self)
444 return self->priv->imdb_id;
448 mvs_tmdb_movie_set_language (MvsTmdbMovie *self, const gchar *language)
450 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
451 return set_property (&self->priv->language, language);
455 mvs_tmdb_movie_get_language (MvsTmdbMovie *self)
457 return self->priv->language;
461 mvs_tmdb_movie_set_last_modified (MvsTmdbMovie *self,
462 const gchar *last_modified)
464 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
465 return set_property (&self->priv->last_modified, last_modified);
469 mvs_tmdb_movie_get_last_movified (MvsTmdbMovie *self)
471 return self->priv->last_modified;
475 mvs_tmdb_movie_set_name (MvsTmdbMovie *self, const gchar *name)
477 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
478 return set_property (&self->priv->name, name);
482 mvs_tmdb_movie_get_name (MvsTmdbMovie *self)
484 return self->priv->name;
488 mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, const gchar *overview)
490 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
491 return set_property (&self->priv->overview, overview);
495 mvs_tmdb_movie_get_overview (MvsTmdbMovie *self)
497 return self->priv->overview;
501 mvs_tmdb_movie_set_popularity (MvsTmdbMovie *self, const gchar *popularity)
503 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
504 return set_property (&self->priv->popularity, popularity);
508 mvs_tmdb_movie_set_rating (MvsTmdbMovie *self, const gchar *rating)
510 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
511 return set_property (&self->priv->rating, rating);
515 mvs_tmdb_movie_get_rating (MvsTmdbMovie *self)
517 return self->priv->rating;
521 mvs_tmdb_movie_set_released (MvsTmdbMovie *self, const gchar *released)
523 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
524 return set_property (&self->priv->released, released);
528 mvs_tmdb_movie_get_released (MvsTmdbMovie *self)
530 return self->priv->released;
534 mvs_tmdb_movie_set_score (MvsTmdbMovie *self, const gchar *score)
536 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
537 return set_property (&self->priv->score, score);
541 mvs_tmdb_movie_get_score (MvsTmdbMovie *self)
543 return self->priv->score;
547 mvs_tmdb_movie_set_translated (MvsTmdbMovie *self, const gchar *translated)
549 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
550 return set_property (&self->priv->translated, translated);
554 mvs_tmdb_movie_get_translated (MvsTmdbMovie *self)
556 return self->priv->translated;
560 mvs_tmdb_movie_set_type (MvsTmdbMovie *self, const gchar *type)
562 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
563 return set_property (&self->priv->type, type);
567 mvs_tmdb_movie_get_source_type (MvsTmdbMovie *self)
569 return self->priv->type;
573 mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url)
575 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
576 return set_property (&self->priv->url, url);
580 mvs_tmdb_movie_get_url (MvsTmdbMovie *self)
582 return self->priv->url;
586 mvs_tmdb_movie_print (MvsTmdbMovie *self)
588 g_return_if_fail (MVS_IS_TMDB_MOVIE (self));
590 g_print ("[Alternative name]: %s\n", self->priv->alt_name);
591 g_print ("[Certification]: %s\n", self->priv->certification);
592 g_print ("[Id]: %s\n", self->priv->id);
593 g_print ("[Images]: %s\n", self->priv->images);
594 g_print ("[IMDB Id]: %s\n", self->priv->imdb_id);
595 g_print ("[Language]: %s\n", self->priv->language);
596 g_print ("[Last modified]: %s\n", self->priv->last_modified);
597 g_print ("[Name]: %s\n", self->priv->name);
598 g_print ("[Overview]: %s\n", self->priv->overview);
599 g_print ("[Popularity]: %s\n", self->priv->popularity);
600 g_print ("[Rating]: %s\n", self->priv->rating);
601 g_print ("[Released]: %s\n", self->priv->released);
602 g_print ("[Score]: %s\n", self->priv->score);
603 g_print ("[Translated]: %s\n", self->priv->translated);
604 g_print ("[Type]: %s\n", self->priv->type);
605 g_print ("[URL]: %s\n", self->priv->url);