Exemplo n.º 1
0
 private void ProcessEvent(FolderNode folder, FileSystemNode node, FileSystemNodeEvent _event)
 {
     if (_event.ShouldBeAdd)
     {
         folder?.Add(node);
     }
     _searchIsStopped = _event.StopSearch;
 }
Exemplo n.º 2
0
        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));
        }
Exemplo n.º 3
0
        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);
        }