Compression

This commit is contained in:
2023-08-02 12:40:40 +02:00
parent 5508828717
commit c95be170ed
34 changed files with 505 additions and 66 deletions

View File

@@ -7,4 +7,5 @@ public interface IContentReader : IDisposable
Task<byte[]> ReadBytesAsync(int bufferSize, int? offset = null);
void SetPosition(long position);
Stream AsStream();
}

View File

@@ -6,4 +6,5 @@ public interface IContentWriter : IDisposable
Task WriteBytesAsync(byte[] data, int? index = null, CancellationToken cancellationToken = default);
Task FlushAsync(CancellationToken cancellationToken = default);
Stream AsStream();
}

View File

@@ -3,5 +3,5 @@ namespace FileTime.Core.Interactions;
public interface IOptionsInputElement : IInputElement
{
object Value { get; set; }
IEnumerable<IOptionElement> Options { get; }
IReadOnlyCollection<IOptionElement> Options { get; }
}

View File

@@ -5,19 +5,30 @@ namespace FileTime.Core.Interactions;
public partial class OptionsInputElement<T> : InputElementBase, IOptionsInputElement, INotifyPropertyChanged
{
public IEnumerable<OptionElement<T>> Options { get; }
public IReadOnlyCollection<OptionElement<T>> Options { get; }
[Notify] private T? _value;
IEnumerable<IOptionElement> IOptionsInputElement.Options => Options;
IReadOnlyCollection<IOptionElement> IOptionsInputElement.Options => Options;
object? IOptionsInputElement.Value
{
get => Value;
set => Value = (T?)value;
get => Options.FirstOrDefault(o => o.Value?.Equals(_value) ?? false);
set
{
if (value is T newValue)
{
Value = newValue;
}
else if (value is OptionElement<T> optionElement)
{
Value = optionElement.Value;
}
}
}
public OptionsInputElement(string label, IEnumerable<OptionElement<T>> options) : base(label, InputType.Options)
{
Options = options;
Options = options.ToList();
}
}