Adding cache and sorting of projects
authorEd Page <eopage@byu.net>
Sat, 18 Apr 2009 16:22:49 +0000 (11:22 -0500)
committerEd Page <eopage@byu.net>
Sat, 18 Apr 2009 16:22:49 +0000 (11:22 -0500)
src/rtm_view.py

index bbbdfc3..7fad71f 100644 (file)
@@ -25,6 +25,7 @@ import coroutines
 import toolbox
 import gtk_toolbox
 import rtm_backend
+import cache_backend
 import rtm_api
 
 
@@ -77,6 +78,22 @@ def get_credentials(credentialsDialog):
        return username, password, token
 
 
+def project_sort_by_type(projects):
+       sortedProjects = list(projects)
+       def advanced_key(proj):
+               if proj["name"] == "Inbox":
+                       type = 0
+               elif proj["name"] == "Sent":
+                       type = 1
+               elif not proj["isMeta"]:
+                       type = 2
+               else:
+                       type = 3
+               return type, proj["name"]
+       sortedProjects.sort(key=advanced_key)
+       return sortedProjects
+
+
 def item_sort_by_priority_then_date(items):
        sortedTasks = list(items)
        sortedTasks.sort(
@@ -470,6 +487,7 @@ class GtkRtMilk(object):
                while True:
                        try:
                                self._manager = rtm_backend.RtmBackend(*credentials)
+                               self._manager = cache_backend.CacheBackend(self._manager)
                                self._credentials = credentials
                                return # Login succeeded
                        except rtm_api.AuthStateMachine.NoData:
@@ -513,7 +531,9 @@ class GtkRtMilk(object):
                self._manager = None
 
        def _populate_projects(self):
-               for project in self._manager.get_projects():
+               projects = self._manager.get_projects()
+               sortedProjects = project_sort_by_type(projects)
+               for project in sortedProjects:
                        projectName = project["name"]
                        isVisible = project["isVisible"]
                        row = (projectName, )