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;
}