Making null_backend mirror the interface created for rtm_backend
[doneit] / src / rtm_view.py
index ecfdebf..27bd95a 100644 (file)
@@ -2,14 +2,14 @@
 @todo Add an agenda view to the task list
        Tree of days, with each successive 7 days dropping the visibility of further lower priority items
 @todo Add a map view
-               Using new api widgets people are developing)
-               Integrate GPS w/ fallback to default location
-               Use locations for mapping
+       Using new api widgets people are developing)
+       Integrate GPS w/ fallback to default location
+       Use locations for mapping
 @todo Add a quick search (OR within a property type, and between property types) view
-               Drop down for multi selecting priority
-               Drop down for multi selecting tags
-               Drop down for multi selecting locations
-               Calendar selector for choosing due date range
+       Drop down for multi selecting priority
+       Drop down for multi selecting tags
+       Drop down for multi selecting locations
+       Calendar selector for choosing due date range
 @todo Remove blocking operations from UI thread
 """
 
@@ -146,6 +146,7 @@ class ItemListView(object):
                self._showIncomplete = True
 
                self._editDialog = gtk_toolbox.EditTaskDialog(widgetTree)
+               self._notesDialog = gtk_toolbox.NotesDialog(widgetTree)
 
                self._itemList = gtk.ListStore(
                        gobject.TYPE_STRING, # id
@@ -171,6 +172,7 @@ class ItemListView(object):
                self._nameCell = gtk.CellRendererText()
                self._nameColumn.pack_start(self._nameCell, True)
                self._nameColumn.set_attributes(self._nameCell, text=self.NAME_IDX)
+               self._nameColumn.set_expand(True)
                self._dueColumn = gtk.TreeViewColumn('Due')
                self._dueCell = gtk.CellRendererText()
                self._dueColumn.pack_start(self._nameCell, False)
@@ -179,7 +181,7 @@ class ItemListView(object):
                self._linkCell = gtk.CellRendererText()
                self._linkColumn.pack_start(self._nameCell, False)
                self._linkColumn.set_attributes(self._nameCell, text=self.LINK_IDX)
-               self._notesColumn = gtk.TreeViewColumn('') # Notes
+               self._notesColumn = gtk.TreeViewColumn('Notes') # Notes
                self._notesCell = gtk.CellRendererText()
                self._notesColumn.pack_start(self._nameCell, False)
                self._notesColumn.set_attributes(self._nameCell, text=self.NOTES_IDX)
@@ -188,8 +190,18 @@ class ItemListView(object):
                self._todoItemScroll = gtk.ScrolledWindow()
                self._todoItemScroll.set_policy(gtk.POLICY_NEVER, gtk.POLICY_AUTOMATIC)
                self._todoItemTree = gtk.TreeView()
+               self._todoItemTree.set_headers_visible(True)
+               self._todoItemTree.set_rules_hint(True)
+               self._todoItemTree.set_search_column(self.NAME_IDX)
+               self._todoItemTree.set_enable_search(True)
+               self._todoItemTree.append_column(self._completionColumn)
+               self._todoItemTree.append_column(self._priorityColumn)
+               self._todoItemTree.append_column(self._nameColumn)
+               self._todoItemTree.append_column(self._dueColumn)
+               self._todoItemTree.append_column(self._linkColumn)
+               self._todoItemTree.append_column(self._notesColumn)
+               self._todoItemTree.connect("row-activated", self._on_item_select)
                self._todoItemScroll.add(self._todoItemTree)
-               self._onItemSelectId = 0
 
        def enable(self, manager, projId):
                self._manager = manager
@@ -199,36 +211,18 @@ class ItemListView(object):
                self._todoItemScroll.show_all()
 
                self._itemList.clear()
-               self._todoItemTree.append_column(self._completionColumn)
-               self._todoItemTree.append_column(self._priorityColumn)
-               self._todoItemTree.append_column(self._nameColumn)
-               self._todoItemTree.append_column(self._dueColumn)
-               self._todoItemTree.append_column(self._linkColumn)
-               self._todoItemTree.append_column(self._notesColumn)
                try:
                        self.reset_task_list(self._projId)
                except StandardError, e:
                        self._errorDisplay.push_exception()
 
-               self._todoItemTree.set_headers_visible(False)
-               self._nameColumn.set_expand(True)
-
-               self._onItemSelectId = self._todoItemTree.connect("row-activated", self._on_item_select)
-
        def disable(self):
                self._manager = None
                self._projId = None
 
                self._todoBox.remove(self._todoItemScroll)
                self._todoItemScroll.hide_all()
-               self._todoItemTree.disconnect(self._onItemSelectId)
-
-               self._todoItemTree.remove_column(self._completionColumn)
-               self._todoItemTree.remove_column(self._priorityColumn)
-               self._todoItemTree.remove_column(self._nameColumn)
-               self._todoItemTree.remove_column(self._dueColumn)
-               self._todoItemTree.remove_column(self._linkColumn)
-               self._todoItemTree.remove_column(self._notesColumn)
+
                self._itemList.clear()
                self._itemList.set_model(None)
 
@@ -287,16 +281,18 @@ class ItemListView(object):
                                        self._editDialog.disable()
                                self.reset_task_list(self._projId)
                        elif viewColumn is self._dueColumn:
-                               self._editDialog.enable(self._manager)
-                               try:
-                                       self._editDialog.request_task(self._manager, taskId)
-                               finally:
-                                       self._editDialog.disable()
-                               self.reset_task_list(self._projId)
+                               due = self._manager.get_task_details(taskId)["dueDate"]
+                               if due.is_good():
+                                       calendar = gtk_toolbox.PopupCalendar(None, due.get(), "Due Date")
+                                       calendar.run()
                        elif viewColumn is self._linkColumn:
                                webbrowser.open(self._manager.get_task_details(taskId)["url"])
                        elif viewColumn is self._notesColumn:
-                               pass
+                               self._notesDialog.enable()
+                               try:
+                                       self._notesDialog.run(self._manager, taskId)
+                               finally:
+                                       self._notesDialog.disable()
                except StandardError, e:
                        self._errorDisplay.push_exception()