// Virtual keyword = can be overwritten by subclass public virtual void ApplyAllFilters() { ListCollectionView list = (ListCollectionView)allCanvasesView; Util.MultiFilter mf = new Util.MultiFilter(); //Favorites filter if (filterFavorites) { mf.AddFilter(new Predicate <object>(c => ((CCanvas)c).IsFavorite)); } //Tag filters if (selectedTags.Count > 0) { mf.AddFilter(new Predicate <object>(c => ((CCanvas)c).tags.Any(tag => selectedTags.Contains(tag)))); } //User filters if (selectedUsers.Count > 0) { mf.AddFilter(new Predicate <object>(c => selectedUsers.Contains(((CCanvas)c).user))); } //Search filter if (searchTerm != "") { mf.AddFilter(new Predicate <object>(x => ((CCanvas)x).MatchesKeyword(searchTerm))); } list.Filter = mf.Filter; }
// Most of this is the same as the inherited method public override void ApplyAllFilters() { ListCollectionView list = (ListCollectionView)allCanvasesView; Util.MultiFilter mf = new Util.MultiFilter(); //Favorites filter if (filterFavorites) { mf.AddFilter(new Predicate <object>(c => ((CCanvas)c).IsFavorite)); } //Tag filters if (selectedTags.Count > 0) { mf.AddFilter(new Predicate <object>(c => ((CCanvas)c).tags.Any(tag => selectedTags.Contains(tag)))); } //User filters if (selectedUsers.Count > 0) { mf.AddFilter(new Predicate <object>(c => selectedUsers.Contains(((CCanvas)c).user))); } //Search filter if (searchTerm != "") { mf.AddFilter(new Predicate <object>(c => ((CCanvas)c).MatchesKeyword(searchTerm))); } // This block is the only difference from the inherited method if (SelectedWSName != "All Canvases") { if (SelectedWSName != null) { Workspace ws = _workspaceModel.allWorkspaces.Where(x => x.name == SelectedWSName).ToList()[0]; if (ws != null) { mf.AddFilter(new Predicate <object>(c => ws.Sketches.Count(s => s.canvasID == ((CCanvas)c).ID) > 0)); } } } list.Filter = mf.Filter; }