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)
43 #define GET_PRIVATE(o) \
44 (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_TMDB_MOVIE, MvsTmdbMoviePrivate))
46 struct _MvsTmdbMoviePrivate {
66 mvs_tmdb_movie_get_property (GObject *object, guint property_id,
67 GValue *value, GParamSpec *pspec)
69 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
71 switch (property_id) {
73 g_value_set_string (value, self->priv->alt_name);
75 case PROP_CERTIFICATION:
76 g_value_set_string (value, self->priv->certification);
79 g_value_set_string (value, self->priv->id);
82 g_value_set_string (value, self->priv->images);
85 g_value_set_string (value, self->priv->imdb_id);
88 g_value_set_string (value, self->priv->language);
90 case PROP_LAST_MODIFIED:
91 g_value_set_string (value, self->priv->last_modified);
94 g_value_set_string (value, self->priv->name);
97 g_value_set_string (value, self->priv->overview);
100 g_value_set_string (value, self->priv->popularity);
103 g_value_set_string (value, self->priv->rating);
106 g_value_set_string (value, self->priv->released);
109 g_value_set_string (value, self->priv->score);
111 case PROP_TRANSLATED:
112 g_value_set_string (value, self->priv->id);
115 g_value_set_string (value, self->priv->id);
118 g_value_set_string (value, self->priv->url);
121 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
126 mvs_tmdb_movie_set_property (GObject *object, guint property_id,
127 const GValue *value, GParamSpec *pspec)
129 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
131 switch (property_id) {
133 mvs_tmdb_movie_set_alt_name (self, g_value_get_string (value));
135 case PROP_CERTIFICATION:
136 mvs_tmdb_movie_set_certification (self,
137 g_value_get_string (value));
140 mvs_tmdb_movie_set_id (self,
141 g_value_get_string (value));
144 mvs_tmdb_movie_set_images (self,
145 g_value_get_string (value));
148 mvs_tmdb_movie_set_imdb_id (self,
149 g_value_get_string (value));
152 mvs_tmdb_movie_set_language (self,
153 g_value_get_string (value));
155 case PROP_LAST_MODIFIED:
156 mvs_tmdb_movie_set_last_modified (self,
157 g_value_get_string (value));
160 mvs_tmdb_movie_set_name (self,
161 g_value_get_string (value));
164 mvs_tmdb_movie_set_overview (self,
165 g_value_get_string (value));
167 case PROP_POPULARITY:
168 mvs_tmdb_movie_set_popularity (self,
169 g_value_get_string (value));
172 mvs_tmdb_movie_set_rating (self,
173 g_value_get_string (value));
176 mvs_tmdb_movie_set_released (self,
177 g_value_get_string (value));
180 mvs_tmdb_movie_set_score (self,
181 g_value_get_string (value));
183 case PROP_TRANSLATED:
184 mvs_tmdb_movie_set_translated (self,
185 g_value_get_string (value));
188 mvs_tmdb_movie_set_type (self,
189 g_value_get_string (value));
192 mvs_tmdb_movie_set_url (self,
193 g_value_get_string (value));
196 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
201 mvs_tmdb_movie_finalize (GObject *object)
203 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
205 g_free (self->priv->alt_name);
206 g_free (self->priv->certification);
207 g_free (self->priv->id);
208 g_free (self->priv->images);
209 g_free (self->priv->imdb_id);
210 g_free (self->priv->language);
211 g_free (self->priv->last_modified);
212 g_free (self->priv->name);
213 g_free (self->priv->overview);
214 g_free (self->priv->popularity);
215 g_free (self->priv->rating);
216 g_free (self->priv->released);
217 g_free (self->priv->score);
218 g_free (self->priv->translated);
219 g_free (self->priv->type);
220 g_free (self->priv->url);
222 G_OBJECT_CLASS (mvs_tmdb_movie_parent_class)->finalize (object);
226 mvs_tmdb_movie_class_init (MvsTmdbMovieClass *klass)
228 GObjectClass *object_class = G_OBJECT_CLASS (klass);
230 g_type_class_add_private (klass, sizeof (MvsTmdbMoviePrivate));
232 object_class->get_property = mvs_tmdb_movie_get_property;
233 object_class->set_property = mvs_tmdb_movie_set_property;
234 object_class->finalize = mvs_tmdb_movie_finalize;
236 g_object_class_install_property
237 (object_class, PROP_ALT_NAME,
238 g_param_spec_string ("alternative_name", "Alternative name",
239 "The movie alternative name",
241 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
243 g_object_class_install_property
244 (object_class, PROP_CERTIFICATION,
245 g_param_spec_string ("certification", "Movie certification",
246 "The movie certification",
248 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
250 g_object_class_install_property
251 (object_class, PROP_ID,
252 g_param_spec_string ("id", "Movie ID", "The movie ID",
254 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
256 g_object_class_install_property
257 (object_class, PROP_IMAGES,
258 g_param_spec_string ("images", "Movie images",
261 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
263 g_object_class_install_property
264 (object_class, PROP_IMDB_ID,
265 g_param_spec_string ("imdb_id", "Movie IMDB ID",
268 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
270 g_object_class_install_property
271 (object_class, PROP_LANGUAGE,
272 g_param_spec_string ("language", "Movie language",
273 "The movie language",
275 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
277 g_object_class_install_property
278 (object_class, PROP_LAST_MODIFIED,
279 g_param_spec_string ("last_modified_at",
280 "Movie last modified date",
281 "The movie last modification date",
283 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
285 g_object_class_install_property
286 (object_class, PROP_NAME,
287 g_param_spec_string ("name", "Movie name", "The movie name",
289 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
291 g_object_class_install_property
292 (object_class, PROP_OVERVIEW,
293 g_param_spec_string ("overview", "Movie overview", "The movie overview",
295 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
297 g_object_class_install_property
298 (object_class, PROP_POPULARITY,
299 g_param_spec_string ("popularity", "Movie popularity", "The movie popularity",
301 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
303 g_object_class_install_property
304 (object_class, PROP_RATING,
305 g_param_spec_string ("rating", "Movie rating", "The movie rating",
307 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
309 g_object_class_install_property
310 (object_class, PROP_RELEASED,
311 g_param_spec_string ("released", "Movie released date", "The movie released date",
313 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
315 g_object_class_install_property
316 (object_class, PROP_SCORE,
317 g_param_spec_string ("score", "Movie score", "The movie score",
319 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
321 g_object_class_install_property
322 (object_class, PROP_TRANSLATED,
323 g_param_spec_string ("translated", "Movie translated status", "Tells if the movie is translated",
325 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
327 g_object_class_install_property
328 (object_class, PROP_TYPE,
329 g_param_spec_string ("type", "Movie type", "The movie type",
331 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
333 g_object_class_install_property
334 (object_class, PROP_URL,
335 g_param_spec_string ("url", "Movie url", "The movie url",
337 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
341 mvs_tmdb_movie_init (MvsTmdbMovie *self)
343 self->priv = GET_PRIVATE (self);
345 self->priv->alt_name = NULL;
346 self->priv->certification = NULL;
347 self->priv->id = NULL;
348 self->priv->images = NULL;
349 self->priv->imdb_id = NULL;
350 self->priv->language = NULL;
351 self->priv->last_modified = NULL;
352 self->priv->name = NULL;
353 self->priv->overview = NULL;
354 self->priv->popularity = NULL;
355 self->priv->rating = NULL;
356 self->priv->released = NULL;
357 self->priv->score = NULL;
358 self->priv->translated = NULL;
359 self->priv->type = NULL;
360 self->priv->url = NULL;
364 mvs_tmdb_movie_new (void)
366 return g_object_new (MVS_TYPE_TMDB_MOVIE, NULL);
370 set_property (gchar **property, const gchar *value)
373 *property = g_strdup (value);
379 mvs_tmdb_movie_set_alt_name (MvsTmdbMovie *self, const gchar *alt_name)
381 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
382 return set_property (&self->priv->alt_name, alt_name);
386 mvs_tmdb_movie_get_alt_name (MvsTmdbMovie *self)
388 return self->priv->alt_name;
392 mvs_tmdb_movie_set_certification (MvsTmdbMovie *self,
393 const gchar *certification)
395 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
396 return set_property (&self->priv->certification, certification);
400 mvs_tmdb_movie_get_certification (MvsTmdbMovie *self)
402 return self->priv->certification;
406 mvs_tmdb_movie_set_id (MvsTmdbMovie *self, const gchar *id)
408 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
409 return set_property (&self->priv->id, id);
413 mvs_tmdb_movie_get_id (MvsTmdbMovie *self)
415 return self->priv->id;
419 mvs_tmdb_movie_set_images (MvsTmdbMovie *self, const gchar *images)
421 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
422 return set_property (&self->priv->images, images);
426 mvs_tmdb_movie_get_images (MvsTmdbMovie *self)
428 return self->priv->images;
432 mvs_tmdb_movie_set_imdb_id (MvsTmdbMovie *self, const gchar *imdb_id)
434 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
435 return set_property (&self->priv->imdb_id, imdb_id);
439 mvs_tmdb_movie_get_imdb_id (MvsTmdbMovie *self)
441 return self->priv->imdb_id;
445 mvs_tmdb_movie_set_language (MvsTmdbMovie *self, const gchar *language)
447 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
448 return set_property (&self->priv->language, language);
452 mvs_tmdb_movie_get_language (MvsTmdbMovie *self)
454 return self->priv->language;
458 mvs_tmdb_movie_set_last_modified (MvsTmdbMovie *self,
459 const gchar *last_modified)
461 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
462 return set_property (&self->priv->last_modified, last_modified);
466 mvs_tmdb_movie_get_last_movified (MvsTmdbMovie *self)
468 return self->priv->last_modified;
472 mvs_tmdb_movie_set_name (MvsTmdbMovie *self, const gchar *name)
474 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
475 return set_property (&self->priv->name, name);
479 mvs_tmdb_movie_get_name (MvsTmdbMovie *self)
481 return self->priv->name;
485 mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, const gchar *overview)
487 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
488 return set_property (&self->priv->overview, overview);
492 mvs_tmdb_movie_get_overview (MvsTmdbMovie *self)
494 return self->priv->overview;
498 mvs_tmdb_movie_set_popularity (MvsTmdbMovie *self, const gchar *popularity)
500 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
501 return set_property (&self->priv->popularity, popularity);
505 mvs_tmdb_movie_set_rating (MvsTmdbMovie *self, const gchar *rating)
507 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
508 return set_property (&self->priv->rating, rating);
512 mvs_tmdb_movie_get_rating (MvsTmdbMovie *self)
514 return self->priv->rating;
518 mvs_tmdb_movie_set_released (MvsTmdbMovie *self, const gchar *released)
520 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
521 return set_property (&self->priv->released, released);
525 mvs_tmdb_movie_get_released (MvsTmdbMovie *self)
527 return self->priv->released;
531 mvs_tmdb_movie_set_score (MvsTmdbMovie *self, const gchar *score)
533 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
534 return set_property (&self->priv->score, score);
538 mvs_tmdb_movie_get_score (MvsTmdbMovie *self)
540 return self->priv->score;
544 mvs_tmdb_movie_set_translated (MvsTmdbMovie *self, const gchar *translated)
546 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
547 return set_property (&self->priv->translated, translated);
551 mvs_tmdb_movie_get_translated (MvsTmdbMovie *self)
553 return self->priv->translated;
557 mvs_tmdb_movie_set_type (MvsTmdbMovie *self, const gchar *type)
559 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
560 return set_property (&self->priv->type, type);
564 mvs_tmdb_movie_get_source_type (MvsTmdbMovie *self)
566 return self->priv->type;
570 mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url)
572 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
573 return set_property (&self->priv->url, url);
577 mvs_tmdb_movie_get_url (MvsTmdbMovie *self)
579 return self->priv->url;
583 mvs_tmdb_movie_print (MvsTmdbMovie *self)
585 g_return_if_fail (MVS_IS_TMDB_MOVIE (self));
587 g_print ("[Alternative name]: %s\n", self->priv->alt_name);
588 g_print ("[Certification]: %s\n", self->priv->certification);
589 g_print ("[Id]: %s\n", self->priv->id);
590 g_print ("[Images]: %s\n", self->priv->images);
591 g_print ("[IMDB Id]: %s\n", self->priv->imdb_id);
592 g_print ("[Language]: %s\n", self->priv->language);
593 g_print ("[Last modified]: %s\n", self->priv->last_modified);
594 g_print ("[Name]: %s\n", self->priv->name);
595 g_print ("[Overview]: %s\n", self->priv->overview);
596 g_print ("[Popularity]: %s\n", self->priv->popularity);
597 g_print ("[Rating]: %s\n", self->priv->rating);
598 g_print ("[Released]: %s\n", self->priv->released);
599 g_print ("[Score]: %s\n", self->priv->score);
600 g_print ("[Translated]: %s\n", self->priv->translated);
601 g_print ("[Type]: %s\n", self->priv->type);
602 g_print ("[URL]: %s\n", self->priv->url);