diff options
author | Conor Curran <conor.curran@canonical.com> | 2011-03-07 11:48:56 +0000 |
---|---|---|
committer | Conor Curran <conor.curran@canonical.com> | 2011-03-07 11:48:56 +0000 |
commit | f4ed658ce1ea0b2bc0eaa47d9aa95a5585cba533 (patch) | |
tree | 4add856d6acba53053846300e0e0a1ff9913599c /src | |
parent | 39369193c6ae24b0d753edc2332b23b838714254 (diff) | |
download | ayatana-indicator-sound-f4ed658ce1ea0b2bc0eaa47d9aa95a5585cba533.tar.gz ayatana-indicator-sound-f4ed658ce1ea0b2bc0eaa47d9aa95a5585cba533.tar.bz2 ayatana-indicator-sound-f4ed658ce1ea0b2bc0eaa47d9aa95a5585cba533.zip |
added the is blacklisted dbus method
Diffstat (limited to 'src')
-rw-r--r-- | src/sound-service-dbus.c | 51 | ||||
-rw-r--r-- | src/sound-service.xml | 6 |
2 files changed, 56 insertions, 1 deletions
diff --git a/src/sound-service-dbus.c b/src/sound-service-dbus.c index b493ce8..249a054 100644 --- a/src/sound-service-dbus.c +++ b/src/sound-service-dbus.c @@ -74,6 +74,8 @@ static gboolean sound_service_dbus_blacklist_player (SoundServiceDbus* self, gchar* player_name, gboolean blacklist); +static gboolean sound_service_dbus_is_blacklisted (SoundServiceDbus* self, + gchar* player_name); G_DEFINE_TYPE (SoundServiceDbus, sound_service_dbus, G_TYPE_OBJECT); @@ -281,7 +283,16 @@ bus_method_call (GDBusConnection * connection, player_name, blacklist); retval = g_variant_new ("(b)", result); - } + } + else if (g_strcmp0(method, "IsBlacklisted") == 0) { + gchar* player_name; + g_variant_get (params, "(s)", &player_name); + + g_debug ("IsBlacklisted - name %s", player_name); + gboolean result = sound_service_dbus_is_blacklisted (service, + player_name); + retval = g_variant_new ("(b)", result); + } else { g_warning("Calling method '%s' on the sound service but it's unknown", method); } @@ -373,4 +384,42 @@ static gboolean sound_service_dbus_blacklist_player (SoundServiceDbus* self, return result; } +static gboolean sound_service_dbus_is_blacklisted (SoundServiceDbus* self, + gchar* player_name) +{ + g_return_val_if_fail (player_name != NULL, FALSE); + + gboolean result = FALSE; + GSettings* our_settings = NULL; + our_settings = g_settings_new ("com.canonical.indicators.sound"); + GVariant* the_black_list = g_settings_get_value (our_settings, + "blacklisted-media-players"); + GVariantIter iter; + gchar *str; + // Firstly prep new array which will be set on the key. + GVariantBuilder builder; + + g_variant_iter_init (&iter, the_black_list); + g_variant_builder_init(&builder, G_VARIANT_TYPE_STRING_ARRAY); + + while (g_variant_iter_loop (&iter, "s", &str)){ + g_variant_builder_add (&builder, "s", str); + } + g_variant_iter_init (&iter, the_black_list); + + while (g_variant_iter_loop (&iter, "s", &str)){ + if (g_strcmp0 (player_name, str) == 0){ + // Return if its already there + g_debug ("Yes it is blacklisted !"); + result = TRUE; + break; + } + } + g_variant_builder_clear (&builder); + g_object_unref (our_settings); + g_variant_unref (the_black_list); + g_debug ("Is it blacklisted ? %i", result); + + return result; +} diff --git a/src/sound-service.xml b/src/sound-service.xml index 81ebc2d..517088e 100644 --- a/src/sound-service.xml +++ b/src/sound-service.xml @@ -7,6 +7,12 @@ <arg type='b' name='blacklist' direction="in"/> <arg type='b' name='result' direction="out"/> </method> + <method name = "IsBlacklisted"> + <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> + <arg type='s' name='player_desktop_name' direction="in"/> + <arg type='b' name='result' direction="out"/> + </method> + <method name = "GetSoundState"> <annotation name="org.freedesktop.DBus.GLib.Async" value="true"/> <arg type='i' name='current_state' direction="out"/> |