From: Simón Pena Date: Mon, 17 May 2010 13:56:31 +0000 (+0200) Subject: WATC Movie: Improved WATC support X-Git-Url: https://vcs.maemo.org/git/?a=commitdiff_plain;h=1c83a99b3a182130c5f831367980bcbd649243b3;hp=f1729cac275aff1207de0867b498193ccdfc7b37;p=maevies WATC Movie: Improved WATC support The WATC service sends the name appended to the year and stingers info: * Constructor updated so that it takes the raw name * 3-state support is added for stingers (YES, NO, UNKNOWN) * A print method is added --- diff --git a/src/mvs-watc-movie.c b/src/mvs-watc-movie.c index e490122..5cdc9f5 100644 --- a/src/mvs-watc-movie.c +++ b/src/mvs-watc-movie.c @@ -31,7 +31,7 @@ enum { struct _MvsWatcMoviePrivate { gchar *name; - gboolean has_stingers; + MvsStingers stingers; }; static void @@ -45,7 +45,7 @@ mvs_watc_movie_get_property (GObject *object, guint property_id, 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); @@ -63,7 +63,7 @@ mvs_watc_movie_set_property (GObject *object, guint property_id, 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); @@ -100,9 +100,10 @@ mvs_watc_movie_class_init (MvsWatcMovieClass *klass) 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)); } @@ -112,13 +113,27 @@ mvs_watc_movie_init (MvsWatcMovie *self) 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 @@ -134,11 +149,14 @@ mvs_watc_movie_set_name (MvsWatcMovie *self, const gchar *name) } 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; } @@ -151,10 +169,27 @@ mvs_watc_movie_get_name (MvsWatcMovie *self) 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); } diff --git a/src/mvs-watc-movie.h b/src/mvs-watc-movie.h index a05f783..7bf7e3b 100644 --- a/src/mvs-watc-movie.h +++ b/src/mvs-watc-movie.h @@ -23,6 +23,12 @@ 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)) @@ -49,7 +55,7 @@ typedef struct { } 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); @@ -58,11 +64,14 @@ const gchar* 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 */