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->imdb_id);
85 g_value_set_string (value, self->priv->language);
87 case PROP_LAST_MODIFIED:
88 g_value_set_string (value, self->priv->last_modified);
91 g_value_set_string (value, self->priv->name);
94 g_value_set_string (value, self->priv->overview);
97 g_value_set_string (value, self->priv->popularity);
100 g_value_set_string (value, self->priv->rating);
103 g_value_set_string (value, self->priv->released);
106 g_value_set_string (value, self->priv->score);
108 case PROP_TRANSLATED:
109 g_value_set_string (value, self->priv->id);
112 g_value_set_string (value, self->priv->id);
115 g_value_set_string (value, self->priv->url);
118 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
123 mvs_tmdb_movie_set_property (GObject *object, guint property_id,
124 const GValue *value, GParamSpec *pspec)
126 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
128 switch (property_id) {
130 mvs_tmdb_movie_set_alt_name (self, g_value_get_string (value));
132 case PROP_CERTIFICATION:
133 mvs_tmdb_movie_set_certification (self,
134 g_value_get_string (value));
137 mvs_tmdb_movie_set_id (self,
138 g_value_get_string (value));
141 mvs_tmdb_movie_set_imdb_id (self,
142 g_value_get_string (value));
145 mvs_tmdb_movie_set_language (self,
146 g_value_get_string (value));
148 case PROP_LAST_MODIFIED:
149 mvs_tmdb_movie_set_last_modified (self,
150 g_value_get_string (value));
153 mvs_tmdb_movie_set_name (self,
154 g_value_get_string (value));
157 mvs_tmdb_movie_set_overview (self,
158 g_value_get_string (value));
160 case PROP_POPULARITY:
161 mvs_tmdb_movie_set_popularity (self,
162 g_value_get_string (value));
165 mvs_tmdb_movie_set_rating (self,
166 g_value_get_string (value));
169 mvs_tmdb_movie_set_released (self,
170 g_value_get_string (value));
173 mvs_tmdb_movie_set_score (self,
174 g_value_get_string (value));
176 case PROP_TRANSLATED:
177 mvs_tmdb_movie_set_translated (self,
178 g_value_get_string (value));
181 mvs_tmdb_movie_set_type (self,
182 g_value_get_string (value));
185 mvs_tmdb_movie_set_url (self,
186 g_value_get_string (value));
189 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
194 mvs_tmdb_movie_finalize (GObject *object)
196 MvsTmdbMovie *self = MVS_TMDB_MOVIE (object);
198 g_free (self->priv->alt_name);
199 g_free (self->priv->certification);
200 g_free (self->priv->id);
201 g_free (self->priv->imdb_id);
202 g_free (self->priv->language);
203 g_free (self->priv->last_modified);
204 g_free (self->priv->name);
205 g_free (self->priv->overview);
206 g_free (self->priv->popularity);
207 g_free (self->priv->rating);
208 g_free (self->priv->released);
209 g_free (self->priv->score);
210 g_free (self->priv->translated);
211 g_free (self->priv->type);
212 g_free (self->priv->url);
214 g_list_foreach (self->priv->images, (GFunc) g_object_unref, NULL);
215 g_list_free (self->priv->images);
217 G_OBJECT_CLASS (mvs_tmdb_movie_parent_class)->finalize (object);
221 mvs_tmdb_movie_class_init (MvsTmdbMovieClass *klass)
223 GObjectClass *object_class = G_OBJECT_CLASS (klass);
225 g_type_class_add_private (klass, sizeof (MvsTmdbMoviePrivate));
227 object_class->get_property = mvs_tmdb_movie_get_property;
228 object_class->set_property = mvs_tmdb_movie_set_property;
229 object_class->finalize = mvs_tmdb_movie_finalize;
231 g_object_class_install_property
232 (object_class, PROP_ALT_NAME,
233 g_param_spec_string ("alternative_name", "Alternative name",
234 "The movie alternative name",
236 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
238 g_object_class_install_property
239 (object_class, PROP_CERTIFICATION,
240 g_param_spec_string ("certification", "Movie certification",
241 "The movie certification",
243 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
245 g_object_class_install_property
246 (object_class, PROP_ID,
247 g_param_spec_string ("id", "Movie ID", "The movie ID",
249 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
251 g_object_class_install_property
252 (object_class, PROP_IMDB_ID,
253 g_param_spec_string ("imdb_id", "Movie IMDB ID",
256 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
258 g_object_class_install_property
259 (object_class, PROP_LANGUAGE,
260 g_param_spec_string ("language", "Movie language",
261 "The movie language",
263 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
265 g_object_class_install_property
266 (object_class, PROP_LAST_MODIFIED,
267 g_param_spec_string ("last_modified_at",
268 "Movie last modified date",
269 "The movie last modification date",
271 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
273 g_object_class_install_property
274 (object_class, PROP_NAME,
275 g_param_spec_string ("name", "Movie name", "The movie name",
277 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
279 g_object_class_install_property
280 (object_class, PROP_OVERVIEW,
281 g_param_spec_string ("overview", "Movie overview", "The movie overview",
283 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
285 g_object_class_install_property
286 (object_class, PROP_POPULARITY,
287 g_param_spec_string ("popularity", "Movie popularity", "The movie popularity",
289 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
291 g_object_class_install_property
292 (object_class, PROP_RATING,
293 g_param_spec_string ("rating", "Movie rating", "The movie rating",
295 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
297 g_object_class_install_property
298 (object_class, PROP_RELEASED,
299 g_param_spec_string ("released", "Movie released date", "The movie released date",
301 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
303 g_object_class_install_property
304 (object_class, PROP_SCORE,
305 g_param_spec_string ("score", "Movie score", "The movie score",
307 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
309 g_object_class_install_property
310 (object_class, PROP_TRANSLATED,
311 g_param_spec_string ("translated", "Movie translated status", "Tells if the movie is translated",
313 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
315 g_object_class_install_property
316 (object_class, PROP_TYPE,
317 g_param_spec_string ("type", "Movie type", "The movie type",
319 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
321 g_object_class_install_property
322 (object_class, PROP_URL,
323 g_param_spec_string ("url", "Movie url", "The movie url",
325 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
329 mvs_tmdb_movie_init (MvsTmdbMovie *self)
331 self->priv = GET_PRIVATE (self);
333 self->priv->alt_name = NULL;
334 self->priv->certification = NULL;
335 self->priv->id = NULL;
336 self->priv->images = NULL;
337 self->priv->imdb_id = NULL;
338 self->priv->language = NULL;
339 self->priv->last_modified = NULL;
340 self->priv->name = NULL;
341 self->priv->overview = NULL;
342 self->priv->popularity = NULL;
343 self->priv->rating = NULL;
344 self->priv->released = NULL;
345 self->priv->score = NULL;
346 self->priv->translated = NULL;
347 self->priv->type = NULL;
348 self->priv->url = NULL;
352 mvs_tmdb_movie_new (void)
354 return g_object_new (MVS_TYPE_TMDB_MOVIE, NULL);
358 set_property (gchar **property, const gchar *value)
361 *property = g_strdup (value);
363 return *property != NULL;
367 mvs_tmdb_movie_set_alt_name (MvsTmdbMovie *self, const gchar *alt_name)
369 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
370 return set_property (&self->priv->alt_name, alt_name);
374 mvs_tmdb_movie_get_alt_name (MvsTmdbMovie *self)
376 return self->priv->alt_name;
380 mvs_tmdb_movie_set_certification (MvsTmdbMovie *self,
381 const gchar *certification)
383 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
384 return set_property (&self->priv->certification, certification);
388 mvs_tmdb_movie_get_certification (MvsTmdbMovie *self)
390 return self->priv->certification;
394 mvs_tmdb_movie_set_id (MvsTmdbMovie *self, const gchar *id)
396 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
397 return set_property (&self->priv->id, id);
401 mvs_tmdb_movie_get_id (MvsTmdbMovie *self)
403 return self->priv->id;
407 mvs_tmdb_movie_set_images (MvsTmdbMovie *self, GList *images)
409 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
410 self->priv->images = images;
415 mvs_tmdb_movie_get_images (MvsTmdbMovie *self)
417 return self->priv->images;
421 mvs_tmdb_movie_set_imdb_id (MvsTmdbMovie *self, const gchar *imdb_id)
423 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
424 return set_property (&self->priv->imdb_id, imdb_id);
428 mvs_tmdb_movie_get_imdb_id (MvsTmdbMovie *self)
430 return self->priv->imdb_id;
434 mvs_tmdb_movie_set_language (MvsTmdbMovie *self, const gchar *language)
436 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
437 return set_property (&self->priv->language, language);
441 mvs_tmdb_movie_get_language (MvsTmdbMovie *self)
443 return self->priv->language;
447 mvs_tmdb_movie_set_last_modified (MvsTmdbMovie *self,
448 const gchar *last_modified)
450 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
451 return set_property (&self->priv->last_modified, last_modified);
455 mvs_tmdb_movie_get_last_movified (MvsTmdbMovie *self)
457 return self->priv->last_modified;
461 mvs_tmdb_movie_set_name (MvsTmdbMovie *self, const gchar *name)
463 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
464 return set_property (&self->priv->name, name);
468 mvs_tmdb_movie_get_name (MvsTmdbMovie *self)
470 return self->priv->name;
474 mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, const gchar *overview)
476 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
477 return set_property (&self->priv->overview, overview);
481 mvs_tmdb_movie_get_overview (MvsTmdbMovie *self)
483 return self->priv->overview;
487 mvs_tmdb_movie_set_popularity (MvsTmdbMovie *self, const gchar *popularity)
489 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
490 return set_property (&self->priv->popularity, popularity);
494 mvs_tmdb_movie_get_popularity (MvsTmdbMovie *self)
496 return self->priv->popularity;
500 mvs_tmdb_movie_set_rating (MvsTmdbMovie *self, const gchar *rating)
502 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
503 return set_property (&self->priv->rating, rating);
507 mvs_tmdb_movie_get_rating (MvsTmdbMovie *self)
509 return self->priv->rating;
513 mvs_tmdb_movie_set_released (MvsTmdbMovie *self, const gchar *released)
515 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
516 return set_property (&self->priv->released, released);
520 mvs_tmdb_movie_get_released (MvsTmdbMovie *self)
522 return self->priv->released;
526 mvs_tmdb_movie_set_score (MvsTmdbMovie *self, const gchar *score)
528 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
529 return set_property (&self->priv->score, score);
533 mvs_tmdb_movie_get_score (MvsTmdbMovie *self)
535 return self->priv->score;
539 mvs_tmdb_movie_set_translated (MvsTmdbMovie *self, const gchar *translated)
541 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
542 return set_property (&self->priv->translated, translated);
546 mvs_tmdb_movie_get_translated (MvsTmdbMovie *self)
548 return self->priv->translated;
552 mvs_tmdb_movie_set_type (MvsTmdbMovie *self, const gchar *type)
554 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
555 return set_property (&self->priv->type, type);
559 mvs_tmdb_movie_get_source_type (MvsTmdbMovie *self)
561 return self->priv->type;
565 mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url)
567 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
568 return set_property (&self->priv->url, url);
572 mvs_tmdb_movie_get_url (MvsTmdbMovie *self)
574 return self->priv->url;
578 mvs_tmdb_movie_print (MvsTmdbMovie *self)
580 g_return_if_fail (MVS_IS_TMDB_MOVIE (self));
582 g_print ("[Alternative name]: %s\n", self->priv->alt_name);
583 g_print ("[Certification]: %s\n", self->priv->certification);
584 g_print ("[Id]: %s\n", self->priv->id);
585 g_print ("[Images]: %d\n", g_list_length(self->priv->images));
586 g_print ("[IMDB Id]: %s\n", self->priv->imdb_id);
587 g_print ("[Language]: %s\n", self->priv->language);
588 g_print ("[Last modified]: %s\n", self->priv->last_modified);
589 g_print ("[Name]: %s\n", self->priv->name);
590 g_print ("[Overview]: %s\n", self->priv->overview);
591 g_print ("[Popularity]: %s\n", self->priv->popularity);
592 g_print ("[Rating]: %s\n", self->priv->rating);
593 g_print ("[Released]: %s\n", self->priv->released);
594 g_print ("[Score]: %s\n", self->priv->score);
595 g_print ("[Translated]: %s\n", self->priv->translated);
596 g_print ("[Type]: %s\n", self->priv->type);
597 g_print ("[URL]: %s\n", self->priv->url);