IconProvider, container exceptions, refactor

This commit is contained in:
2022-02-02 11:02:37 +01:00
parent c4bf417ba3
commit 3e553dd448
31 changed files with 597 additions and 132 deletions

View File

@@ -4,6 +4,7 @@ namespace FileTime.Core.Models
{
public interface IContainer : IItem
{
IReadOnlyList<Exception> Exceptions { get; }
Task<IReadOnlyList<IItem>?> GetItems(CancellationToken token = default);
Task<IReadOnlyList<IContainer>?> GetContainers(CancellationToken token = default);
Task<IReadOnlyList<IElement>?> GetElements(CancellationToken token = default);
@@ -16,6 +17,7 @@ namespace FileTime.Core.Models
Task<bool> IsExists(string name);
Task<IContainer> Clone();
Task<bool> CanOpen();
bool IsLoaded { get; }

View File

@@ -29,6 +29,7 @@ namespace FileTime.Core.Models
public bool CanRename => BaseContainer.CanRename;
public IContentProvider Provider => BaseContainer.Provider;
public IReadOnlyList<Exception> Exceptions => BaseContainer.Exceptions;
public AsyncEventHandler Refreshed { get; }
@@ -164,5 +165,6 @@ namespace FileTime.Core.Models
}
public async Task Rename(string newName) => await BaseContainer.Rename(newName);
public async Task<bool> CanOpen() => await BaseContainer.CanOpen();
}
}

View File

@@ -29,6 +29,8 @@ namespace FileTime.Core.Providers
public AsyncEventHandler Refreshed { get; } = new();
public IReadOnlyList<Exception> Exceptions { get; } = new List<Exception>().AsReadOnly();
public TopContainer(IEnumerable<IContentProvider> contentProviders)
{
_contentProviders = new List<IContentProvider>(contentProviders);
@@ -62,5 +64,7 @@ namespace FileTime.Core.Providers
public Task<IContainer> Clone() => Task.FromResult((IContainer)this);
public Task Rename(string newName) => throw new NotSupportedException();
public Task<bool> CanOpen() => Task.FromResult(true);
}
}

View File

@@ -25,6 +25,7 @@ namespace FileTime.Core.Timeline
public IContentProvider Provider { get; }
public IContentProvider VirtualProvider { get; }
public IReadOnlyList<Exception> Exceptions { get; } = new List<Exception>().AsReadOnly();
public TimeContainer(string name, IContainer parent, IContentProvider contentProvider, IContentProvider virtualContentProvider, PointInTime pointInTime)
{
@@ -117,5 +118,6 @@ namespace FileTime.Core.Timeline
if (elementDiff.Type != DifferenceItemType.Container) throw new ArgumentException($"{elementDiff}'s {nameof(Difference.Type)} property is not {DifferenceItemType.Element}.");
return new TimeElement(elementDiff.Name, this, Provider, elementDiff.AbsolutePath.VirtualContentProvider ?? elementDiff.AbsolutePath.ContentProvider);
}
public Task<bool> CanOpen() => Task.FromResult(true);
}
}

View File

@@ -6,6 +6,8 @@ namespace FileTime.Core.Timeline
{
public class TimeProvider : IContentProvider
{
private readonly PointInTime _pointInTime;
public bool IsLoaded => true;
public AsyncEventHandler Refreshed { get; } = new();
@@ -22,7 +24,7 @@ namespace FileTime.Core.Timeline
public IContentProvider Provider => this;
private readonly PointInTime _pointInTime;
public IReadOnlyList<Exception> Exceptions { get; } = new List<Exception>().AsReadOnly();
public TimeProvider(PointInTime pointInTime)
{
@@ -85,5 +87,6 @@ namespace FileTime.Core.Timeline
public Task Rename(string newName) => throw new NotSupportedException();
public void SetParent(IContainer container) { }
public Task<bool> CanOpen() => Task.FromResult(true);
}
}