minfoprovider: Added more methods to the movie service
[maevies] / src / mvs-tmdb-movie-service.c
index 788eb18..ffb97b8 100644 (file)
@@ -27,6 +27,7 @@ G_DEFINE_TYPE (MvsTMDBMovieService, mvs_tmdb_movie_service, G_TYPE_OBJECT)
 
 enum {
         PROP_0,
+        PROP_ID,
         PROP_DBUSGCONN,
 };
 
@@ -36,6 +37,7 @@ enum {
 struct _MvsTMDBMovieServicePrivate {
         MvsTmdbMovie *movie;
         DBusGConnection *connection;
+        gchar *suffix;
 };
 
 gboolean
@@ -46,6 +48,35 @@ mvs_tmdb_movie_service_get_title (MvsTMDBMovieService *self, gchar **title,
         return *title != NULL;
 }
 
+gboolean
+mvs_tmdb_movie_service_get_popularity (MvsTMDBMovieService *self, gchar **popularity,
+                                       GError **error)
+{
+        *popularity = g_strdup (mvs_tmdb_movie_get_popularity (self->priv->movie));
+        return *popularity != NULL;
+}
+
+gboolean
+mvs_tmdb_movie_service_get_rating (MvsTMDBMovieService *self, gchar **rating)
+{
+        *rating = g_strdup (mvs_tmdb_movie_get_rating (self->priv->movie));
+        return *rating != NULL;
+}
+
+gboolean
+mvs_tmdb_movie_service_get_released (MvsTMDBMovieService *self, gchar **released)
+{
+        *released = g_strdup (mvs_tmdb_movie_get_released (self->priv->movie));
+        return *released != NULL;
+}
+
+gboolean
+mvs_tmdb_movie_service_get_overview (MvsTMDBMovieService *self, gchar **overview)
+{
+        *overview = g_strdup (mvs_tmdb_movie_get_overview (self->priv->movie));
+        return *overview != NULL;
+}
+
 #include "mvs-tmdb-movie-service-glue.h"
 
 static void
@@ -54,8 +85,7 @@ setup_dbus (MvsTMDBMovieService *self)
         DBusGProxy *proxy;
         guint request_name_result;
         GError *error = NULL;
-
-        g_message ("Registering DBUS " TMDB_MOVIE_SERVICE_OBJECT_PATH " " TMDB_MOVIE_SERVICE_NAME);
+        gchar *object_path = NULL;
 
         proxy = dbus_g_proxy_new_for_name (self->priv->connection,
                                            DBUS_SERVICE_DBUS,
@@ -70,10 +100,14 @@ setup_dbus (MvsTMDBMovieService *self)
                 g_error_free (error);
         }
 
+        object_path = g_strdup_printf (TMDB_MOVIE_SERVICE_OBJECT_PATH "/%s",
+                        self->priv->suffix);
+
         dbus_g_connection_register_g_object (self->priv->connection,
-                                             TMDB_MOVIE_SERVICE_OBJECT_PATH,
+                                             object_path,
                                              G_OBJECT (self));
 
+        g_free (object_path);
         g_object_unref (proxy);
 }
 
@@ -108,6 +142,7 @@ mvs_tmdb_movie_service_finalize (GObject *object)
         if (self->priv->connection) {
                 dbus_g_connection_unref (self->priv->connection);
         }
+        g_free (self->priv->suffix);
         g_object_unref (self->priv->movie);
         G_OBJECT_CLASS (mvs_tmdb_movie_service_parent_class)->finalize (object);
 }
@@ -126,7 +161,7 @@ mvs_tmdb_movie_service_class_init (MvsTMDBMovieServiceClass *klass)
                 (object_class, PROP_DBUSGCONN,
                  g_param_spec_pointer ("connection", "DBusGConnection",
                                        "DBus GConnection",
-                                       G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+                                       G_PARAM_WRITABLE));
 
          dbus_g_object_type_install_info (MVS_TYPE_TMDB_MOVIE_SERVICE,
                                           &dbus_glib_mvs_tmdb_movie_service_object_info);
@@ -138,13 +173,16 @@ mvs_tmdb_movie_service_init (MvsTMDBMovieService *self)
         self->priv = GET_PRIVATE (self);
         self->priv->movie = NULL;
         self->priv->connection = NULL;
+        self->priv->suffix = NULL;
 }
 
 MvsTMDBMovieService*
-mvs_tmdb_movie_service_new (DBusGConnection *connection, MvsTmdbMovie *movie)
+mvs_tmdb_movie_service_new (DBusGConnection *connection,
+                MvsTmdbMovie *movie, const gchar *suffix)
 {
-        MvsTMDBMovieService *instance = g_object_new (MVS_TYPE_TMDB_MOVIE_SERVICE,
-                             "connection", connection, NULL);
+        MvsTMDBMovieService *instance = g_object_new (MVS_TYPE_TMDB_MOVIE_SERVICE, NULL);
+        instance->priv->suffix = g_strdup(suffix);
+        g_object_set (instance, "connection", connection, NULL);
         instance->priv->movie = movie;
         return instance;
 }