diff options
Diffstat (limited to 'src/sound-service-dbus.c')
-rw-r--r-- | src/sound-service-dbus.c | 48 |
1 files changed, 45 insertions, 3 deletions
diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index 6fb0a64..5d7c4cd 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,22 @@ 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, 2, G_TYPE_STRING, + 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, 2, G_TYPE_STRING, + G_TYPE_STRING); } static void @@ -148,7 +172,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); @@ -183,9 +206,9 @@ sound_service_dbus_build_sound_menu ( SoundServiceDbus* self, dbusmenu_menuitem_property_set( settings_mi, DBUSMENU_MENUITEM_PROP_LABEL, - _("Sound Settings...")); + _("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 +320,25 @@ bus_method_call (GDBusConnection * connection, player_name); 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); + g_signal_emit (service, + signals[TRACK_SPECIFIC_ITEM], + 0, + 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); } |