private void autoDropPanel_DragDrop(object sender, DragEventArgs e) { if (e.Data.GetDataPresent(DataFormats.FileDrop)) { string[] selectedPaths = (string[])e.Data.GetData(DataFormats.FileDrop); foreach (string selectedPath in selectedPaths) { if (File.Exists(selectedPath)) { if (FileDataInfo.ParseFileType(selectedPath) == FileDataInfo.FileTypeEnum.Movie) { movieFilePathList.Add(selectedPath); } else if (FileDataInfo.ParseFileType(selectedPath) == FileDataInfo.FileTypeEnum.Subtitle) { subtitleFilePathList.Add(selectedPath); } } if (Directory.Exists(selectedPath)) { subtitleFilePathList.AddRange(Directory.EnumerateFiles(selectedPath).Select(x => new FileDataInfo(x)).Where(x => x.FileType == FileDataInfo.FileTypeEnum.Subtitle)); movieFilePathList.AddRange(Directory.EnumerateFiles(selectedPath).Select(x => new FileDataInfo(x)).Where(x => x.FileType == FileDataInfo.FileTypeEnum.Movie)); } } } FormOperations.RefreshListViewCount(subtitleFilePathList, subtitleListView, subtitleFileCount); FormOperations.RefreshListViewCount(movieFilePathList, movieListView, movieFileCount); }
public static FileList GenerateRenameList(RenameOptions renameOptions) { FileList finalFileList = new FileList(); if (renameOptions.SubtitleFileList.Count == 0 || renameOptions.MovieFileList.Count == 0) { throw new InvalidOperationException("Both list cannot be blank"); } if (renameOptions.SubtitleFileList.Count % renameOptions.MovieFileList.Count != 0 || renameOptions.SubtitleFileList.Count < renameOptions.MovieFileList.Count) { throw new InvalidOperationException("File count error, the file count of subtitle / movie must be an integer"); } RenameTemplate renameTemplate = new RenameTemplate(renameOptions.Template); renameTemplate.InitializeTemplate(); // Create list int ratio = renameOptions.SubtitleFileList.Count / renameOptions.MovieFileList.Count; for (int i = 0; i < renameOptions.MovieFileList.Count; i++) { FileDataInfo movieFile = renameOptions.MovieFileList[i]; for (int j = 0; j < ratio; j++) { FileDataInfo subtitleFile = renameOptions.SubtitleFileList[i * ratio + j]; RenameInfo renameInfo = new RenameInfo() { MovieFileName = movieFile.FileName, SubtitleGroup = renameOptions.SpecifySubtitleGroup ? renameOptions.SubtitleGroup : subtitleFile.ParseSubtitleGroup(), Language = renameOptions.SpecifyLanguage ? renameOptions.Language : subtitleFile.ParseLanguage(), Extension = renameOptions.SpecifyExtension ? renameOptions.Extension : subtitleFile.FileExtension }; // Set folder to movie folder or original folder string finalFilePath = Path.Combine( renameOptions.MoveToMovieFolder ? movieFile.FileFolder : subtitleFile.FileFolder, renameTemplate.FormatTemplate(renameInfo)); if (finalFileList.Contains(finalFilePath)) { throw new InvalidOperationException($"Duplicated final file path {subtitleFile.FileFullName} TO {finalFilePath}"); } finalFileList.AddVirtualItem(finalFilePath); } } return(finalFileList); }