Add an "online" contact sorting method

- put the online contacts at the beginning of the list
- allows, e.g. jid_reverse_online_reverse, to put offline contacts at
  the start of the group, in alphabetical order
This commit is contained in:
mathieui 2012-08-01 01:36:18 +02:00
parent 47c593ddaf
commit c890fefbc4
3 changed files with 9 additions and 2 deletions

View file

@ -231,6 +231,7 @@ roster_show_offline = false
# - show: sort by show (available/away/xa/…)
# - name: sort by roster name (if no name, then the bare jid is used)
# - resource: sort by resource number
# - online: sort by online presence (online or not)
# You can arrange them however you like, and you have to separate them with
# underscores "_". Keep in mind that if there are more than 3 or 4 your sorting
# is most likely inefficient.

View file

@ -289,8 +289,9 @@ section of this documentation.
* reverse: reverse the current sorting
* jid: sort by JID (alphabetical order)
* show: sort by show (available/away/xa/…)
* name: Sort by roster name (if no name, then the bare jid is used)
* resource: Sort by resource number
* name: sort by roster name (if no name, then the bare jid is used)
* resource: sort by resource number
* online: sort by online presence (online or not)
Those methods can be arranged however you like, and they have to be
separated by underscores ("_"). If there are more than 3 or 4 chained

View file

@ -255,11 +255,16 @@ def sort_resource_nb(contact):
def sort_name(contact):
return contact.name.lower() or contact.bare_jid
def sort_online(contact):
result = sort_show(contact)
return 0 if result < 5 else 1
SORTING_METHODS = {
'jid': sort_jid,
'show': sort_show,
'resource': sort_resource_nb,
'name': sort_name,
'online': sort_online,
}
class RosterGroup(object):