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=''):
"""Requests registration info from the server.
Returns the Iq object received from the server."""
if agent: agent = agent + '.'
# if agent: agent = agent + '.'
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)
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)
return self.SendAndWaitForResponse(reg_iq)
@ -637,9 +639,10 @@ class Client(Connection):
def sendRegInfo(self, agent=None):
"""Sends the populated registration dictionary back to the server"""
if agent: agent = agent + '.'
# if agent: agent = 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)
for info in self._reg_info.keys():
q.insertTag(info).putData(self._reg_info[info])

View File

@ -344,6 +344,7 @@ class GajimCore:
iq._setTag('vCard', common.jabber.NS_VCARD)
iq.setID(self.con.getAnID())
self.con.send(iq)
#('VCARD', {entry1: data, entry2: {entry21: data, ...}, ...})
elif ev[0] == 'VCARD':
iq = common.jabber.Iq(type="set")
iq.setID(self.con.getAnID())
@ -357,6 +358,13 @@ class GajimCore:
else:
iq2.insertTag(i).putData(ev[1][i])
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:
log.debug("Unknown Command %s" % ev[0])
elif self.connected == 1:

View File

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

View File

@ -840,7 +840,8 @@ class browseAgent_Window:
model = self.treeview.get_model()
for jid in agents.keys():
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):
"""When refresh button is clicked :
@ -1101,23 +1102,27 @@ class roster_Window:
jid = self.l_contact[jid]['user'].jid
if not self.tab_vcard.has_key(jid):
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):
"""Make user's popup menu"""
model = self.tree.get_model()
jid = model.get_value(iter, 2)
path = model.get_path(iter)
self.menu_c = gtk.Menu()
menu = gtk.Menu()
item = gtk.MenuItem("Start chat")
self.menu_c.append(item)
menu.append(item)
item.connect("activate", self.on_row_activated, path)
item = gtk.MenuItem("Rename")
self.menu_c.append(item)
menu.append(item)
#item.connect("activate", self.on_rename, iter)
item = gtk.MenuItem()
self.menu_c.append(item)
menu.append(item)
item = gtk.MenuItem("Subscription")
self.menu_c.append(item)
menu.append(item)
menu_sub = gtk.Menu()
item.set_submenu(menu_sub)
@ -1130,31 +1135,51 @@ class roster_Window:
'I would like to add you to my contact list, please.')
item = gtk.MenuItem()
self.menu_c.append(item)
menu.append(item)
item = gtk.MenuItem("Remove")
self.menu_c.append(item)
menu.append(item)
item.connect("activate", self.on_req_usub, iter)
item = gtk.MenuItem()
self.menu_c.append(item)
menu.append(item)
item = gtk.MenuItem("Informations")
self.menu_c.append(item)
menu.append(item)
item.connect("activate", self.on_info, jid)
self.menu_c.popup(None, None, None, event.button, event.time)
self.menu_c.show_all()
menu.popup(None, None, None, event.button, event.time)
menu.show_all()
def mk_menu_g(self, event):
"""Make group's popup menu"""
self.menu_c = gtk.Menu()
menu = gtk.Menu()
item = gtk.MenuItem("grp1")
self.menu_c.append(item)
menu.append(item)
item = gtk.MenuItem("grp2")
self.menu_c.append(item)
menu.append(item)
item = gtk.MenuItem("grp3")
self.menu_c.append(item)
self.menu_c.popup(None, None, None, event.button, event.time)
self.menu_c.show_all()
menu.append(item)
menu.popup(None, None, None, event.button, event.time)
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):
"""Authorize a user"""
@ -1190,8 +1215,7 @@ class roster_Window:
if data == 'group':
self.mk_menu_g(event)
elif data == 'agent':
#TODO
pass
self.mk_menu_agent(event, iter)
else:
self.mk_menu_c(event, iter)
return gtk.TRUE