Пример #1
0
        public async Task <List <IFile> > GetFiles()
        {
            var fromStorage = await _store.GetFiles();

            foreach (var file in fromStorage)
            {
                FoundFiles.AddOrUpdate(file.PathSha1, file, (k, v) => v = file);
            }
            foreach (var dictItem in FoundFiles.Values)
            {
                if (!fromStorage.Any(x => x.PathSha1 == dictItem.PathSha1))
                {
                    FoundFiles.TryRemove(dictItem.PathSha1, out var deletedItem);
                }
            }

            if (!SearchedAlready)
            {
                await RefreshFromFileSystem();

                SearchedAlready = true;
            }

            return(FoundFiles.Values.ToList());
        }
Пример #2
0
        public async Task RefreshFromFileSystem()
        {
            var foundFiles = new List <IFile>();

            foundFiles.AddRange(await _search.FindFiles());
            await await Task.Factory.StartNew(async() => {
                foreach (var file in foundFiles.Where(x => !FoundFiles.Keys.Contains(x.PathSha1)))
                {
                    FoundFiles.AddOrUpdate(file.PathSha1, file, (k, v) => v = file);
                }
                await UpdateStorage();
                foreach (var file in FoundFiles.Values.Where(x => x.GetFileInfo() == null))
                {
                    if (file is Nupkg nu)
                    {
                        await _store.DeleteFile(nu);
                    }
                    else if (file is Project pj)
                    {
                        await _store.DeleteFile(pj);
                    }
                    else if (file is Solution sol)
                    {
                        await _store.DeleteFile(sol);
                    }
                }
            });
        }
Пример #3
0
        private void RunSearch()
        {
            if (Searching)
            {
                // Cancel search
                _worker.CancelAsync();
                return;
            }

            Searching = true;
            FoundFiles.Clear();
            if (!_firstSearchStarted)
            {
                _firstSearchStarted = true;
            }
            else
            {
                RaisePropertyChanged("FoundTotalText");
            }

            CreateFilenameRegex();
            CreateContentRegex();

            TextContentViewModel.ExecutedFileContentSearchParameters = new FileContentSearchParameters(
                ContainingText,
                ContainingTextMatchCase,
                ContainingTextNot,
                ContainingTextRegex,
                ContainingTextRegexOptions,
                TextContentViewModel);

            _worker.RunWorkerAsync();
        }
Пример #4
0
 private void UpdateListFiles()
 {
     try
     {
         FoundFiles = new ObservableCollection <CompareFileInfo>();
         if (IsFileOnlyFirstDir)
         {
             FoundFiles = new ObservableCollection <CompareFileInfo>(FoundFiles.Union(BusinessCompareFileInfo.GetFileOnlyInFirstDir()));
         }
         if (IsFileOnlySecondDir)
         {
             FoundFiles = new ObservableCollection <CompareFileInfo>(FoundFiles.Union(BusinessCompareFileInfo.GetFileOnlyInSecondDir()));
         }
         if (IsFileBothDirSameSize)
         {
             FoundFiles = new ObservableCollection <CompareFileInfo>(FoundFiles.Union(BusinessCompareFileInfo.GetFileInBothDirSameSize()));
         }
         if (IsBothDirDiffSize)
         {
             FoundFiles = new ObservableCollection <CompareFileInfo>(FoundFiles.Union(BusinessCompareFileInfo.GetFileInBothDirDiffSize()));
         }
     }
     catch (DirectoryNotFoundException e)
     {
         MessageBox.Show("Не найдена директория: " + e.Message, "Exception ", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
     catch (ArgumentNullException e)
     {
         MessageBox.Show("Поля не заполнены:" + e.ParamName, "Exception ", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
     catch (UnauthorizedAccessException e)
     {
         MessageBox.Show("Нет прав доступа к директории" + e.Message, "Exception ", MessageBoxButton.OK, MessageBoxImage.Warning);
     }
 }
Пример #5
0
 private void worker_ProgressChanged(object sender, ProgressChangedEventArgs eventArgs)
 {
     NumberOfFilesFound = eventArgs.ProgressPercentage;
     if (eventArgs.UserState != null)
     {
         var foundFile = (FoundFile)eventArgs.UserState;
         FoundFiles.Add(foundFile);
     }
 }
Пример #6
0
 private void _Search()
 {
     FoundFiles.Clear();
     FoundTextLines.Clear();
     FoundTextLinesMessage = "Searching";
     NumberOfFilesFound    = 0;
     IsIndeterminate       = true;
     _backgroundWorker.RunWorkerAsync();
 }
Пример #7
0
 private void AddResult(string file)
 {
     FoundFiles.Add(new FoundFileViewModel(file));
     RaisePropertyChanged("FoundTotalText");
 }