public FileSystemEntries EnumerateEntries(string path) { path.ValidateStringEmpty("path"); var entries = new FileSystemEntries(); if (path == "\\") { Directory .GetLogicalDrives() .ForEach(x => entries.Add(new DirectoryEntry { FullName = x, Name = x, Parent = "\\" })); } else { if (!Directory.Exists(path)) { throw new InvalidOperationException(); } Directory .EnumerateDirectories(path) .Select(CreateDirectoryEntry) .AddTo(entries); Directory .EnumerateFiles(path) .Select(CreateFileEntry) .AddTo(entries); } return(entries); }
protected virtual string GetFileImage(FileSystemEntries file) { switch (Path.GetExtension(file.Name)?.ToLower().Replace(".", "")) { case "tar": case "7z": case "7zip": case "rar": case "zip": return("/Content/img/FileExtIcons/zip.png"); case "exe": case "dmg": case "apk": return("/Content/img/FileExtIcons/exe.png"); case "msi": return("/Content/img/FileExtIcons/msi.png"); case "iso": return("/Content/img/FileExtIcons/iso.png"); case "txt": return("/Content/img/FileExtIcons/txt.png"); case "pdf": return("/Content/img/FileExtIcons/pdf.png"); case "docx": case "doc": return("/Content/img/FileExtIcons/doc.png"); case "png": case "jpg": case "jpeg": case "gif": case "ico": return("/Content/img/FileExtIcons/img.png"); case "avi": case "wmv": case "mp4": return("/Content/img/FileExtIcons/movie.png"); } return("/Content/img/FileExtIcons/other.png"); }
/// <summary> /// Reloads file system entries for the directory, adds commands to the list. /// </summary> /// <param name="dir">Directory to feed the items list.</param> /// <param name="includeCommands">Set true to include internal commands.</param> private void Reload(string dir = ".", bool includeCommands = false) { if (dir != ".") { includeCommands = false; } string trim(string _path, string _dir) { if (_path.StartsWith(_dir, StringComparison.OrdinalIgnoreCase)) { return(_path.Substring(_dir.Length).Trim('\\')); } return(_path); } if (Directory.Exists(dir)) { FileSystemEntries = Directory.EnumerateFileSystemEntries(dir, "*").Select(i => trim(i, dir)).ToArray(); All = includeCommands ? Commands.Concat(FileSystemEntries).OrderBy(i => i).ToArray() : FileSystemEntries.OrderBy(i => i).ToArray(); } else { FileSystemEntries = new string[0]; All = includeCommands ? Commands.OrderBy(i => i).ToArray() : FileSystemEntries; } }