From d784a906e440322c44acf037b37f96753761795b Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Thu, 19 Oct 2006 15:07:21 -0400 Subject: [PATCH] Add initial buddies, protect against buddies we don't know about before using them --- shell/model/MeshModel.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/shell/model/MeshModel.py b/shell/model/MeshModel.py index 2d48143f..9cb728c5 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()]