private void SearchMode1_SelectionChanged(object sender, SelectionChangedEventArgs e) { FolderSorts SortTypes = FolderSorts.Name; switch (SearchMode1.SelectedIndex) { case 0: SortTypes = FolderSorts.Name; break; case 1: SortTypes = FolderSorts.Creation; break; case 2: SortTypes = FolderSorts.LastWrite; break; case 3: SortTypes = FolderSorts.Size; break; case 4: SortTypes = FolderSorts.Pages; break; case 5: SortTypes = FolderSorts.SizePerPage; break; } SetFolderSort(SortTypes); new TaskFactory().StartNew(() => LoadHitomi(path)); }
private void SetFolderSort(FolderSorts sorts) { switch (sorts) { case FolderSorts.Name: FolderSort = (string[] arr) => { return(arr.ESort().ToArray()); }; break; case FolderSorts.Creation: FolderSort = (string[] arr) => { var arr2 = arr.Select(f => new FileInfo(f)).ToArray(); Array.Sort(arr2, delegate(FileInfo x, FileInfo y) { return(DateTime.Compare(x.CreationTime, y.CreationTime)); }); return(arr2.Select(f => f.FullName).ToArray()); }; break; case FolderSorts.LastWrite: FolderSort = (string[] arr) => { var arr2 = arr.Select(f => new FileInfo(f)).ToArray(); Array.Sort(arr2, delegate(FileInfo x, FileInfo y) { return(DateTime.Compare(x.LastWriteTime, y.LastWriteTime)); }); return(arr2.Select(f => f.FullName).ToArray()); }; break; case FolderSorts.Size: FolderSort = (string[] arr) => { var arr2 = arr.Select(f => new DirectoryInfo(f)).ToArray(); Array.Sort(arr2, delegate(DirectoryInfo x, DirectoryInfo y) { long xlen = x.EnumerateFiles().Sum(f => f.Length); long ylen = y.EnumerateFiles().Sum(f => f.Length); if (xlen == ylen) { return(0); } if (xlen > ylen) { return(1); } if (xlen < ylen) { return(-1); } return(0); }); return(arr2.Select(f => f.FullName).ToArray()); }; break; case FolderSorts.Pages: FolderSort = (string[] arr) => { var arr2 = arr.ToArray(); Array.Sort(arr2, delegate(string x, string y) { long xlen = Directory.GetFiles(x).Length; long ylen = Directory.GetFiles(y).Length; if (xlen == ylen) { return(0); } if (xlen > ylen) { return(1); } if (xlen < ylen) { return(-1); } return(0); }); return(arr2.ToArray()); }; break; case FolderSorts.SizePerPage: FolderSort = (string[] arr) => { var arr2 = arr.Select(f => new DirectoryInfo(f)).ToArray(); Array.Sort(arr2, delegate(DirectoryInfo x, DirectoryInfo y) { long xlen = x.EnumerateFiles().Sum(f => f.Length) / x.GetFiles().Length; long ylen = y.EnumerateFiles().Sum(f => f.Length) / y.GetFiles().Length; if (xlen == ylen) { return(0); } if (xlen > ylen) { return(1); } if (xlen < ylen) { return(-1); } return(0); }); return(arr2.Select(f => f.FullName).ToArray()); }; break; } }