improve tooltip code a little bit

This commit is contained in:
Yann Leboulanger 2012-04-04 15:11:20 +02:00
parent e9f050d787
commit 5b48225d0c

View file

@ -2768,9 +2768,9 @@ class RosterWindow:
return return
if model[titer][C_TYPE] in ('contact', 'self_contact'): if model[titer][C_TYPE] in ('contact', 'self_contact'):
# we're on a contact entry in the roster # we're on a contact entry in the roster
account = model[titer][C_ACCOUNT].decode('utf-8')
jid = model[titer][C_JID].decode('utf-8')
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]: if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
account = model[titer][C_ACCOUNT].decode('utf-8')
jid = model[titer][C_JID].decode('utf-8')
self.tooltip.id = row self.tooltip.id = row
contacts = gajim.contacts.get_contacts(account, jid) contacts = gajim.contacts.get_contacts(account, jid)
connected_contacts = [] connected_contacts = []
@ -2782,76 +2782,79 @@ class RosterWindow:
connected_contacts = contacts connected_contacts = contacts
self.tooltip.account = account self.tooltip.account = account
self.tooltip.timeout = gobject.timeout_add(500, self.tooltip.timeout = gobject.timeout_add(500,
self.show_tooltip, connected_contacts) self.show_tooltip, connected_contacts)
elif model[titer][C_TYPE] == 'groupchat': elif model[titer][C_TYPE] == 'groupchat':
account = model[titer][C_ACCOUNT].decode('utf-8')
jid = model[titer][C_JID].decode('utf-8')
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]: if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
account = model[titer][C_ACCOUNT].decode('utf-8')
jid = model[titer][C_JID].decode('utf-8')
self.tooltip.id = row self.tooltip.id = row
contact = gajim.contacts.get_contacts(account, jid) contact = gajim.contacts.get_contacts(account, jid)
self.tooltip.account = account self.tooltip.account = account
self.tooltip.timeout = gobject.timeout_add(500, self.tooltip.timeout = gobject.timeout_add(500,
self.show_tooltip, contact) self.show_tooltip, contact)
elif model[titer][C_TYPE] == 'account': elif model[titer][C_TYPE] == 'account':
# we're on an account entry in the roster # we're on an account entry in the roster
account = model[titer][C_ACCOUNT].decode('utf-8') if self.tooltip.timeout == 0 or self.tooltip.id != props[0]:
if account == 'all': account = model[titer][C_ACCOUNT].decode('utf-8')
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]: if account == 'all':
self.tooltip.id = row self.tooltip.id = row
self.tooltip.account = None self.tooltip.account = None
self.tooltip.timeout = gobject.timeout_add(500, self.tooltip.timeout = gobject.timeout_add(500,
self.show_tooltip, []) self.show_tooltip, [])
return return
jid = gajim.get_jid_from_account(account) jid = gajim.get_jid_from_account(account)
contacts = [] contacts = []
connection = gajim.connections[account] connection = gajim.connections[account]
# get our current contact info # get our current contact info
nbr_on, nbr_total = gajim.contacts.get_nb_online_total_contacts( nbr_on, nbr_total = gajim.\
accounts = [account]) contacts.get_nb_online_total_contacts(
account_name = account accounts=[account])
if gajim.account_is_connected(account): account_name = account
account_name += ' (%s/%s)' % (repr(nbr_on), repr(nbr_total)) if gajim.account_is_connected(account):
contact = gajim.contacts.create_self_contact(jid=jid, account_name += ' (%s/%s)' % (repr(nbr_on),
account=account, name=account_name, repr(nbr_total))
show=connection.get_status(), status=connection.status, contact = gajim.contacts.create_self_contact(jid=jid,
resource=connection.server_resource, account=account, name=account_name,
priority=connection.priority) show=connection.get_status(), status=connection.status,
if gajim.connections[account].gpg: resource=connection.server_resource,
contact.keyID = gajim.config.get_per('accounts', priority=connection.priority)
connection.name, 'keyid') if gajim.connections[account].gpg:
contacts.append(contact) contact.keyID = gajim.config.get_per('accounts',
# if we're online ... connection.name, 'keyid')
if connection.connection: contacts.append(contact)
roster = connection.connection.getRoster() # if we're online ...
# in threadless connection when no roster stanza is sent, if connection.connection:
# 'roster' is None roster = connection.connection.getRoster()
if roster and roster.getItem(jid): # in threadless connection when no roster stanza is sent
resources = roster.getResources(jid) # 'roster' is None
# ...get the contact info for our other online resources if roster and roster.getItem(jid):
for resource in resources: resources = roster.getResources(jid)
# Check if we already have this resource # ...get the contact info for our other online
found = False # resources
for contact_ in contacts: for resource in resources:
if contact_.resource == resource: # Check if we already have this resource
found = True found = False
break for contact_ in contacts:
if found: if contact_.resource == resource:
continue found = True
show = roster.getShow(jid+'/'+resource) break
if not show: if found:
show = 'online' continue
contact = gajim.contacts.create_self_contact( show = roster.getShow(jid+'/'+resource)
jid=jid, account=account, show=show, if not show:
status=roster.getStatus(jid + '/' + resource), show = 'online'
priority=roster.getPriority( contact = gajim.contacts.create_self_contact(
jid + '/' + resource), resource=resource) jid=jid, account=account, show=show,
contacts.append(contact) status=roster.getStatus(
if self.tooltip.timeout == 0 or self.tooltip.id != props[0]: jid + '/' + resource),
priority=roster.getPriority(
jid + '/' + resource), resource=resource)
contacts.append(contact)
self.tooltip.id = row self.tooltip.id = row
self.tooltip.account = None self.tooltip.account = None
self.tooltip.timeout = gobject.timeout_add(500, self.tooltip.timeout = gobject.timeout_add(500,
self.show_tooltip, contacts) self.show_tooltip, contacts)
def on_agent_logging(self, widget, jid, state, account): def on_agent_logging(self, widget, jid, state, account):
""" """