log on / log off for agents
This commit is contained in:
parent
bad3e45b97
commit
cf2c7b5037
|
@ -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])
|
||||||
|
|
|
@ -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:
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue