From 619518204cf4a2966541b070b99cd0ae8b7537d9 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger Date: Wed, 2 Dec 2009 21:37:21 +0100 Subject: [PATCH] ability to change mic volume through GUI (doesn't work for the moment) --- data/glade/message_window.glade | 2 -- src/chat_control.py | 28 ++++++++++++++++++---------- src/common/jingle_rtp.py | 10 ++++++++-- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/data/glade/message_window.glade b/data/glade/message_window.glade index 887c62a01..0e4a92643 100644 --- a/data/glade/message_window.glade +++ b/data/glade/message_window.glade @@ -771,7 +771,6 @@ 0 0 110 1 10 10 0 bottom - False @@ -796,7 +795,6 @@ 0 0 110 1 10 10 0 bottom - False diff --git a/src/chat_control.py b/src/chat_control.py index f55d76c71..781d655fd 100644 --- a/src/chat_control.py +++ b/src/chat_control.py @@ -1382,6 +1382,14 @@ class ChatControl(ChatControlBase): id_ = widget.connect('released', self.on_num_button_released) self.handlers[id_] = widget + widget = self.xml.get_widget('mic_hscale') + id_ = widget.connect('value_changed', self.on_mic_hscale_value_changed) + self.handlers[id_] = widget + + widget = self.xml.get_widget('sound_hscale') + id_ = widget.connect('value_changed', self.on_sound_hscale_value_changed) + self.handlers[id_] = widget + if not session: # Don't use previous session if we want to a specific resource # and it's not the same @@ -1604,22 +1612,22 @@ class ChatControl(ChatControlBase): def set_video_state(self, state, sid=None, reason=None): self._set_jingle_state('video', state, sid=sid, reason=reason) - def on_num_button_pressed(self, widget, num): + def _get_audio_content(self): session = gajim.connections[self.account].get_jingle_session( self.contact.get_full_jid(), self.audio_sid) - content = session.get_content('audio') - content._start_dtmf(num) + return session.get_content('audio') + + def on_num_button_pressed(self, widget, num): + self._get_audio_content()._start_dtmf(num) def on_num_button_released(self, released): - session = gajim.connections[self.account].get_jingle_session( - self.contact.get_full_jid(), self.audio_sid) - content = session.get_content('audio') - content._stop_dtmf() + self._get_audio_content()._stop_dtmf() - def on_mic_hscale_value_changed(self, widget, scroll_type): - pass + def on_mic_hscale_value_changed(self, widget): + value = widget.get_value() + self._get_audio_content().set_mic_volume(value / 100) - def on_sound_hscale_value_changed(self, widget, scroll_type): + def on_sound_hscale_value_changed(self, widget): pass def on_avatar_eventbox_enter_notify_event(self, widget, event): diff --git a/src/common/jingle_rtp.py b/src/common/jingle_rtp.py index b97dc1d5f..49eada41b 100644 --- a/src/common/jingle_rtp.py +++ b/src/common/jingle_rtp.py @@ -257,6 +257,12 @@ class JingleAudio(JingleRTPContent): JingleRTPContent.__init__(self, session, 'audio', transport) self.setup_stream() + def set_mic_volume(self, vol): + """ + vol must be between 0 ans 1 + """ + self.mic_volume.set_property('volume', vol) + def setup_stream(self): JingleRTPContent.setup_stream(self) @@ -281,7 +287,7 @@ class JingleAudio(JingleRTPContent): 'audioconvert ! %s', _("audio output")) self.mic_volume = src_bin.get_by_name('gajim_vol') - self.mic_volume.set_property('volume', 1) + self.set_mic_volume(0) # link gst elements self.pipeline.add(self.sink, src_bin) @@ -333,4 +339,4 @@ def get_content(desc): contents[xmpp.NS_JINGLE_RTP] = get_content -# vim: se ts=3: \ No newline at end of file +# vim: se ts=3: