clients_icons. don't use CAPS_RECEIVED event

This commit is contained in:
Denis Fomin
2010-10-15 14:56:22 +04:00
parent 90ad0dea14
commit 4bebe8f7ce
2 changed files with 22 additions and 35 deletions

View File

@@ -84,9 +84,7 @@ class ClientsIconsPlugin(GajimPlugin):
@log_calls('ClientsIconsPlugin') @log_calls('ClientsIconsPlugin')
def init(self): def init(self):
self.pos_list = ['after statusicon', 'befor avatar'] self.pos_list = ['after statusicon', 'befor avatar']
self.events_handlers = {'CAPS_RECEIVED': self.events_handlers = {'presence-received':
(ged.POSTGUI, self.caps_received),
'presence-received':
(ged.POSTGUI, self.presence_received), (ged.POSTGUI, self.presence_received),
'gc-presence-received': 'gc-presence-received':
(ged.POSTGUI, self.gc_presence_received),} (ged.POSTGUI, self.gc_presence_received),}
@@ -186,38 +184,24 @@ class ClientsIconsPlugin(GajimPlugin):
import time import time
time.sleep(2) time.sleep(2)
def caps_received(self, account, data): def presence_received(self, iq_obj):
if not self.config['show_in_roster']: if not self.config['show_in_roster']:
return return
roster = gajim.interface.roster roster = gajim.interface.roster
jid = data[0].split('/')[0] contact = gajim.contacts.get_contact_with_highest_priority(
for account in gajim.contacts.get_accounts(): iq_obj.conn.name, iq_obj.jid)
contact = gajim.contacts.get_contact_with_highest_priority( if not contact:
account, jid)
if not contact:
continue
caps = contact.client_caps._node
iter_ = roster._get_contact_iter(jid, account, contact,
roster.model)[0]
if not caps:
if roster.model[iter_][self.renderer_num] is not None:
continue
if self.config['show_unknown_icon']:
roster.model[iter_][self.renderer_num] = self.default_pixbuf
continue
client_icon = clients.get(caps.split('#')[0], None)
if not client_icon:
if self.config['show_unknown_icon']:
roster.model[iter_][self.renderer_num] = self.default_pixbuf
continue
icon_path = os.path.join(self.local_file_path('icons'), client_icon)
pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 16, 16)
roster.model[iter_][self.renderer_num] = pixbuf
def presence_received(self, iq_obj):
if iq_obj.new_show == 0:
self.caps_received(iq_obj.conn.name, [iq_obj.fjid])
return return
iter_ = roster._get_contact_iter(iq_obj.jid, iq_obj.conn.name, contact,
roster.model)[0]
caps = contact.client_caps._node
if not caps:
tag = iq_obj.iq_obj.getTags('c')
if tag:
caps = tag[0].getAttr('node')
self.set_icon(roster.model, iter_, self.renderer_num, caps)
return
self.set_icon(roster.model, iter_, self.renderer_num, caps)
def gc_presence_received(self, iq_obj): def gc_presence_received(self, iq_obj):
if not self.config['show_in_groupchats']: if not self.config['show_in_groupchats']:
@@ -234,19 +218,22 @@ class ClientsIconsPlugin(GajimPlugin):
model = iq_obj.gc_control.list_treeview.get_model() model = iq_obj.gc_control.list_treeview.get_model()
if model[iter_][self.muc_renderer_num] is not None: if model[iter_][self.muc_renderer_num] is not None:
return return
self.set_icon(model, iter_, self.muc_renderer_num, caps)
def set_icon(self, model, iter_, pos, caps):
if not caps: if not caps:
if self.config['show_unknown_icon']: if self.config['show_unknown_icon']:
model[iter_][self.muc_renderer_num] = self.default_pixbuf model[iter_][pos] = self.default_pixbuf
return return
client_icon = clients.get(caps.split('#')[0], None) client_icon = clients.get(caps.split('#')[0], None)
if not client_icon: if not client_icon:
if self.config['show_unknown_icon']: if self.config['show_unknown_icon']:
model[iter_][self.muc_renderer_num] = self.default_pixbuf model[iter_][pos] = self.default_pixbuf
else: else:
icon_path = os.path.join(self.local_file_path('icons'), icon_path = os.path.join(self.local_file_path('icons'),
client_icon) client_icon)
pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 16, 16) pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_path, 16, 16)
model[iter_][self.muc_renderer_num] = pixbuf model[iter_][pos] = pixbuf
def tree_cell_data_func(self, column, renderer, model, iter_, control): def tree_cell_data_func(self, column, renderer, model, iter_, control):
if not model.iter_parent(iter_): if not model.iter_parent(iter_):

View File

@@ -1,7 +1,7 @@
[info] [info]
name: Clients icons name: Clients icons
short_name: clients_icons short_name: clients_icons
version: 0.1 version: 0.2
description: Shows the client icons in the roster description: Shows the client icons in the roster
and in groupchats. and in groupchats.
authors = Denis Fomin <fominde@gmail.com> authors = Denis Fomin <fominde@gmail.com>