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));
        }
Beispiel #3
0
        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));
        }