Refactor: items with DynamicData

This commit is contained in:
2022-04-22 09:09:14 +02:00
parent da3ccf4317
commit 76c6e30154
31 changed files with 281 additions and 141 deletions

View File

@@ -0,0 +1,26 @@
using System.Collections.ObjectModel;
using DynamicData;
namespace FileTime.App.Core.Models
{
public class BindedCollection<T> : IDisposable
{
private readonly IDisposable _disposable;
public ReadOnlyObservableCollection<T> Collection { get; }
public BindedCollection(IObservable<IChangeSet<T>> dynamicList)
{
_disposable = dynamicList
.Bind(out var collection)
.DisposeMany()
.Subscribe();
Collection = collection;
}
public void Dispose()
{
_disposable.Dispose();
GC.SuppressFinalize(this);
}
}
}

View File

@@ -3,7 +3,7 @@ using InitableService;
namespace FileTime.App.Core.ViewModels
{
public interface IContainerSizeContainerViewModel : IItemViewModel, IInitable<IContainer, ITabViewModel, int>
public interface IContainerSizeContainerViewModel : IItemViewModel, IInitable<IContainer, ITabViewModel>
{
long Size { get; set; }
}

View File

@@ -3,7 +3,7 @@ using InitableService;
namespace FileTime.App.Core.ViewModels
{
public interface IContainerViewModel : IItemViewModel, IInitable<IContainer, ITabViewModel, int>
public interface IContainerViewModel : IItemViewModel, IInitable<IContainer, ITabViewModel>
{
IContainer? Container { get; }
}

View File

@@ -3,7 +3,7 @@ using InitableService;
namespace FileTime.App.Core.ViewModels
{
public interface IElementViewModel : IItemViewModel, IInitable<IElement, ITabViewModel, int>
public interface IElementViewModel : IItemViewModel, IInitable<IElement, ITabViewModel>
{
long? Size { get; set; }
}

View File

@@ -3,7 +3,7 @@ using InitableService;
namespace FileTime.App.Core.ViewModels
{
public interface IFileViewModel : IElementViewModel, IInitable<IFileElement, ITabViewModel, int>
public interface IFileViewModel : IElementViewModel, IInitable<IFileElement, ITabViewModel>
{
}
}

View File

@@ -1,4 +1,3 @@
using System.Reactive.Subjects;
using FileTime.App.Core.Models;
using FileTime.App.Core.Models.Enums;
using FileTime.Core.Models;
@@ -6,16 +5,17 @@ using InitableService;
namespace FileTime.App.Core.ViewModels
{
public interface IItemViewModel : IInitable<IItem, ITabViewModel, int>
public interface IItemViewModel : IInitable<IItem, ITabViewModel>
{
IItem? BaseItem { get; set; }
IObservable<IReadOnlyList<ItemNamePart>>? DisplayName { get; set; }
string? DisplayNameText { get; set; }
IObservable<bool>? IsSelected { get; set; }
IObservable<bool>? IsMarked { get; set; }
BehaviorSubject<bool> IsAlternative { get; }
IObservable<bool> IsAlternative { get; }
IObservable<ItemViewMode> ViewMode { get; set; }
DateTime? CreatedAt { get; set; }
string? Attributes { get; set; }
bool EqualsTo(IItemViewModel? itemViewModel);
}
}

View File

@@ -1,4 +1,6 @@
using DynamicData;
using FileTime.App.Core.Models;
using FileTime.Core.Models;
using FileTime.Core.Services;
using InitableService;
@@ -12,9 +14,13 @@ namespace FileTime.App.Core.ViewModels
IObservable<bool> IsSelected { get; }
IObservable<IContainer?> CurrentLocation { get; }
IObservable<IItemViewModel?> CurrentSelectedItem { get; }
IObservable<IReadOnlyList<IItemViewModel>> CurrentItems { get; }
IObservable<IObservable<IChangeSet<IItemViewModel>>?> CurrentItems { get; }
IObservable<IEnumerable<FullName>> MarkedItems { get; }
IObservable<IReadOnlyList<IItemViewModel>?> SelectedsChildren { get; }
IObservable<IReadOnlyList<IItemViewModel>?> ParentsChildren { get; }
IObservable<IObservable<IChangeSet<IItemViewModel>>?> SelectedsChildren { get; }
IObservable<IObservable<IChangeSet<IItemViewModel>>?> ParentsChildren { get; }
BindedCollection<IItemViewModel>? CurrentItemsCollection { get; }
BindedCollection<IItemViewModel>? SelectedsChildrenCollection { get; }
BindedCollection<IItemViewModel>? ParentsChildrenCollection { get; }
IObservable<IReadOnlyCollection<IItemViewModel>?> CurrentItemsCollectionObservable { get; }
}
}