* Expose TMDBMovie via DBus
- Creating TMDB movie-service gobject
+ Getters for each property
- - Updating dataprovider-service daemon
- + Signal should return a list of result paths
+ - A method to generate UID must be added
+ - The result objects lifetime must be controlled and finalized
+ when not needed.
* Update build so that it creates a .service file
* Create a MovieManager class in Python to ask for and retrieve results
* Connect the UI with the MovieManager
mvs-tmdb-movie.c \
mvs-tmdb-movie.h \
mvs-watc-movie.c \
- mvs-watc-movie.h
+ mvs-watc-movie.h \
+ mvs-tmdb-movie-service.c \
+ mvs-tmdb-movie-service.h \
+ mvs-tmdb-movie-service-glue.h
maevies_service_CFLAGS = \
$(DEPS_CFLAGS)
mvs-minfo-provider-service-glue.h: mvs-minfo-provider.xml
dbus-binding-tool --mode=glib-server --prefix=mvs_minfo_provider_service $< > $@
+mvs-tmdb-movie-service-glue.h: mvs-tmdb-movie.xml
+ dbus-binding-tool --mode=glib-server --prefix=mvs_tmdb_movie_service $< > $@
+
DISTCLEANFILES = $(MAINTAINERCLEANFILES)
BUILT_SOURCES = \
- mvs-minfo-provider-service-glue.h
\ No newline at end of file
+ mvs-minfo-provider-service-glue.h \
+ mvs-tmdb-movie-service-glue.h
\ No newline at end of file
#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"
#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);
+
+ mvs_tmdb_movie_print (tmdb_movie);
+ movie = mvs_tmdb_movie_service_new (self->priv->connection, tmdb_movie, i);
+ object_paths[i] = g_strdup_printf ("/TMDBMovie/%d", i);
+ }
+ i++;
+ }
+ object_paths[i] = NULL;
+
+ g_signal_emit (self, mvs_minfo_provider_service_signals[RESPONSE_RECEIVED], 0, object_paths);
+ g_strfreev (object_paths);
}
static void
0,
NULL,
NULL,
- g_cclosure_marshal_VOID__VOID,
+ g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE,
- 0,
+ 1,
+ G_TYPE_STRV,
NULL);
}
enum {
PROP_0,
+ PROP_ID,
PROP_DBUSGCONN,
};
struct _MvsTMDBMovieServicePrivate {
MvsTmdbMovie *movie;
DBusGConnection *connection;
+ guint id;
};
gboolean
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,
g_error_free (error);
}
+ object_path = g_strdup_printf (TMDB_MOVIE_SERVICE_OBJECT_PATH "/%d",
+ self->priv->id);
+
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);
}
(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);
}
MvsTMDBMovieService*
-mvs_tmdb_movie_service_new (DBusGConnection *connection, MvsTmdbMovie *movie)
+mvs_tmdb_movie_service_new (DBusGConnection *connection,
+ MvsTmdbMovie *movie, guint id)
{
- 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->id = id;
+ g_object_set (instance, "connection", connection, NULL);
instance->priv->movie = movie;
return instance;
}
GType mvs_tmdb_movie_service_get_type (void);
MvsTMDBMovieService* mvs_tmdb_movie_service_new (DBusGConnection *connection,
- MvsTmdbMovie *movie);
+ MvsTmdbMovie *movie, guint id);
G_END_DECLS