log on / log off for agents

This commit is contained in:
Yann Leboulanger 2004-03-04 20:56:39 +00:00
parent bad3e45b97
commit cf2c7b5037
4 changed files with 62 additions and 27 deletions

View File

@ -612,11 +612,13 @@ class Client(Connection):
def requestRegInfo(self,agent=''): def requestRegInfo(self,agent=''):
"""Requests registration info from the server. """Requests registration info from the server.
Returns the Iq object received from the server.""" Returns the Iq object received from the server."""
if agent: agent = agent + '.' # if agent: agent = agent + '.'
self._reg_info = {} self._reg_info = {}
reg_iq = Iq(type='get', to = agent + self._host) # reg_iq = Iq(type='get', to = agent + self._host)
reg_iq = Iq(type='get', to = agent)
reg_iq.setQuery(NS_REGISTER) reg_iq.setQuery(NS_REGISTER)
self.DEBUG("Requesting reg info from %s%s:" % (agent, self._host), DBG_NODE_IQ) # self.DEBUG("Requesting reg info from %s%s:" % (agent, self._host), DBG_NODE_IQ)
self.DEBUG("Requesting reg info from %s:" % agent, DBG_NODE_IQ)
self.DEBUG(ustr(reg_iq),DBG_NODE_IQ) self.DEBUG(ustr(reg_iq),DBG_NODE_IQ)
return self.SendAndWaitForResponse(reg_iq) return self.SendAndWaitForResponse(reg_iq)
@ -637,9 +639,10 @@ class Client(Connection):
def sendRegInfo(self, agent=None): def sendRegInfo(self, agent=None):
"""Sends the populated registration dictionary back to the server""" """Sends the populated registration dictionary back to the server"""
if agent: agent = agent + '.' # if agent: agent = agent + '.'
if agent is None: agent = '' if agent is None: agent = ''
reg_iq = Iq(to = agent + self._host, type='set') # reg_iq = Iq(to = agent + self._host, type='set')
reg_iq = Iq(to = agent, type='set')
q = reg_iq.setQuery(NS_REGISTER) q = reg_iq.setQuery(NS_REGISTER)
for info in self._reg_info.keys(): for info in self._reg_info.keys():
q.insertTag(info).putData(self._reg_info[info]) q.insertTag(info).putData(self._reg_info[info])

View File

@ -344,6 +344,7 @@ class GajimCore:
iq._setTag('vCard', common.jabber.NS_VCARD) iq._setTag('vCard', common.jabber.NS_VCARD)
iq.setID(self.con.getAnID()) iq.setID(self.con.getAnID())
self.con.send(iq) self.con.send(iq)
#('VCARD', {entry1: data, entry2: {entry21: data, ...}, ...})
elif ev[0] == 'VCARD': elif ev[0] == 'VCARD':
iq = common.jabber.Iq(type="set") iq = common.jabber.Iq(type="set")
iq.setID(self.con.getAnID()) iq.setID(self.con.getAnID())
@ -357,6 +358,13 @@ class GajimCore:
else: else:
iq2.insertTag(i).putData(ev[1][i]) iq2.insertTag(i).putData(ev[1][i])
self.con.send(iq) self.con.send(iq)
#('AGENT_LOGGING', (agent, type))
elif ev[0] == 'AGENT_LOGGING':
t = ev[1][1];
if not t:
t='available';
p = common.jabber.Presence(to=ev[1][0], type=t)
self.con.send(p)
else: else:
log.debug("Unknown Command %s" % ev[0]) log.debug("Unknown Command %s" % ev[0])
elif self.connected == 1: elif self.connected == 1:

View File

@ -5165,7 +5165,7 @@ when NOT onlie</property>
</child> </child>
<child> <child>
<widget class="GtkTextView" id="textview1"> <widget class="GtkTextView" id="textview_DESC">
<property name="visible">True</property> <property name="visible">True</property>
<property name="can_focus">True</property> <property name="can_focus">True</property>
<property name="editable">False</property> <property name="editable">False</property>

View File

@ -840,7 +840,8 @@ class browseAgent_Window:
model = self.treeview.get_model() model = self.treeview.get_model()
for jid in agents.keys(): for jid in agents.keys():
iter = model.append() iter = model.append()
model.set(iter, 0, agents[jid]['name'], 1, agents[jid]['service']) # model.set(iter, 0, agents[jid]['name'], 1, agents[jid]['service'])
model.set(iter, 0, agents[jid]['name'], 1, jid)
def on_refresh(self, widget): def on_refresh(self, widget):
"""When refresh button is clicked : """When refresh button is clicked :
@ -1101,23 +1102,27 @@ class roster_Window:
jid = self.l_contact[jid]['user'].jid jid = self.l_contact[jid]['user'].jid
if not self.tab_vcard.has_key(jid): if not self.tab_vcard.has_key(jid):
self.tab_vcard[jid] = infoUser_Window(self.l_contact[jid]['user'], self) self.tab_vcard[jid] = infoUser_Window(self.l_contact[jid]['user'], self)
def on_agent_logging(self, widget, jid, type):
"""When an agent is requested to log in or off"""
self.queueOUT.put(('AGENT_LOGGING', (jid, type)))
def mk_menu_c(self, event, iter): def mk_menu_c(self, event, iter):
"""Make user's popup menu""" """Make user's popup menu"""
model = self.tree.get_model() model = self.tree.get_model()
jid = model.get_value(iter, 2) jid = model.get_value(iter, 2)
path = model.get_path(iter) path = model.get_path(iter)
self.menu_c = gtk.Menu() menu = gtk.Menu()
item = gtk.MenuItem("Start chat") item = gtk.MenuItem("Start chat")
self.menu_c.append(item) menu.append(item)
item.connect("activate", self.on_row_activated, path) item.connect("activate", self.on_row_activated, path)
item = gtk.MenuItem("Rename") item = gtk.MenuItem("Rename")
self.menu_c.append(item) menu.append(item)
#item.connect("activate", self.on_rename, iter) #item.connect("activate", self.on_rename, iter)
item = gtk.MenuItem() item = gtk.MenuItem()
self.menu_c.append(item) menu.append(item)
item = gtk.MenuItem("Subscription") item = gtk.MenuItem("Subscription")
self.menu_c.append(item) menu.append(item)
menu_sub = gtk.Menu() menu_sub = gtk.Menu()
item.set_submenu(menu_sub) item.set_submenu(menu_sub)
@ -1130,31 +1135,51 @@ class roster_Window:
'I would like to add you to my contact list, please.') 'I would like to add you to my contact list, please.')
item = gtk.MenuItem() item = gtk.MenuItem()
self.menu_c.append(item) menu.append(item)
item = gtk.MenuItem("Remove") item = gtk.MenuItem("Remove")
self.menu_c.append(item) menu.append(item)
item.connect("activate", self.on_req_usub, iter) item.connect("activate", self.on_req_usub, iter)
item = gtk.MenuItem() item = gtk.MenuItem()
self.menu_c.append(item) menu.append(item)
item = gtk.MenuItem("Informations") item = gtk.MenuItem("Informations")
self.menu_c.append(item) menu.append(item)
item.connect("activate", self.on_info, jid) item.connect("activate", self.on_info, jid)
self.menu_c.popup(None, None, None, event.button, event.time) menu.popup(None, None, None, event.button, event.time)
self.menu_c.show_all() menu.show_all()
def mk_menu_g(self, event): def mk_menu_g(self, event):
"""Make group's popup menu""" """Make group's popup menu"""
self.menu_c = gtk.Menu() menu = gtk.Menu()
item = gtk.MenuItem("grp1") item = gtk.MenuItem("grp1")
self.menu_c.append(item) menu.append(item)
item = gtk.MenuItem("grp2") item = gtk.MenuItem("grp2")
self.menu_c.append(item) menu.append(item)
item = gtk.MenuItem("grp3") item = gtk.MenuItem("grp3")
self.menu_c.append(item) menu.append(item)
self.menu_c.popup(None, None, None, event.button, event.time) menu.popup(None, None, None, event.button, event.time)
self.menu_c.show_all() menu.show_all()
def mk_menu_agent(self, event, iter):
"""Make agent's popup menu"""
model = self.tree.get_model()
jid = model.get_value(iter, 1)
menu = gtk.Menu()
item = gtk.MenuItem("Log on")
if self.l_contact[jid]['user'].show != 'offline':
item.set_sensitive(FALSE)
menu.append(item)
item.connect("activate", self.on_agent_logging, jid, 'available')
item = gtk.MenuItem("Log off")
if self.l_contact[jid]['user'].show == 'offline':
item.set_sensitive(FALSE)
menu.append(item)
item.connect("activate", self.on_agent_logging, jid, 'unavailable')
menu.popup(None, None, None, event.button, event.time)
menu.show_all()
def authorize(self, widget, jid): def authorize(self, widget, jid):
"""Authorize a user""" """Authorize a user"""
@ -1190,8 +1215,7 @@ class roster_Window:
if data == 'group': if data == 'group':
self.mk_menu_g(event) self.mk_menu_g(event)
elif data == 'agent': elif data == 'agent':
#TODO self.mk_menu_agent(event, iter)
pass
else: else:
self.mk_menu_c(event, iter) self.mk_menu_c(event, iter)
return gtk.TRUE return gtk.TRUE