changeset 13d726bd7a75 in /home/hg/repos/gajim
details:http://hg.gajim.org/gajim?cmd=changeset;node=13d726bd7a75 description: [misc] ability to request voice in moderated rooms. Fixes #2266
diffstat:
data/gui/gc_control_popup_menu.ui | 13 +++++++++++++ src/common/connection.py | 16 ++++++++++++++++ src/groupchat_control.py | 17 +++++++++++++++++ 3 files changed, 46 insertions(+), 0 deletions(-)
diffs (105 lines):
diff -r e59447e44e38 -r 13d726bd7a75 data/gui/gc_control_popup_menu.ui --- a/data/gui/gc_control_popup_menu.ui Tue Apr 26 14:29:07 2011 +0200 +++ b/data/gui/gc_control_popup_menu.ui Tue Apr 26 15:54:46 2011 +0200 @@ -67,6 +67,19 @@ </object> </child> <child> + <object class="GtkSeparatorMenuItem" id="request_voice_separator"> + <property name="no_show_all">True</property> + </object> + </child> + <child> + <object class="GtkImageMenuItem" id="request_voice_menuitem"> + <property name="label" translatable="yes">_Request Voice</property> + <property name="visible">True</property> + <property name="use_underline">True</property> + <property name="use_stock">False</property> + </object> + </child> + <child> <object class="GtkSeparatorMenuItem" id="bookmark_separator"> <property name="no_show_all">True</property> </object> diff -r e59447e44e38 -r 13d726bd7a75 src/common/connection.py --- a/src/common/connection.py Tue Apr 26 14:29:07 2011 +0200 +++ b/src/common/connection.py Tue Apr 26 15:54:46 2011 +0200 @@ -2496,6 +2496,22 @@ c.setTagData('reason', reason) self.connection.send(message)
+ def request_voice(self, room, nick): + """ + Request voice in a moderated room + """ + message = common.xmpp.Message(to=room) + + x = xmpp.DataForm(typ='submit') + x.addChild(node=xmpp.DataField(name='FORM_TYPE', + value=common.xmpp.NS_MUC + '#request')) + x.addChild(node=xmpp.DataField(name='muc#role', value='participant', + typ='text-single')) + + message.addChild(node=x) + + self.connection.send(message) + def check_pingalive(self): if self.awaiting_xmpp_ping_id: # We haven't got the pong in time, disco and reconnect diff -r e59447e44e38 -r 13d726bd7a75 src/groupchat_control.py --- a/src/groupchat_control.py Tue Apr 26 14:29:07 2011 +0200 +++ b/src/groupchat_control.py Tue Apr 26 15:54:46 2011 +0200 @@ -789,8 +789,10 @@ change_subject_menuitem = xml.get_object('change_subject_menuitem') history_menuitem = xml.get_object('history_menuitem') minimize_menuitem = xml.get_object('minimize_menuitem') + request_voice_menuitem = xml.get_object('request_voice_menuitem') bookmark_separator = xml.get_object('bookmark_separator') separatormenuitem2 = xml.get_object('separatormenuitem2') + request_voice_separator = xml.get_object('request_voice_separator')
if hide_buttonbar_items: change_nick_menuitem.hide() @@ -840,12 +842,17 @@ destroy_room_menuitem.set_sensitive(True) change_subject_menuitem.set_sensitive(True) change_nick_menuitem.set_sensitive(True) + if c.role == 'visitor': + request_voice_menuitem.set_sensitive(True) + else: + request_voice_menuitem.set_sensitive(False) else: # We are not connected to this groupchat, disable unusable menuitems configure_room_menuitem.set_sensitive(False) destroy_room_menuitem.set_sensitive(False) change_subject_menuitem.set_sensitive(False) change_nick_menuitem.set_sensitive(False) + request_voice_menuitem.set_sensitive(False)
# connect the menuitems to their respective functions id_ = bookmark_room_menuitem.connect('activate', @@ -872,6 +879,10 @@ self._on_history_menuitem_activate) self.handlers[id_] = history_menuitem
+ id_ = request_voice_menuitem.connect('activate', + self._on_request_voice_menuitem_activate) + self.handlers[id_] = request_voice_menuitem + id_ = minimize_menuitem.connect('toggled', self.on_minimize_menuitem_toggled) self.handlers[id_] = minimize_menuitem @@ -2068,6 +2079,12 @@ gajim.interface.add_gc_bookmark(self.account, self.name, self.room_jid,\ '0', '0', password, self.nick)
+ def _on_request_voice_menuitem_activate(self, widget): + """ + Request voice in the current room + """ + gajim.connections[self.account].request_voice(self.room_jid) + def _on_drag_data_received(self, widget, context, x, y, selection, target_type, timestamp): # Invite contact to groupchat