//Вставка клавиатурная public void KeyboardPaste(String Path) { if (Clipboard.ContainsFileDropList()) { var Res = Clipboard.GetFileDropList(); foreach (var x in Res) { String FileName = FileProcessor.ExecuteFileName(x); String FileFolder = FileProcessor.ExecuteFileFolder(x, FileName); try { FilesCopyQueue.Add(new CopyInform(FileFolder, Path, FileName, System.IO.Directory.Exists(x) ? "Folder" : (new FileInfo(x)).Length.ToString(), FilesCopyQueue, Mode.Copy, Checker)); } catch (Exception) { } } } }
/// <summary> /// Added dropped files to copy queue /// </summary> /// <param name="Files">List of files</param> /// <param name="DestPath">Destination folder</param> private void FilesDrop(String[] Files, String DestPath) { foreach (var x in Files) { //For each file we get his folder and his name. String FileName = FileProcessor.ExecuteFileName(x); String PathToFileFolder = FileProcessor.ExecuteFileFolder(x, FileName); if (System.IO.Directory.Exists(x)) {//Then added him to Copy Queue //If File is folder FilesCopyQueue.Add(new CopyInform(PathToFileFolder, DestPath, FileName, "Folder", FilesCopyQueue, Mode.Copy, Checker)); } else { //if file isn't folder FilesCopyQueue.Add(new CopyInform(PathToFileFolder, DestPath, FileName, FileProcessor.GetUserReadableFileSize((new FileInfo(x)).Length), FilesCopyQueue, Mode.Copy, Checker)); } } }
//Files copy Icon function private void CopyFiles_Click(object sender, RoutedEventArgs e) { if (_LastFocusedLeft) { if (LeftFiles.SelectedIndex == -1) { return; } FilesCopyQueue.Add(new CopyInform(PathLeft.Text, PathRight.Text, FileDescriptionLeft[LeftFiles.SelectedIndex].FileName, FileDescriptionLeft[LeftFiles.SelectedIndex].FileSize, FilesCopyQueue, Mode.Copy, Checker)); } else { if (RightFiles.SelectedIndex == -1) { return; } FilesCopyQueue.Add(new CopyInform(PathRight.Text, PathLeft.Text, FileDescriptionRight[RightFiles.SelectedIndex].FileName, FileDescriptionRight[RightFiles.SelectedIndex].FileSize, FilesCopyQueue, Mode.Copy, Checker)); } }
//нажатие клавиш /// <summary> /// Обработчик нажатия клавиш. Унифицирован /// </summary> /// <param name="e">Параметры нажатой клавиши</param> /// <param name="SelectedIndex">Индекс файла</param> /// <param name="CurrentBox">Текущая папка</param> /// <param name="DestFolder">Используется при копировании данных - вторая открытая папка</param> /// <param name="CurrentFileDescription">Список файлов в текущей папке</param> private void KeyDownHandler(ListView CurrentFilesListView, KeyEventArgs e, IList SelectedItems, ComboBox CurrentBox, String DestFolder, ObservableCollection <FileInformation> CurrentFileDescription) { if (Keyboard.Modifiers == ModifierKeys.None) { FindEntryString(CurrentFilesListView, WinAPI.GetCharFromKey(e.Key)); } //Вставка if (e.Key == Key.V && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { KeyboardPaste(CurrentBox.Text); } //Add new items to file system (file\folder) if (e.Key == Key.D && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { AddFolder_Click(null, null); } if (e.Key == Key.N && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { AddFile_Click(null, null); } if (SelectedItems.Count == 0) { return; } //Rename files if (e.Key == Key.R && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { RenameFile_Click(null, null); } //Копирование if (e.Key == Key.S && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { foreach (var x in SelectedItems) { FilesCopyQueue.Add(new CopyInform(CurrentBox.Text, DestFolder, (x as FileInformation).FileName, (x as FileInformation).FileSize, FilesCopyQueue, Mode.Copy, Checker)); } } //Вход\запуск if (e.Key == Key.Enter) { ClickEvent(SelectedItems, CurrentBox); } //вставка в буфер обмена if (e.Key == Key.C && (Keyboard.Modifiers & ModifierKeys.Control) == ModifierKeys.Control) { var x = new System.Collections.Specialized.StringCollection(); foreach (var item in SelectedItems) { x.Add(CurrentBox.Text + (item as FileInformation).FileName); } Clipboard.SetFileDropList(x); } //Удаление if (e.Key == Key.Delete) { foreach (var x in SelectedItems) { new Thread(new ParameterizedThreadStart(FileProcessor.Remove)) .Start( new FileProcessor.RemovingStructure( CurrentBox.Text + (x as FileInformation).FileName, (x as FileInformation))); } } }