Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/sugar
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2006-06-17 03:55:26 (GMT)
committer Dan Williams <dcbw@redhat.com>2006-06-17 03:55:26 (GMT)
commit5938a6dc1466f2cce3faa6bd438594fb4b2b88ab (patch)
tree12a07338c845b1e3b84812f26ea0f993d4705189 /sugar
parent63bff5cecde0029fc25e08be30fd742c296a5faf (diff)
Add presence service-scope signals when new services appear on buddies, so that client's don't have to connect signal handlers to every single buddy
Diffstat (limited to 'sugar')
-rw-r--r--sugar/presence/PresenceService.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/sugar/presence/PresenceService.py b/sugar/presence/PresenceService.py
index ad88f86..2e476a6 100644
--- a/sugar/presence/PresenceService.py
+++ b/sugar/presence/PresenceService.py
@@ -69,6 +69,10 @@ class PresenceService(gobject.GObject):
([gobject.TYPE_PYOBJECT])),
'buddy-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT])),
+ 'service-appeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+ ([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
+ 'service-disappeared': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
+ ([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
'activity-announced': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
([gobject.TYPE_PYOBJECT, gobject.TYPE_PYOBJECT])),
'new-service-adv': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE,
@@ -197,7 +201,9 @@ class PresenceService(gobject.GObject):
try:
buddy = self._buddies[name]
buddy_was_valid = buddy.is_valid()
- buddy.add_service(service)
+ service_added = buddy.add_service(service)
+ if service_added:
+ self.emit('service-appeared', buddy, service)
except KeyError:
# Should this service mark the owner?
owner_nick = env.get_nick_name()
@@ -208,6 +214,7 @@ class PresenceService(gobject.GObject):
else:
buddy = Buddy.Buddy(service)
self._buddies[name] = buddy
+ self.emit('service-appeared', buddy, service)
if not buddy_was_valid and buddy.is_valid():
self.emit("buddy-appeared", buddy)
return buddy
@@ -351,6 +358,7 @@ class PresenceService(gobject.GObject):
pass
else:
buddy.remove_service(service)
+ self.emit('service-disappeared', buddy, service)
if not buddy.is_valid():
self.emit("buddy-disappeared", buddy)
del self._buddies[name]