Browse ISOs

This commit is contained in:
2023-09-04 15:19:20 +02:00
parent 38979d8572
commit a323edafd3
29 changed files with 555 additions and 60 deletions

View File

@@ -1,10 +1,13 @@
using System.Collections.ObjectModel;
using FileTime.Core.Models;
namespace FileTime.Core.ContentAccess;
public interface IContentProviderRegistry
{
ReadOnlyObservableCollection<IContentProvider> ContentProviders { get; }
ReadOnlyObservableCollection<ISubContentProvider> SubContentProviders { get; }
void AddContentProvider(IContentProvider contentProvider);
void RemoveContentProvider(IContentProvider contentProvider);
Task<ISubContentProvider?> GetSubContentProviderForElement(IElement parentElement);
}

View File

@@ -0,0 +1,17 @@
using FileTime.Core.Enums;
using FileTime.Core.Models;
using FileTime.Core.Timeline;
namespace FileTime.Core.ContentAccess;
public interface ISubContentProvider
{
Task<IItem?> GetItemByFullNameAsync(
IElement parentElement,
FullName itemPath,
PointInTime pointInTime,
AbsolutePathType forceResolvePathType = AbsolutePathType.Unknown,
ItemInitializationSettings itemInitializationSettings = default);
Task<bool> CanHandleAsync(IElement parentElement);
}

View File

@@ -1,8 +1,10 @@
using System.Diagnostics;
using FileTime.Core.Enums;
using FileTime.Core.Timeline;
namespace FileTime.Core.Models;
[DebuggerDisplay("{Path.Path}, {Type}")]
public class AbsolutePath
{
public ITimelessContentProvider TimelessProvider { get; }

View File

@@ -3,4 +3,5 @@ namespace FileTime.Core.Models;
public static class Constants
{
public const char SeparatorChar = '/';
public const string SubContentProviderRootContainer = ":";
}

View File

@@ -1,5 +1,8 @@
using System.Diagnostics;
namespace FileTime.Core.Models;
[DebuggerDisplay("{Path}")]
public record FullName(string Path)
{
public FullName? GetParent()

View File

@@ -1,6 +1,6 @@
namespace FileTime.Core.Models;
public sealed class ItemInitializationSettings
public readonly struct ItemInitializationSettings
{
public bool SkipChildInitialization { get; init; }
public AbsolutePath? Parent { get; init; }

View File

@@ -1,5 +1,8 @@
using System.Diagnostics;
namespace FileTime.Core.Models;
[DebuggerDisplay("{Path}")]
public record NativePath(string Path)
{
public override string ToString() => Path;

View File

@@ -1,4 +1,4 @@
using System.Reactive.Subjects;
using DeclarativeProperty;
using FileTime.Core.Enums;
using FileTime.Core.Models;
@@ -6,7 +6,7 @@ namespace FileTime.Core.Timeline;
public interface ITimelessContentProvider
{
BehaviorSubject<PointInTime> CurrentPointInTime { get; }
IDeclarativeProperty<PointInTime> CurrentPointInTime { get; }
Task<IItem> GetItemByFullNameAsync(FullName fullName,
PointInTime? pointInTime,