Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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,
Ejemplo n.º 4
0
 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);
 }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
 public void Dispose()
 {
     EverythingSdk.Reset();
 }