From fe11e6ad36166f9e5e7279ffc59249dd7788360a Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Wed, 16 Feb 2011 18:37:15 +0000 Subject: moving towards a voip input item --- src/active-sink.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/active-sink.c') diff --git a/src/active-sink.c b/src/active-sink.c index b7954be..6b0063d 100644 --- a/src/active-sink.c +++ b/src/active-sink.c @@ -21,7 +21,7 @@ with this program. If not, see . #include "active-sink.h" #include "slider-menu-item.h" #include "mute-menu-item.h" - +#include "voip-input-menu-item.h" #include "pulseaudio-mgr.h" typedef struct _ActiveSinkPrivate ActiveSinkPrivate; @@ -30,7 +30,8 @@ struct _ActiveSinkPrivate { SliderMenuItem* volume_slider_menuitem; MuteMenuItem* mute_menuitem; - SoundState current_sound_state; + VoipInputMenuItem* voip_input_menu_item; + SoundState current_sound_state; SoundServiceDbus* service; gint index; gchar* name; @@ -72,6 +73,7 @@ active_sink_init (ActiveSink *self) ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); priv->mute_menuitem = NULL; priv->volume_slider_menuitem = NULL; + priv->voip_input_menu_item = NULL; priv->current_sound_state = UNAVAILABLE; priv->index = -1; priv->name = NULL; @@ -79,6 +81,7 @@ active_sink_init (ActiveSink *self) // Init our menu items. priv->mute_menuitem = g_object_new (MUTE_MENU_ITEM_TYPE, NULL); + priv->voip_input_menu_item = g_object_new (VOIP_INPUT_MENU_ITEM_TYPE, NULL);; priv->volume_slider_menuitem = slider_menu_item_new (self); mute_menu_item_enable (priv->mute_menuitem, FALSE); slider_menu_item_enable (priv->volume_slider_menuitem, FALSE); @@ -279,6 +282,13 @@ active_sink_get_state (ActiveSink* self) return priv->current_sound_state; } +void +active_sink_update_voip_input_source (ActiveSink* self, const pa_source_info* update) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + +} + ActiveSink* active_sink_new (SoundServiceDbus* service) { @@ -287,7 +297,8 @@ active_sink_new (SoundServiceDbus* service) priv->service = service; sound_service_dbus_build_sound_menu (service, mute_menu_item_get_button (priv->mute_menuitem), - DBUSMENU_MENUITEM (priv->volume_slider_menuitem)); + DBUSMENU_MENUITEM (priv->volume_slider_menuitem), + DBUSMENU_MENUITEM (priv->voip_input_menu_item)); pm_establish_pulse_connection (sink); return sink; } -- cgit v1.2.3 From c1fdbb5237dd04d6508fafc7d4af67645d4c66c5 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 17 Feb 2011 15:17:31 +0000 Subject: back end plugged together for proof of concept --- src/active-sink.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'src/active-sink.c') diff --git a/src/active-sink.c b/src/active-sink.c index 6b0063d..4cf8dc0 100644 --- a/src/active-sink.c +++ b/src/active-sink.c @@ -87,6 +87,21 @@ active_sink_init (ActiveSink *self) slider_menu_item_enable (priv->volume_slider_menuitem, FALSE); } +void +active_sink_activate_voip_item (ActiveSink* self) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE); +} + +void +active_sink_deactivate_voip_source (ActiveSink* self) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + voip_input_menu_item_enable (priv->voip_input_menu_item, FALSE); +} + + static void active_sink_dispose (GObject *object) { @@ -286,7 +301,20 @@ void active_sink_update_voip_input_source (ActiveSink* self, const pa_source_info* update) { ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + voip_input_menu_item_update (priv->voip_input_menu_item, update); +} +gboolean +active_sink_is_voip_source_populated (ActiveSink* self) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + return voip_input_menu_item_is_populated (priv->voip_input_menu_item); +} + +gint active_sink_get_source_index (ActiveSink* self) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + return voip_input_menu_item_get_index (priv->voip_input_menu_item); } ActiveSink* -- cgit v1.2.3 From 4bebcafef41b3dbc6b4f3f3e2f6382d82390335f Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Thu, 17 Feb 2011 18:54:58 +0000 Subject: getting there --- src/active-sink.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/active-sink.c') diff --git a/src/active-sink.c b/src/active-sink.c index 4cf8dc0..d97419b 100644 --- a/src/active-sink.c +++ b/src/active-sink.c @@ -237,7 +237,7 @@ active_sink_get_state_from_volume (ActiveSink* self) return state; } -static pa_cvolume +pa_cvolume active_sink_construct_mono_volume (const pa_cvolume* vol) { pa_cvolume new_volume; -- cgit v1.2.3 From d8cc480485f8f46142298341ef5336a0572be5b4 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Fri, 18 Feb 2011 13:05:58 +0000 Subject: all working nicely, custom mute behaviour needed --- src/active-sink.c | 25 +++++++++++++++++++++---- 1 file changed, 21 insertions(+), 4 deletions(-) (limited to 'src/active-sink.c') diff --git a/src/active-sink.c b/src/active-sink.c index d97419b..2e212e7 100644 --- a/src/active-sink.c +++ b/src/active-sink.c @@ -53,7 +53,6 @@ static pa_cvolume active_sink_construct_mono_volume (const pa_cvolume* vol); static void active_sink_volume_update (ActiveSink* self, gdouble percent); static void active_sink_mute_update (ActiveSink* self, gboolean muted); - G_DEFINE_TYPE (ActiveSink, active_sink, G_TYPE_OBJECT); static void @@ -88,17 +87,28 @@ active_sink_init (ActiveSink *self) } void -active_sink_activate_voip_item (ActiveSink* self) +active_sink_activate_voip_item (ActiveSink* self, gint sink_input_index, gint client_index) { ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); - voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE); + if (voip_input_menu_item_is_interested (priv->voip_input_menu_item, + sink_input_index, + client_index)){ + voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE); + } } void active_sink_deactivate_voip_source (ActiveSink* self) { ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); - voip_input_menu_item_enable (priv->voip_input_menu_item, FALSE); + voip_input_menu_item_deactivate_source (priv->voip_input_menu_item); +} + +void +active_sink_deactivate_voip_client (ActiveSink* self) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item); } @@ -186,6 +196,13 @@ active_sink_update_volume (ActiveSink* self, gdouble percent) } +gint +active_sink_get_current_sink_input_index (ActiveSink* sink) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (sink); + return voip_input_menu_item_get_sink_input_index (priv->voip_input_menu_item); +} + static void active_sink_mute_update (ActiveSink* self, gboolean muted) { -- cgit v1.2.3 From 9a424c26c67544aafdd7cff2d66519b1c72e8aa0 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Fri, 18 Feb 2011 16:56:17 +0000 Subject: bug free afaics ... --- src/active-sink.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/active-sink.c') diff --git a/src/active-sink.c b/src/active-sink.c index 2e212e7..ce0e135 100644 --- a/src/active-sink.c +++ b/src/active-sink.c @@ -98,10 +98,10 @@ active_sink_activate_voip_item (ActiveSink* self, gint sink_input_index, gint cl } void -active_sink_deactivate_voip_source (ActiveSink* self) +active_sink_deactivate_voip_source (ActiveSink* self, gboolean visible) { ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); - voip_input_menu_item_deactivate_source (priv->voip_input_menu_item); + voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible); } void -- cgit v1.2.3 From 80afbbce02c5d31fc4375b84c8647628333b7cc2 Mon Sep 17 00:00:00 2001 From: Conor Curran Date: Fri, 18 Feb 2011 17:11:08 +0000 Subject: the last bug really --- src/active-sink.c | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'src/active-sink.c') diff --git a/src/active-sink.c b/src/active-sink.c index ce0e135..a78d33e 100644 --- a/src/active-sink.c +++ b/src/active-sink.c @@ -86,32 +86,6 @@ active_sink_init (ActiveSink *self) slider_menu_item_enable (priv->volume_slider_menuitem, FALSE); } -void -active_sink_activate_voip_item (ActiveSink* self, gint sink_input_index, gint client_index) -{ - ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); - if (voip_input_menu_item_is_interested (priv->voip_input_menu_item, - sink_input_index, - client_index)){ - voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE); - } -} - -void -active_sink_deactivate_voip_source (ActiveSink* self, gboolean visible) -{ - ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); - voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible); -} - -void -active_sink_deactivate_voip_client (ActiveSink* self) -{ - ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); - voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item); -} - - static void active_sink_dispose (GObject *object) { @@ -148,6 +122,32 @@ active_sink_populate (ActiveSink* sink, g_debug ("Active sink has been populated - volume %f", volume_percent); } +void +active_sink_activate_voip_item (ActiveSink* self, gint sink_input_index, gint client_index) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + if (voip_input_menu_item_is_interested (priv->voip_input_menu_item, + sink_input_index, + client_index)){ + voip_input_menu_item_enable (priv->voip_input_menu_item, TRUE); + } +} + +void +active_sink_deactivate_voip_source (ActiveSink* self, gboolean visible) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + visible &= voip_input_menu_item_is_active (priv->voip_input_menu_item); + voip_input_menu_item_deactivate_source (priv->voip_input_menu_item, visible); +} + +void +active_sink_deactivate_voip_client (ActiveSink* self) +{ + ActiveSinkPrivate* priv = ACTIVE_SINK_GET_PRIVATE (self); + voip_input_menu_item_deactivate_voip_client (priv->voip_input_menu_item); +} + void active_sink_update (ActiveSink* sink, const pa_sink_info* update) -- cgit v1.2.3