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 image_fields[LAST_FIELD] = { "type", "url", "size", "id" };
49 mvs_tmdb_image_get_property (GObject *object, guint property_id,
50 GValue *value, GParamSpec *pspec)
52 MvsTmdbImage *self = MVS_TMDB_IMAGE (object);
54 switch (property_id) {
56 g_value_set_string (value, self->priv->type);
59 g_value_set_string (value, self->priv->url);
62 g_value_set_string (value, self->priv->size);
65 g_value_set_int (value, self->priv->width);
68 g_value_set_int (value, self->priv->height);
71 g_value_set_string (value, self->priv->id);
74 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
79 mvs_tmdb_image_set_property (GObject *object, guint property_id,
80 const GValue *value, GParamSpec *pspec)
82 MvsTmdbImage *self = MVS_TMDB_IMAGE (object);
84 switch (property_id) {
86 mvs_tmdb_image_set_imagetype (self, g_value_get_string (value));
89 mvs_tmdb_image_set_url (self, g_value_get_string (value));
92 mvs_tmdb_image_set_size (self, g_value_get_string (value));
95 mvs_tmdb_image_set_width (self, g_value_get_int (value));
98 mvs_tmdb_image_set_height (self, g_value_get_int (value));
101 mvs_tmdb_image_set_id (self, g_value_get_string (value));
104 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
109 mvs_tmdb_image_finalize (GObject *object)
111 MvsTmdbImage *self = MVS_TMDB_IMAGE (object);
113 g_free (self->priv->type);
114 g_free (self->priv->url);
115 g_free (self->priv->size);
116 g_free (self->priv->id);
118 G_OBJECT_CLASS (mvs_tmdb_image_parent_class)->finalize (object);
122 mvs_tmdb_image_class_init (MvsTmdbImageClass *klass)
124 GObjectClass *object_class = G_OBJECT_CLASS (klass);
126 g_type_class_add_private (klass, sizeof (MvsTmdbImagePrivate));
128 object_class->get_property = mvs_tmdb_image_get_property;
129 object_class->set_property = mvs_tmdb_image_set_property;
130 object_class->finalize = mvs_tmdb_image_finalize;
132 g_object_class_install_property
133 (object_class, PROP_TYPE,
134 g_param_spec_string ("type", "Image type",
137 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
139 g_object_class_install_property
140 (object_class, PROP_URL,
141 g_param_spec_string ("url", "Image url",
144 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
146 g_object_class_install_property
147 (object_class, PROP_SIZE,
148 g_param_spec_string ("size", "Image size",
151 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
153 g_object_class_install_property
154 (object_class, PROP_WIDTH,
155 g_param_spec_int ("width", "Image width",
160 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
162 g_object_class_install_property
163 (object_class, PROP_HEIGHT,
164 g_param_spec_int ("height", "Image height",
169 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
171 g_object_class_install_property
172 (object_class, PROP_ID,
173 g_param_spec_string ("id", "Image id",
176 G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
180 mvs_tmdb_image_init (MvsTmdbImage *self)
182 self->priv = GET_PRIVATE (self);
184 self->priv->type = NULL;
185 self->priv->url = NULL;
186 self->priv->width = 0;
187 self->priv->height = 0;
188 self->priv->size = NULL;
189 self->priv->id = NULL;
193 mvs_tmdb_image_new ()
195 return g_object_new (MVS_TYPE_TMDB_IMAGE, NULL);
199 mvs_tmdb_image_set_imagetype (MvsTmdbImage *self, const gchar *type)
201 g_return_val_if_fail (MVS_TMDB_IMAGE (self), FALSE);
203 g_free (self->priv->type);
205 self->priv->type = g_strdup (type);
207 return self->priv->type != NULL;
211 mvs_tmdb_image_get_imagetype (MvsTmdbImage *self)
213 return self->priv->type;
217 mvs_tmdb_image_set_url (MvsTmdbImage *self, const gchar *url)
219 g_return_val_if_fail (MVS_TMDB_IMAGE (self), FALSE);
221 g_free (self->priv->url);
223 self->priv->url = g_strdup (url);
225 return self->priv->url != NULL;
229 mvs_tmdb_image_get_url (MvsTmdbImage *self)
231 return self->priv->url;
235 mvs_tmdb_image_set_size (MvsTmdbImage *self, const gchar *size)
237 g_return_val_if_fail (MVS_TMDB_IMAGE (self), FALSE);
239 g_free (self->priv->size);
241 self->priv->size = g_strdup (size);
243 return self->priv->size != NULL;
247 mvs_tmdb_image_get_size (MvsTmdbImage *self)
249 return self->priv->size;
253 mvs_tmdb_image_set_id (MvsTmdbImage *self, const gchar *id)
255 g_return_val_if_fail (MVS_TMDB_IMAGE (self), FALSE);
257 g_free (self->priv->id);
259 self->priv->id = g_strdup (id);
261 return self->priv->id != NULL;
265 mvs_tmdb_image_get_id (MvsTmdbImage *self)
267 return self->priv->id;
271 mvs_tmdb_image_set_width (MvsTmdbImage *self, gint width)
273 g_return_val_if_fail (MVS_TMDB_IMAGE (self), FALSE);
275 self->priv->width = width;
281 mvs_tmdb_image_get_width (MvsTmdbImage *self)
283 return self->priv->width;
287 mvs_tmdb_image_set_height (MvsTmdbImage *self, gint height)
289 g_return_val_if_fail (MVS_TMDB_IMAGE (self), FALSE);
291 self->priv->height = height;
297 mvs_tmdb_image_get_height (MvsTmdbImage *self)
299 return self->priv->width;
303 mvs_tmdb_image_print (MvsTmdbImage *self)
308 for (i = 0; i < LAST_FIELD; i ++) {
309 g_object_get (self, image_fields[i], &value, NULL);
310 g_print ("*[%s]: %s\n", image_fields[i], value);
316 mvs_tmdb_image_get_field (int field)
318 g_return_val_if_fail (field >= 0 && field < LAST_FIELD, NULL);
320 return image_fields[field];