From: Simón Pena Date: Sun, 16 May 2010 21:51:19 +0000 (+0200) Subject: TMDB Movie: Added properties X-Git-Url: http://vcs.maemo.org/git/?p=maevies;a=commitdiff_plain;h=09f30ad9c9bcc4aeecc003922b9d5f8e4cf02b26 TMDB Movie: Added properties The TMDB Movie class gets all the attributes from the web service. They share the name with the web service properties, so that they get built easily, using g_object_set. --- diff --git a/src/mvs-tmdb-movie.c b/src/mvs-tmdb-movie.c index a558310..b94b71a 100644 --- a/src/mvs-tmdb-movie.c +++ b/src/mvs-tmdb-movie.c @@ -22,30 +22,46 @@ G_DEFINE_TYPE (MvsTmdbMovie, mvs_tmdb_movie, G_TYPE_OBJECT) enum { PROP_0, - PROP_HAS_STINGERS, - PROP_TITLE, - PROP_DIRECTOR, - PROP_CAST, - PROP_RANKING, - PROP_RELEASE_DATE, - PROP_OVERVIEW, + PROP_SCORE, + PROP_POPULARITY, + PROP_TRANSLATED, + PROP_LANGUAGE, + PROP_NAME, + PROP_ALT_NAME, + PROP_TYPE, + PROP_ID, + PROP_IMDB_ID, PROP_URL, - PROP_SCHEDULE, + PROP_RATING, + PROP_CERTIFICATION, + PROP_OVERVIEW, + PROP_RELEASED, + PROP_IMAGES, + PROP_LAST_MODIFIED, }; + + #define GET_PRIVATE(o) \ (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_TMDB_MOVIE, MvsTmdbMoviePrivate)) struct _MvsTmdbMoviePrivate { - gboolean has_stingers; - gchar *title; - gchar *director; - gchar *cast; - gfloat ranking; - gchar *release_date; - gchar *overview; + gchar *score; + gchar *popularity; + gchar *translated; + gchar *language; + gchar *name; + gchar *alt_name; + gchar *type; + gchar *id; + gchar *imdb_id; gchar *url; - gchar *schedule; + gchar *rating; + gchar *certification; + gchar *overview; + gchar *released; + gchar *images; + gchar *last_modified; }; static void @@ -55,33 +71,54 @@ mvs_tmdb_movie_get_property (GObject *object, guint property_id, MvsTmdbMovie *self = MVS_TMDB_MOVIE (object); switch (property_id) { - case PROP_HAS_STINGERS: - g_value_set_boolean (value, self->priv->has_stingers); + case PROP_ALT_NAME: + g_value_set_string (value, self->priv->alt_name); + break; + case PROP_CERTIFICATION: + g_value_set_string (value, self->priv->certification); break; - case PROP_TITLE: - g_value_set_string (value, self->priv->title); + case PROP_ID: + g_value_set_string (value, self->priv->id); break; - case PROP_DIRECTOR: - g_value_set_string (value, self->priv->director); + case PROP_IMAGES: + g_value_set_string (value, self->priv->images); break; - case PROP_CAST: - g_value_set_string (value, self->priv->cast); + case PROP_IMDB_ID: + g_value_set_string (value, self->priv->imdb_id); break; - case PROP_RANKING: - g_value_set_float (value, self->priv->ranking); + case PROP_LANGUAGE: + g_value_set_string (value, self->priv->language); break; - case PROP_RELEASE_DATE: - g_value_set_string (value, self->priv->release_date); + case PROP_LAST_MODIFIED: + g_value_set_string (value, self->priv->last_modified); + break; + case PROP_NAME: + g_value_set_string (value, self->priv->name); break; case PROP_OVERVIEW: g_value_set_string (value, self->priv->overview); break; + case PROP_POPULARITY: + g_value_set_string (value, self->priv->popularity); + break; + case PROP_RATING: + g_value_set_string (value, self->priv->rating); + break; + case PROP_RELEASED: + g_value_set_string (value, self->priv->released); + break; + case PROP_SCORE: + g_value_set_string (value, self->priv->score); + break; + case PROP_TRANSLATED: + g_value_set_string (value, self->priv->id); + break; + case PROP_TYPE: + g_value_set_string (value, self->priv->id); + break; case PROP_URL: g_value_set_string (value, self->priv->url); break; - case PROP_SCHEDULE: - g_value_set_string (value, self->priv->schedule); - break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); } @@ -95,32 +132,68 @@ mvs_tmdb_movie_set_property (GObject *object, guint property_id, GDate *date = NULL; switch (property_id) { - case PROP_HAS_STINGERS: - mvs_tmdb_movie_set_stingers (self, g_value_get_boolean (value)); + case PROP_ALT_NAME: + mvs_tmdb_movie_set_alt_name (self, g_value_get_string (value)); + break; + case PROP_CERTIFICATION: + mvs_tmdb_movie_set_certification (self, + g_value_get_string (value)); break; - case PROP_TITLE: - mvs_tmdb_movie_set_title (self, g_value_get_string (value)); + case PROP_ID: + mvs_tmdb_movie_set_id (self, + g_value_get_string (value)); break; - case PROP_DIRECTOR: - mvs_tmdb_movie_set_director (self, g_value_get_string (value)); + case PROP_IMAGES: + mvs_tmdb_movie_set_images (self, + g_value_get_string (value)); break; - case PROP_CAST: - mvs_tmdb_movie_set_cast (self, g_value_get_string (value)); + case PROP_IMDB_ID: + mvs_tmdb_movie_set_imdb_id (self, + g_value_get_string (value)); break; - case PROP_RANKING: - mvs_tmdb_movie_set_ranking (self, g_value_get_float (value)); + case PROP_LANGUAGE: + mvs_tmdb_movie_set_language (self, + g_value_get_string (value)); break; - case PROP_RELEASE_DATE: - mvs_tmdb_movie_set_release_date (self, g_value_get_string (value)); + case PROP_LAST_MODIFIED: + mvs_tmdb_movie_set_last_modified (self, + g_value_get_string (value)); + break; + case PROP_NAME: + mvs_tmdb_movie_set_name (self, + g_value_get_string (value)); break; case PROP_OVERVIEW: - mvs_tmdb_movie_set_overview (self, g_value_get_string (value)); + mvs_tmdb_movie_set_overview (self, + g_value_get_string (value)); break; - case PROP_URL: - mvs_tmdb_movie_set_url (self, g_value_get_string (value)); + case PROP_POPULARITY: + mvs_tmdb_movie_set_popularity (self, + g_value_get_string (value)); + break; + case PROP_RATING: + mvs_tmdb_movie_set_rating (self, + g_value_get_string (value)); + break; + case PROP_RELEASED: + mvs_tmdb_movie_set_released (self, + g_value_get_string (value)); + break; + case PROP_SCORE: + mvs_tmdb_movie_set_score (self, + g_value_get_string (value)); break; - case PROP_SCHEDULE: - mvs_tmdb_movie_set_schedule (self, g_value_get_string (value)); + case PROP_TRANSLATED: + mvs_tmdb_movie_set_translated (self, + g_value_get_string (value)); + break; + case PROP_TYPE: + mvs_tmdb_movie_set_type (self, + g_value_get_string (value)); + break; + case PROP_URL: + mvs_tmdb_movie_set_url (self, + g_value_get_string (value)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); @@ -132,12 +205,21 @@ mvs_tmdb_movie_finalize (GObject *object) { MvsTmdbMovie *self = MVS_TMDB_MOVIE (object); - g_free (self->priv->cast); - g_free (self->priv->director); + g_free (self->priv->alt_name); + g_free (self->priv->certification); + g_free (self->priv->id); + g_free (self->priv->images); + g_free (self->priv->imdb_id); + g_free (self->priv->language); + g_free (self->priv->last_modified); + g_free (self->priv->name); g_free (self->priv->overview); - g_free (self->priv->release_date); - g_free (self->priv->schedule); - g_free (self->priv->title); + g_free (self->priv->popularity); + g_free (self->priv->rating); + g_free (self->priv->released); + g_free (self->priv->score); + g_free (self->priv->translated); + g_free (self->priv->type); g_free (self->priv->url); G_OBJECT_CLASS (mvs_tmdb_movie_parent_class)->finalize (object); @@ -154,23 +236,59 @@ mvs_tmdb_movie_class_init (MvsTmdbMovieClass *klass) object_class->set_property = mvs_tmdb_movie_set_property; object_class->finalize = mvs_tmdb_movie_finalize; + g_object_class_install_property + (object_class, PROP_ALT_NAME, + g_param_spec_string ("alternative_name", "Alternative name", + "The movie alternative name", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_CAST, - g_param_spec_string ("cast", "Movie cast", "The movie cast", + (object_class, PROP_CERTIFICATION, + g_param_spec_string ("certification", "Movie certification", + "The movie certification", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_DIRECTOR, - g_param_spec_string ("director", "Movie director", "The movie director", + (object_class, PROP_ID, + g_param_spec_string ("id", "Movie ID", "The movie ID", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_HAS_STINGERS, - g_param_spec_boolean ("stingers", "Has stingers", "The movie has stingers", - FALSE, + (object_class, PROP_IMAGES, + g_param_spec_string ("images", "Movie images", + "The movie images", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + g_object_class_install_property + (object_class, PROP_IMDB_ID, + g_param_spec_string ("imdb_id", "Movie IMDB ID", + "The movie IMDB ID", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + g_object_class_install_property + (object_class, PROP_LANGUAGE, + g_param_spec_string ("language", "Movie language", + "The movie language", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + g_object_class_install_property + (object_class, PROP_LAST_MODIFIED, + g_param_spec_string ("last_modified_at", + "Movie last modified date", + "The movie last modification date", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + g_object_class_install_property + (object_class, PROP_NAME, + g_param_spec_string ("name", "Movie name", "The movie name", + NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property @@ -180,34 +298,44 @@ mvs_tmdb_movie_class_init (MvsTmdbMovieClass *klass) G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_RANKING, - g_param_spec_float ("ranking", "Movie ranking", "The movie ranking", - 0.0, - 10.0, - 5.0, + (object_class, PROP_POPULARITY, + g_param_spec_string ("popularity", "Movie popularity", "The movie popularity", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + g_object_class_install_property + (object_class, PROP_RATING, + g_param_spec_string ("rating", "Movie rating", "The movie rating", + NULL, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); + + g_object_class_install_property + (object_class, PROP_RELEASED, + g_param_spec_string ("released", "Movie released date", "The movie released date", + NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_RELEASE_DATE, - g_param_spec_string ("release", "Movie release date", "The movie release date", + (object_class, PROP_SCORE, + g_param_spec_string ("score", "Movie score", "The movie score", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_SCHEDULE, - g_param_spec_string ("schedule", "Movie schedule", "The movie schedule", + (object_class, PROP_TRANSLATED, + g_param_spec_string ("translated", "Movie translated status", "Tells if the movie is translated", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_TITLE, - g_param_spec_string ("title", "Movie title", "The movie title", + (object_class, PROP_TYPE, + g_param_spec_string ("type", "Movie type", "The movie type", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); g_object_class_install_property - (object_class, PROP_URL, - g_param_spec_string ("url", "Movie URL", "The movie url", + (object_class, PROP_URL, + g_param_spec_string ("url", "Movie url", "The movie url", NULL, G_PARAM_READWRITE | G_PARAM_CONSTRUCT)); } @@ -216,14 +344,22 @@ static void mvs_tmdb_movie_init (MvsTmdbMovie *self) { self->priv = GET_PRIVATE (self); - self->priv->cast = NULL; - self->priv->director = NULL; - self->priv->has_stingers = FALSE; + + self->priv->alt_name = NULL; + self->priv->certification = NULL; + self->priv->id = NULL; + self->priv->images = NULL; + self->priv->imdb_id = NULL; + self->priv->language = NULL; + self->priv->last_modified = NULL; + self->priv->name = NULL; self->priv->overview = NULL; - self->priv->ranking = 5; - self->priv->release_date = NULL; - self->priv->schedule = NULL; - self->priv->title = NULL; + self->priv->popularity = NULL; + self->priv->rating = NULL; + self->priv->released = NULL; + self->priv->score = NULL; + self->priv->translated = NULL; + self->priv->type = NULL; self->priv->url = NULL; } @@ -234,108 +370,125 @@ mvs_tmdb_movie_new (void) } gboolean -mvs_tmdb_movie_set_stingers (MvsTmdbMovie *self, gboolean has_stingers) +set_property (gchar **property, const gchar *value) { - g_return_val_if_fail (self, FALSE); + g_free (*property); - self->priv->has_stingers = has_stingers; + *property = g_strdup (value); return TRUE; } gboolean -mvs_tmdb_movie_set_title (MvsTmdbMovie *self, const gchar *title) +mvs_tmdb_movie_set_alt_name (MvsTmdbMovie *self, const gchar *alt_name) { - g_return_val_if_fail (self, FALSE); - - g_free (self->priv->title); - - self->priv->title = g_strdup (title); - - return TRUE; + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->alt_name, alt_name); } gboolean -mvs_tmdb_movie_set_director (MvsTmdbMovie *self, const gchar *director) +mvs_tmdb_movie_set_certification (MvsTmdbMovie *self, + const gchar *certification) { - g_return_val_if_fail (self, FALSE); - - g_free (self->priv->director); - - self->priv->director = g_strdup (director); - - return TRUE; + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->certification, certification); } gboolean -mvs_tmdb_movie_set_cast (MvsTmdbMovie *self, const gchar *cast) +mvs_tmdb_movie_set_id (MvsTmdbMovie *self, const gchar *id) { - g_return_val_if_fail (self, FALSE); - - g_free (self->priv->cast); - - self->priv->cast = g_strdup (cast); - - return TRUE; + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->id, id); } gboolean -mvs_tmdb_movie_set_ranking (MvsTmdbMovie *self, gfloat ranking) +mvs_tmdb_movie_set_images (MvsTmdbMovie *self, const gchar *images) { - g_return_val_if_fail (self, FALSE); - g_return_val_if_fail (ranking < 10 && ranking > 0, FALSE); - - self->priv->ranking = ranking; - - return FALSE; + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->images, images); } gboolean -mvs_tmdb_movie_set_release_date (MvsTmdbMovie *self, - const gchar *released) +mvs_tmdb_movie_set_imdb_id (MvsTmdbMovie *self, const gchar *imdb_id) { - g_return_val_if_fail (self, FALSE); - - g_free (self->priv->release_date); - - self->priv->release_date = g_strdup (released); - - return TRUE; + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->imdb_id, imdb_id); } + gboolean -mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, - const gchar *overview) +mvs_tmdb_movie_set_language (MvsTmdbMovie *self, const gchar *language) { - g_return_val_if_fail (self, FALSE); - - g_free (self->priv->overview); + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->language, language); +} - self->priv->overview = g_strdup (overview); +gboolean +mvs_tmdb_movie_set_last_modified (MvsTmdbMovie *self, + const gchar *last_modified) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->last_modified, last_modified); +} - return TRUE; +gboolean +mvs_tmdb_movie_set_name (MvsTmdbMovie *self, const gchar *name) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->name, name); } gboolean -mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url) +mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, const gchar *overview) { - g_return_val_if_fail (self, FALSE); + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->overview, overview); +} - g_free (self->priv->url); +gboolean +mvs_tmdb_movie_set_popularity (MvsTmdbMovie *self, const gchar *popularity) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->popularity, popularity); +} - self->priv->url = g_strdup (url); +gboolean +mvs_tmdb_movie_set_rating (MvsTmdbMovie *self, const gchar *rating) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->rating, rating); +} - return TRUE; +gboolean +mvs_tmdb_movie_set_released (MvsTmdbMovie *self, const gchar *released) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->released, released); } gboolean -mvs_tmdb_movie_set_schedule (MvsTmdbMovie *self, - const gchar *schedule) +mvs_tmdb_movie_set_score (MvsTmdbMovie *self, const gchar *score) { - g_return_val_if_fail (self, FALSE); + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->score, score); +} - g_free (self->priv->schedule); +gboolean +mvs_tmdb_movie_set_translated (MvsTmdbMovie *self, const gchar *translated) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->translated, translated); +} - self->priv->schedule = g_strdup (schedule); +gboolean +mvs_tmdb_movie_set_type (MvsTmdbMovie *self, const gchar *type) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->type, type); +} - return TRUE; +gboolean +mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url) +{ + g_return_val_if_fail (MVS_TMDB_MOVIE (self), FALSE); + return set_property (&self->priv->url, url); } diff --git a/src/mvs-tmdb-movie.h b/src/mvs-tmdb-movie.h index 4b5666c..4dfcb6e 100644 --- a/src/mvs-tmdb-movie.h +++ b/src/mvs-tmdb-movie.h @@ -51,20 +51,53 @@ typedef struct { GType mvs_tmdb_movie_get_type (void); MvsTmdbMovie* mvs_tmdb_movie_new (void); -gboolean mvs_tmdb_movie_set_stingers (MvsTmdbMovie *self, - gboolean has_stingers); -gboolean mvs_tmdb_movie_set_title (MvsTmdbMovie *self, const gchar *title); -gboolean mvs_tmdb_movie_set_director (MvsTmdbMovie *self, - const gchar *director); -gboolean mvs_tmdb_movie_set_cast (MvsTmdbMovie *self, const gchar *cast); -gboolean mvs_tmdb_movie_set_ranking (MvsTmdbMovie *self, gfloat ranking); -gboolean mvs_tmdb_movie_set_release_date (MvsTmdbMovie *self, - const gchar *released); -gboolean mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, - const gchar *overview); -gboolean mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url); -gboolean mvs_tmdb_movie_set_schedule (MvsTmdbMovie *self, - const gchar *schedule); +gboolean +mvs_tmdb_movie_set_alt_name (MvsTmdbMovie *self, const gchar *alt_name); + +gboolean +mvs_tmdb_movie_set_certification (MvsTmdbMovie *self, const gchar *certification); + +gboolean +mvs_tmdb_movie_set_id (MvsTmdbMovie *self, const gchar *id); + +gboolean +mvs_tmdb_movie_set_images (MvsTmdbMovie *self, const gchar *images); + +gboolean +mvs_tmdb_movie_set_imdb_id (MvsTmdbMovie *self, const gchar *imdb_id); + +gboolean +mvs_tmdb_movie_set_language (MvsTmdbMovie *self, const gchar *language); + +gboolean +mvs_tmdb_movie_set_last_modified (MvsTmdbMovie *self, + const gchar *last_modified); +gboolean +mvs_tmdb_movie_set_name (MvsTmdbMovie *self, const gchar *names); + +gboolean +mvs_tmdb_movie_set_overview (MvsTmdbMovie *self, const gchar *overview); + +gboolean +mvs_tmdb_movie_set_popularity (MvsTmdbMovie *self, const gchar *popularity); + +gboolean +mvs_tmdb_movie_set_rating (MvsTmdbMovie *self, const gchar *rating); + +gboolean +mvs_tmdb_movie_set_released (MvsTmdbMovie *self, const gchar *released); + +gboolean +mvs_tmdb_movie_set_score (MvsTmdbMovie *self, const gchar *score); + +gboolean +mvs_tmdb_movie_set_translated (MvsTmdbMovie *self, const gchar *translated); + +gboolean +mvs_tmdb_movie_set_type (MvsTmdbMovie *self, const gchar *type); + +gboolean +mvs_tmdb_movie_set_url (MvsTmdbMovie *self, const gchar *url); G_END_DECLS