} // end Format /// <summary> /// Formats the Suffix based on the sequence provided. /// </summary> /// <param name="iSequence">Sequence used to replace the mask</param> /// <returns>Returns the formatted mask.</returns> public string Format(DateTimeExtended dtDateTime, int iSequence, string sTitle, string sFilename) { string sFormattedMask = ""; for (int i = 0; i < _arrMask.GetLength(0); i++) { if (_arrMask[i, 1] != null && _arrMask[i, 1] == "*") { if ((_arrMask[i, 0][0] == 'y') || (_arrMask[i, 0][0] == 'M') || (_arrMask[i, 0][0] == 'd') || (_arrMask[i, 0][0] == 'h') || (_arrMask[i, 0][0] == 'm') || (_arrMask[i, 0][0] == 's')) { sFormattedMask += dtDateTime.ToString(_arrMask[i, 0]); } else if (_arrMask[i, 0] == "title") { sFormattedMask += sTitle; } else if (_arrMask[i, 0] == "filename") { sFormattedMask += sFilename; } else { sFormattedMask += iSequence.ToString().PadLeft(_arrMask[i, 0].Length, '0'); } } // end if else { sFormattedMask += _arrMask[i, 0]; } // end else } // end for return(sFormattedMask); } // end Format
} // end Rename #endregion #region UpdateDateTaken public AttributeChangedEventArgs UpdateDateTaken(DateTimeExtended dtNewDateTaken, bool bTestRun) { try { if (bTestRun) { _sNewFileName = _fileInfo.FullName; } // end if else { DatePictureTaken = dtNewDateTaken; _sNewFileName = _fileInfo.FullName; } // end else return(new DateTakenChangedEventArgs(_fileInfo.FullName, dtNewDateTaken, true, String.Empty, false)); } // end try catch (Exception ex) { // Saving the old file name as the new to retain the correct list of file names _sNewFileName = _fileInfo.FullName; return(new DateTakenChangedEventArgs(_fileInfo.FullName, dtNewDateTaken, false, ex.Message, false)); } // end catch } // end Rename
public DateTimeExtended(DateTimeExtended other) { this.MyDateTime = other.MyDateTime; this.otherdata = other.otherdata; }
} // 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
/// <summary> /// Instantiates a FileRenamedEventArgs object and sets the OriginalFileName, NewFileName, /// Result, and Message. /// </summary> /// <param name="sFilename">Original File Name prior an attempt to rename</param> /// <param name="dtNewDateTaken">File Name to which the file will attempt to be changed</param> /// <param name="bResult">Result of the rename operation</param> /// <param name="sMessage">Any message associated with the rename operation</param> public DateTakenChangedEventArgs(string sFilename, DateTimeExtended dtNewDateTaken, bool bResult, string sMessage, bool logOnly) : base(sFilename, dtNewDateTaken.ToString(), bResult, sMessage, logOnly) { } // end FileRenamedEventArgs