clients_icons. don't use CAPS_RECEIVED event
This commit is contained in:
@@ -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_):
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user