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()); }
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); } } }); }
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(); }
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); } }
private void worker_ProgressChanged(object sender, ProgressChangedEventArgs eventArgs) { NumberOfFilesFound = eventArgs.ProgressPercentage; if (eventArgs.UserState != null) { var foundFile = (FoundFile)eventArgs.UserState; FoundFiles.Add(foundFile); } }
private void _Search() { FoundFiles.Clear(); FoundTextLines.Clear(); FoundTextLinesMessage = "Searching"; NumberOfFilesFound = 0; IsIndeterminate = true; _backgroundWorker.RunWorkerAsync(); }
private void AddResult(string file) { FoundFiles.Add(new FoundFileViewModel(file)); RaisePropertyChanged("FoundTotalText"); }