Skip to content
Snippets Groups Projects
Commit 839b75f2 authored by jimpp's avatar jimpp
Browse files

systray->chat with : sort in the same order than roster (name.lower()), really...

systray->chat with : sort in the same order than roster (name.lower()), really connect the menuitem to the jid...
parent 296e2cbc
No related branches found
No related tags found
No related merge requests found
......@@ -101,7 +101,7 @@ class Systray:
if gajim.interface.msg_win_mgr.has_window(jid, account):
gajim.interface.msg_win_mgr.get_window(jid, account).set_active_tab(
jid, account)
gajim.interface.msg_win_mgr.get_window(jid, account).present()
gajim.interface.msg_win_mgr.get_window(jid, account).window.present()
elif contact:
gajim.interface.roster.new_chat(contact, account)
gajim.interface.msg_win_mgr.get_window(jid, account).set_active_tab(
......@@ -268,9 +268,9 @@ class Systray:
groups_menu = gtk.Menu()
sort_by_show = gajim.config.get('sort_by_show')
# store contact infos in a table so we can easily sort by group,
# status and name
# if we sort_by_show : contacts_table = [group, status, name]
# else : contacts_table = [group, name, status]
# status and lower.name
# if we sort_by_show : contacts_table = [group, status, lowered name, jid, (real) name]
# else : contacts_table = [group, lowered name, status, jid, (real) name]
contacts_table = []
show_list = list(gajim.SHOW_LIST) # copy gajim.SHOW_LIST in show_list
# not in roster is not in this list but we need it
......@@ -290,23 +290,31 @@ class Systray:
# the user can be in mutiple groups, see in all of them
if group == _('Transports'):
continue
contact_name = contact.get_shown_name()
if sort_by_show: # see comment about contacts_table above
contacts_table.append ([group, show_list.index(contact.show),
contact.get_shown_name()])
contact_name.lower(),
contact.jid, contact_name])
else:
contacts_table.append ([group, contact.get_shown_name(),
show_list.index(contact.show)])
contacts_table.sort() # Sort : first column before, last column in the end
contacts_table.append ([group, contact_name.lower(),
show_list.index(contact.show),
contact.jid, contact_name])
# Sort : first column before, last column in the end
# In theory we sort full table, including columns that don't need sorting,
# but as python sort() seems intelligent the table will be ordered before we
# sort lasts columns in most case.
contacts_table.sort()
previous_group = ''
for contact_item in contacts_table:
if sort_by_show: # see comment about contacts_table above
contact_name = contact_item[2]
contact_show = show_list[contact_item[1]]
else:
contact_name = contact_item[1]
contact_show = show_list[contact_item[2]]
contact_jid = contact_item[3]
contact_name = contact_item[4]
#we don't care about lowered name now
if contact_item[0] != previous_group:
# It's a new group, add the submenu
item = gtk.MenuItem(contact_item[0])
......@@ -326,7 +334,7 @@ class Systray:
img_copy = gobject.new(gtk.Image, pixbuf=img.get_pixbuf())
item_contact.set_image(img_copy)
item_contact.connect('activate', self.start_chat, account,
contact.jid)
contact_jid)
contacts_menu.append(item_contact)
return groups_menu
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment