public async Task <IPictureGridViewModel> LoadAPictureGridViewModel(string folderPath, List <string> searchPatterns) { // Check if folder is already opened. //todo: think about if user opens the same folder but with different search patterns var pictureGridViewModel = PictureGridViewModels.ToList().Find(picGrid => ((PictureGridViewModel)picGrid).AbsolutePath == folderPath); if (pictureGridViewModel == null) { var pictureFileNames = await _fileService.GetFileNamesFromDirectoryAsync(folderPath, searchPatterns); pictureGridViewModel = _pictureGridViewModelCreator(); PictureGridViewModels.Add(pictureGridViewModel); if (pictureFileNames.Count > 0) { pictureGridViewModel.Load(pictureFileNames); } else { pictureGridViewModel.LoadEmptyFolder(folderPath); } } return(pictureGridViewModel); }
public IPictureGridViewModel LoadAPictureGridViewModel(List <string> pictureFileNames) { // Check if folder is already opened. var pictureGridViewModel = PictureGridViewModels.ToList().Find(picGrid => ((PictureGridViewModel)picGrid).AbsolutePath == pictureFileNames.First().ToParentFolderPath()); if (pictureGridViewModel == null) { pictureGridViewModel = _pictureGridViewModelCreator(); PictureGridViewModels.Add(pictureGridViewModel); pictureGridViewModel.Load(pictureFileNames); } else { // Remove any duplicates. pictureFileNames.RemoveAll(fileName => PictureGridViewModels.ToList() .Exists(gridViewModel => gridViewModel.Pictures.ToList() .Exists(pic => pic.FullFileName == fileName))); if (pictureFileNames.Count > 0) { pictureGridViewModel.Load(pictureFileNames); } else { pictureGridViewModel = SelectedPictureGridViewModel; } } return(pictureGridViewModel); }
private void OnMovingPicturesEvent(MovingPicturesPayload payload) { var oldFolderPath = payload.Pictures.Select(pic => pic.FolderPath).First(); var oldPictureGridViewModel = PictureGridViewModels.First(viewModel => viewModel.AbsolutePath == oldFolderPath); var newPictureGridViewModel = PictureGridViewModels.FirstOrDefault(viewModel => viewModel.AbsolutePath == payload.NewFolderPath); payload.Pictures.ForEach(pic => { if (_pictureRepository.TryMove(pic, payload.NewFolderPath).Success.Value) { oldPictureGridViewModel.Pictures.Remove(pic); if (newPictureGridViewModel != null) { pic.FullFileName = $"{payload.NewFolderPath}\\{pic.FileName}"; newPictureGridViewModel.Pictures.Add(pic); } } }); }
private void OnCloseFolderCommand(IPictureGridViewModel tab) { PictureGridViewModels.Remove(tab); }