diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-10-21 12:55:52 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-10-21 12:55:52 (GMT) |
commit | 2b151235a759c50974ae3e707222834b4df36279 (patch) | |
tree | 020e288613c2a4eb0d63522ac36a57610b3505d2 /src/jarabe/desktop/favoritesview.py | |
parent | 0f39837e3cfc0bc38ebc41112c8198a6f7764b88 (diff) |
Load the favorite activities later, so we can set up earlier the rest of the UI
Diffstat (limited to 'src/jarabe/desktop/favoritesview.py')
-rw-r--r-- | src/jarabe/desktop/favoritesview.py | 60 |
1 files changed, 39 insertions, 21 deletions
diff --git a/src/jarabe/desktop/favoritesview.py b/src/jarabe/desktop/favoritesview.py index 3db90ac..926f143 100644 --- a/src/jarabe/desktop/favoritesview.py +++ b/src/jarabe/desktop/favoritesview.py @@ -87,8 +87,12 @@ class FavoritesView(hippo.Canvas): self._box.props.background_color = style.COLOR_WHITE.get_int() self.set_root(self._box) - self._my_icon = None - self._current_activity = None + self._my_icon = _MyIcon(style.XLARGE_ICON_SIZE) + self._box.append(self._my_icon) + + self._current_activity = CurrentActivityIcon() + self._box.append(self._current_activity) + self._layout = None self._alert = None @@ -106,6 +110,12 @@ class FavoritesView(hippo.Canvas): def __connect_to_bundle_registry_cb(self): registry = bundleregistry.get_registry() + + for info in registry: + if registry.is_bundle_favorite(info.get_bundle_id(), + info.get_activity_version()): + self._add_activity(info) + registry.connect('bundle-added', self.__activity_added_cb) registry.connect('bundle-removed', self.__activity_removed_cb) registry.connect('bundle-changed', self.__activity_changed_cb) @@ -114,6 +124,7 @@ class FavoritesView(hippo.Canvas): icon = ActivityIcon(activity_info) icon.connect('erase-activated', self.__erase_activated_cb) icon.props.size = style.STANDARD_ICON_SIZE + self._box.insert_sorted(icon, 0, self._layout.compare_activities) self._layout.append(icon) def __erase_activated_cb(self, activity_icon, bundle_id): @@ -137,6 +148,7 @@ class FavoritesView(hippo.Canvas): activity_info.get_activity_version()) if icon is not None: self._layout.remove(icon) + self._box.remove(icon) def __activity_changed_cb(self, activity_registry, activity_info): if activity_info.get_bundle_id() == 'org.laptop.JournalActivity': @@ -265,30 +277,36 @@ class FavoritesView(hippo.Canvas): def _set_layout(self, layout): if layout not in LAYOUT_MAP: raise ValueError('Unknown favorites layout: %r' % layout) - if type(self._layout) != LAYOUT_MAP[layout]: - self._box.clear() - self._layout = LAYOUT_MAP[layout]() - self._box.set_layout(self._layout) - self._my_icon = _MyIcon(style.XLARGE_ICON_SIZE) - self._layout.append(self._my_icon, locked=True) + if type(self._layout) == LAYOUT_MAP[layout]: + return - self._current_activity = CurrentActivityIcon() - self._layout.append(self._current_activity, locked=True) + self._layout = LAYOUT_MAP[layout]() + self._box.set_layout(self._layout) + + #TODO: compatibility hack while sort() gets added to the hippo + # python bindings + if hasattr(self._box, 'sort'): + self._box.sort(self._layout.compare_activities) + else: + icons = self._box.get_children() + self._box.clear() + for icon in icons: + self._box.insert_sorted(icon, 0, self._layout.compare_activities) - registry = bundleregistry.get_registry() - for info in registry: - if registry.is_bundle_favorite(info.get_bundle_id(), - info.get_activity_version()): - self._add_activity(info) + for icon in self._box.get_children(): + if icon not in [self._my_icon, self._current_activity]: + self._layout.append(icon) + self._layout.append(self._my_icon, locked=True) + self._layout.append(self._current_activity, locked=True) - if self._layout.allow_dnd(): - self.drag_source_set(0, [], 0) - self.drag_dest_set(0, [], 0) - else: - self.drag_source_unset() - self.drag_dest_unset() + if self._layout.allow_dnd(): + self.drag_source_set(0, [], 0) + self.drag_dest_set(0, [], 0) + else: + self.drag_source_unset() + self.drag_dest_unset() layout = property(None, _set_layout) |