using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media; using System.Windows.Media.Imaging; namespace Tango.Explorer { public class ExplorerFolderItem : ExplorerItem { private static List extensions = ExplorerFileDefinition.GetSupportedExtensions().Select(x => x.Replace(".", "")).ToList(); public List Items { get; set; } public ExplorerFolderItem() { Items = new List(); } public static ExplorerFolderItem LoadFromPath(String path, String filter) { ExplorerFolderItem folderItem = new ExplorerFolderItem(); folderItem.Path = path; folderItem.Icon = ExplorerFileDefinition.Folder.Icon; folderItem.Name = System.IO.Path.GetFileName(path); foreach (var folder in new DirectoryInfo(path).GetDirectories().Where(x => !x.Attributes.HasFlag(FileAttributes.Hidden))) { ExplorerFolderItem fItem = new ExplorerFolderItem(); fItem.Path = folder.FullName; fItem.Icon = ExplorerFileDefinition.Folder.Icon; fItem.Name = System.IO.Path.GetFileName(folder.FullName); folderItem.Items.Add(fItem); } foreach (var file in Directory.GetFiles(path, "*.*").Where(f => extensions.Contains(f.Split('.').Last().ToLower())).ToArray()) { if (filter == null || filter.ToLower().Replace("*", "").Replace(";", "").Split('|').Contains(System.IO.Path.GetExtension(file).ToLower())) { folderItem.Items.Add(ExplorerFileItem.LoadFromPath(file)); } } return folderItem; } public String GetParentPath() { var parent = new DirectoryInfo(Path).Parent; var parentPath = parent != null ? parent.FullName : null; return parentPath; } } }