add an option to add_contact_to_roster to force the adding of children contacts. Fixes #1657
This commit is contained in:
parent
97183e141c
commit
0c8079f8b2
|
@ -169,10 +169,13 @@ class RosterWindow:
|
||||||
gajim.newly_added[account].remove(jid)
|
gajim.newly_added[account].remove(jid)
|
||||||
self.draw_contact(jid, account)
|
self.draw_contact(jid, account)
|
||||||
|
|
||||||
def add_contact_to_roster(self, jid, account, force = False):
|
def add_contact_to_roster(self, jid, account, force = False,
|
||||||
|
add_children = False):
|
||||||
'''Add a contact to the roster and add groups if they aren't in roster
|
'''Add a contact to the roster and add groups if they aren't in roster
|
||||||
force is about force to add it, even if it is offline and show offline
|
force is about force to add it, even if it is offline and show offline
|
||||||
is False, because it has online children, so we need to show it'''
|
is False, because it has online children, so we need to show it.
|
||||||
|
If add_children is True, we also add all children, even if they were not
|
||||||
|
already drawn'''
|
||||||
showOffline = gajim.config.get('showoffline')
|
showOffline = gajim.config.get('showoffline')
|
||||||
contact = gajim.contacts.get_first_contact_from_jid(account, jid)
|
contact = gajim.contacts.get_first_contact_from_jid(account, jid)
|
||||||
if not contact:
|
if not contact:
|
||||||
|
@ -201,6 +204,9 @@ class RosterWindow:
|
||||||
# we add some values here. see draw_contact for more
|
# we add some values here. see draw_contact for more
|
||||||
model.append(i, (None, name, 'contact', contact.jid, account,
|
model.append(i, (None, name, 'contact', contact.jid, account,
|
||||||
False, None))
|
False, None))
|
||||||
|
if add_children:
|
||||||
|
for cc in gajim.contacts.get_children_contacts(account, contact):
|
||||||
|
self.add_contact_to_roster(cc.jid, account)
|
||||||
self.draw_contact(contact.jid, account)
|
self.draw_contact(contact.jid, account)
|
||||||
self.draw_avatar(contact.jid, account)
|
self.draw_avatar(contact.jid, account)
|
||||||
# Redraw parent to change icon
|
# Redraw parent to change icon
|
||||||
|
@ -231,7 +237,7 @@ class RosterWindow:
|
||||||
contact)
|
contact)
|
||||||
ccs = [] # children contacts that were relly in roster
|
ccs = [] # children contacts that were relly in roster
|
||||||
for cc in children_contacts:
|
for cc in children_contacts:
|
||||||
if self.get_contact_iter(cc.jid, account):
|
if self.get_contact_iter(cc.jid, account) or add_children:
|
||||||
self.remove_contact(cc, account)
|
self.remove_contact(cc, account)
|
||||||
ccs.append(cc)
|
ccs.append(cc)
|
||||||
groups = contact.groups
|
groups = contact.groups
|
||||||
|
@ -2857,7 +2863,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
|
||||||
parent_jid = gajim.contacts.get_parent_contact(account, c_source).jid
|
parent_jid = gajim.contacts.get_parent_contact(account, c_source).jid
|
||||||
gajim.contacts.remove_subcontact(account, jid_source)
|
gajim.contacts.remove_subcontact(account, jid_source)
|
||||||
context.finish(True, True, etime)
|
context.finish(True, True, etime)
|
||||||
self.add_contact_to_roster(jid_source, account)
|
self.add_contact_to_roster(jid_source, account, add_children = True)
|
||||||
self.draw_contact(parent_jid, account)
|
self.draw_contact(parent_jid, account)
|
||||||
return
|
return
|
||||||
if grp_source == grp_dest:
|
if grp_source == grp_dest:
|
||||||
|
@ -2876,7 +2882,7 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
|
||||||
# remove the source row
|
# remove the source row
|
||||||
context.finish(True, True, etime)
|
context.finish(True, True, etime)
|
||||||
# Add it under parent contact
|
# Add it under parent contact
|
||||||
self.add_contact_to_roster(jid_source, account)
|
self.add_contact_to_roster(jid_source, account, add_children = True)
|
||||||
self.draw_contact(jid_dest, account)
|
self.draw_contact(jid_dest, account)
|
||||||
return
|
return
|
||||||
# We upgrade only the first user because user2.groups is a pointer to
|
# We upgrade only the first user because user2.groups is a pointer to
|
||||||
|
|
Loading…
Reference in New Issue