Skip to content
Permalink
Browse files
enchaned favorites: use hidden list on runtime installs
Add a new attribute called "_hidden_activities" to BundleRegistry,
so it can be used in other scenarios, such as when bundles are
installed in runtime to determine whether or not bundle should be
favorite looking at this list.

Signed-off-by: Martin Abente Lahaye <tch@sugarlabs.org>
  • Loading branch information
tchx84 committed Jun 18, 2015
1 parent bb26b20 commit 28261e4
Showing 1 changed file with 26 additions and 14 deletions.
@@ -113,6 +113,9 @@ def __init__(self):
except Exception:
logging.exception('Error while loading favorite_activities.')

self._hidden_activities = []
self._load_hidden_activities()

self._convert_old_favorites()
self._scan_new_favorites()

@@ -188,6 +191,17 @@ def _load_favorites(self):

self._favorite_bundles[i] = favorite_bundles

def _load_hidden_activities(self):
path = os.environ.get('SUGAR_ACTIVITIES_HIDDEN', None)
try:
with open(path) as file:
for line in file.readlines():
bundle_id = line.strip()
if bundle_id:
self._hidden_activities.append(bundle_id)
except IOError:
logging.error('Error when loading hidden activities %s', path)

def _convert_old_favorites(self):
for i in range(desktop.get_number_of_views()):
for key in self._favorite_bundles[i].keys():
@@ -200,25 +214,13 @@ def _convert_old_favorites(self):
self._write_favorites_file(i)

def _scan_new_favorites(self):
hidden_activities = []
path = os.environ.get('SUGAR_ACTIVITIES_HIDDEN', None)

try:
with open(path) as file:
for line in file.readlines():
bundle_id = line.strip()
if bundle_id:
hidden_activities.append(bundle_id)
except IOError:
logging.error('Error when loading hidden activities %s', path)

for bundle in self:
bundle_id = bundle.get_bundle_id()
key = self._get_favorite_key(
bundle_id, bundle.get_activity_version())
if key not in self._favorite_bundles[_DEFAULT_VIEW]:
self._favorite_bundles[_DEFAULT_VIEW][key] = \
{'favorite': bundle_id not in hidden_activities}
{'favorite': bundle_id not in self._hidden_activities}
self._write_favorites_file(_DEFAULT_VIEW)

def get_bundle(self, bundle_id):
@@ -297,9 +299,11 @@ def add_bundle(self, bundle_path, set_favorite=False, emit_signals=True,
self.remove_bundle(installed.get_path(), emit_signals)

if set_favorite:
favorite = not self.is_bundle_hidden(
bundle.get_bundle_id(), bundle.get_activity_version())
self._set_bundle_favorite(bundle.get_bundle_id(),
bundle.get_activity_version(),
True)
favorite)

with self._lock:
self._bundles.append(bundle)
@@ -383,6 +387,14 @@ def is_bundle_favorite(self, bundle_id, version, favorite_view=0):
return False
return self._favorite_bundles[favorite_view][key]['favorite']

def is_bundle_hidden(self, bundle_id, version):
key = self._get_favorite_key(bundle_id, version)
if key in self._favorite_bundles[_DEFAULT_VIEW]:
data = self._favorite_bundles[_DEFAULT_VIEW][key]
return data['favorite'] is False
else:
return bundle_id in self._hidden_activities

def is_activity_protected(self, bundle_id):
return bundle_id in self._protected_activities

0 comments on commit 28261e4

Please sign in to comment.