*
*/
+#include <string.h>
+
#include "mvs-watc-movie.h"
G_DEFINE_TYPE (MvsWatcMovie, mvs_watc_movie, G_TYPE_OBJECT)
PROP_0,
PROP_NAME,
PROP_STINGERS,
+ PROP_YEAR,
};
#define GET_PRIVATE(o) \
struct _MvsWatcMoviePrivate {
gchar *name;
- MvsStingers stingers;
+ int stingers;
+ gchar *year;
};
static void
case PROP_STINGERS:
g_value_set_enum (value, self->priv->stingers);
break;
- default:
+ case PROP_YEAR:
+ g_value_set_string (value, self->priv->year);
+ 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_enum (value));
+ mvs_watc_movie_set_stingers (self, g_value_get_int (value));
+ break;
+ case PROP_YEAR:
+ mvs_watc_movie_set_year (self, g_value_get_string (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
MvsWatcMovie *self = MVS_WATC_MOVIE (object);
g_free (self->priv->name);
+ g_free (self->priv->year);
G_OBJECT_CLASS (mvs_watc_movie_parent_class)->finalize (object);
}
g_object_class_install_property
(object_class, PROP_STINGERS,
- g_param_spec_enum ("stingers", "Movie stingers",
+ g_param_spec_int ("stingers", "Movie stingers",
"Tells if movie has stingers",
- G_TYPE_ENUM,
+ 0,
+ MVS_STINGERS_LAST,
MVS_STINGERS_UNKNOWN,
G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
+
+ g_object_class_install_property
+ (object_class, PROP_YEAR,
+ g_param_spec_string ("year", "Movie year",
+ "The movie year",
+ NULL,
+ G_PARAM_READWRITE));
}
static void
self->priv->name = NULL;
self->priv->stingers = MVS_STINGERS_UNKNOWN;
+ self->priv->year = NULL;
}
MvsWatcMovie*
mvs_watc_movie_new (const gchar *raw_name)
{
MvsWatcMovie *instance = g_object_new (MVS_TYPE_WATC_MOVIE, NULL);
+ int len = strlen (raw_name);
/* The raw name comes with the format
- * $(MOVIE_NAME) $(YEAR)$(STINGERS) */
+ * $(MOVIE_NAME) $(YEAR)$(STINGERS)
+ *
+ * If stingers are present, actual length is len-1.
+ * If date is present, actual length is len-6
+ * */
- if (g_str_has_suffix (raw_name, "*"))
+ if (g_str_has_suffix (raw_name, "*")) {
instance->priv->stingers = MVS_STINGERS_YES;
- else if (g_str_has_suffix (raw_name, "?"))
+ len--;
+ }
+ else if (g_str_has_suffix (raw_name, "?")) {
instance->priv->stingers = MVS_STINGERS_UNKNOWN;
+ len--;
+ }
else
instance->priv->stingers = MVS_STINGERS_NO;
- mvs_watc_movie_set_name (instance, raw_name);
+ if (raw_name[len-1] == ')') {
+ len = len -6;
+
+ gchar *year = g_strndup (raw_name + len +1, 4);
+ mvs_watc_movie_set_year (instance, year);
+ g_free (year);
+ }
+
+ gchar *name = g_strndup (raw_name, len);
+ mvs_watc_movie_set_name (instance, name);
+
+ g_free (name);
return instance;
}
}
gboolean
-mvs_watc_movie_set_stingers (MvsWatcMovie *self, MvsStingers stingers)
+mvs_watc_movie_set_stingers (MvsWatcMovie *self, int stingers)
{
g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
g_return_val_if_fail (stingers == MVS_STINGERS_UNKNOWN ||
return self->priv->name;
}
-MvsStingers
+int
mvs_watc_movie_get_stingers (MvsWatcMovie *self)
{
g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
g_print ("[Name]: %s\n", self->priv->name);
g_print ("[Stingers]: %s\n", has_stingers);
+ g_print ("[Year]: %s\n",
+ self->priv->year ? self->priv->year : " - ");
+}
+
+gboolean
+mvs_watc_movie_set_year (MvsWatcMovie *self, const gchar *year)
+{
+ g_return_val_if_fail (MVS_IS_WATC_MOVIE (self), FALSE);
+
+ g_free (self->priv->year);
+
+ self->priv->year = g_strdup (year);
+}
+
+const gchar*
+mvs_watc_movie_get_year (MvsWatcMovie *self)
+{
+ return self->priv->year;
}