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-image.h"
21 G_DEFINE_TYPE (MvsTmdbImage, mvs_tmdb_image, G_TYPE_OBJECT)
33 #define GET_PRIVATE(o) \
34 (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_TMDB_IMAGE, MvsTmdbImagePrivate))
36 struct _MvsTmdbImagePrivate {
46 mvs_tmdb_image_get_property (GObject *object, guint property_id,
47 GValue *value, GParamSpec *pspec)
49 MvsTmdbImage *self = MVS_TMDB_IMAGE (object);
51 switch (property_id) {
53 g_value_set_string (value, self->priv->type);
56 g_value_set_string (value, self->priv->url);
59 g_value_set_string (value, self->priv->size);
62 g_value_set_int (value, self->priv->width);
65 g_value_set_int (value, self->priv->height);
68 g_value_set_string (value, self->priv->id);
71 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
76 mvs_tmdb_image_set_property (GObject *object, guint property_id,
77 const GValue *value, GParamSpec *pspec)
79 MvsTmdbImage *self = MVS_TMDB_IMAGE (object);
81 switch (property_id) {
83 mvs_tmdb_image_set_imagetype (self, g_value_get_string (value));
86 mvs_tmdb_image_set_url (self, g_value_get_string (value));
89 mvs_tmdb_image_set_size (self, g_value_get_string (value));
92 mvs_tmdb_image_set_width (self, g_value_get_int (value));
95 mvs_tmdb_image_set_height (self, g_value_get_int (value));
98 mvs_tmdb_image_set_id (self, g_value_get_string (value));
101 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
106 mvs_tmdb_image_finalize (GObject *object)
108 MvsTmdbImage *self = MVS_TMDB_IMAGE (object);
110 g_free (self->priv->type);
111 g_free (self->priv->url);
112 g_free (self->priv->size);
113 g_free (self->priv->id);
115 G_OBJECT_CLASS (mvs_tmdb_image_parent_class)->finalize (object);
119 mvs_tmdb_image_class_init (MvsTmdbImageClass *klass)
121 GObjectClass *object_class = G_OBJECT_CLASS (klass);
123 g_type_class_add_private (klass, sizeof (MvsTmdbImagePrivate));
125 object_class->get_property = mvs_tmdb_image_get_property;
126 object_class->set_property = mvs_tmdb_image_set_property;
127 object_class->finalize = mvs_tmdb_image_finalize;
129 g_object_class_install_property
130 (object_class, PROP_TYPE,
131 g_param_spec_string ("type", "Image type",
134 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
136 g_object_class_install_property
137 (object_class, PROP_URL,
138 g_param_spec_string ("url", "Image url",
141 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
143 g_object_class_install_property
144 (object_class, PROP_SIZE,
145 g_param_spec_string ("size", "Image size",
148 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
150 g_object_class_install_property
151 (object_class, PROP_WIDTH,
152 g_param_spec_int ("width", "Image width",
157 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
159 g_object_class_install_property
160 (object_class, PROP_HEIGHT,
161 g_param_spec_int ("height", "Image height",
166 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
168 g_object_class_install_property
169 (object_class, PROP_ID,
170 g_param_spec_string ("id", "Image id",
173 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
177 mvs_tmdb_image_init (MvsTmdbImage *self)
179 self->priv = GET_PRIVATE (self);
181 self->priv->type = NULL;
182 self->priv->url = NULL;
183 self->priv->width = 0;
184 self->priv->height = 0;
185 self->priv->size = NULL;
186 self->priv->id = NULL;
190 mvs_tmdb_image_new ()
192 return g_object_new (MVS_TYPE_TMDB_IMAGE, NULL);
196 mvs_tmdb_image_set_imagetype (MvsTmdbImage *self, const gchar *type)
198 g_return_val_if_fail(MVS_TMDB_IMAGE (self), FALSE);
200 g_free (self->priv->type);
202 self->priv->type = g_strdup (type);
204 return self->priv->type != NULL;
208 mvs_tmdb_image_get_imagetype (MvsTmdbImage *self)
210 return self->priv->type;
214 mvs_tmdb_image_set_url (MvsTmdbImage *self, const gchar *url)
216 g_return_val_if_fail(MVS_TMDB_IMAGE (self), FALSE);
218 g_free (self->priv->url);
220 self->priv->url = g_strdup (url);
222 return self->priv->url != NULL;
226 mvs_tmdb_image_get_url (MvsTmdbImage *self)
228 return self->priv->url;
232 mvs_tmdb_image_set_size (MvsTmdbImage *self, const gchar *size)
234 g_return_val_if_fail(MVS_TMDB_IMAGE (self), FALSE);
236 g_free (self->priv->size);
238 self->priv->size = g_strdup (size);
240 return self->priv->size != NULL;
244 mvs_tmdb_image_get_size (MvsTmdbImage *self)
246 return self->priv->size;
250 mvs_tmdb_image_set_id (MvsTmdbImage *self, const gchar *id)
252 g_return_val_if_fail(MVS_TMDB_IMAGE (self), FALSE);
254 g_free (self->priv->id);
256 self->priv->id = g_strdup (id);
258 return self->priv->id != NULL;
262 mvs_tmdb_image_get_id (MvsTmdbImage *self)
264 return self->priv->id;
268 mvs_tmdb_image_set_width (MvsTmdbImage *self, gint width)
270 g_return_val_if_fail(MVS_TMDB_IMAGE (self), FALSE);
272 self->priv->width = width;
278 mvs_tmdb_image_get_width (MvsTmdbImage *self)
280 return self->priv->width;
284 mvs_tmdb_image_set_height (MvsTmdbImage *self, gint height)
286 g_return_val_if_fail(MVS_TMDB_IMAGE (self), FALSE);
288 self->priv->height = height;
294 mvs_tmdb_image_get_height (MvsTmdbImage *self)
296 return self->priv->width;
300 mvs_tmdb_image_print (MvsTmdbImage *self)
305 for (i = 0; i < LAST_FIELD; i ++) {
306 g_object_get (self, image_fields[i], &value, NULL);
307 g_print ("*[%s]: %s\n", image_fields[i], value);