Slightly faster version of get_contact_iter and get_role_iter.

This commit is contained in:
Stephan Erb 2009-12-28 20:14:15 +01:00
parent a8e3dc771e
commit 65ba840cbd
2 changed files with 13 additions and 26 deletions

View File

@ -122,6 +122,7 @@ def tree_cell_data_func(column, renderer, model, iter_, tv=None):
renderer.set_property('font',
gtkgui_helpers.get_theme_font_for_option(theme, 'groupfont'))
class PrivateChatControl(ChatControl):
TYPE_ID = message_control.TYPE_PM
@ -829,24 +830,15 @@ class GroupchatControl(ChatControlBase):
def get_contact_iter(self, nick):
model = self.list_treeview.get_model()
fin = False
role_iter = model.get_iter_root()
if not role_iter:
return None
while not fin:
fin2 = False
while role_iter:
user_iter = model.iter_children(role_iter)
if not user_iter:
fin2 = True
while not fin2:
while user_iter:
if nick == model[user_iter][C_NICK].decode('utf-8'):
return user_iter
user_iter = model.iter_next(user_iter)
if not user_iter:
fin2 = True
else:
user_iter = model.iter_next(user_iter)
role_iter = model.iter_next(role_iter)
if not role_iter:
fin = True
return None
def print_old_conversation(self, text, contact='', tim=None, xhtml = None):
@ -1528,17 +1520,12 @@ class GroupchatControl(ChatControlBase):
def get_role_iter(self, role):
model = self.list_treeview.get_model()
fin = False
iter_ = model.get_iter_root()
if not iter_:
return None
while not fin:
role_name = model[iter_][C_NICK].decode('utf-8')
role_iter = model.get_iter_root()
while role_iter:
role_name = model[role_iter][C_NICK].decode('utf-8')
if role == role_name:
return iter_
iter_ = model.iter_next(iter_)
if not iter_:
fin = True
return role_iter
role_iter = model.iter_next(role_iter)
return None
def remove_contact(self, nick):

View File

@ -312,7 +312,6 @@ class RosterWindow:
self.tree.freeze_child_notify()
for jid in jids:
self.add_contact(jid, account)
self.tree.thaw_child_notify()
# Do not freeze the GUI when drawing the contacts
if jids:
@ -323,6 +322,8 @@ class RosterWindow:
for group in gajim.groups[account]:
self.draw_group(group, account)
self.draw_account(account)
self.tree.thaw_child_notify()
self.starting = False
@ -1291,8 +1292,7 @@ class RosterWindow:
iters = self._get_contact_iter(jid, account, model=self.model)
if not iters:
return
jid = self.model[iters[0]][C_JID]
jid = jid.decode('utf-8')
jid = self.model[iters[0]][C_JID].decode('utf-8')
contact = gajim.contacts.get_contact(account, jid)
if pep_type in contact.pep:
pixbuf = contact.pep[pep_type].asPixbufIcon()