-/*
- * mvs-movie-info.c
- *
- * This file is part of maevies
- * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * General Public License for more details.
- *
- */
-
-#include "mvs-movie-info.h"
-
-G_DEFINE_TYPE (MvsMovieInfo, mvs_movie_info, G_TYPE_OBJECT)
-
-enum {
- PROP_0,
- PROP_HAS_STINGERS,
- PROP_TITLE,
- PROP_DIRECTOR,
- PROP_CAST,
- PROP_RANKING,
- PROP_RELEASE_DATE,
- PROP_OVERVIEW,
- PROP_URL,
- PROP_SCHEDULE,
-};
-
-#define GET_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_MOVIE_INFO, MvsMovieInfoPrivate))
-
-struct _MvsMovieInfoPrivate {
- gboolean has_stingers;
- gchar *title;
- gchar *director;
- gchar *cast;
- gfloat ranking;
- gchar *release_date;
- gchar *overview;
- gchar *url;
- gchar *schedule;
-};
-
-static void
-mvs_movie_info_get_property (GObject *object, guint property_id,
- GValue *value, GParamSpec *pspec)
-{
- MvsMovieInfo *self = MVS_MOVIE_INFO (object);
-
- switch (property_id) {
- case PROP_HAS_STINGERS:
- g_value_set_boolean (value, self->priv->has_stingers);
- break;
- case PROP_TITLE:
- g_value_set_string (value, self->priv->title);
- break;
- case PROP_DIRECTOR:
- g_value_set_string (value, self->priv->director);
- break;
- case PROP_CAST:
- g_value_set_string (value, self->priv->cast);
- break;
- case PROP_RANKING:
- g_value_set_float (value, self->priv->ranking);
- break;
- case PROP_RELEASE_DATE:
- g_value_set_string (value, self->priv->release_date);
- break;
- case PROP_OVERVIEW:
- g_value_set_string (value, self->priv->overview);
- 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);
- }
-}
-
-static void
-mvs_movie_info_set_property (GObject *object, guint property_id,
- const GValue *value, GParamSpec *pspec)
-{
- MvsMovieInfo *self = MVS_MOVIE_INFO (object);
- GDate *date = NULL;
-
- switch (property_id) {
- case PROP_HAS_STINGERS:
- mvs_movie_info_set_stingers (self, g_value_get_boolean (value));
- break;
- case PROP_TITLE:
- mvs_movie_info_set_title (self, g_value_get_string (value));
- break;
- case PROP_DIRECTOR:
- mvs_movie_info_set_director (self, g_value_get_string (value));
- break;
- case PROP_CAST:
- mvs_movie_info_set_cast (self, g_value_get_string (value));
- break;
- case PROP_RANKING:
- mvs_movie_info_set_ranking (self, g_value_get_float (value));
- break;
- case PROP_RELEASE_DATE:
- mvs_movie_info_set_release_date (self, g_value_get_string (value));
- break;
- case PROP_OVERVIEW:
- mvs_movie_info_set_overview (self, g_value_get_string (value));
- break;
- case PROP_URL:
- mvs_movie_info_set_url (self, g_value_get_string (value));
- break;
- case PROP_SCHEDULE:
- mvs_movie_info_set_schedule (self, g_value_get_string (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-}
-
-static void
-mvs_movie_info_finalize (GObject *object)
-{
- MvsMovieInfo *self = MVS_MOVIE_INFO (object);
-
- g_free (self->priv->cast);
- g_free (self->priv->director);
- 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->url);
-
- G_OBJECT_CLASS (mvs_movie_info_parent_class)->finalize (object);
-}
-
-static void
-mvs_movie_info_class_init (MvsMovieInfoClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (MvsMovieInfoPrivate));
-
- object_class->get_property = mvs_movie_info_get_property;
- object_class->set_property = mvs_movie_info_set_property;
- object_class->finalize = mvs_movie_info_finalize;
-
-
- g_object_class_install_property
- (object_class, PROP_CAST,
- g_param_spec_string ("cast", "Movie cast", "The movie cast",
- 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",
- 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,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-
- g_object_class_install_property
- (object_class, PROP_OVERVIEW,
- g_param_spec_string ("overview", "Movie overview", "The movie overview",
- NULL,
- 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,
- 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",
- 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",
- 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",
- 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",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
-}
-
-static void
-mvs_movie_info_init (MvsMovieInfo *self)
-{
- self->priv = GET_PRIVATE (self);
- self->priv->cast = NULL;
- self->priv->director = NULL;
- self->priv->has_stingers = FALSE;
- self->priv->overview = NULL;
- self->priv->ranking = 5;
- self->priv->release_date = NULL;
- self->priv->schedule = NULL;
- self->priv->title = NULL;
- self->priv->url = NULL;
-}
-
-MvsMovieInfo*
-mvs_movie_info_new (void)
-{
- return g_object_new (MVS_TYPE_MOVIE_INFO, NULL);
-}
-
-gboolean
-mvs_movie_info_set_stingers (MvsMovieInfo *self, gboolean has_stingers)
-{
- g_return_val_if_fail (self, FALSE);
-
- self->priv->has_stingers = has_stingers;
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_title (MvsMovieInfo *self, const gchar *title)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->title);
-
- self->priv->title = g_strdup (title);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_director (MvsMovieInfo *self, const gchar *director)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->director);
-
- self->priv->director = g_strdup (director);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_cast (MvsMovieInfo *self, const gchar *cast)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->cast);
-
- self->priv->cast = g_strdup (cast);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_ranking (MvsMovieInfo *self, gfloat ranking)
-{
- g_return_val_if_fail (self, FALSE);
- g_return_val_if_fail (ranking < 10 && ranking > 0, FALSE);
-
- self->priv->ranking = ranking;
-
- return FALSE;
-}
-
-gboolean
-mvs_movie_info_set_release_date (MvsMovieInfo *self,
- const gchar *released)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->release_date);
-
- self->priv->release_date = g_strdup (released);
-
- return TRUE;
-}
-gboolean
-mvs_movie_info_set_overview (MvsMovieInfo *self,
- const gchar *overview)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->overview);
-
- self->priv->overview = g_strdup (overview);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_url (MvsMovieInfo *self, const gchar *url)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->url);
-
- self->priv->url = g_strdup (url);
-
- return TRUE;
-}
-
-gboolean
-mvs_movie_info_set_schedule (MvsMovieInfo *self,
- const gchar *schedule)
-{
- g_return_val_if_fail (self, FALSE);
-
- g_free (self->priv->schedule);
-
- self->priv->schedule = g_strdup (schedule);
-
- return TRUE;
-}