diff options
-rw-r--r-- | data/default_config.cfg | 1 | ||||
-rw-r--r-- | doc/en/configure.txt | 5 | ||||
-rw-r--r-- | src/roster.py | 5 |
3 files changed, 9 insertions, 2 deletions
diff --git a/data/default_config.cfg b/data/default_config.cfg index f75ae14b..76e02d57 100644 --- a/data/default_config.cfg +++ b/data/default_config.cfg @@ -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. diff --git a/doc/en/configure.txt b/doc/en/configure.txt index fc854dba..8331d2ea 100644 --- a/doc/en/configure.txt +++ b/doc/en/configure.txt @@ -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 diff --git a/src/roster.py b/src/roster.py index c7717ea8..c5f89218 100644 --- a/src/roster.py +++ b/src/roster.py @@ -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): |