예제 #1
0
        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);
        }
예제 #2
0
        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);
        }