TmdbMovieService: Renamed from TMDB to Tmdb
[maevies] / src / mvs-minfo-provider-service.c
index f35150a..5066470 100644 (file)
@@ -20,6 +20,8 @@
 
 #include "mvs-minfo-provider-service.h"
 #include "mvs-minfo-provider.h"
+#include "mvs-tmdb-movie-service.h"
+#include "mvs-tmdb-movie.h"
 
 #define MINFO_PROVIDER_SERVICE_OBJECT_PATH "/MInfoProvider"
 #define MINFO_PROVIDER_SERVICE_NAME "com.simonpena.maevies.minfoprovider"
@@ -45,6 +47,7 @@ mvs_minfo_provider_service_signals[LAST_SIGNAL] = { 0 };
 struct _MvsMInfoProviderServicePrivate {
         MvsMInfoProvider *minfo_provider;
         DBusGConnection *connection;
+        guint search_id;
 };
 
 gboolean
@@ -60,11 +63,36 @@ mvs_minfo_provider_service_query (MvsMInfoProviderService *self,
 #include "mvs-minfo-provider-service-glue.h"
 
 static void
-response_received_cb (MvsMInfoProvider *provider, gpointer response,
+response_received_cb (MvsMInfoProvider *provider, GList *list,
                       gpointer user_data)
 {
         MvsMInfoProviderService *self = MVS_MINFO_PROVIDER_SERVICE (user_data);
-        g_signal_emit (self, mvs_minfo_provider_service_signals[RESPONSE_RECEIVED], 0);
+        MvsTmdbMovieService *movie = NULL;
+        GError *error = NULL;
+        GList *iter = NULL;
+        gchar  **object_paths= g_new0 (gchar*, g_list_length (list) + 1);
+        guint i = 0;
+
+        for (iter = list; iter; iter = iter->next) {
+                if (MVS_IS_TMDB_MOVIE (iter->data)) {
+                        MvsTmdbMovie *tmdb_movie = MVS_TMDB_MOVIE (iter->data);
+                        gchar *uid_suffix = g_strdup_printf ("%d_%s",
+                                        self->priv->search_id,
+                                        mvs_tmdb_movie_get_id (tmdb_movie));
+
+                        movie = mvs_tmdb_movie_service_new (self->priv->connection,
+                                        tmdb_movie, uid_suffix);
+                        object_paths[i] = g_strdup_printf ("/TMDBMovie/%s",
+                                        uid_suffix);
+                        g_free (uid_suffix);
+                }
+                i++;
+        }
+        object_paths[i] = NULL;
+
+        g_signal_emit (self, mvs_minfo_provider_service_signals[RESPONSE_RECEIVED], 0, object_paths);
+        g_strfreev (object_paths);
+        self->priv->search_id++;
 }
 
 static void
@@ -155,9 +183,10 @@ mvs_minfo_provider_service_class_init (MvsMInfoProviderServiceClass *klass)
                          0,
                          NULL,
                          NULL,
-                         g_cclosure_marshal_VOID__VOID,
+                         g_cclosure_marshal_VOID__POINTER,
                          G_TYPE_NONE,
-                         0,
+                         1,
+                         G_TYPE_STRV,
                          NULL);
 }
 
@@ -167,6 +196,7 @@ mvs_minfo_provider_service_init (MvsMInfoProviderService *self)
         self->priv = GET_PRIVATE (self);
         self->priv->minfo_provider = mvs_minfo_provider_new ();
         self->priv->connection = NULL;
+        self->priv->search_id = 0;
 
         g_signal_connect (self->priv->minfo_provider, "response-received",
                           G_CALLBACK (response_received_cb), self);