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)
377 *property = g_strdup (value);
383 mvs_tmdb_movie_set_alt_name (MvsTmdbMovie *self, const gchar *alt_name)
385 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
386 return set_property (&self->priv->alt_name, alt_name);
390 mvs_tmdb_movie_set_certification (MvsTmdbMovie *self,
391 const gchar *certification)
393 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
394 return set_property (&self->priv->certification, certification);
398 mvs_tmdb_movie_set_id (MvsTmdbMovie *self, const gchar *id)
400 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
401 return set_property (&self->priv->id, id);
405 mvs_tmdb_movie_set_images (MvsTmdbMovie *self, const gchar *images)
407 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
408 return set_property (&self->priv->images, images);
412 mvs_tmdb_movie_set_imdb_id (MvsTmdbMovie *self, const gchar *imdb_id)
414 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
415 return set_property (&self->priv->imdb_id, imdb_id);
419 mvs_tmdb_movie_set_language (MvsTmdbMovie *self, const gchar *language)
421 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
422 return set_property (&self->priv->language, language);
426 mvs_tmdb_movie_set_last_modified (MvsTmdbMovie *self,
427 const gchar *last_modified)
429 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
430 return set_property (&self->priv->last_modified, last_modified);
434 mvs_tmdb_movie_set_name (MvsTmdbMovie *self, const gchar *name)
436 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
437 return set_property (&self->priv->name, name);
441 mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, const gchar *overview)
443 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
444 return set_property (&self->priv->overview, overview);
448 mvs_tmdb_movie_set_popularity (MvsTmdbMovie *self, const gchar *popularity)
450 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
451 return set_property (&self->priv->popularity, popularity);
455 mvs_tmdb_movie_set_rating (MvsTmdbMovie *self, const gchar *rating)
457 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
458 return set_property (&self->priv->rating, rating);
462 mvs_tmdb_movie_set_released (MvsTmdbMovie *self, const gchar *released)
464 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
465 return set_property (&self->priv->released, released);
469 mvs_tmdb_movie_set_score (MvsTmdbMovie *self, const gchar *score)
471 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
472 return set_property (&self->priv->score, score);
476 mvs_tmdb_movie_set_translated (MvsTmdbMovie *self, const gchar *translated)
478 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
479 return set_property (&self->priv->translated, translated);
483 mvs_tmdb_movie_set_type (MvsTmdbMovie *self, const gchar *type)
485 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
486 return set_property (&self->priv->type, type);
490 mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url)
492 g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE);
493 return set_property (&self->priv->url, url);