start of support of the org.freedesktop.Telepathy.Connection.Interface.OLPC.BuddyInfo interface
This commit is contained in:
parent
152d95f3de
commit
81b636c8e1
@ -65,6 +65,8 @@ class PresenceService(dbus.service.Object):
|
|||||||
self._server_plugin.connect('contact-online', self._contact_online)
|
self._server_plugin.connect('contact-online', self._contact_online)
|
||||||
self._server_plugin.connect('contact-offline', self._contact_offline)
|
self._server_plugin.connect('contact-offline', self._contact_offline)
|
||||||
self._server_plugin.connect('avatar-updated', self._avatar_updated)
|
self._server_plugin.connect('avatar-updated', self._avatar_updated)
|
||||||
|
self._server_plugin.connect('properties-changed', self._properties_changed)
|
||||||
|
self._server_plugin.connect('activities-changed', self._activities_changed)
|
||||||
self._server_plugin.start()
|
self._server_plugin.start()
|
||||||
|
|
||||||
# Set up the link local connection
|
# Set up the link local connection
|
||||||
@ -123,6 +125,15 @@ class PresenceService(dbus.service.Object):
|
|||||||
if buddy:
|
if buddy:
|
||||||
buddy.set_icon(avatar)
|
buddy.set_icon(avatar)
|
||||||
|
|
||||||
|
def _properties_changed(self, tp, handle, prop):
|
||||||
|
buddy = self._handles[tp].get(handle)
|
||||||
|
|
||||||
|
if buddy:
|
||||||
|
buddy.set_properties(prop)
|
||||||
|
|
||||||
|
def _activities_changed(self, tp, handle, prop):
|
||||||
|
pass
|
||||||
|
|
||||||
@dbus.service.signal(_PRESENCE_INTERFACE, signature="o")
|
@dbus.service.signal(_PRESENCE_INTERFACE, signature="o")
|
||||||
def ActivityAppeared(self, activity):
|
def ActivityAppeared(self, activity):
|
||||||
pass
|
pass
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||||
|
|
||||||
import gobject
|
import gobject
|
||||||
|
import dbus
|
||||||
from sugar import profile
|
from sugar import profile
|
||||||
from sugar import util
|
from sugar import util
|
||||||
from buddyiconcache import BuddyIconCache
|
from buddyiconcache import BuddyIconCache
|
||||||
@ -31,6 +32,8 @@ from telepathy.constants import (
|
|||||||
CONNECTION_HANDLE_TYPE_LIST, CONNECTION_HANDLE_TYPE_CONTACT,
|
CONNECTION_HANDLE_TYPE_LIST, CONNECTION_HANDLE_TYPE_CONTACT,
|
||||||
CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED)
|
CONNECTION_STATUS_REASON_AUTHENTICATION_FAILED)
|
||||||
|
|
||||||
|
CONN_INTERFACE_BUDDY_INFO = 'org.laptop.Telepathy.BuddyInfo'
|
||||||
|
|
||||||
_PROTOCOL = "jabber"
|
_PROTOCOL = "jabber"
|
||||||
|
|
||||||
class ServerPlugin(gobject.GObject):
|
class ServerPlugin(gobject.GObject):
|
||||||
@ -42,6 +45,10 @@ class ServerPlugin(gobject.GObject):
|
|||||||
'status': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
|
'status': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
|
||||||
([gobject.TYPE_INT, gobject.TYPE_INT])),
|
([gobject.TYPE_INT, gobject.TYPE_INT])),
|
||||||
'avatar-updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
|
'avatar-updated': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
|
||||||
|
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
|
||||||
|
'properties-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
|
||||||
|
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
|
||||||
|
'activities-changed': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
|
||||||
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT]))
|
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT]))
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -167,24 +174,13 @@ class ServerPlugin(gobject.GObject):
|
|||||||
self._conn._valid_interfaces.add(CONN_INTERFACE_AVATARS)
|
self._conn._valid_interfaces.add(CONN_INTERFACE_AVATARS)
|
||||||
|
|
||||||
self._conn[CONN_INTERFACE_AVATARS].connect_to_signal('AvatarUpdated', self._avatar_updated_cb)
|
self._conn[CONN_INTERFACE_AVATARS].connect_to_signal('AvatarUpdated', self._avatar_updated_cb)
|
||||||
#if CONN_INTERFACE_AVATARS in self._conn:
|
|
||||||
# tokens = self._conn[CONN_INTERFACE_AVATARS].RequestAvatarTokens(subscribe_handles)
|
|
||||||
|
|
||||||
# #for handle, token in zip(subscribe_handles, tokens):
|
if CONN_INTERFACE_BUDDY_INFO not in self._conn.get_valid_interfaces():
|
||||||
# for handle in subscribe_handles:
|
print 'OLPC information not available'
|
||||||
# avatar, mime_type = self._conn[CONN_INTERFACE_AVATARS].RequestAvatar(handle)
|
self.disconnect()
|
||||||
# self.buddies[handle].avatar = ''.join(map(chr, avatar))
|
|
||||||
|
|
||||||
# import gtk
|
self._conn[CONN_INTERFACE_BUDDY_INFO].connect_to_signal('PropertiesChanged', self._properties_changed_cb)
|
||||||
# window = gtk.Window()
|
self._conn[CONN_INTERFACE_BUDDY_INFO].connect_to_signal('ActivitiesChanged', self._activities_changed_cb)
|
||||||
# window.set_title(self.buddies[handle].alias)
|
|
||||||
# loader = gtk.gdk.PixbufLoader()
|
|
||||||
# loader.write(self.buddies[handle].avatar)
|
|
||||||
# loader.close()
|
|
||||||
# image = gtk.Image()
|
|
||||||
# image.set_from_pixbuf(loader.get_pixbuf())
|
|
||||||
# window.add(image)
|
|
||||||
# window.show_all()
|
|
||||||
|
|
||||||
def _status_changed_cb(self, state, reason):
|
def _status_changed_cb(self, state, reason):
|
||||||
gobject.idle_add(self._status_changed_cb2, state, reason)
|
gobject.idle_add(self._status_changed_cb2, state, reason)
|
||||||
@ -262,3 +258,12 @@ class ServerPlugin(gobject.GObject):
|
|||||||
self._icon_cache.store_icon(jid, new_avatar_token, icon)
|
self._icon_cache.store_icon(jid, new_avatar_token, icon)
|
||||||
|
|
||||||
self.emit("avatar-updated", handle, icon)
|
self.emit("avatar-updated", handle, icon)
|
||||||
|
|
||||||
|
def set_properties(self, properties):
|
||||||
|
self._conn[CONN_INTERFACE_BUDDY_INFO].SetProperties(properties)
|
||||||
|
|
||||||
|
def _properties_changed_cb(self, contact, properties):
|
||||||
|
self.emit("properties-changed", contact, properties)
|
||||||
|
|
||||||
|
def _activities_changed_cb(self, contact, activities):
|
||||||
|
self.emit("activities-changed", contact, activities)
|
||||||
|
Loading…
Reference in New Issue
Block a user