remember with which nickname we entered rooms. Fixes #7334

This commit is contained in:
Yann Leboulanger 2013-04-27 14:38:38 +02:00
parent 0c00cdde72
commit 123c6e4d53

View file

@ -2339,7 +2339,7 @@ class JoinGroupchatWindow:
must be automatically invited must be automatically invited
""" """
if account: if account:
if room_jid != '' and room_jid in gajim.gc_connected[account] and\ if room_jid != '' and room_jid in gajim.gc_connected[account] and \
gajim.gc_connected[account][room_jid]: gajim.gc_connected[account][room_jid]:
ErrorDialog(_('You are already in group chat %s') % room_jid) ErrorDialog(_('You are already in group chat %s') % room_jid)
raise GajimGeneralException('You are already in this group chat') raise GajimGeneralException('You are already in this group chat')
@ -2405,7 +2405,7 @@ class JoinGroupchatWindow:
hbox1.pack_start(self.server_comboboxentry, False, False, 0) hbox1.pack_start(self.server_comboboxentry, False, False, 0)
self.recently_combobox = self.xml.get_object('recently_combobox') self.recently_combobox = self.xml.get_object('recently_combobox')
liststore = Gtk.ListStore(str) liststore = Gtk.ListStore(str, str)
self.recently_combobox.set_model(liststore) self.recently_combobox.set_model(liststore)
cell = Gtk.CellRendererText() cell = Gtk.CellRendererText()
self.recently_combobox.pack_start(cell, True) self.recently_combobox.pack_start(cell, True)
@ -2417,8 +2417,15 @@ class JoinGroupchatWindow:
if 'jabber' in gajim.connections[account].muc_jid: if 'jabber' in gajim.connections[account].muc_jid:
server_list.append(gajim.connections[account].muc_jid['jabber']) server_list.append(gajim.connections[account].muc_jid['jabber'])
for g in self.recently_groupchat: for g in self.recently_groupchat:
liststore.append([g]) r_jid = gajim.get_jid_without_resource(g)
server = gajim.get_server_from_jid(g) nick = gajim.get_resource_from_jid(g)
if nick:
show = '%(nick)s on %(room_jid)s' % {'nick': nick,
'room_jid': r_jid}
else:
show = r_jid
liststore.append([show, g])
server = gajim.get_server_from_jid(r_jid)
if server not in server_list and not server.startswith('irc'): if server not in server_list and not server.startswith('irc'):
server_list.append(server) server_list.append(server)
@ -2484,17 +2491,20 @@ class JoinGroupchatWindow:
self.account = model[iter_][0] self.account = model[iter_][0]
self.on_required_entry_changed(self._nickname_entry) self.on_required_entry_changed(self._nickname_entry)
def _set_room_jid(self, room_jid): def _set_room_jid(self, full_jid):
room_jid, nick = gajim.get_room_and_nick_from_fjid(full_jid)
room, server = gajim.get_name_and_server_from_jid(room_jid) room, server = gajim.get_name_and_server_from_jid(room_jid)
self._room_jid_entry.set_text(room) self._room_jid_entry.set_text(room)
model = self.server_comboboxentry.get_model() model = self.server_comboboxentry.get_model()
self.server_comboboxentry.get_child().set_text(server) self.server_comboboxentry.get_child().set_text(server)
if nick:
self._nickname_entry.set_text(nick)
def on_recently_combobox_changed(self, widget): def on_recently_combobox_changed(self, widget):
model = widget.get_model() model = widget.get_model()
iter_ = widget.get_active_iter() iter_ = widget.get_active_iter()
room_jid = model[iter_][0] full_jid = model[iter_][1]
self._set_room_jid(room_jid) self._set_room_jid(full_jid)
def on_browse_rooms_button_clicked(self, widget): def on_browse_rooms_button_clicked(self, widget):
server = self.server_comboboxentry.get_child().get_text() server = self.server_comboboxentry.get_child().get_text()
@ -2561,9 +2571,11 @@ class JoinGroupchatWindow:
ErrorDialog(_('This is not a group chat'), ErrorDialog(_('This is not a group chat'),
_('%s is not the name of a group chat.') % room_jid) _('%s is not the name of a group chat.') % room_jid)
return return
if room_jid in self.recently_groupchat:
self.recently_groupchat.remove(room_jid) full_jid = room_jid + '/' + nickname
self.recently_groupchat.insert(0, room_jid) if full_jid in self.recently_groupchat:
self.recently_groupchat.remove(full_jid)
self.recently_groupchat.insert(0, full_jid)
if len(self.recently_groupchat) > 10: if len(self.recently_groupchat) > 10:
self.recently_groupchat = self.recently_groupchat[0:10] self.recently_groupchat = self.recently_groupchat[0:10]
gajim.config.set('recently_groupchat', gajim.config.set('recently_groupchat',
@ -2576,8 +2588,8 @@ class JoinGroupchatWindow:
autojoin = '0' autojoin = '0'
# Add as bookmark, with autojoin and not minimized # Add as bookmark, with autojoin and not minimized
name = gajim.get_nick_from_jid(room_jid) name = gajim.get_nick_from_jid(room_jid)
gajim.interface.add_gc_bookmark(self.account, name, room_jid, autojoin, gajim.interface.add_gc_bookmark(self.account, name, room_jid,
'0', password, nickname) autojoin, '0', password, nickname)
if self.automatic: if self.automatic:
gajim.automatic_rooms[self.account][room_jid] = self.automatic gajim.automatic_rooms[self.account][room_jid] = self.automatic