WIP: RapidTravel, ModalService

This commit is contained in:
2022-05-10 21:36:39 +02:00
parent 5b9d0667cc
commit 0ac9209676
19 changed files with 247 additions and 88 deletions

View File

@@ -1,4 +1,4 @@
using DynamicData;
using System.Reactive.Linq;
using FileTime.App.Core.Command;
using FileTime.App.Core.Models;
using FileTime.App.Core.ViewModels;
@@ -14,7 +14,7 @@ public class ItemManipulationCommandHandler : CommandHandlerBase
private IItemViewModel? _currentSelectedItem;
private readonly ICommandHandlerService _commandHandlerService;
private readonly IClipboardService _clipboardService;
private BindedCollection<IAbsolutePath>? _markedItems;
private readonly BindedCollection<IAbsolutePath>? _markedItems;
public ItemManipulationCommandHandler(
IAppState appState,
@@ -24,14 +24,11 @@ public class ItemManipulationCommandHandler : CommandHandlerBase
_commandHandlerService = commandHandlerService;
_clipboardService = clipboardService;
SaveSelectedTab(t =>
{
_selectedTab = t;
_markedItems?.Dispose();
_markedItems = t == null ? null : new BindedCollection<IAbsolutePath>(t.MarkedItems);
});
SaveSelectedTab(t => _selectedTab = t);
SaveCurrentSelectedItem(i => _currentSelectedItem = i);
_markedItems = new BindedCollection<IAbsolutePath>(appState.SelectedTab.Select(t => t?.MarkedItems));
AddCommandHandlers(new (Commands, Func<Task>)[]
{
(Commands.Copy, Copy),
@@ -55,9 +52,9 @@ public class ItemManipulationCommandHandler : CommandHandlerBase
_clipboardService.Clear();
_clipboardService.SetCommand<CopyCommand>();
if ((_markedItems?.Collection.Count ?? 0) > 0)
if ((_markedItems?.Collection?.Count ?? 0) > 0)
{
foreach (var item in _markedItems!.Collection)
foreach (var item in _markedItems!.Collection!)
{
_clipboardService.AddContent(item);
}

View File

@@ -1,6 +1,7 @@
using System.Reactive.Linq;
using FileTime.App.Core.Command;
using FileTime.App.Core.Extensions;
using FileTime.App.Core.Models.Enums;
using FileTime.App.Core.ViewModels;
using FileTime.Core.Models;
@@ -8,6 +9,7 @@ namespace FileTime.App.Core.Services.CommandHandler;
public class NavigationCommandHandler : CommandHandlerBase
{
private readonly IAppState _appState;
private ITabViewModel? _selectedTab;
private IContainer? _currentLocation;
private IItemViewModel? _currentSelectedItem;
@@ -15,6 +17,8 @@ public class NavigationCommandHandler : CommandHandlerBase
public NavigationCommandHandler(IAppState appState) : base(appState)
{
_appState = appState;
SaveSelectedTab(t => _selectedTab = t);
SaveCurrentSelectedItem(i => _currentSelectedItem = i);
SaveCurrentLocation(l => _currentLocation = l);
@@ -22,6 +26,7 @@ public class NavigationCommandHandler : CommandHandlerBase
AddCommandHandlers(new (Commands, Func<Task>)[]
{
(Commands.EnterRapidTravel, EnterRapidTravel),
(Commands.GoUp, GoUp),
(Commands.MoveCursorDown, MoveCursorDown),
(Commands.MoveCursorUp, MoveCursorUp),
@@ -64,4 +69,10 @@ public class NavigationCommandHandler : CommandHandlerBase
_selectedTab.Tab?.SetSelectedItem(newSelectedItem.ToAbsolutePath());
}
private Task EnterRapidTravel()
{
_appState.SwitchViewMode(ViewMode.RapidTravel);
return Task.CompletedTask;
}
}