Slightly faster version of get_contact_iter and get_role_iter.
This commit is contained in:
parent
a8e3dc771e
commit
65ba840cbd
|
@ -122,6 +122,7 @@ def tree_cell_data_func(column, renderer, model, iter_, tv=None):
|
||||||
renderer.set_property('font',
|
renderer.set_property('font',
|
||||||
gtkgui_helpers.get_theme_font_for_option(theme, 'groupfont'))
|
gtkgui_helpers.get_theme_font_for_option(theme, 'groupfont'))
|
||||||
|
|
||||||
|
|
||||||
class PrivateChatControl(ChatControl):
|
class PrivateChatControl(ChatControl):
|
||||||
TYPE_ID = message_control.TYPE_PM
|
TYPE_ID = message_control.TYPE_PM
|
||||||
|
|
||||||
|
@ -829,24 +830,15 @@ class GroupchatControl(ChatControlBase):
|
||||||
|
|
||||||
def get_contact_iter(self, nick):
|
def get_contact_iter(self, nick):
|
||||||
model = self.list_treeview.get_model()
|
model = self.list_treeview.get_model()
|
||||||
fin = False
|
|
||||||
role_iter = model.get_iter_root()
|
role_iter = model.get_iter_root()
|
||||||
if not role_iter:
|
while role_iter:
|
||||||
return None
|
|
||||||
while not fin:
|
|
||||||
fin2 = False
|
|
||||||
user_iter = model.iter_children(role_iter)
|
user_iter = model.iter_children(role_iter)
|
||||||
if not user_iter:
|
while user_iter:
|
||||||
fin2 = True
|
|
||||||
while not fin2:
|
|
||||||
if nick == model[user_iter][C_NICK].decode('utf-8'):
|
if nick == model[user_iter][C_NICK].decode('utf-8'):
|
||||||
return user_iter
|
return user_iter
|
||||||
user_iter = model.iter_next(user_iter)
|
else:
|
||||||
if not user_iter:
|
user_iter = model.iter_next(user_iter)
|
||||||
fin2 = True
|
|
||||||
role_iter = model.iter_next(role_iter)
|
role_iter = model.iter_next(role_iter)
|
||||||
if not role_iter:
|
|
||||||
fin = True
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def print_old_conversation(self, text, contact='', tim=None, xhtml = 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):
|
def get_role_iter(self, role):
|
||||||
model = self.list_treeview.get_model()
|
model = self.list_treeview.get_model()
|
||||||
fin = False
|
role_iter = model.get_iter_root()
|
||||||
iter_ = model.get_iter_root()
|
while role_iter:
|
||||||
if not iter_:
|
role_name = model[role_iter][C_NICK].decode('utf-8')
|
||||||
return None
|
|
||||||
while not fin:
|
|
||||||
role_name = model[iter_][C_NICK].decode('utf-8')
|
|
||||||
if role == role_name:
|
if role == role_name:
|
||||||
return iter_
|
return role_iter
|
||||||
iter_ = model.iter_next(iter_)
|
role_iter = model.iter_next(role_iter)
|
||||||
if not iter_:
|
|
||||||
fin = True
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def remove_contact(self, nick):
|
def remove_contact(self, nick):
|
||||||
|
|
|
@ -312,7 +312,6 @@ class RosterWindow:
|
||||||
self.tree.freeze_child_notify()
|
self.tree.freeze_child_notify()
|
||||||
for jid in jids:
|
for jid in jids:
|
||||||
self.add_contact(jid, account)
|
self.add_contact(jid, account)
|
||||||
self.tree.thaw_child_notify()
|
|
||||||
|
|
||||||
# Do not freeze the GUI when drawing the contacts
|
# Do not freeze the GUI when drawing the contacts
|
||||||
if jids:
|
if jids:
|
||||||
|
@ -323,6 +322,8 @@ class RosterWindow:
|
||||||
for group in gajim.groups[account]:
|
for group in gajim.groups[account]:
|
||||||
self.draw_group(group, account)
|
self.draw_group(group, account)
|
||||||
self.draw_account(account)
|
self.draw_account(account)
|
||||||
|
|
||||||
|
self.tree.thaw_child_notify()
|
||||||
self.starting = False
|
self.starting = False
|
||||||
|
|
||||||
|
|
||||||
|
@ -1291,8 +1292,7 @@ class RosterWindow:
|
||||||
iters = self._get_contact_iter(jid, account, model=self.model)
|
iters = self._get_contact_iter(jid, account, model=self.model)
|
||||||
if not iters:
|
if not iters:
|
||||||
return
|
return
|
||||||
jid = self.model[iters[0]][C_JID]
|
jid = self.model[iters[0]][C_JID].decode('utf-8')
|
||||||
jid = jid.decode('utf-8')
|
|
||||||
contact = gajim.contacts.get_contact(account, jid)
|
contact = gajim.contacts.get_contact(account, jid)
|
||||||
if pep_type in contact.pep:
|
if pep_type in contact.pep:
|
||||||
pixbuf = contact.pep[pep_type].asPixbufIcon()
|
pixbuf = contact.pep[pep_type].asPixbufIcon()
|
||||||
|
|
Loading…
Reference in New Issue