WATC Movie: initial commmit
[maevies] / src / mvs-watc-movie.c
1 /*
2  * mvs-watc-movie.c
3  *
4  * This file is part of maevies
5  * Copyright (C) 2010 Simón Pena <spenap@gmail.com>
6  *
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.
11  *
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.
16  *
17  */
18
19 #include "mvs-watc-movie.h"
20
21 G_DEFINE_TYPE (MvsWatcMovie, mvs_watc_movie, G_TYPE_OBJECT)
22
23 enum {
24         PROP_0,
25         PROP_NAME,
26         PROP_STINGERS,
27 };
28
29 #define GET_PRIVATE(o) \
30   (G_TYPE_INSTANCE_GET_PRIVATE ((o), MVS_TYPE_WATC_MOVIE, MvsWatcMoviePrivate))
31
32 struct _MvsWatcMoviePrivate {
33         gchar *name;
34         gboolean has_stingers;
35 };
36
37 static void
38 mvs_watc_movie_get_property (GObject *object, guint property_id,
39                          GValue *value, GParamSpec *pspec)
40 {
41         MvsWatcMovie *self = MVS_WATC_MOVIE (object);
42
43         switch (property_id) {
44         case PROP_NAME:
45                 g_value_set_string (value, self->priv->name);
46                 break;
47         case PROP_STINGERS:
48                 g_value_set_boolean (value, self->priv->has_stingers);
49                 break;
50        default:
51                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
52         }
53 }
54
55 static void
56 mvs_watc_movie_set_property (GObject *object, guint property_id,
57                          const GValue *value, GParamSpec *pspec)
58 {
59         MvsWatcMovie *self = MVS_WATC_MOVIE (object);
60
61         switch (property_id) {
62         case PROP_NAME:
63                 mvs_watc_movie_set_name (self, g_value_get_string (value));
64                 break;
65         case PROP_STINGERS:
66                 mvs_watc_movie_set_stingers (self, g_value_get_boolean (value));
67                 break;
68         default:
69                 G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
70         }
71 }
72
73 static void
74 mvs_watc_movie_finalize (GObject *object)
75 {
76         MvsWatcMovie *self = MVS_WATC_MOVIE (object);
77
78         g_free (self->priv->name);
79
80         G_OBJECT_CLASS (mvs_watc_movie_parent_class)->finalize (object);
81 }
82
83 static void
84 mvs_watc_movie_class_init (MvsWatcMovieClass *klass)
85 {
86         GObjectClass *object_class = G_OBJECT_CLASS (klass);
87
88         g_type_class_add_private (klass, sizeof (MvsWatcMoviePrivate));
89
90         object_class->get_property = mvs_watc_movie_get_property;
91         object_class->set_property = mvs_watc_movie_set_property;
92         object_class->finalize = mvs_watc_movie_finalize;
93
94         g_object_class_install_property
95                 (object_class, PROP_NAME,
96                  g_param_spec_string ("name", "Movie name",
97                                  "The movie name",
98                                  NULL,
99                                  G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
100
101         g_object_class_install_property
102                 (object_class, PROP_STINGERS,
103                  g_param_spec_boolean ("stingers", "Movie stingers",
104                                  "Tells if movie has stingers",
105                                  FALSE,
106                                  G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
107 }
108
109 static void
110 mvs_watc_movie_init (MvsWatcMovie *self)
111 {
112         self->priv = GET_PRIVATE (self);
113
114         self->priv->name = NULL;
115         self->priv->has_stingers = FALSE;
116 }
117
118 MvsWatcMovie*
119 mvs_watc_movie_new (void)
120 {
121         return g_object_new (MVS_TYPE_WATC_MOVIE, NULL);
122 }
123
124 gboolean
125 mvs_watc_movie_set_name (MvsWatcMovie *self, const gchar *name)
126 {
127         g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
128
129         g_free (self->priv->name);
130
131         self->priv->name = g_strdup (name);
132
133         return TRUE;
134 }
135
136 gboolean
137 mvs_watc_movie_set_stingers (MvsWatcMovie *self, gboolean has_stingers)
138 {
139         g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
140
141         self->priv->has_stingers = has_stingers;
142
143         return TRUE;
144 }
145
146 const gchar*
147 mvs_watc_movie_get_name (MvsWatcMovie *self)
148 {
149         g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), NULL);
150
151         return self->priv->name;
152 }
153
154 gboolean
155 mvs_watc_movie_get_stingers (MvsWatcMovie *self)
156 {
157         g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
158
159         return self->priv->has_stingers;
160 }