using System.IO; using Intromat.Interfaces; using ReactiveUI; namespace Intromat.ViewModels { public abstract class FileViewModel : ReactiveObject, ITreeItem, IFile { private bool _isExpanded; private bool _isSelected; private readonly FolderViewModel _parent; private readonly ModuleViewModel _module; private string _name; private bool _isDirty; private readonly string _extension; public FileViewModel(ModuleViewModel module, FolderViewModel parent, string name, string extension) { _extension = extension; _module = module; _parent = parent; _name = name; } public abstract ReactiveObject CurrentViewModel { get; } public string FullPath => Path.Combine(_parent.FullPath, $"{_name}.{_extension}"); public bool IsExpanded { get => _isExpanded; set => this.RaiseAndSetIfChanged(ref _isExpanded, value); } public bool IsSelected { get => _isSelected; set => this.RaiseAndSetIfChanged(ref _isSelected, value); } public virtual string Name { get => _name; set => this.RaiseAndSetIfChanged(ref _name, value); } public FolderViewModel Parent => _parent; public ModuleViewModel Module => _module; public bool IsDirty { get => _isDirty; set => this.RaiseAndSetIfChanged(ref _isDirty, value); } } }