private void DeletePreviouslyCreated(File_Containers.FileContainer receiver, IEnumerable <IFileObject> selectedItems) { foreach (IFileObject obj in selectedItems) { if (receiver.StoredDirectory.IsExistsHere(obj.Info.ShortName)) { MessageBoxResult res = MessageBox.Show($"File {obj.Info.ShortName} is already exists in {receiver.StoredDirectory.Info.ShortName}. Replace it?", "Warning", MessageBoxButton.YesNo, MessageBoxImage.Question); if (res == MessageBoxResult.Yes) { String path = Path.Combine(receiver.StoredDirectory.Info.FullName, obj.Info.ShortName); List <VFile_Manager.FileObjects.File> filesInDir = receiver.StoredDirectory.GetFiles().ToList(); List <Dir> dirsInDir = receiver.StoredDirectory.GetDirectories().ToList(); IFileObject fileobjToDelete = null; fileobjToDelete = filesInDir.Find((item) => item.Info.ShortName == obj.Info.ShortName); if (fileobjToDelete == null) { fileobjToDelete = dirsInDir.Find((item) => item.Info.ShortName == obj.Info.ShortName); } if (fileobjToDelete != null) { fileobjToDelete.Delete(); } } } } }
async private void copyBut_Click(object sender, RoutedEventArgs e) { IEnumerable <IFileObject> selectedItems = GetSelectedItemsData(); if (selectedItems.Count() == 0) { MessageBox.Show("No elements selected", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } File_Containers.FileContainer receiver = FileOperator.ActiveDirectory == FileOperator.Side.Left ? File_Containers.FileDualContainer.ChooseContainer(FileOperator.Side.Right) : File_Containers.FileDualContainer.ChooseContainer(FileOperator.Side.Left); Task delTask = Task.Run(() => DeletePreviouslyCreated(receiver, selectedItems)); delTask.Wait(); if (MessageBox.Show($"{selectedItems.Count()} items will be copied. Continue?", "Information", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { try { NotifyAboutFileOperations($"Copy files to {receiver}"); await FileOperator.CopyFiles(selectedItems, receiver); ClearNotifyAboutFileOperations(); } catch (Exception ex) { MessageBox.Show("Unable to copy in this directory", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } } await Task.Run(() => UpdateView(FileOperator.ActiveDirectory == FileOperator.Side.Left ? FileOperator.Side.Right : FileOperator.Side.Left)); }
public static async Task MoveFiles(IEnumerable <IFileObject> _files, File_Containers.FileContainer _dir) { Dir receiver = _dir.StoredDirectory; foreach (IFileObject obj in _files) { try { await obj.Move(receiver); } catch (Exception ex) { throw ex; } } }
async private void movBut_Click(object sender, RoutedEventArgs e) { List <IFileObject> selectedItems = GetSelectedItemsData().ToList(); if (selectedItems.Count() == 0) { MessageBox.Show("No elements selected", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } File_Containers.FileContainer receiver = FileOperator.ActiveDirectory == FileOperator.Side.Left ? File_Containers.FileDualContainer.ChooseContainer(FileOperator.Side.Right) : File_Containers.FileDualContainer.ChooseContainer(FileOperator.Side.Left); DeletePreviouslyCreated(receiver, selectedItems); if (MessageBox.Show($"{selectedItems.Count()} items will be moved. Continue?", "Information", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.Yes) { try { NotifyAboutFileOperations($"Move files to {receiver.StoredDirectory.Info.ShortName}"); await FileOperator.MoveFiles(selectedItems, receiver); ClearNotifyAboutFileOperations(); } catch (Exception ex) { MessageBox.Show($"Unable to move in {receiver.StoredDirectory.Info.ShortName}: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } try { await Task.Run(() => UpdateView(FileOperator.Side.Left)); await Task.Run(() => UpdateView(FileOperator.Side.Right)); } catch (Exception ex) { MessageBox.Show($"Unable to renew views: {ex.Message}", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } } }
async private Task DropHandler(object _sender, object _e, FileOperator.Side _side) { ListBox parent = (ListBox)_sender; if (parent == dragSource) { return; } String data = (String)(((DragEventArgs)_e).Data.GetData(typeof(String))); List <IFileObject> objToMove = ((IList <IFileObject>)dragSource.ItemsSource).Where((item) => item.Info.FullName == data).ToList(); File_Containers.FileContainer receiver = File_Containers.FileDualContainer.ChooseContainer(_side); try { await Task.Run(() => FileOperator.CopyFiles(objToMove, receiver)); } catch (Exception ex) { MessageBox.Show("Unable to copy in this directory", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } ((IList <IFileObject>)dragSource.ItemsSource).Remove(objToMove[0]); await Task.Run(() => UpdateView(_side)); }