#include "mvs-minfo-provider-service.h"
#include "mvs-minfo-provider.h"
+#include "mvs-tmdb-movie-service.h"
+#include "mvs-tmdb-movie.h"
+#include "mvs-watc-movie-service.h"
+#include "mvs-watc-movie.h"
+#include "mvs-marshal.h"
#define MINFO_PROVIDER_SERVICE_OBJECT_PATH "/MInfoProvider"
#define MINFO_PROVIDER_SERVICE_NAME "com.simonpena.maevies.minfoprovider"
+#define TMDB_MOVIE_INTERFACE "com.simonpena.maevies.tmdbmovie"
+#define WATC_MOVIE_INTERFACE "com.simonpena.maevies.watcmovie"
G_DEFINE_TYPE (MvsMInfoProviderService, mvs_minfo_provider_service, G_TYPE_OBJECT)
struct _MvsMInfoProviderServicePrivate {
MvsMInfoProvider *minfo_provider;
DBusGConnection *connection;
+ guint search_id;
};
gboolean
#include "mvs-minfo-provider-service-glue.h"
static void
-response_received_cb (MvsMInfoProvider *provider, gpointer response,
+response_received_cb (MvsMInfoProvider *provider, guint service, 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);
+ GList *iter = NULL;
+ gchar **object_paths= g_new0 (gchar*, g_list_length (list) + 1);
+ gchar *movie_interface = NULL;
+ guint i = 0;
+
+ movie_interface = service == MVS_SERVICE_TMDB ?
+ g_strdup (TMDB_MOVIE_INTERFACE):
+ g_strdup (WATC_MOVIE_INTERFACE);
+
+ /* TODO We left the movie var unused to keep a warning
+ * remembering that DBus objects aren't being freed
+ * when they aren't needed anymore */
+ 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));
+
+ MvsTmdbMovieService *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);
+ }
+ else if (MVS_IS_WATC_MOVIE (iter->data)) {
+ MvsWatcMovie *watc_movie = MVS_WATC_MOVIE (iter->data);
+ gchar *uid_suffix = g_strdup_printf ("%d_%d",
+ self->priv->search_id,
+ i);
+ MvsWatcMovieService *movie = mvs_watc_movie_service_new (
+ self->priv->connection,
+ watc_movie, uid_suffix);
+ object_paths[i] = g_strdup_printf ("/WATCMovie/%s",
+ uid_suffix);
+ g_free (uid_suffix);
+ }
+ i++;
+ }
+ object_paths[i] = NULL;
+
+ g_signal_emit (self, mvs_minfo_provider_service_signals[RESPONSE_RECEIVED],
+ 0, movie_interface, object_paths);
+ g_strfreev (object_paths);
+ g_free (movie_interface);
+ self->priv->search_id++;
}
static void
0,
NULL,
NULL,
- g_cclosure_marshal_VOID__VOID,
+ mvs_marshal_VOID__STRING_POINTER,
G_TYPE_NONE,
- 0,
+ 2,
+ G_TYPE_STRING,
+ G_TYPE_STRV,
NULL);
}
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);