From 78068166398ffaee0bb2d997673139168fdfee3b Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 6 Jun 2011 17:22:49 +0200 Subject: two new methods added the service interface inorder to handle track and player specific items --- src/sound-service-dbus.c | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) (limited to 'src/sound-service-dbus.c') diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index d0fd765..f99716a 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -58,6 +58,14 @@ struct _SoundServiceDbusPrivate { Device* device; }; +enum { + TRACK_SPECIFIC_ITEM, + PLAYER_SPECIFIC_ITEM, + LAST_SIGNAL +}; + +static guint signals[LAST_SIGNAL] = { 0 }; + static GDBusNodeInfo * node_info = NULL; static GDBusInterfaceInfo * interface_info = NULL; @@ -110,6 +118,20 @@ sound_service_dbus_class_init (SoundServiceDbusClass *klass) g_error("Unable to find interface '" INDICATOR_SOUND_DBUS_INTERFACE "'"); } } + signals[TRACK_SPECIFIC_ITEM] = g_signal_new("track-specific-item-requested", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); + signals[PLAYER_SPECIFIC_ITEM] = g_signal_new("player-specific-item-requested", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + 0, + NULL, NULL, + g_cclosure_marshal_VOID__STRING, + G_TYPE_NONE, 1, G_TYPE_STRING); } static void @@ -185,7 +207,7 @@ sound_service_dbus_build_sound_menu ( SoundServiceDbus* self, DBUSMENU_MENUITEM_PROP_LABEL, _("Sound Preferences...")); dbusmenu_menuitem_child_append(priv->root_menuitem, settings_mi); - g_object_unref (settings_mi); + g_object_unref (settings_mi); g_signal_connect(G_OBJECT(settings_mi), DBUSMENU_MENUITEM_SIGNAL_ITEM_ACTIVATED, G_CALLBACK(show_sound_settings_dialog), NULL); } @@ -297,6 +319,16 @@ bus_method_call (GDBusConnection * connection, player_name); retval = g_variant_new ("(b)", result); } + else if (g_strcmp0(method, "EnableTrackSpecificItems") == 0) { + gchar* player_name; + g_variant_get (params, "(s)", &player_name); + g_debug ("EnableTrackSpecificItems - name %s", player_name); + g_signal_emit (service, + signals[TRACK_SPECIFIC_ITEM], + 0, + player_name); + + } else { g_warning("Calling method '%s' on the sound service but it's unknown", method); } -- cgit v1.2.3 From a1192a69cfdba207fa3e6ece69363649d8813dcf Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Mon, 6 Jun 2011 20:42:22 +0200 Subject: track specific items outline implemented --- src/sound-service-dbus.c | 1 - 1 file changed, 1 deletion(-) (limited to 'src/sound-service-dbus.c') diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index f99716a..26477a1 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -170,7 +170,6 @@ sound_service_dbus_create_root_item (SoundServiceDbus* self) { SoundServiceDbusPrivate * priv = SOUND_SERVICE_DBUS_GET_PRIVATE(self); priv->root_menuitem = dbusmenu_menuitem_new(); - //g_debug("Root ID: %d", dbusmenu_menuitem_get_id(priv->root_menuitem)); DbusmenuServer *server = dbusmenu_server_new (INDICATOR_SOUND_MENU_DBUS_OBJECT_PATH); dbusmenu_server_set_root (server, priv->root_menuitem); g_object_unref (priv->root_menuitem); -- cgit v1.2.3 From a3acb4947b7ae8c31e873befb24bebe64b36e49c Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 21 Jun 2011 10:12:12 +0200 Subject: expanded the signature on the dbus methods for player and track specific items to handle the object path on the other side --- src/sound-service-dbus.c | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'src/sound-service-dbus.c') diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index 26477a1..afb4f04 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -319,15 +319,24 @@ bus_method_call (GDBusConnection * connection, retval = g_variant_new ("(b)", result); } else if (g_strcmp0(method, "EnableTrackSpecificItems") == 0) { - gchar* player_name; - g_variant_get (params, "(s)", &player_name); - g_debug ("EnableTrackSpecificItems - name %s", player_name); + gchar** player_object_path_and_id; + g_variant_get (params, "(ss)", &player_object_path_and_id); + /*g_debug ("EnableTrackSpecificItems - name %s", player_object_path); g_signal_emit (service, signals[TRACK_SPECIFIC_ITEM], 0, - player_name); + player_object_path);*/ } + else if (g_strcmp0(method, "EnablePlayerSpecificItems") == 0) { + /*gchar* player_object_path; + g_variant_get (params, "(s)", &player_object_path); + g_debug ("EnableTrackSpecificItems - name %s", player_object_path); + g_signal_emit (service, + signals[TRACK_SPECIFIC_ITEM], + 0, + player_object_path);*/ + } else { g_warning("Calling method '%s' on the sound service but it's unknown", method); } -- cgit v1.2.3 From a6dee99edd1a3870c4dc4557f605578c52a4f0dc Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Tue, 21 Jun 2011 18:26:10 +0200 Subject: custom marshaller in place to handle the string string signature on our item specific dbus methods --- src/sound-service-dbus.c | 31 ++++++++++++++++++++----------- 1 file changed, 20 insertions(+), 11 deletions(-) (limited to 'src/sound-service-dbus.c') diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index 5d7c4cd..d546ceb 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -32,6 +32,7 @@ #include "device.h" #include "gen-sound-service.xml.h" #include "dbus-shared-names.h" +#include "sound-service-marshal.h" // DBUS methods static void bus_method_call (GDBusConnection * connection, @@ -123,7 +124,7 @@ sound_service_dbus_class_init (SoundServiceDbusClass *klass) G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__STRING, + _sound_service_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); signals[PLAYER_SPECIFIC_ITEM] = g_signal_new("player-specific-item-requested", @@ -131,7 +132,7 @@ sound_service_dbus_class_init (SoundServiceDbusClass *klass) G_SIGNAL_RUN_LAST, 0, NULL, NULL, - g_cclosure_marshal_VOID__STRING, + _sound_service_marshal_VOID__STRING_STRING, G_TYPE_NONE, 2, G_TYPE_STRING, G_TYPE_STRING); } @@ -321,23 +322,31 @@ bus_method_call (GDBusConnection * connection, retval = g_variant_new ("(b)", result); } else if (g_strcmp0(method, "EnableTrackSpecificItems") == 0) { - gchar** player_object_path_and_id; - g_variant_get (params, "(ss)", &player_object_path_and_id); - /*g_debug ("EnableTrackSpecificItems - name %s", player_object_path); + gchar* player_object_path; + gchar* player_id; + g_variant_get (params, "(os)", &player_object_path, &player_id); + //g_debug ("object path = %s and id = %s", player_object_path, player_id); g_signal_emit (service, signals[TRACK_SPECIFIC_ITEM], 0, - player_object_path);*/ + player_object_path, + player_id); + g_free (player_object_path); + g_free (player_id); } else if (g_strcmp0(method, "EnablePlayerSpecificItems") == 0) { - /*gchar* player_object_path; - g_variant_get (params, "(s)", &player_object_path); - g_debug ("EnableTrackSpecificItems - name %s", player_object_path); + gchar* player_object_path; + gchar* player_id; + g_variant_get (params, "(os)", &player_object_path, &player_id); + //g_debug ("object path = %s and id = %s", player_object_path, player_id); g_signal_emit (service, - signals[TRACK_SPECIFIC_ITEM], + signals[PLAYER_SPECIFIC_ITEM], 0, - player_object_path);*/ + player_object_path, + player_id); + g_free (player_object_path); + g_free (player_id); } else { g_warning("Calling method '%s' on the sound service but it's unknown", method); -- cgit v1.2.3 From 01fc374f65b6c552891d3f0d2dad5c7eb8031596 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 22 Jun 2011 14:18:38 +0200 Subject: properly plug the track / player specific together --- src/sound-service-dbus.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/sound-service-dbus.c') diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index d546ceb..980fa05 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -325,7 +325,7 @@ bus_method_call (GDBusConnection * connection, gchar* player_object_path; gchar* player_id; g_variant_get (params, "(os)", &player_object_path, &player_id); - //g_debug ("object path = %s and id = %s", player_object_path, player_id); + g_debug ("object path = %s and id = %s", player_object_path, player_id); g_signal_emit (service, signals[TRACK_SPECIFIC_ITEM], 0, -- cgit v1.2.3 From e63dc6451177bc9d4c398849eda13ff880fc69c3 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 29 Jun 2011 10:24:23 +0200 Subject: new menu items manager - and removed the earlier attempt at a custom item for the same purpose --- src/sound-service-dbus.c | 1 + 1 file changed, 1 insertion(+) (limited to 'src/sound-service-dbus.c') diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index 980fa05..bad90ca 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -322,6 +322,7 @@ bus_method_call (GDBusConnection * connection, retval = g_variant_new ("(b)", result); } else if (g_strcmp0(method, "EnableTrackSpecificItems") == 0) { + g_debug ("EnableTrackSpecificItems"); gchar* player_object_path; gchar* player_id; g_variant_get (params, "(os)", &player_object_path, &player_id); -- cgit v1.2.3 From 023090260c73fad2f22c8937fad70215d56319d1 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 10 Aug 2011 13:41:08 +0100 Subject: track specific ordering correct, player specific under way --- src/sound-service-dbus.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'src/sound-service-dbus.c') diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index bad90ca..9950302 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -326,7 +326,7 @@ bus_method_call (GDBusConnection * connection, gchar* player_object_path; gchar* player_id; g_variant_get (params, "(os)", &player_object_path, &player_id); - g_debug ("object path = %s and id = %s", player_object_path, player_id); + //g_debug ("object path = %s and id = %s", player_object_path, player_id); g_signal_emit (service, signals[TRACK_SPECIFIC_ITEM], 0, @@ -340,7 +340,9 @@ bus_method_call (GDBusConnection * connection, gchar* player_object_path; gchar* player_id; g_variant_get (params, "(os)", &player_object_path, &player_id); - //g_debug ("object path = %s and id = %s", player_object_path, player_id); + g_debug ("PLayer specific item - object path = %s and id = %s", + player_object_path, + player_id); g_signal_emit (service, signals[PLAYER_SPECIFIC_ITEM], 0, -- cgit v1.2.3