Command execution, CreateContainer command WIP

This commit is contained in:
2022-05-23 18:12:22 +02:00
parent 6b3a8f7127
commit d4bd9d3ba1
29 changed files with 499 additions and 26 deletions

View File

@@ -22,6 +22,7 @@ public class ItemManipulationUserCommandHandlerService : UserCommandHandlerServi
private readonly IInputInterface _inputInterface;
private readonly ILogger<ItemManipulationUserCommandHandlerService> _logger;
private readonly ITimelessContentProvider _timelessContentProvider;
private readonly ICommandScheduler _commandScheduler;
private readonly BindedCollection<FullName>? _markedItems;
private PointInTime _currentPointInTime;
@@ -31,13 +32,15 @@ public class ItemManipulationUserCommandHandlerService : UserCommandHandlerServi
IClipboardService clipboardService,
IInputInterface inputInterface,
ILogger<ItemManipulationUserCommandHandlerService> logger,
ITimelessContentProvider timelessContentProvider) : base(appState, timelessContentProvider)
ITimelessContentProvider timelessContentProvider,
ICommandScheduler commandScheduler) : base(appState, timelessContentProvider)
{
_userCommandHandlerService = userCommandHandlerService;
_clipboardService = clipboardService;
_inputInterface = inputInterface;
_logger = logger;
_timelessContentProvider = timelessContentProvider;
_commandScheduler = commandScheduler;
_currentPointInTime = null!;
SaveSelectedTab(t => _selectedTab = t);
@@ -128,5 +131,6 @@ public class ItemManipulationUserCommandHandlerService : UserCommandHandlerServi
var newContainerName = containerNameInput.Value;
var command = new CreateContainerCommand();
await _commandScheduler.AddCommand(command);
}
}

View File

@@ -67,7 +67,8 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
private Task OpenSelected()
{
if (_currentSelectedItem is not IContainerViewModel containerViewModel || containerViewModel.Container is null) return Task.CompletedTask;
if (_currentSelectedItem is not IContainerViewModel containerViewModel || containerViewModel.Container is null)
return Task.CompletedTask;
_selectedTab?.Tab?.SetCurrentLocation(containerViewModel.Container);
return Task.CompletedTask;
@@ -75,7 +76,8 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
private async Task GoUp()
{
if (_currentLocation?.Parent is not AbsolutePath parentPath || await parentPath.ResolveAsyncSafe() is not IContainer newContainer) return;
if (_currentLocation?.Parent is not AbsolutePath parentPath ||
await parentPath.ResolveAsyncSafe() is not IContainer newContainer) return;
_selectedTab?.Tab?.SetCurrentLocation(newContainer);
}
@@ -125,7 +127,8 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
}
else if (tabViewModel == null)
{
var tab = _serviceProvider.GetInitableResolver<IContainer>(_currentLocation ?? _localContentProvider).GetRequiredService<ITab>();
var tab = _serviceProvider.GetInitableResolver<IContainer>(_currentLocation ?? _localContentProvider)
.GetRequiredService<ITab>();
var newTabViewModel = _serviceProvider.GetInitableResolver(tab, number).GetRequiredService<ITabViewModel>();
_appState.AddTab(newTabViewModel);
@@ -144,9 +147,18 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
private Task CloseTab()
{
if (_appState.Tabs.Count < 2) return Task.CompletedTask;
if (_appState.Tabs.Count < 2 || _selectedTab == null) return Task.CompletedTask;
_appState.RemoveTab(_selectedTab!);
var tabToRemove = _selectedTab;
_appState.RemoveTab(tabToRemove!);
try
{
tabToRemove.Dispose();
}
catch
{
}
return Task.CompletedTask;
}

View File

@@ -13,7 +13,7 @@ using MvvmGen;
namespace FileTime.App.Core.ViewModels;
[ViewModel]
public partial class TabViewModel : ITabViewModel, IDisposable
public partial class TabViewModel : ITabViewModel
{
private readonly IServiceProvider _serviceProvider;
private readonly IItemNameConverterService _itemNameConverterService;
@@ -70,6 +70,8 @@ public partial class TabViewModel : ITabViewModel, IDisposable
Tab = tab;
TabNumber = tabNumber;
tab.AddToDisposables(_disposables);
CurrentLocation = tab.CurrentLocation.AsObservable();
CurrentItems = tab.CurrentItems
.Select(items => items?.Transform(i => MapItemToViewModel(i, ItemViewModelType.Main)))
@@ -105,7 +107,7 @@ public partial class TabViewModel : ITabViewModel, IDisposable
ParentsChildrenCollection = new(ParentsChildren);
SelectedsChildrenCollection = new(SelectedsChildren);
tab.CurrentLocation.Subscribe((_) => _markedItems.Clear());
tab.CurrentLocation.Subscribe((_) => _markedItems.Clear()).AddToDisposables(_disposables);
IObservable<IObservable<IChangeSet<IItemViewModel>>?> InitSelectedsChildren()
{