diff options
author | Guillaume Desmottes <cassidy@cass-wks.(none)> | 2007-02-23 13:15:51 (GMT) |
---|---|---|
committer | Guillaume Desmottes <cassidy@cass-wks.(none)> | 2007-02-23 13:15:51 (GMT) |
commit | 5ae3e292ca9beddd8a13c3dffe8751839d23e09b (patch) | |
tree | ee1da6be98f95689704f670d4f648dcd930cf0f2 /services/presence2/presenceservice.py | |
parent | 6756c00917fec4892444fa8dfd70dee99c99f291 (diff) |
create buddy when connecting
Diffstat (limited to 'services/presence2/presenceservice.py')
-rw-r--r-- | services/presence2/presenceservice.py | 42 |
1 files changed, 28 insertions, 14 deletions
diff --git a/services/presence2/presenceservice.py b/services/presence2/presenceservice.py index 659c389..fffb7c5 100644 --- a/services/presence2/presenceservice.py +++ b/services/presence2/presenceservice.py @@ -42,6 +42,7 @@ class PresenceService(dbus.service.Object): self._next_object_id = 0 self._buddies = {} # key -> Buddy + self._buddies_handle = {} # tp handle -> Buddy self._activities = {} # activity id -> Activity self._icon_cache = buddyiconcache.BuddyIconCache() @@ -56,21 +57,8 @@ class PresenceService(dbus.service.Object): self._registry = ManagerRegistry() self._registry.LoadManagers() - # Telepathy connection to the server - self._server_client = None - # Telepathy link local connection - self._ll_client = None - - self._connect_server () - - dbus.service.Object.__init__(self, self._bus_name, _PRESENCE_PATH) - - def _get_next_object_id(self): - """Increment and return the object ID counter.""" - self._next_object_id = self._next_object_id + 1 - return self._next_object_id - def _connect_server (self): + # Telepathy connection to the server mgr = self._registry.GetManager('gabble') protocol = 'jabber' account = { @@ -83,6 +71,32 @@ class PresenceService(dbus.service.Object): conn = Connection(conn_bus_name, conn_object_path) self._server_client = telepathyclient.TelepathyClient(conn) + # Telepathy link local connection + self._ll_client = None + + self._server_client.connect('contact-appeared', self._contact_appeared) + self._server_client.run() + + dbus.service.Object.__init__(self, self._bus_name, _PRESENCE_PATH) + + def _contact_appeared(self, tp, handle, key): + if self._buddies.has_key(key): + # We already know this buddy + return + + objid = self._get_next_object_id() + new_buddy = buddy.Buddy(self._bus_name, objid, self._icon_cache) + self._buddies[key] = new_buddy + self._buddies_handle[handle] = new_buddy + + self.BuddyAppeared(new_buddy.object_path()) + + + def _get_next_object_id(self): + """Increment and return the object ID counter.""" + self._next_object_id = self._next_object_id + 1 + return self._next_object_id + @dbus.service.signal(_PRESENCE_INTERFACE, signature="o") def ActivityAppeared(self, activity): pass |