From ed227339414ebb2692759a2096ef43c018e48068 Mon Sep 17 00:00:00 2001 From: Marco Pesenti Gritti Date: Mon, 17 Sep 2007 13:15:52 +0000 Subject: Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar --- (limited to 'shell') diff --git a/shell/model/Invites.py b/shell/model/Invites.py index a94a469..d4779f1 100644 --- a/shell/model/Invites.py +++ b/shell/model/Invites.py @@ -39,16 +39,26 @@ class Invites(gobject.GObject): def __init__(self): gobject.GObject.__init__(self) - self._list = [] + self._dict = {} def add_invite(self, issuer, bundle_id, activity_id): + if activity_id in self._dict: + # there is no point to add more than one time + # an invite for the same activity + return + invite = Invite(issuer, bundle_id, activity_id) - self._list.append(invite) + self._dict[activity_id] = invite self.emit('invite-added', invite) def remove_invite(self, invite): - self._list.remove(invite) + self._dict.pop(invite.get_activity_id()) self.emit('invite-removed', invite) + def remove_activity(self, activity_id): + invite = self._dict.get(activity_id) + if invite is not None: + self.remove_invite(invite) + def __iter__(self): - return self._list.__iter__() + return self._dict.values().__iter__() diff --git a/shell/model/Owner.py b/shell/model/Owner.py index 0abc13a..49aed35 100644 --- a/shell/model/Owner.py +++ b/shell/model/Owner.py @@ -68,6 +68,8 @@ class ShellOwner(gobject.GObject): self._pservice = presenceservice.get_instance() self._pservice.connect('activity-invitation', self._activity_invitation_cb) + self._pservice.connect('activity-disappeared', + self._activity_disappeared_cb) self._invites = Invites() @@ -80,3 +82,6 @@ class ShellOwner(gobject.GObject): def _activity_invitation_cb(self, pservice, activity, buddy, message): self._invites.add_invite(buddy, activity.props.type, activity.props.id) + + def _activity_disappeared_cb(self, pservice, activity): + self._invites.remove_activity(activity.props.id) -- cgit v0.9.1