void CompareByContent() { //get the selected items var selectedItems = inFocusDataGrid.SelectedItems; //make sure no more than 2 items are selected and that theese files are txt int count = 0; foreach (var item in selectedItems) { count++; if (count > 2) { MessageBox.Show("Too many items selected!"); return; } //check if the current item is a txt file if (((DirectoryItems)item).Extension != ".txt") { MessageBox.Show("Invalid file type!"); return; } } DirectoryItems file1 = (DirectoryItems)selectedItems[0]; DirectoryItems file2 = (DirectoryItems)selectedItems[1]; }
/// <summary> /// moves or copies files /// </summary> /// <param name="move">true for move, false for copy</param> private void FileOperation(FileOperationTypes operationType) { try { var filesToMove = inFocusDataGrid.SelectedItems; string destinationFolder; //set the destiation folder as the path to the folder opened in the other side to the selected item's side if (inFocusDataGrid == DataGrid1) { destinationFolder = currentPath2; } else { destinationFolder = currentPath1; } //if it is an Add to archive command, perform it and exit the function if (operationType == FileOperationTypes.AddToArchive) { //Todo: fix this DirectoryItems currentDirectoryItem = (DirectoryItems)filesToMove[0]; string destination = System.IO.Path.Combine(destinationFolder, currentDirectoryItem.Name); UpdateDataGrid(DataGrid1, currentPath1, Directories1); UpdateDataGrid(DataGrid2, currentPath2, Directories2); return; } //if it is an extract archive command, perform it and exit the function if (operationType == FileOperationTypes.ExtractArchive) { //Todo: fix it DirectoryItems currentDirectoryItem = (DirectoryItems)filesToMove[0]; string destination = System.IO.Path.Combine(destinationFolder, currentDirectoryItem.Name); UpdateDataGrid(DataGrid1, currentPath1, Directories1); UpdateDataGrid(DataGrid2, currentPath2, Directories2); return; } foreach (var file in filesToMove) { DirectoryItems currentDirectoryItem = (DirectoryItems)file; string destination = System.IO.Path.Combine(destinationFolder, currentDirectoryItem.Name); //check if we move a file or a folder in order to use the appropriate command if (currentDirectoryItem.Extension == "<DIR>") { switch (operationType) { case FileOperationTypes.Move: { Directory.Move(currentDirectoryItem.FullPath, destination); break; } case FileOperationTypes.Copy: { CopyDir(currentDirectoryItem.FullPath, destination); //CopyDirectoryCMD(currentDirectoryItem.FullPath, destination); break; } } } else { //if it is a file it must have a usefull extension, so add it to the destination destination += currentDirectoryItem.Extension; switch (operationType) { case FileOperationTypes.Move: { File.Move(currentDirectoryItem.FullPath, destination); break; } case FileOperationTypes.Copy: { File.Copy(currentDirectoryItem.FullPath, destination); break; } } } } UpdateDataGrid(DataGrid1, currentPath1, Directories1); UpdateDataGrid(DataGrid2, currentPath2, Directories2); } catch (IOException ex) { MessageBox.Show(ex.ToString()); } }