[Sugar-devel] [sugar PATCH] Check if a activity is already present in activities-list, before (re-)adding it.

Ajay Garg ajay at activitycentral.com
Fri Mar 2 23:54:52 EST 2012


This follows from the fix for http://bugs.sugarlabs.org/ticket/2818,
available at ::
https://dev.laptop.org.au/projects/xo-au/repository/revisions/2b13f6cc48a4aba6db7c1bc1d6eaec7ce5388fd0/diff
https://dev.laptop.org.au/projects/xo-au/repository/revisions/9642a414f217c6c2f37ace653db324040cc17813/diff
http://git.sugarlabs.org/dextrose/mainline/commit/2c78ee35e184907b0c63bbc56316fedd36aa8fc3

and patchworks at:
http://patchwork.sugarlabs.org/patch/1213/
http://patchwork.sugarlabs.org/patch/1214/


Anyhow, this is a good check, since there may be multiple 'bundle-added' 
and 'bundle-changed' signals emitting from multiple places in sugar.


 src/jarabe/desktop/activitieslist.py |   15 +++++++++++++++
 1 files changed, 15 insertions(+), 0 deletions(-)

diff --git a/src/jarabe/desktop/activitieslist.py b/src/jarabe/desktop/activitieslist.py
index 5f79090..c48a5dc 100644
--- a/src/jarabe/desktop/activitieslist.py
+++ b/src/jarabe/desktop/activitieslist.py
@@ -204,6 +204,15 @@ class ListModel(gtk.TreeModelSort):
                 self._model.remove(row.iter)
                 return
 
+    def _is_activity_bundle_in_model_already(self, activity_info):
+        bundle_id = activity_info.get_bundle_id()
+        version = activity_info.get_activity_version()
+        for row in self._model:
+            if row[ListModel.COLUMN_BUNDLE_ID] == bundle_id and \
+                    row[ListModel.COLUMN_VERSION] == version:
+                        return True
+        return False
+
     def _add_activity(self, activity_info):
         if activity_info.get_bundle_id() == 'org.laptop.JournalActivity':
             return
@@ -212,6 +221,12 @@ class ListModel(gtk.TreeModelSort):
         version = activity_info.get_activity_version()
 
         registry = bundleregistry.get_registry()
+
+        # If the activity bundle is already a part of
+        # activities-list, do not re-add it.
+        if self._is_activity_bundle_in_model_already(activity_info):
+            return
+
         favorite = registry.is_bundle_favorite(activity_info.get_bundle_id(),
                                                version)
 
-- 
1.7.4.4



More information about the Sugar-devel mailing list