Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2006-10-19 19:07:21 (GMT)
committer Dan Williams <dcbw@redhat.com>2006-10-19 19:07:21 (GMT)
commitd784a906e440322c44acf037b37f96753761795b (patch)
tree44a7762fff57fdc077334fd2bb9b3034a3c6748d
parent4a09253f5f848a8557d97a1c58467a6e5ff9464a (diff)
Add initial buddies, protect against buddies we don't know about before using them
-rw-r--r--shell/model/MeshModel.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/shell/model/MeshModel.py b/shell/model/MeshModel.py
index 2d48143..9cb728c 100644
--- a/shell/model/MeshModel.py
+++ b/shell/model/MeshModel.py
@@ -72,6 +72,10 @@ class MeshModel(gobject.GObject):
self._pservice.connect("buddy-disappeared",
self._buddy_disappeared_cb)
+ # Add any buddies the PS knows about already
+ for buddy in self._pservice.get_buddies():
+ self._buddy_appeared_cb(self._pservice, buddy)
+
for service in self._pservice.get_services():
self._check_service(service)
@@ -82,8 +86,9 @@ class MeshModel(gobject.GObject):
return self._buddies
def _buddy_activity_changed_cb(self, buddy, cur_activity):
+ if not self._buddies.has_key(buddy.get_name()):
+ return
buddy_model = self._buddies[buddy.get_name()]
-
if cur_activity == None:
self.emit('buddy-moved', buddy_model, None)
else:
@@ -96,6 +101,10 @@ class MeshModel(gobject.GObject):
def _buddy_appeared_cb(self, pservice, buddy):
model = BuddyModel(buddy=buddy)
+ if self._buddies.has_key(model.get_name()):
+ del model
+ return
+
model.connect('current-activity-changed',
self._buddy_activity_changed_cb)
self._buddies[model.get_name()] = model
@@ -106,6 +115,8 @@ class MeshModel(gobject.GObject):
self._notify_buddy_change(model, cur_activity)
def _buddy_disappeared_cb(self, pservice, buddy):
+ if not self._buddies.has_key(buddy.get_name()):
+ return
self.emit('buddy-removed', buddy)
del self._buddies[buddy.get_name()]