Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/services/presence2/presenceservice.py
diff options
context:
space:
mode:
authorGuillaume 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)
commit5ae3e292ca9beddd8a13c3dffe8751839d23e09b (patch)
treeee1da6be98f95689704f670d4f648dcd930cf0f2 /services/presence2/presenceservice.py
parent6756c00917fec4892444fa8dfd70dee99c99f291 (diff)
create buddy when connecting
Diffstat (limited to 'services/presence2/presenceservice.py')
-rw-r--r--services/presence2/presenceservice.py42
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