Timeless refactor

This commit is contained in:
2022-05-21 14:30:24 +02:00
parent ced0c88a10
commit 6ee5afa632
47 changed files with 571 additions and 181 deletions

View File

@@ -3,6 +3,7 @@ using System.Reactive.Linq;
using System.Reactive.Subjects;
using DynamicData;
using FileTime.App.Core.Models.Enums;
using FileTime.Core.Timeline;
using MvvmGen;
using MoreLinq;

View File

@@ -57,7 +57,7 @@ public abstract partial class ItemViewModel : IItemViewModel
DisplayNameText = item.DisplayName;
IsMarked = itemViewModelType is ItemViewModelType.Main
? parentTab.MarkedItems.ToCollection().Select(m => m.Any(i => i.Path.Path == item.FullName?.Path))
? parentTab.MarkedItems.ToCollection().Select(m => m.Any(i => i.Path == item.FullName?.Path))
: Observable.Return(false);
IsSelected = itemViewModelType is ItemViewModelType.Main

View File

@@ -19,7 +19,7 @@ public partial class TabViewModel : ITabViewModel, IDisposable
private readonly IItemNameConverterService _itemNameConverterService;
private readonly IAppState _appState;
private readonly IRxSchedulerService _rxSchedulerService;
private readonly SourceList<IAbsolutePath> _markedItems = new();
private readonly SourceList<FullName> _markedItems = new();
private readonly List<IDisposable> _disposables = new();
private bool _disposed;
@@ -31,7 +31,7 @@ public partial class TabViewModel : ITabViewModel, IDisposable
public IObservable<IContainer?> CurrentLocation { get; private set; } = null!;
public IObservable<IItemViewModel?> CurrentSelectedItem { get; private set; } = null!;
public IObservable<IObservable<IChangeSet<IItemViewModel>>?> CurrentItems { get; private set; } = null!;
public IObservable<IChangeSet<IAbsolutePath>> MarkedItems { get; }
public IObservable<IChangeSet<FullName>> MarkedItems { get; }
public IObservable<IObservable<IChangeSet<IItemViewModel>>?> SelectedsChildren { get; private set; } = null!;
public IObservable<IObservable<IChangeSet<IItemViewModel>>?> ParentsChildren { get; private set; } = null!;
@@ -171,7 +171,7 @@ public partial class TabViewModel : ITabViewModel, IDisposable
}
}
private static async Task<IItem> MapItem(IAbsolutePath item)
private static async Task<IItem> MapItem(AbsolutePath item)
=> await item.ResolveAsync(forceResolve: true,
itemInitializationSettings: new ItemInitializationSettings(true));
@@ -211,24 +211,24 @@ public partial class TabViewModel : ITabViewModel, IDisposable
throw new ArgumentException($"{nameof(item)} is not {nameof(IContainer)} neither {nameof(IElement)}");
}
public void AddMarkedItem(IAbsolutePath item) => _markedItems.Add(item);
public void AddMarkedItem(FullName fullName) => _markedItems.Add(fullName);
public void RemoveMarkedItem(IAbsolutePath item)
public void RemoveMarkedItem(FullName fullName)
{
var itemsToRemove = _markedItems.Items.Where(i => i.Path.Path == item.Path.Path).ToList();
var itemsToRemove = _markedItems.Items.Where(i => i.Path == fullName.Path).ToList();
_markedItems.RemoveMany(itemsToRemove);
}
public void ToggleMarkedItem(IAbsolutePath item)
public void ToggleMarkedItem(FullName fullName)
{
if (_markedItems.Items.Any(i => i.Path.Path == item.Path.Path))
if (_markedItems.Items.Any(i => i.Path == fullName.Path))
{
RemoveMarkedItem(item);
RemoveMarkedItem(fullName);
}
else
{
AddMarkedItem(item);
AddMarkedItem(fullName);
}
}