Hi,

this patch improves the user experience when the user switches for the
first time to the activity list.

It's still slow but will be fast enough when the activity palettes are
created lazily.

Thanks,

Tomeu
From eaa059e2c85283469fc38b37c28aaeb9489babe3 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <[EMAIL PROTECTED]>
Date: Thu, 22 May 2008 18:13:57 +0200
Subject: [PATCH] Fill the activity list progressively after startup.

---
 src/view/home/HomeBox.py        |   13 ++++---------
 src/view/home/activitieslist.py |   14 +++++++++++---
 2 files changed, 15 insertions(+), 12 deletions(-)

diff --git a/src/view/home/HomeBox.py b/src/view/home/HomeBox.py
index 181849f..4c5970c 100644
--- a/src/view/home/HomeBox.py
+++ b/src/view/home/HomeBox.py
@@ -36,8 +36,8 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem):
     def __init__(self):
         hippo.CanvasBox.__init__(self)
 
-        self._ring_view = None
-        self._list_view = None
+        self._ring_view = ActivitiesRing()
+        self._list_view = ActivitiesList()
         self._enable_xo_palette = False
 
         self._toolbar = HomeToolbar()
@@ -55,10 +55,8 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem):
             if self._list_view in self.get_children():
                 self.remove(self._list_view)
 
-            if self._ring_view is None:
-                self._ring_view = ActivitiesRing()
-                if self._enable_xo_palette:
-                    self._ring_view.enable_xo_palette()
+            if self._enable_xo_palette:
+                self._ring_view.enable_xo_palette()
 
             self.append(self._ring_view, hippo.PACK_EXPAND)
 
@@ -66,9 +64,6 @@ class HomeBox(hippo.CanvasBox, hippo.CanvasItem):
             if self._ring_view in self.get_children():
                 self.remove(self._ring_view)
 
-            if self._list_view is None:
-                self._list_view = ActivitiesList()
-
             self.append(self._list_view, hippo.PACK_EXPAND)
         else:
             raise ValueError('Invalid view: %r' % view)
diff --git a/src/view/home/activitieslist.py b/src/view/home/activitieslist.py
index ebdf1ec..ac69547 100644
--- a/src/view/home/activitieslist.py
+++ b/src/view/home/activitieslist.py
@@ -14,6 +14,8 @@
 # along with this program; if not, write to the Free Software
 # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 
+import logging
+
 import gobject
 import gtk
 import hippo
@@ -31,6 +33,7 @@ class ActivitiesList(hippo.CanvasScrollbars):
 
     def __init__(self):
         hippo.CanvasScrollbars.__init__(self)
+
         self.set_policy(hippo.ORIENTATION_HORIZONTAL, hippo.SCROLLBAR_NEVER)
         self.props.widget.connect('key-press-event', self.__key_press_event_cb)
 
@@ -44,9 +47,13 @@ class ActivitiesList(hippo.CanvasScrollbars):
         registry.connect('activity-removed', self.__activity_removed_cb)
 
     def _get_activities_cb(self, activity_list):
-        for info in activity_list:
-            if info.bundle_id != 'org.laptop.JournalActivity':
-                self._add_activity(info)
+        gobject.idle_add(self._add_activity_list, activity_list)
+
+    def _add_activity_list(self, activity_list):
+        info = activity_list.pop()
+        if info.bundle_id != 'org.laptop.JournalActivity':
+            self._add_activity(info)
+        return len(activity_list) > 0
 
     def __activity_added_cb(self, activity_registry, activity_info):
         self._add_activity(activity_info)
@@ -111,6 +118,7 @@ class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem):
                 file_name=activity_info.icon,
                 stroke_color=style.COLOR_BUTTON_GREY.get_svg(),
                 fill_color=style.COLOR_TRANSPARENT.get_svg())
+        
         self.icon.set_palette(ActivityPalette(activity_info))
         self.icon.connect('hovering-changed',
                           self.__icon_hovering_changed_event_cb)
-- 
1.5.2.5

_______________________________________________
Sugar mailing list
Sugar@lists.laptop.org
http://lists.laptop.org/listinfo/sugar

Reply via email to