Damn.

On Tue, May 27, 2008 at 5:09 PM, Simon Schampijer <[EMAIL PROTECTED]> wrote:
> Did you forgot to add the patch?
>
> Simon
>
> Tomeu Vizoso wrote:
>>
>> Hi,
>>
>> this patch addresses https://dev.laptop.org/ticket/7013 .
>>
>> Thanks,
>>
>> Tomeu
>> _______________________________________________
>> Sugar mailing list
>> [email protected]
>> http://lists.laptop.org/listinfo/sugar
>>
>
>
From 9c90c9b50a08a652c054ce6a1782cfe3394ee376 Mon Sep 17 00:00:00 2001
From: Tomeu Vizoso <[EMAIL PROTECTED]>
Date: Tue, 27 May 2008 14:10:32 +0200
Subject: [PATCH] Sort activities in the list and ring by installation date.

---
 src/view/home/activitieslist.py |    9 ++++++++-
 src/view/home/activitiesring.py |   20 +++++++++++++++++---
 2 files changed, 25 insertions(+), 4 deletions(-)

diff --git a/src/view/home/activitieslist.py b/src/view/home/activitieslist.py
index 4b9ea2d..825e234 100644
--- a/src/view/home/activitieslist.py
+++ b/src/view/home/activitieslist.py
@@ -65,9 +65,12 @@ class ActivitiesList(hippo.CanvasScrollbars):
                 self.remove(entry)
                 return
 
+    def _compare_activities(self, entry_1, entry_2):
+        return entry_2.get_installation_time() - entry_1.get_installation_time()
+
     def _add_activity(self, activity_info):
         entry = ActivityEntry(activity_info)
-        self._box.append(entry)
+        self._box.insert_sorted(entry, 0, self._compare_activities)
         entry.set_visible(entry.matches(self._query))
 
     def set_filter(self, query):
@@ -135,6 +138,7 @@ class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem):
         self._version = activity_info.version
         self._favorite = activity_info.favorite
         self._title = activity_info.name
+        self._installation_time = activity_info.installation_time
 
         self._favorite_icon = FavoriteIcon(self._favorite)
         self._favorite_icon.connect('notify::favorite',
@@ -190,6 +194,9 @@ class ActivityEntry(hippo.CanvasBox, hippo.CanvasItem):
     def get_version(self):
         return self._version
 
+    def get_installation_time(self):
+        return self._installation_time
+
     def matches(self, query):
         if not query:
             return True
diff --git a/src/view/home/activitiesring.py b/src/view/home/activitiesring.py
index d8dd018..1484788 100644
--- a/src/view/home/activitiesring.py
+++ b/src/view/home/activitiesring.py
@@ -70,15 +70,26 @@ class ActivitiesRing(hippo.CanvasBox, hippo.CanvasItem):
         registry.connect('activity-removed', self.__activity_removed_cb)
         registry.connect('activity-changed', self.__activity_changed_cb)
 
+    def _compare_activities(self, icon_1, icon_2):
+        if hasattr(icon_1, 'installation_time') and \
+                hasattr(icon_2, 'installation_time'):
+            return icon_2.installation_time - icon_1.installation_time
+        else:
+            return 0
+
+    def _add_activity(self, activity_info):
+        icon = ActivityIcon(activity_info)
+        self.insert_sorted(icon, 0, self._compare_activities)
+
     def _get_activities_cb(self, activity_list):
         for info in activity_list:
             if info.favorite and info.bundle_id != "org.laptop.JournalActivity":
-                self.append(ActivityIcon(info))
+                self._add_activity(info)
 
     def __activity_added_cb(self, activity_registry, activity_info):
         if activity_info.favorite and \
                 activity_info.bundle_id != "org.laptop.JournalActivity":
-            self.append(ActivityIcon(activity_info))
+            self._add_activity(info)
 
     def _find_activity_icon(self, bundle_id, version):
         for icon in self.get_children():
@@ -101,7 +112,7 @@ class ActivitiesRing(hippo.CanvasBox, hippo.CanvasItem):
         if icon is not None and not activity_info.favorite:
             self.remove(icon)
         elif icon is None and activity_info.favorite:
-            self.append(ActivityIcon(activity_info))
+            self._add_activity(activity_info)
 
     def _shell_state_changed_cb(self, model, pspec):
         # FIXME implement this
@@ -156,6 +167,9 @@ class ActivityIcon(CanvasIcon):
         return self._activity_info.version
     version = property(get_version, None)
 
+    def _get_installation_time(self):
+        return self._activity_info.installation_time
+    installation_time = property(_get_installation_time, None)
 
 class CurrentActivityIcon(CanvasIcon, hippo.CanvasItem):
     def __init__(self):
-- 
1.5.2.5

_______________________________________________
Sugar mailing list
[email protected]
http://lists.laptop.org/listinfo/sugar

Reply via email to