diff options
Diffstat (limited to 'shell/view/home/MeshGroup.py')
-rw-r--r-- | shell/view/home/MeshGroup.py | 85 |
1 files changed, 14 insertions, 71 deletions
diff --git a/shell/view/home/MeshGroup.py b/shell/view/home/MeshGroup.py index 4f523de..89f8f4e 100644 --- a/shell/view/home/MeshGroup.py +++ b/shell/view/home/MeshGroup.py @@ -4,84 +4,27 @@ import goocanvas import conf from sugar.canvas.IconItem import IconItem -from sugar.canvas.IconItem import IconColor -from sugar.presence import PresenceService from view.home.IconLayout import IconLayout - -class ActivityItem(IconItem): - def __init__(self, activity, service): - self._service = service - self._activity = activity - - IconItem.__init__(self, icon_name=self.get_icon_name(), - color=self.get_color(), size=112) - - def get_id(self): - return self._activity.get_id() - - def get_icon_name(self): - registry = conf.get_activity_registry() - info = registry.get_activity_from_type(self._service.get_type()) - - return info.get_icon() - - def get_color(self): - return IconColor(self._activity.get_color()) - - def get_service(self): - return self._service +from view.BuddyIcon import BuddyIcon class MeshGroup(goocanvas.Group): - def __init__(self, shell): + def __init__(self, shell, menu_shell): goocanvas.Group.__init__(self) self._shell = shell + self._menu_shell = menu_shell + self._model = shell.get_model().get_mesh() + self._layout = IconLayout(shell.get_grid()) - self._icon_layout = IconLayout(shell.get_grid()) - self._activities = {} - - self._pservice = PresenceService.get_instance() - self._pservice.connect("service-appeared", - self._service_appeared_cb) - self._pservice.connect('activity-disappeared', - self._activity_disappeared_cb) - - for service in self._pservice.get_services(): - self._check_service(service) - - def _service_appeared_cb(self, pservice, service): - self._check_service(service) - - def _check_service(self, service): - registry = conf.get_activity_registry() - if registry.get_activity_from_type(service.get_type()) != None: - activity_id = service.get_activity_id() - if not self.has_activity(activity_id): - activity = self._pservice.get_activity(activity_id) - if activity != None: - self.add_activity(activity, service) - - def has_activity(self, activity_id): - return self._activities.has_key(activity_id) - - def add_activity(self, activity, service): - item = ActivityItem(activity, service) - item.connect('clicked', self._activity_clicked_cb) - self._icon_layout.add_icon(item) - self.add_child(item) - - self._activities[item.get_id()] = item - - def _activity_disappeared_cb(self, pservice, activity): - if self._activities.has_key(activity.get_id()): - self.remove_child(self._activities[activity.get_id()]) - del self._activities[activity.get_id()] + for buddy_model in self._model.get_buddies(): + self._add_buddy(buddy_model) - def _activity_clicked_cb(self, item): - default_type = item.get_service().get_type() - registry = conf.get_activity_registry() + self._model.connect('buddy-added', self._buddy_added_cb) - bundle_id = registry.get_activity_from_type(default_type).get_id() - activity_id = item.get_id() + def _buddy_added_cb(self, model, buddy_model): + self._add_buddy(buddy_model) - self._shell.join_activity(bundle_id, activity_id) + def _add_buddy(self, buddy_model): + icon = BuddyIcon(self._shell, self._menu_shell, buddy_model) + self.add_child(icon) + self._layout.add_icon(icon) |