} // end RenamerProcess /// <summary> /// Constructs a new instance of the RenamerProcess class and sets the File Names, Rename Value, /// Rename Prefix, and Suffix Mask used in the renaming process. /// </summary> /// <param name="sFileNames">An array of file names including their path</param> /// <param name="sFilenameTemplate"></param> /// <param name="sSortingOption">Used to determine how the files should be sorted prior to /// renaming. This ensures the suffix mask is used appropriately.</param> /// <param name="bTestRun"></param> public RenamerProcess(string[] sFileNames, RenamingTypes renamingType, string sRenameTemplate, double timeOffset, string sSortingOption, bool bTestRun) { _sFileNames = sFileNames; _renamingType = renamingType; _sRenamingTemplate = sRenameTemplate; _timeOffset = timeOffset; _sSortingOption = sSortingOption; _bTestRun = bTestRun; } // end RenamerProcess constructor
} // end Rename public bool Rename(string sRenamingTemplate, RenamingTypes renamingType, double timeOffset, bool bTestRun) { Mask mask = new Mask(sRenamingTemplate); DateTimeExtended dtDateCreated = null; string sCurrentName = String.Empty; string sPreviousName = String.Empty; bool bGetDateCreated = mask.DateTimeExists || renamingType == RenamingTypes.DateTaken; int iCounter = 1; foreach (PowerFile powerFile in List) { if (bGetDateCreated) { dtDateCreated = powerFile.DatePictureTaken?.AddHours(timeOffset); if (dtDateCreated == null) { dtDateCreated = powerFile.DateModified?.AddHours(timeOffset); if (dtDateCreated == null) { FileRenamed(this, new AttributeChangedEventArgs(powerFile.FullFileName, powerFile.FullFileName, false, "DatePictureTaken property not found.", false)); } else { FileRenamed(this, new AttributeChangedEventArgs(powerFile.FullFileName, powerFile.FullFileName, true, "DatePictureTaken property not found DateModified property used.", true)); } } } // end if if (dtDateCreated != null || !bGetDateCreated) { var retries = 0; while (retries < 3) { try { sCurrentName = mask.Format(dtDateCreated, iCounter, powerFile.Title, powerFile.FileName); if (sCurrentName != sPreviousName) { iCounter = 0; } // end if sCurrentName = mask.Format(dtDateCreated, ++iCounter, powerFile.Title, powerFile.FileName); sPreviousName = sCurrentName; switch (renamingType) { case RenamingTypes.DateTaken: FileRenamed(this, powerFile.UpdateDateTaken(dtDateCreated, bTestRun)); break; case RenamingTypes.Filename: FileRenamed(this, powerFile.Rename(sCurrentName, true, bTestRun)); break; case RenamingTypes.Title: FileRenamed(this, powerFile.UpdateTitle(sCurrentName, bTestRun)); break; } break; } catch (IOException ex) { retries++; FileRenamed(this, new AttributeChangedEventArgs(powerFile.FullFileName, sCurrentName, false, ex.Message + " - trying again", true)); } } } // end else } // end foreach return(true); } // end Rename