void OnProjectChanged()
{
/* Note: we store the active project in the closure so that
* we never have to do another lookup during row visibility
* checks.
*/
var filter = new TreeModelFilter (m_store.Adapter, null);
var project = this.SelectedProject;
filter.VisibleFunc = delegate (TreeModel model, TreeIter iter) {
if (project == null)
return false;
var task = (Task) model.GetValue (iter, 0);
if (task == null)
return false;
switch (project.Id) {
case -1:
if (task.ProjectId == 0 || task.ProjectId == -1)
return true;
return false;
default:
return task.ProjectId == project.Id;
}
};
m_tasksTreeView.Model = filter;
if (ProjectChanged != null)
ProjectChanged (this, null);
}