vCard window. It can be view from Account window

This commit is contained in:
Yann Leboulanger 2004-02-19 04:20:40 +00:00
parent 96e6ccf3dc
commit 7ab6b65f6d
3 changed files with 1291 additions and 14 deletions

View File

@ -51,13 +51,19 @@ class GajimCore:
def vCardCB(self, con, vc):
"""Called when we recieve a vCard"""
vcard = {'jid': vc.getFrom().getBasic()}
# print vc
if vc._getTag('vCard') == common.jabber.NS_VCARD:
print "vcard :"
if vc._getTag('vcard') == common.jabber.NS_VCARD:
# print "vcard :"
card = vc.getChildren()[0]
for info in card.getChildren():
# print "name"
print info.getName() + " : " + info.getData()
# print info.getName() + " : " + info.getData()
if info.getChildren() == []:
vcard[info.getName()] = info.getData()
else:
for c in info.getChildren():
vcard[info.getName()+'_'+c.getName()] = c.getData()
# print "Data"
# print info.getData()
# print "DataAsParts"
@ -65,7 +71,9 @@ class GajimCore:
# print "Namespace"
# print info.getNamespace()
# print "Children"
# print info.getChildren()
# print info.getChildren()
# print vcard
self.hub.sendPlugin('VCARD', vcard)
def messageCB(self, con, msg):
"""Called when we recieve a message"""
@ -299,11 +307,12 @@ class GajimCore:
print "error " + c.lastErr
else:
self.hub.sendPlugin('ACC_OK', ev[1])
elif ev[0] == 'TEST_VCARD':
iq = ev[1]
id = self.con.getAnID()
iq.setID(id)
self.con.send(ev[1])
#('VCARD', jid)
elif ev[0] == 'VCARD':
iq = common.jabber.Iq(to=ev[1], type="get")
iq._setTag('vcard', common.jabber.NS_VCARD)
iq.setID(self.con.getAnID())
self.con.send(iq)
else:
log.debug("Unknown Command %s" % ev[0])
elif self.connected == 1:
@ -334,6 +343,7 @@ def loadPlugins(gc):
gc.hub.register(mod, 'QUIT')
gc.hub.register(mod, 'ACC_OK')
gc.hub.register(mod, 'CONFIG')
gc.hub.register(mod, 'VCARD')
modObj.load()
# END loadPLugins

File diff suppressed because it is too large Load Diff

View File

@ -50,14 +50,37 @@ class user:
self.resource = args[6]
else: raise TypeError, 'bad arguments'
class vCard_Window:
"""Class for window that show vCard information"""
def delete_event(self, widget):
"""close window"""
self.window.destroy()
def set_values(self, vcard):
for i in vcard.keys():
try:
self.xml.get_widget('entry_'+i).set_text(vcard[i])
except AttributeError, e:
pass
# print "error with %s" % i
def on_retrieve(self, widget):
self.r.queueOUT.put(('VCARD', self.jid))
def __init__(self, acc_pref, jid):
self.xml = gtk.glade.XML(GTKGUI_GLADE, 'vcard')
self.window = self.xml.get_widget("vcard")
self.jid = jid
self.r = acc_pref.accs.r
self.xml.signal_connect('gtk_widget_destroy', self.delete_event)
self.xml.signal_connect('on_close_clicked', self.delete_event)
self.xml.signal_connect('on_retrieve_clicked', self.on_retrieve)
class infoUser_Window:
"""Class for user's information window"""
def test_vcard(self):
iq = common.jabber.Iq(to="asterix2@jabber.lagaule.org", type="get")
print iq
iq._setTag('vcard', common.jabber.NS_VCARD)
print iq
self.r.queueOUT.put(('TEST_VCARD', iq))
self.r.queueOUT.put(('VCARD', self.user.jid))
def delete_event(self, widget):
"""close window"""
@ -524,6 +547,10 @@ class accountPreference_Window:
self.accs.r.plugin.accounts)))
self.accs.init_accounts()
self.delete_event(self)
def on_edit_details_clicked(self, widget):
self.accs.r.tab_vcard[self.entryJid.get_text()] = vCard_Window(self, self.entryJid.get_text())
self.accs.r.queueOUT.put(('VCARD', self.entryJid.get_text()))
#info must be a dictionnary
def __init__(self, accs, infos = {}):
@ -543,6 +570,7 @@ class accountPreference_Window:
self.check.set_sensitive(FALSE)
xml.signal_connect('gtk_widget_destroy', self.delete_event)
xml.signal_connect('on_save_clicked', self.on_save_clicked)
xml.signal_connect('on_edit_details_clicked', self.on_edit_details_clicked)
class accounts_Window:
"""Class for accounts window : lists of accounts"""
@ -1266,6 +1294,7 @@ class roster_Window:
self.optionmenu.set_history(6)
self.tab_messages = {}
self.tab_queues = {}
self.tab_vcard = {}
if self.plugin.config.has_key('showoffline'):
self.showOffline = self.plugin.config['showoffline']
@ -1461,6 +1490,9 @@ class plugin:
accountsWindow.init_accounts()
elif ev[0] == 'QUIT':
self.r.on_quit(self)
elif ev[0] == 'VCARD':
if self.r.tab_vcard.has_key(ev[1]['jid']):
self.r.tab_vcard[ev[1]['jid']].set_values(ev[1])
return 1
def read_sleepy(self):