public void Search(string query, SearchOptions options = default) { if (string.IsNullOrEmpty(query)) { throw new ArgumentNullException(nameof(query)); } EverythingSdk.Search = query; SetSearchState(options); EverythingSdk.Query(wait: true); }
public Task ExecuteAsync(QueryResult result) { if (!(result is EverythingResult everything)) { throw new ArgumentException("Expected an EverythingResult", nameof(result)); } EverythingSdk.IncrementRunCount(everything.FullPath); OpenDefault.PathOrUrl(everything.FullPath); return(Task.CompletedTask); }
private static FileResultItem CreateFileResult(uint resultIndex) { var pathBuilder = new StringBuilder(260); EverythingSdk.GetFullPath(resultIndex, pathBuilder); var fullPath = pathBuilder.ToString(); return(new FileResultItem { // TODO: Uncomment when SDK does not kill the entire process :( Name = Path.GetFileNameWithoutExtension(fullPath), //EverythingSdk.GetFileName(resultIndex) Extension = Path.GetExtension(fullPath), //EverythingSdk.GetExtension(resultIndex) FullPath = fullPath, Created = EverythingSdk.TryGetDateCreated(resultIndex, out var created) ? created : default,
private static ResultType GetResultType(uint index) { if (EverythingSdk.IsFile(index)) { return(ResultType.File); } if (EverythingSdk.IsFolder(index)) { return(ResultType.Directory); } if (EverythingSdk.IsVolume(index)) { return(ResultType.Volume); } return(ResultType.Unknown); }
public SearchResult GetCurrentResult(SearchOptions options, CancellationToken ct = default) { var availableResult = (int)EverythingSdk.GetResultCount(); var result = new SearchResult { MatchingItemsCount = EverythingSdk.GetTotalResultCount(), MatchingDirectoryCount = EverythingSdk.GetTotalFolderResultCount(), MatchingFileCount = EverythingSdk.GetTotalFileResultCount(), }; var items = new ResultItem[availableResult]; Parallel.For(fromInclusive: 0, toExclusive: availableResult, body: i => { var index = (uint)i; var resultType = GetResultType(index); switch (resultType) { case ResultType.Unknown: break; case ResultType.File: items[i] = CreateFileResult(index); break; case ResultType.Directory: items[i] = CreateDirectoryResult(index); break; case ResultType.Volume: break; default: throw new ArgumentOutOfRangeException(); } }, parallelOptions: new ParallelOptions { CancellationToken = ct } ); result.Items = items.ToList().AsReadOnly(); return(result); }
public void Dispose() { EverythingSdk.Reset(); }