struct _MvsWatcMoviePrivate {
gchar *name;
- gboolean has_stingers;
+ MvsStingers stingers;
};
static void
g_value_set_string (value, self->priv->name);
break;
case PROP_STINGERS:
- g_value_set_boolean (value, self->priv->has_stingers);
+ g_value_set_enum (value, self->priv->stingers);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
mvs_watc_movie_set_name (self, g_value_get_string (value));
break;
case PROP_STINGERS:
- mvs_watc_movie_set_stingers (self, g_value_get_boolean (value));
+ mvs_watc_movie_set_stingers (self, g_value_get_enum (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
g_object_class_install_property
(object_class, PROP_STINGERS,
- g_param_spec_boolean ("stingers", "Movie stingers",
+ g_param_spec_enum ("stingers", "Movie stingers",
"Tells if movie has stingers",
- FALSE,
+ G_TYPE_ENUM,
+ MVS_STINGERS_UNKNOWN,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
}
self->priv = GET_PRIVATE (self);
self->priv->name = NULL;
- self->priv->has_stingers = FALSE;
+ self->priv->stingers = MVS_STINGERS_UNKNOWN;
}
MvsWatcMovie*
-mvs_watc_movie_new (void)
+mvs_watc_movie_new (const gchar *raw_name)
{
- return g_object_new (MVS_TYPE_WATC_MOVIE, NULL);
+ MvsWatcMovie *instance = g_object_new (MVS_TYPE_WATC_MOVIE, NULL);
+
+ /* The raw name comes with the format
+ * $(MOVIE_NAME) $(YEAR)$(STINGERS) */
+
+ if (g_str_has_suffix (raw_name, "*"))
+ instance->priv->stingers = MVS_STINGERS_YES;
+ else if (g_str_has_suffix (raw_name, "?"))
+ instance->priv->stingers = MVS_STINGERS_UNKNOWN;
+ else
+ instance->priv->stingers = MVS_STINGERS_NO;
+
+ mvs_watc_movie_set_name (instance, raw_name);
+
+ return instance;
}
gboolean
}
gboolean
-mvs_watc_movie_set_stingers (MvsWatcMovie *self, gboolean has_stingers)
+mvs_watc_movie_set_stingers (MvsWatcMovie *self, MvsStingers stingers)
{
g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
+ g_return_val_if_fail (stingers == MVS_STINGERS_UNKNOWN ||
+ stingers == MVS_STINGERS_YES ||
+ stingers == MVS_STINGERS_NO, FALSE);
- self->priv->has_stingers = has_stingers;
+ self->priv->stingers = stingers;
return TRUE;
}
return self->priv->name;
}
-gboolean
+MvsStingers
mvs_watc_movie_get_stingers (MvsWatcMovie *self)
{
g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
- return self->priv->has_stingers;
+ return self->priv->stingers;
+}
+
+void
+mvs_watc_movie_print (MvsWatcMovie *self)
+{
+ const gchar *has_stingers = NULL;
+ g_return_if_fail (MVS_IS_WATC_MOVIE (self));
+
+ if (self->priv->stingers == MVS_STINGERS_NO)
+ has_stingers = "No";
+ else if (self->priv->stingers == MVS_STINGERS_YES)
+ has_stingers = "Yes";
+ else
+ has_stingers = "Unknown";
+
+ g_print ("[Name]: %s\n", self->priv->name);
+ g_print ("[Stingers]: %s\n", has_stingers);
}
G_BEGIN_DECLS
+typedef enum {
+ MVS_STINGERS_UNKNOWN,
+ MVS_STINGERS_YES,
+ MVS_STINGERS_NO
+} MvsStingers;
+
#define MVS_TYPE_WATC_MOVIE mvs_watc_movie_get_type()
#define MVS_WATC_MOVIE(obj) \
(G_TYPE_CHECK_INSTANCE_CAST ((obj), MVS_TYPE_WATC_MOVIE, MvsWatcMovie))
} MvsWatcMovieClass;
GType mvs_watc_movie_get_type (void);
-MvsWatcMovie* mvs_watc_movie_new (void);
+MvsWatcMovie* mvs_watc_movie_new (const gchar *raw_name);
gboolean
mvs_watc_movie_set_name (MvsWatcMovie *self, const gchar *name);
mvs_watch_movie_get_name (MvsWatcMovie *self);
gboolean
-mvs_watc_movie_set_stingers (MvsWatcMovie *self, gboolean has_stingers);
+mvs_watc_movie_set_stingers (MvsWatcMovie *self, MvsStingers stingers);
-gboolean
+MvsStingers
mvs_watch_movie_get_stingers (MvsWatcMovie *self);
+void
+mvs_watch_movie_print (MvsWatcMovie *self);
+
G_END_DECLS
#endif /* _MVS_WATC_MOVIE */