using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media.Imaging; using Tango.FileSystem.Network; namespace Tango.FileSystem { public abstract class FileSystemItem { public String Path { get; set; } public FileSystemItemType Type { get; protected set; } public abstract String Description { get; } public DateTime DateModified { get; set; } public long Size { get; set; } public String Name { get { return OnGetName(); } } public FileSystemItem() { DateModified = DateTime.Now; Size = 1000 * 1000; } protected virtual String OnGetName() { return System.IO.Path.GetFileName(Path); } public override string ToString() { return Name; } public static FileSystemItem FromDTO(FileSystemItemDTO dto) { FileSystemItem item = null; if (dto.Type == FileSystemItemType.Drive) { item = new DriveItem() { DriveType = dto.DriveType, Label = dto.DriveLabel, Items = dto.Items.Select(x => FromDTO(x)).ToObservableCollection() }; } else if (dto.Type == FileSystemItemType.Folder) { item = new FolderItem() { Items = dto.Items.Select(x => FromDTO(x)).ToObservableCollection() }; } else if (dto.Type == FileSystemItemType.File) { item = new FileItem(); } item.DateModified = dto.DateModified; item.Path = dto.Path; item.Size = dto.Size; item.Type = dto.Type; return item; } } }