Daniel Brötzmann pushed to branch master at gajim / gajim
Commits: af77bd25 by wurstsalat at 2021-12-20T00:06:57+01:00 CallWidget: Fix starting calls
- - - - - eeea21dd by wurstsalat at 2021-12-20T00:19:10+01:00 CallWidget: Don’t use deprecated button signals
- - - - -
2 changed files:
- gajim/data/gui/call_widget.ui - gajim/gtk/call_widget.py
Changes:
===================================== gajim/data/gui/call_widget.ui ===================================== @@ -28,8 +28,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -52,8 +52,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -74,8 +74,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -96,8 +96,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -118,8 +118,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -140,8 +140,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -162,8 +162,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -184,8 +184,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -206,8 +206,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -228,8 +228,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -250,8 +250,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property> @@ -272,8 +272,8 @@ <property name="can-focus">True</property> <property name="receives-default">True</property> <property name="relief">none</property> - <signal name="pressed" handler="_on_num_button_press" swapped="no"/> - <signal name="released" handler="_on_num_button_release" swapped="no"/> + <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/> + <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/> <child> <object class="GtkLabel"> <property name="visible">True</property>
===================================== gajim/gtk/call_widget.py ===================================== @@ -22,6 +22,7 @@ import time
from gi.repository import GObject +from gi.repository import Gdk from gi.repository import Gtk
from nbxmpp.namespaces import Namespace @@ -68,7 +69,7 @@ def __init__(self, account: str, contact: types.BareContact) -> None: # having to show a new call row self._incoming_video_event = None
- self._jingle: dict[str, JingleObject] = { + self._jingle: dict(str, JingleObject) = { 'audio': JingleObject( JingleState.NULL, self._update_audio), @@ -133,10 +134,16 @@ def _on_video(self, _button: Gtk.Button) -> None: self._on_jingle_button_toggled(['video'])
def _on_jingle_button_toggled(self, jingle_types: List[str]) -> None: + call_resources = self._get_call_resources() + if not call_resources: + return + + # TODO: Resource priority + full_jid = call_resources[0].jid + if all(item in jingle_types for item in ['audio', 'video']): # Both 'audio' and 'video' in jingle_types - sid = self._client.get_module('Jingle').start_audio_video( - self._contact.jid) + sid = self._client.get_module('Jingle').start_audio_video(full_jid) self._set_jingle_state('audio', JingleState.CONNECTING, sid) self._set_jingle_state('video', JingleState.CONNECTING, sid) self._store_outgoing_call(sid) @@ -146,8 +153,7 @@ def _on_jingle_button_toggled(self, jingle_types: List[str]) -> None: if self._jingle['audio'].state != JingleState.NULL: self._close_jingle_content('audio') else: - sid = self._client.get_module('Jingle').start_audio( - self._contact.jid) + sid = self._client.get_module('Jingle').start_audio(full_jid) self._set_jingle_state('audio', JingleState.CONNECTING, sid) self._store_outgoing_call(sid)
@@ -155,8 +161,7 @@ def _on_jingle_button_toggled(self, jingle_types: List[str]) -> None: if self._jingle['video'].state != JingleState.NULL: self._close_jingle_content('video') else: - sid = self._client.get_module('Jingle').start_video( - self._contact.jid) + sid = self._client.get_module('Jingle').start_video(full_jid) self._set_jingle_state('video', JingleState.CONNECTING, sid) self._store_outgoing_call(sid)
@@ -170,12 +175,18 @@ def _store_outgoing_call(self, sid: str) -> None: KindConstant.CALL_OUTGOING, additional_data=additional_data)
- def _on_num_button_press(self, button: Gtk.Button) -> None: + def _on_num_button_press(self, + button: Gtk.Button, + _event: Gdk.EventButton + ) -> None: button_id = Gtk.Buildable.get_name(button) key = button_id.split('_')[1] self._get_audio_content().start_dtmf(key)
- def _on_num_button_release(self, _button: Gtk.Button) -> None: + def _on_num_button_release(self, + _button: Gtk.Button, + _event: Gdk.EventButton + ) -> None: self._get_audio_content().stop_dtmf()
def _on_mic_volume_changed(self, @@ -539,6 +550,12 @@ def _get_audio_content(self) -> Optional[JingleAudio]: self._contact.jid, self._jingle['audio'].sid) return session.get_content('audio')
+ def _get_call_resources(self) -> List[types.ResourceContact]: + resource_list = [] + for resource_contact in self._contact.iter_resources(): + if resource_contact.supports(Namespace.JINGLE_RTP): + resource_list.append(resource_contact) + return resource_list
class JingleObject: __slots__ = ('sid', 'state', 'available', 'update')
View it on GitLab: https://dev.gajim.org/gajim/gajim/-/compare/a1d16269e71f692dbe9ecb7670238e40...