Example #1
0
        private string DetermineTargetFileName(
            string fileNameFormat,
            ref int counter,
            string directory)
        {
            string filePath;

            for (filePath = DirectorySorter.CreateFilePath(fileNameFormat, counter, directory); this.systemContext.FileExists(filePath); filePath = DirectorySorter.CreateFilePath(fileNameFormat, counter, directory))
            {
                ++counter;
            }
            return(filePath);
        }
Example #2
0
        public void SortDirectory(string directory, string fileNamePattern)
        {
            if (string.IsNullOrWhiteSpace(directory))
            {
                throw new ArgumentException(Resources.Error_InvalidInputDirectory, nameof(directory));
            }
            this.OnMessageSent(new MessageSentEventArgs(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Resources.Info_SortingDirectory, (object)directory), MessageType.Information));
            fileNamePattern = fileNamePattern == null ? string.Empty : fileNamePattern.Trim();
            IOrderedEnumerable <string> source1 = this.systemContext.GetFiles(directory, "*.jpg", SearchOption.TopDirectoryOnly).OrderBy <string, DateTime>((Func <string, DateTime>)(file => this.systemContext.GetFileCreationTime(file)));
            int    num1           = source1.Count <string>();
            string fileNameFormat = DirectorySorter.ResolveFileNameFormat(fileNamePattern, num1, ".jpg");
            string firstImage     = (string)null;
            int    counter        = 1;
            int    num2           = 0;
            int    errors         = 0;

            foreach (string source2 in (IEnumerable <string>)source1)
            {
                try
                {
                    string targetFileName = this.DetermineTargetFileName(fileNameFormat, ref counter, directory);
                    this.OnMessageSent(new MessageSentEventArgs(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Resources.Info_MovingFile, (object)source2, (object)targetFileName), MessageType.Verbose));
                    this.systemContext.MoveFile(source2, targetFileName);
                    if (num2 == 0)
                    {
                        firstImage = targetFileName;
                    }
                }
                catch (Exception ex)
                {
                    this.OnMessageSent(new MessageSentEventArgs(string.Format((IFormatProvider)CultureInfo.CurrentCulture, Resources.Warning_FailedToProcessFile, (object)source2, (object)ex.Message), MessageType.Warning));
                    ++errors;
                }
                this.OnProgressChanged(new ProgressChangedEventArgs(MessagingBase.CalculatePercentage(++num2, num1), 0));
                ++counter;
            }
            this.OnProgressChanged(new ProgressChangedEventArgs(100, 100));
            this.OnCompleted(new CompletedEventArgs(DirectorySorter.PrepareSummary(num1, counter, errors), directory, firstImage));
        }