private void ProcessEvent(FolderNode folder, FileSystemNode node, FileSystemNodeEvent _event) { if (_event.ShouldBeAdd) { folder?.Add(node); } _searchIsStopped = _event.StopSearch; }
private static FolderNode TryAdd(FolderNode node, string id, string name) { if (node.Children.TryGetValue(name, out var child)) { return(child); } child = new FolderNode(id, GetPath(node, name)); return(node.Add(child, name)); }
private bool VisitFolder(DirectoryInfo dirInfo, FolderNode rootNode = null) { if (_searchIsStopped) { return(false); } var folder = Map(dirInfo, rootNode); if (rootNode == null) { _rootNode = folder; } var childFilterResult = false; foreach (var item in dirInfo.EnumerateFileSystemInfos()) { var validChild = VisitFileSystemInfo(folder, item); if (_searchIsStopped) { if (validChild) { rootNode?.Add(folder); } return(false); } childFilterResult = childFilterResult || validChild; } var filterResult = _filterBy == null ? true : _filterBy.Invoke(folder); if (filterResult || childFilterResult) { var fEvent = new FolderNodeFindEvent(folder); FolderFound?.Invoke(this, fEvent); ProcessEvent(rootNode, folder, fEvent); return(fEvent.ShouldBeAdd); } return(false); }