improve search filter in roster: hide groups that have no contacts, make it search for transports and groupchats. Fixes #7060
This commit is contained in:
parent
de4660b2e5
commit
b804ebd81b
|
@ -1515,6 +1515,8 @@ class RosterWindow:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
def contact_is_visible(self, contact, account):
|
def contact_is_visible(self, contact, account):
|
||||||
|
if self.rfilter_enabled:
|
||||||
|
return self.rfilter_string in contact.get_shown_name().lower()
|
||||||
if self.contact_has_pending_roster_events(contact, account):
|
if self.contact_has_pending_roster_events(contact, account):
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -1556,9 +1558,17 @@ class RosterWindow:
|
||||||
accounts = [account]
|
accounts = [account]
|
||||||
for _acc in accounts:
|
for _acc in accounts:
|
||||||
for contact in gajim.contacts.iter_contacts(_acc):
|
for contact in gajim.contacts.iter_contacts(_acc):
|
||||||
if group in contact.get_shown_groups() and \
|
if group in contact.get_shown_groups():
|
||||||
self.contact_has_pending_roster_events(contact, _acc):
|
if self.rfilter_enabled:
|
||||||
|
if self.rfilter_string in \
|
||||||
|
contact.get_shown_name().lower():
|
||||||
return True
|
return True
|
||||||
|
elif self.contact_has_pending_roster_events(contact,
|
||||||
|
_acc):
|
||||||
|
return True
|
||||||
|
if self.rfilter_enabled:
|
||||||
|
# No transport has been found
|
||||||
|
return False
|
||||||
return gajim.config.get('show_transports_group') and \
|
return gajim.config.get('show_transports_group') and \
|
||||||
(gajim.account_is_connected(account) or \
|
(gajim.account_is_connected(account) or \
|
||||||
gajim.config.get('showoffline'))
|
gajim.config.get('showoffline'))
|
||||||
|
@ -1610,12 +1620,16 @@ class RosterWindow:
|
||||||
account, jid)
|
account, jid)
|
||||||
return self.contact_is_visible(contact, account)
|
return self.contact_is_visible(contact, account)
|
||||||
if type_ == 'agent':
|
if type_ == 'agent':
|
||||||
|
if self.rfilter_enabled:
|
||||||
|
return self.rfilter_string in model[titer][C_NAME].lower()
|
||||||
contact = gajim.contacts.get_contact_with_highest_priority(account,
|
contact = gajim.contacts.get_contact_with_highest_priority(account,
|
||||||
jid)
|
jid)
|
||||||
return self.contact_has_pending_roster_events(contact, account) or \
|
return self.contact_has_pending_roster_events(contact, account) or \
|
||||||
(gajim.config.get('show_transports_group') and \
|
(gajim.config.get('show_transports_group') and \
|
||||||
(gajim.account_is_connected(account) or \
|
(gajim.account_is_connected(account) or \
|
||||||
gajim.config.get('showoffline')))
|
gajim.config.get('showoffline')))
|
||||||
|
if type_ == 'groupchat' and self.rfilter_enabled:
|
||||||
|
return self.rfilter_string in model[titer][C_NAME].lower()
|
||||||
return True
|
return True
|
||||||
|
|
||||||
def _compareIters(self, model, iter1, iter2, data=None):
|
def _compareIters(self, model, iter1, iter2, data=None):
|
||||||
|
|
Loading…
Reference in New Issue