ImageGlass.frmMain.LoadImageFilesFromDirectory C# (CSharp) Method

LoadImageFilesFromDirectory() private method

Sort and find all supported image from directory
private LoadImageFilesFromDirectory ( string path ) : List
path string Image folder path
return List
        private List<string> LoadImageFilesFromDirectory(string path)
        {
            //Load image order from config
            GlobalSetting.LoadImageOrderConfig();

            var list = new List<string>();

            //Get files from dir
            var dsFile = DirectoryFinder.FindFiles(path,
                GlobalSetting.IsRecursive,
                new Predicate<string>(delegate (String f)
                {
                    Application.DoEvents();

                    string extension = (Path.GetExtension(f) ?? "").ToLower(); //remove blank extension
                    if (extension.Length > 0 && GlobalSetting.SupportedExtensions.Contains(extension))
                    {
                        return true;
                    }

                    return false;
                }));

            //Sort image file
            if (GlobalSetting.ImageOrderBy == ImageOrderBy.Name)
            {
                var arr = dsFile.ToArray();
                Array.Sort(arr, new WindowsNaturalSort());
                list.AddRange(arr);

                //list.AddRange(FileLogicalComparer.Sort(dsFile.ToArray()));
            }
            else if (GlobalSetting.ImageOrderBy == ImageOrderBy.Length)
            {
                list.AddRange(dsFile
                    .OrderBy(f => new FileInfo(f).Length));
            }
            else if (GlobalSetting.ImageOrderBy == ImageOrderBy.CreationTime)
            {
                list.AddRange(dsFile
                    .OrderBy(f => new FileInfo(f).CreationTimeUtc));
            }
            else if (GlobalSetting.ImageOrderBy == ImageOrderBy.Extension)
            {
                list.AddRange(dsFile
                    .OrderBy(f => new FileInfo(f).Extension));
            }
            else if (GlobalSetting.ImageOrderBy == ImageOrderBy.LastAccessTime)
            {
                list.AddRange(dsFile
                    .OrderBy(f => new FileInfo(f).LastAccessTime));
            }
            else if (GlobalSetting.ImageOrderBy == ImageOrderBy.LastWriteTime)
            {
                list.AddRange(dsFile
                    .OrderBy(f => new FileInfo(f).LastWriteTime));
            }
            else if (GlobalSetting.ImageOrderBy == ImageOrderBy.Random)
            {
                list.AddRange(dsFile
                    .OrderBy(f => Guid.NewGuid()));
            }

            return list;
        }
frmMain