diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-08-14 13:21:27 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-08-18 14:17:39 (GMT) |
commit | 44a9b5563aa1a4b6a1a5d08214158d3dae572434 (patch) | |
tree | dbc08d20f9b76f58f3715aed8c9cf8576f574d30 /service | |
parent | 2cbd407ab643357f07ae269372926290cadf7588 (diff) |
#7220 Mark all newly installed activities as favorites
Diffstat (limited to 'service')
-rw-r--r-- | service/bundleregistry.py | 29 |
1 files changed, 22 insertions, 7 deletions
diff --git a/service/bundleregistry.py b/service/bundleregistry.py index f40b6d6..7fe65a7 100644 --- a/service/bundleregistry.py +++ b/service/bundleregistry.py @@ -175,20 +175,30 @@ class BundleRegistry(gobject.GObject): bundle_dirs.sort(lambda d1, d2: cmp(bundles[d1], bundles[d2])) for folder in bundle_dirs: try: - self.add_bundle(folder) + self._add_bundle(folder) except Exception, e: logging.error('Error while processing installed activity ' \ 'bundle: %s, %s, %s' % (folder, e.__class__, e)) def add_bundle(self, bundle_path): + bundle = self._add_bundle(bundle_path) + if bundle is not None: + self._set_bundle_favorite(bundle.get_bundle_id(), + bundle.get_activity_version(), + True) + self.emit('bundle-added', bundle) + return True + else: + return False + + def _add_bundle(self, bundle_path): try: bundle = ActivityBundle(bundle_path) except MalformedBundleException: - return False + return None self._bundles.append(bundle) - self.emit('bundle-added', bundle) - return True + return bundle def remove_bundle(self, bundle_path): for bundle in self._bundles: @@ -224,17 +234,22 @@ class BundleRegistry(gobject.GObject): (bundle_id, version)) def set_bundle_favorite(self, bundle_id, version, favorite): + changed = self._set_bundle_favorite(bundle_id, version, favorite) + if changed: + bundle = self._find_bundle(bundle_id, version) + self.emit('bundle-changed', bundle) + + def _set_bundle_favorite(self, bundle_id, version, favorite): key = self._get_favorite_key(bundle_id, version) if favorite and not key in self._favorite_bundles: self._favorite_bundles[key] = None elif not favorite and key in self._favorite_bundles: del self._favorite_bundles[key] else: - return + return False self._write_favorites_file() - bundle = self._find_bundle(bundle_id, version) - self.emit('bundle-changed', bundle) + return True def is_bundle_favorite(self, bundle_id, version): key = self._get_favorite_key(bundle_id, version) |