Daniel Brötzmann pushed to branch master at gajim / gajim

Commits:

2 changed files:

Changes:

  • gajim/data/gui/call_widget.ui
    ... ... @@ -28,8 +28,8 @@
    28 28
                 <property name="can-focus">True</property>
    
    29 29
                 <property name="receives-default">True</property>
    
    30 30
                 <property name="relief">none</property>
    
    31
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    32
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    31
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    32
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    33 33
                 <child>
    
    34 34
                   <object class="GtkLabel">
    
    35 35
                     <property name="visible">True</property>
    
    ... ... @@ -52,8 +52,8 @@
    52 52
                 <property name="can-focus">True</property>
    
    53 53
                 <property name="receives-default">True</property>
    
    54 54
                 <property name="relief">none</property>
    
    55
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    56
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    55
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    56
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    57 57
                 <child>
    
    58 58
                   <object class="GtkLabel">
    
    59 59
                     <property name="visible">True</property>
    
    ... ... @@ -74,8 +74,8 @@
    74 74
                 <property name="can-focus">True</property>
    
    75 75
                 <property name="receives-default">True</property>
    
    76 76
                 <property name="relief">none</property>
    
    77
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    78
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    77
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    78
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    79 79
                 <child>
    
    80 80
                   <object class="GtkLabel">
    
    81 81
                     <property name="visible">True</property>
    
    ... ... @@ -96,8 +96,8 @@
    96 96
                 <property name="can-focus">True</property>
    
    97 97
                 <property name="receives-default">True</property>
    
    98 98
                 <property name="relief">none</property>
    
    99
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    100
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    99
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    100
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    101 101
                 <child>
    
    102 102
                   <object class="GtkLabel">
    
    103 103
                     <property name="visible">True</property>
    
    ... ... @@ -118,8 +118,8 @@
    118 118
                 <property name="can-focus">True</property>
    
    119 119
                 <property name="receives-default">True</property>
    
    120 120
                 <property name="relief">none</property>
    
    121
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    122
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    121
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    122
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    123 123
                 <child>
    
    124 124
                   <object class="GtkLabel">
    
    125 125
                     <property name="visible">True</property>
    
    ... ... @@ -140,8 +140,8 @@
    140 140
                 <property name="can-focus">True</property>
    
    141 141
                 <property name="receives-default">True</property>
    
    142 142
                 <property name="relief">none</property>
    
    143
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    144
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    143
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    144
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    145 145
                 <child>
    
    146 146
                   <object class="GtkLabel">
    
    147 147
                     <property name="visible">True</property>
    
    ... ... @@ -162,8 +162,8 @@
    162 162
                 <property name="can-focus">True</property>
    
    163 163
                 <property name="receives-default">True</property>
    
    164 164
                 <property name="relief">none</property>
    
    165
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    166
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    165
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    166
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    167 167
                 <child>
    
    168 168
                   <object class="GtkLabel">
    
    169 169
                     <property name="visible">True</property>
    
    ... ... @@ -184,8 +184,8 @@
    184 184
                 <property name="can-focus">True</property>
    
    185 185
                 <property name="receives-default">True</property>
    
    186 186
                 <property name="relief">none</property>
    
    187
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    188
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    187
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    188
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    189 189
                 <child>
    
    190 190
                   <object class="GtkLabel">
    
    191 191
                     <property name="visible">True</property>
    
    ... ... @@ -206,8 +206,8 @@
    206 206
                 <property name="can-focus">True</property>
    
    207 207
                 <property name="receives-default">True</property>
    
    208 208
                 <property name="relief">none</property>
    
    209
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    210
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    209
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    210
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    211 211
                 <child>
    
    212 212
                   <object class="GtkLabel">
    
    213 213
                     <property name="visible">True</property>
    
    ... ... @@ -228,8 +228,8 @@
    228 228
                 <property name="can-focus">True</property>
    
    229 229
                 <property name="receives-default">True</property>
    
    230 230
                 <property name="relief">none</property>
    
    231
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    232
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    231
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    232
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    233 233
                 <child>
    
    234 234
                   <object class="GtkLabel">
    
    235 235
                     <property name="visible">True</property>
    
    ... ... @@ -250,8 +250,8 @@
    250 250
                 <property name="can-focus">True</property>
    
    251 251
                 <property name="receives-default">True</property>
    
    252 252
                 <property name="relief">none</property>
    
    253
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    254
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    253
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    254
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    255 255
                 <child>
    
    256 256
                   <object class="GtkLabel">
    
    257 257
                     <property name="visible">True</property>
    
    ... ... @@ -272,8 +272,8 @@
    272 272
                 <property name="can-focus">True</property>
    
    273 273
                 <property name="receives-default">True</property>
    
    274 274
                 <property name="relief">none</property>
    
    275
    -            <signal name="pressed" handler="_on_num_button_press" swapped="no"/>
    
    276
    -            <signal name="released" handler="_on_num_button_release" swapped="no"/>
    
    275
    +            <signal name="button-press-event" handler="_on_num_button_press" swapped="no"/>
    
    276
    +            <signal name="button-release-event" handler="_on_num_button_release" swapped="no"/>
    
    277 277
                 <child>
    
    278 278
                   <object class="GtkLabel">
    
    279 279
                     <property name="visible">True</property>
    

  • gajim/gtk/call_widget.py
    ... ... @@ -22,6 +22,7 @@
    22 22
     import time
    
    23 23
     
    
    24 24
     from gi.repository import GObject
    
    25
    +from gi.repository import Gdk
    
    25 26
     from gi.repository import Gtk
    
    26 27
     
    
    27 28
     from nbxmpp.namespaces import Namespace
    
    ... ... @@ -68,7 +69,7 @@ def __init__(self, account: str, contact: types.BareContact) -> None:
    68 69
             # having to show a new call row
    
    69 70
             self._incoming_video_event = None
    
    70 71
     
    
    71
    -        self._jingle: dict[str, JingleObject] = {
    
    72
    +        self._jingle: dict(str, JingleObject) = {
    
    72 73
                 'audio': JingleObject(
    
    73 74
                     JingleState.NULL,
    
    74 75
                     self._update_audio),
    
    ... ... @@ -133,10 +134,16 @@ def _on_video(self, _button: Gtk.Button) -> None:
    133 134
             self._on_jingle_button_toggled(['video'])
    
    134 135
     
    
    135 136
         def _on_jingle_button_toggled(self, jingle_types: List[str]) -> None:
    
    137
    +        call_resources = self._get_call_resources()
    
    138
    +        if not call_resources:
    
    139
    +            return
    
    140
    +
    
    141
    +        # TODO: Resource priority
    
    142
    +        full_jid = call_resources[0].jid
    
    143
    +
    
    136 144
             if all(item in jingle_types for item in ['audio', 'video']):
    
    137 145
                 # Both 'audio' and 'video' in jingle_types
    
    138
    -            sid = self._client.get_module('Jingle').start_audio_video(
    
    139
    -                self._contact.jid)
    
    146
    +            sid = self._client.get_module('Jingle').start_audio_video(full_jid)
    
    140 147
                 self._set_jingle_state('audio', JingleState.CONNECTING, sid)
    
    141 148
                 self._set_jingle_state('video', JingleState.CONNECTING, sid)
    
    142 149
                 self._store_outgoing_call(sid)
    
    ... ... @@ -146,8 +153,7 @@ def _on_jingle_button_toggled(self, jingle_types: List[str]) -> None:
    146 153
                 if self._jingle['audio'].state != JingleState.NULL:
    
    147 154
                     self._close_jingle_content('audio')
    
    148 155
                 else:
    
    149
    -                sid = self._client.get_module('Jingle').start_audio(
    
    150
    -                    self._contact.jid)
    
    156
    +                sid = self._client.get_module('Jingle').start_audio(full_jid)
    
    151 157
                     self._set_jingle_state('audio', JingleState.CONNECTING, sid)
    
    152 158
                     self._store_outgoing_call(sid)
    
    153 159
     
    
    ... ... @@ -155,8 +161,7 @@ def _on_jingle_button_toggled(self, jingle_types: List[str]) -> None:
    155 161
                 if self._jingle['video'].state != JingleState.NULL:
    
    156 162
                     self._close_jingle_content('video')
    
    157 163
                 else:
    
    158
    -                sid = self._client.get_module('Jingle').start_video(
    
    159
    -                    self._contact.jid)
    
    164
    +                sid = self._client.get_module('Jingle').start_video(full_jid)
    
    160 165
                     self._set_jingle_state('video', JingleState.CONNECTING, sid)
    
    161 166
                     self._store_outgoing_call(sid)
    
    162 167
     
    
    ... ... @@ -170,12 +175,18 @@ def _store_outgoing_call(self, sid: str) -> None:
    170 175
                 KindConstant.CALL_OUTGOING,
    
    171 176
                 additional_data=additional_data)
    
    172 177
     
    
    173
    -    def _on_num_button_press(self, button: Gtk.Button) -> None:
    
    178
    +    def _on_num_button_press(self,
    
    179
    +                             button: Gtk.Button,
    
    180
    +                             _event: Gdk.EventButton
    
    181
    +                             ) -> None:
    
    174 182
             button_id = Gtk.Buildable.get_name(button)
    
    175 183
             key = button_id.split('_')[1]
    
    176 184
             self._get_audio_content().start_dtmf(key)
    
    177 185
     
    
    178
    -    def _on_num_button_release(self, _button: Gtk.Button) -> None:
    
    186
    +    def _on_num_button_release(self,
    
    187
    +                               _button: Gtk.Button,
    
    188
    +                               _event: Gdk.EventButton
    
    189
    +                               ) -> None:
    
    179 190
             self._get_audio_content().stop_dtmf()
    
    180 191
     
    
    181 192
         def _on_mic_volume_changed(self,
    
    ... ... @@ -539,6 +550,12 @@ def _get_audio_content(self) -> Optional[JingleAudio]:
    539 550
                 self._contact.jid, self._jingle['audio'].sid)
    
    540 551
             return session.get_content('audio')
    
    541 552
     
    
    553
    +    def _get_call_resources(self) -> List[types.ResourceContact]:
    
    554
    +        resource_list = []
    
    555
    +        for resource_contact in self._contact.iter_resources():
    
    556
    +            if resource_contact.supports(Namespace.JINGLE_RTP):
    
    557
    +                resource_list.append(resource_contact)
    
    558
    +        return resource_list
    
    542 559
     
    
    543 560
     class JingleObject:
    
    544 561
         __slots__ = ('sid', 'state', 'available', 'update')