示例#1
0
 internal RenameSuggestion(string directory, string originalName, string newName, RenameStatus status)
 {
     Directory    = directory;
     OriginalName = originalName;
     NewName      = newName;
     Status       = status;
 }
        public BasicTabViewModel(ValidationFacade validations)
        {
            /// Inject dependencies
            this.validations = validations;

            /// Initialize properties
            Status = new RenameStatus();
            Data   = new BasicRequestData("", 1, 1);
            Mode   = new BasicRequestMode(false, true, IndexPlacement.Prefix);

            RegisterValidations();
        }
示例#3
0
        private RenameSuggestion GetRenameSuggestion(string filePath)
        {
            if (string.IsNullOrWhiteSpace(filePath))
            {
                return(new RenameSuggestion(filePath, filePath, FileNamerMessages.InvalidFilePath));
            }

            if (!File.Exists(filePath))
            {
                return(new RenameSuggestion(filePath, filePath, FileNamerMessages.MissingFile));
            }

            string directory    = Path.GetDirectoryName(filePath);
            string originalName = Path.GetFileName(filePath);

            using (var mp3 = new Mp3(filePath))
            {
                Id3Tag tag = mp3.GetTag(Id3Version.V23);
                if (tag == null)
                {
                    return(new RenameSuggestion(directory, originalName, FileNamerMessages.MissingId3v23TagInFile));
                }

                //TODO: Get ID3v1 tag as well and merge with the v2 tag

                string newName = GetNewName(tag, originalName, out string missingFrameName);

                if (missingFrameName != null)
                {
                    return(new RenameSuggestion(directory, originalName,
                                                string.Format(FileNamerMessages.MissingDataForFrame, missingFrameName)));
                }

                newName += ".mp3";
                RenamingEventArgs renamingEventResult = FireRenamingEvent(tag, originalName, newName);
                if (renamingEventResult.Cancel)
                {
                    return(new RenameSuggestion(directory, originalName, RenameStatus.Cancelled));
                }

                newName = renamingEventResult.NewName;

                RenameStatus status = originalName.Equals(newName, StringComparison.Ordinal)
                    ? RenameStatus.CorrectlyNamed : RenameStatus.Rename;
                return(new RenameSuggestion(directory, originalName, newName, status));
            }
        }