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-movie-info.h"
21 G_DEFINE_TYPE (MvsMovieInfo, mvs_movie_info, G_TYPE_OBJECT)
36 #define GET_PRIVATE(o) \
37 (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_MOVIE_INFO, MvsMovieInfoPrivate))
39 struct _MvsMovieInfoPrivate {
40 gboolean has_stingers;
52 mvs_movie_info_get_property (GObject *object, guint property_id,
53 GValue *value, GParamSpec *pspec)
55 MvsMovieInfo *self = MVS_MOVIE_INFO (object);
57 switch (property_id) {
58 case PROP_HAS_STINGERS:
59 g_value_set_boolean (value, self->priv->has_stingers);
62 g_value_set_string (value, self->priv->title);
65 g_value_set_string (value, self->priv->director);
68 g_value_set_string (value, self->priv->cast);
71 g_value_set_float (value, self->priv->ranking);
73 case PROP_RELEASE_DATE:
74 g_value_set_string (value, self->priv->release_date);
77 g_value_set_string (value, self->priv->overview);
80 g_value_set_string (value, self->priv->url);
83 g_value_set_string (value, self->priv->schedule);
86 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
91 mvs_movie_info_set_property (GObject *object, guint property_id,
92 const GValue *value, GParamSpec *pspec)
94 MvsMovieInfo *self = MVS_MOVIE_INFO (object);
97 switch (property_id) {
98 case PROP_HAS_STINGERS:
99 mvs_movie_info_set_stingers (self, g_value_get_boolean (value));
102 mvs_movie_info_set_title (self, g_value_get_string (value));
105 mvs_movie_info_set_director (self, g_value_get_string (value));
108 mvs_movie_info_set_cast (self, g_value_get_string (value));
111 mvs_movie_info_set_ranking (self, g_value_get_float (value));
113 case PROP_RELEASE_DATE:
114 mvs_movie_info_set_release_date (self, g_value_get_string (value));
117 mvs_movie_info_set_overview (self, g_value_get_string (value));
120 mvs_movie_info_set_url (self, g_value_get_string (value));
123 mvs_movie_info_set_schedule (self, g_value_get_string (value));
126 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
131 mvs_movie_info_finalize (GObject *object)
133 MvsMovieInfo *self = MVS_MOVIE_INFO (object);
135 g_free (self->priv->cast);
136 g_free (self->priv->director);
137 g_free (self->priv->overview);
138 g_free (self->priv->release_date);
139 g_free (self->priv->schedule);
140 g_free (self->priv->title);
141 g_free (self->priv->url);
143 G_OBJECT_CLASS (mvs_movie_info_parent_class)->finalize (object);
147 mvs_movie_info_class_init (MvsMovieInfoClass *klass)
149 GObjectClass *object_class = G_OBJECT_CLASS (klass);
151 g_type_class_add_private (klass, sizeof (MvsMovieInfoPrivate));
153 object_class->get_property = mvs_movie_info_get_property;
154 object_class->set_property = mvs_movie_info_set_property;
155 object_class->finalize = mvs_movie_info_finalize;
158 g_object_class_install_property
159 (object_class, PROP_CAST,
160 g_param_spec_string ("cast", "Movie cast", "The movie cast",
162 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
164 g_object_class_install_property
165 (object_class, PROP_DIRECTOR,
166 g_param_spec_string ("director", "Movie director", "The movie director",
168 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
170 g_object_class_install_property
171 (object_class, PROP_HAS_STINGERS,
172 g_param_spec_boolean ("stingers", "Has stingers", "The movie has stingers",
174 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
176 g_object_class_install_property
177 (object_class, PROP_OVERVIEW,
178 g_param_spec_string ("overview", "Movie overview", "The movie overview",
180 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
182 g_object_class_install_property
183 (object_class, PROP_RANKING,
184 g_param_spec_float ("ranking", "Movie ranking", "The movie ranking",
188 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
190 g_object_class_install_property
191 (object_class, PROP_RELEASE_DATE,
192 g_param_spec_string ("release", "Movie release date", "The movie release date",
194 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
196 g_object_class_install_property
197 (object_class, PROP_SCHEDULE,
198 g_param_spec_string ("schedule", "Movie schedule", "The movie schedule",
200 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
202 g_object_class_install_property
203 (object_class, PROP_TITLE,
204 g_param_spec_string ("title", "Movie title", "The movie title",
206 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
208 g_object_class_install_property
209 (object_class, PROP_URL,
210 g_param_spec_string ("url", "Movie URL", "The movie url",
212 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
216 mvs_movie_info_init (MvsMovieInfo *self)
218 self->priv = GET_PRIVATE (self);
219 self->priv->cast = NULL;
220 self->priv->director = NULL;
221 self->priv->has_stingers = FALSE;
222 self->priv->overview = NULL;
223 self->priv->ranking = 5;
224 self->priv->release_date = NULL;
225 self->priv->schedule = NULL;
226 self->priv->title = NULL;
227 self->priv->url = NULL;
231 mvs_movie_info_new (void)
233 return g_object_new (MVS_TYPE_MOVIE_INFO, NULL);
237 mvs_movie_info_set_stingers (MvsMovieInfo *self, gboolean has_stingers)
239 g_return_val_if_fail (self, FALSE);
241 self->priv->has_stingers = has_stingers;
247 mvs_movie_info_set_title (MvsMovieInfo *self, const gchar *title)
249 g_return_val_if_fail (self, FALSE);
251 g_free (self->priv->title);
253 self->priv->title = g_strdup (title);
259 mvs_movie_info_set_director (MvsMovieInfo *self, const gchar *director)
261 g_return_val_if_fail (self, FALSE);
263 g_free (self->priv->director);
265 self->priv->director = g_strdup (director);
271 mvs_movie_info_set_cast (MvsMovieInfo *self, const gchar *cast)
273 g_return_val_if_fail (self, FALSE);
275 g_free (self->priv->cast);
277 self->priv->cast = g_strdup (cast);
283 mvs_movie_info_set_ranking (MvsMovieInfo *self, gfloat ranking)
285 g_return_val_if_fail (self, FALSE);
286 g_return_val_if_fail (ranking < 10 && ranking > 0, FALSE);
288 self->priv->ranking = ranking;
294 mvs_movie_info_set_release_date (MvsMovieInfo *self,
295 const gchar *released)
297 g_return_val_if_fail (self, FALSE);
299 g_free (self->priv->release_date);
301 self->priv->release_date = g_strdup (released);
306 mvs_movie_info_set_overview (MvsMovieInfo *self,
307 const gchar *overview)
309 g_return_val_if_fail (self, FALSE);
311 g_free (self->priv->overview);
313 self->priv->overview = g_strdup (overview);
319 mvs_movie_info_set_url (MvsMovieInfo *self, const gchar *url)
321 g_return_val_if_fail (self, FALSE);
323 g_free (self->priv->url);
325 self->priv->url = g_strdup (url);
331 mvs_movie_info_set_schedule (MvsMovieInfo *self,
332 const gchar *schedule)
334 g_return_val_if_fail (self, FALSE);
336 g_free (self->priv->schedule);
338 self->priv->schedule = g_strdup (schedule);