58 lines
1.5 KiB
C#
58 lines
1.5 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|