ClientsIconsPlugin. Refactoring

This commit is contained in:
Denis Fomin
2012-11-12 12:15:56 +04:00
parent a601a14820
commit a118658819

View File

@@ -197,7 +197,7 @@ class ClientsIconsPlugin(GajimPlugin):
vertical_fill = gtk.FILL
if vcard_table.get_property('n-columns') == 4:
vertical_fill |= gtk.EXPAND
vcard_current_row = vcard_table.get_property('n-rows')
# put contacts in dict, where key is priority
num_resources = 0
contacts_dict = {}
@@ -208,55 +208,41 @@ class ClientsIconsPlugin(GajimPlugin):
contacts_dict[contact.priority].append(contact)
else:
contacts_dict[contact.priority] = [contact]
# set label
label = gtk.Label()
label.set_alignment(0, 0)
self.table = gtk.Table(4, 1)
self.table.set_property('column-spacing', 2)
if num_resources > 1:
label.set_markup(_('Clients:'))
first_place = vcard_current_row = vcard_table.get_property('n-rows')
vcard_table.attach(label, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0)
contact_keys = sorted(contacts_dict.keys())
contact_keys.reverse()
vcard_current_row = 0
for priority in contact_keys:
for acontact in contacts_dict[priority]:
caps = acontact.client_caps._node
caps_image , client_name = self.get_icon(caps)
caps_image.set_alignment(0, 0)
self.table.attach(caps_image, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL,
gtk.FILL, 0, 0)
label = gtk.Label()
label.set_alignment(0, 0)
label.set_markup(client_name)
self.table.attach(label, 2, 3, vcard_current_row,
vcard_current_row + 1, gtk.FILL | gtk.EXPAND, 0, 0, 0)
vcard_current_row = vcard_table.get_property('n-rows')
vcard_table.attach(self.table, 2, 3, first_place,
first_place + 1, gtk.FILL, vertical_fill, 0, 0)
else:
if contact.show == 'offline':
return
label.set_markup(_('Client:'))
caps = contact.client_caps._node
vcard_current_row = vcard_table.get_property('n-rows')
vcard_table.attach(label, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0)
caps_image ,client_name = self.get_icon(caps)
caps_image.set_alignment(0, 0)
self.table.attach(caps_image, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL, gtk.FILL, 0, 0)
label = gtk.Label()
label.set_alignment(0, 0)
label.set_markup(client_name)
self.table.attach(label, 2, 3, vcard_current_row,
vcard_current_row + 1, gtk.FILL | gtk.EXPAND, 0, 0, 0)
vcard_table.attach(self.table, 2, 3, vcard_current_row,
vcard_current_row + 1, gtk.FILL, vertical_fill, 0, 0)
#fill clients table
self.table = gtk.Table(4, 1)
self.table.set_property('column-spacing', 2)
first_place = vcard_current_row = vcard_table.get_property('n-rows')
vcard_table.attach(label, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL, gtk.FILL | gtk.EXPAND, 0, 0)
contact_keys = sorted(contacts_dict.keys())
contact_keys.reverse()
vcard_current_row = 0
for priority in contact_keys:
for acontact in contacts_dict[priority]:
caps = acontact.client_caps._node
caps_image , client_name = self.get_icon(caps)
caps_image.set_alignment(0, 0)
self.table.attach(caps_image, 1, 2, vcard_current_row,
vcard_current_row + 1, gtk.FILL,
gtk.FILL, 0, 0)
label = gtk.Label()
label.set_alignment(0, 0)
label.set_markup(client_name)
self.table.attach(label, 2, 3, vcard_current_row,
vcard_current_row + 1, gtk.FILL | gtk.EXPAND, 0, 0, 0)
vcard_current_row += 1
#set clients table to tooltip
vcard_table.attach(self.table, 2, 3, first_place, first_place + 1,
gtk.FILL, vertical_fill, 0, 0)
# rewrite avatar
if vcard_table.get_property('n-columns') == 4:
@@ -295,6 +281,7 @@ class ClientsIconsPlugin(GajimPlugin):
def disconnect_from_roster_tooltip_populate(self, tooltip, contacts,
vcard_table):
pass
@log_calls('ClientsIconsPlugin')
def connect_with_roster_draw_contact(self, roster, jid, account, contact):
if not self.active:
@@ -470,11 +457,12 @@ class ClientsIconsPlugin(GajimPlugin):
tag = iq_obj.stanza.getTags('c')
if tag:
caps = tag[0].getAttr('node')
if 'pidgin.im' in caps:
caps = 'libpurple'
for client in libpurple_clients:
if client in contact.resource.lower():
caps = libpurple_clients[client]
if caps:
if 'pidgin.im' in caps:
caps = 'libpurple'
for client in libpurple_clients:
if client in contact.resource.lower():
caps = libpurple_clients[client]
if 'facebook.com' in iq_obj.jid and self.config['show_facebook']:
caps = 'facebook.com'
if not caps: