diff options
Diffstat (limited to 'Software/Visual_Studio/Tango.FileSystem/FileSystemItem.cs')
| -rw-r--r-- | Software/Visual_Studio/Tango.FileSystem/FileSystemItem.cs | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/Software/Visual_Studio/Tango.FileSystem/FileSystemItem.cs b/Software/Visual_Studio/Tango.FileSystem/FileSystemItem.cs new file mode 100644 index 000000000..6f8190f6c --- /dev/null +++ b/Software/Visual_Studio/Tango.FileSystem/FileSystemItem.cs @@ -0,0 +1,78 @@ +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; + } + } +} |
