Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/shell
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpg@redhat.com>2007-09-17 13:15:52 (GMT)
committer Marco Pesenti Gritti <mpg@redhat.com>2007-09-17 13:15:52 (GMT)
commited227339414ebb2692759a2096ef43c018e48068 (patch)
tree00980b4c13e083bf771df46a90c3b160b84ce352 /shell
parent70723aff7a947d00f4f5632cfd7d1fe4d52c79be (diff)
parentd21e4c7ceea5af019c42526adf3d668a3d1e3ae8 (diff)
Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Diffstat (limited to 'shell')
-rw-r--r--shell/model/Invites.py18
-rw-r--r--shell/model/Owner.py5
2 files changed, 19 insertions, 4 deletions
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)