we can now invite all contacts to an existing room. TODO: create a new one
This commit is contained in:
parent
550e12af8c
commit
e3d1b71a19
|
@ -1471,16 +1471,30 @@ class RosterWindow:
|
||||||
roster_contact_context_menu.popup(None, None, None, event_button,
|
roster_contact_context_menu.popup(None, None, None, event_button,
|
||||||
event.time)
|
event.time)
|
||||||
|
|
||||||
|
def on_invite_to_room(self, widget, list_):
|
||||||
|
print 'TODO: create a new room'
|
||||||
|
# Create room
|
||||||
|
# configure room
|
||||||
|
# send invitations
|
||||||
|
|
||||||
|
def on_invite_to_room(self, widget, list_, room_jid, account):
|
||||||
|
for (contact, acct) in list_:
|
||||||
|
gajim.connections[account].send_invite(room_jid, contact.jid)
|
||||||
|
|
||||||
|
|
||||||
def make_multiple_contact_menu(self, event, iters):
|
def make_multiple_contact_menu(self, event, iters):
|
||||||
'''Make group's popup menu'''
|
'''Make group's popup menu'''
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
list_ = [] # list of (jid, account) tuples
|
list_ = [] # list of (jid, account) tuples
|
||||||
one_account_offline = False
|
one_account_offline = False
|
||||||
|
connected_accounts = []
|
||||||
for iter in iters:
|
for iter in iters:
|
||||||
jid = model[iter][C_JID].decode('utf-8')
|
jid = model[iter][C_JID].decode('utf-8')
|
||||||
account = model[iter][C_ACCOUNT].decode('utf-8')
|
account = model[iter][C_ACCOUNT].decode('utf-8')
|
||||||
if gajim.connections[account].connected < 2:
|
if gajim.connections[account].connected < 2:
|
||||||
one_account_offline = True
|
one_account_offline = True
|
||||||
|
elif not account in connected_accounts:
|
||||||
|
connected_accounts.append(account)
|
||||||
contact = gajim.contacts.get_contact_with_highest_priority(account,
|
contact = gajim.contacts.get_contact_with_highest_priority(account,
|
||||||
jid)
|
jid)
|
||||||
list_.append((contact, account))
|
list_.append((contact, account))
|
||||||
|
@ -1493,6 +1507,33 @@ class RosterWindow:
|
||||||
menu.append(remove_item)
|
menu.append(remove_item)
|
||||||
remove_item.connect('activate', self.on_req_usub, list_)
|
remove_item.connect('activate', self.on_req_usub, list_)
|
||||||
|
|
||||||
|
invite_item = gtk.ImageMenuItem(_('_Invite'))
|
||||||
|
icon = gtk.image_new_from_stock(gtk.STOCK_GO_BACK, gtk.ICON_SIZE_MENU)
|
||||||
|
invite_item.set_image(icon)
|
||||||
|
|
||||||
|
sub_menu = gtk.Menu()
|
||||||
|
menuitem = gtk.ImageMenuItem(_('_New room'))
|
||||||
|
icon = gtk.image_new_from_stock(gtk.STOCK_NEW, gtk.ICON_SIZE_MENU)
|
||||||
|
menuitem.set_image(icon)
|
||||||
|
menuitem.connect('activate', self.on_invite_to_new_room, list_)
|
||||||
|
sub_menu.append(menuitem)
|
||||||
|
rooms = [] # a list of (room_jid, account) tuple
|
||||||
|
for account in connected_accounts:
|
||||||
|
for room_jid in gajim.gc_connected[account]:
|
||||||
|
if gajim.gc_connected[account][room_jid]:
|
||||||
|
rooms.append((room_jid, account))
|
||||||
|
if len(rooms):
|
||||||
|
item = gtk.SeparatorMenuItem() # separator
|
||||||
|
sub_menu.append(item)
|
||||||
|
for (room_jid, account) in rooms:
|
||||||
|
menuitem = gtk.MenuItem(room_jid.split('@')[0])
|
||||||
|
menuitem.connect('activate', self.on_invite_to_room, list_,
|
||||||
|
room_jid, account)
|
||||||
|
sub_menu.append(menuitem)
|
||||||
|
|
||||||
|
invite_item.set_submenu(sub_menu)
|
||||||
|
menu.append(invite_item)
|
||||||
|
|
||||||
# unsensitive if one account is not connected
|
# unsensitive if one account is not connected
|
||||||
if one_account_offline:
|
if one_account_offline:
|
||||||
remove_item.set_sensitive(False)
|
remove_item.set_sensitive(False)
|
||||||
|
|
Loading…
Reference in New Issue