diff options
author | Dan Williams <dcbw@redhat.com> | 2006-10-19 19:07:21 (GMT) |
---|---|---|
committer | Dan Williams <dcbw@redhat.com> | 2006-10-19 19:07:21 (GMT) |
commit | d784a906e440322c44acf037b37f96753761795b (patch) | |
tree | 44a7762fff57fdc077334fd2bb9b3034a3c6748d | |
parent | 4a09253f5f848a8557d97a1c58467a6e5ff9464a (diff) |
Add initial buddies, protect against buddies we don't know about before using them
-rw-r--r-- | shell/model/MeshModel.py | 13 |
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()] |