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
_______________________________________________
Commits mailing list
[email protected]
http://lists.gajim.org/cgi-bin/listinfo/commits