RunOrOpenCommand

This commit is contained in:
2023-07-21 23:31:33 +02:00
parent e03989bf60
commit 40cb643a32
6 changed files with 49 additions and 179 deletions

View File

@@ -1,4 +1,5 @@
using System.Collections.ObjectModel;
using System.Diagnostics;
using DeclarativeProperty;
using FileTime.App.CommandPalette.Services;
using FileTime.App.Core.Extensions;
@@ -78,11 +79,31 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
new TypeUserCommandHandler<OpenCommandPaletteCommand>(OpenCommandPalette),
new TypeUserCommandHandler<OpenContainerCommand>(OpenContainer),
new TypeUserCommandHandler<OpenSelectedCommand>(OpenSelected),
new TypeUserCommandHandler<RunOrOpenCommand>(RunOrOpen),
new TypeUserCommandHandler<RefreshCommand>(Refresh),
new TypeUserCommandHandler<SwitchToTabCommand>(SwitchToTab),
});
}
private async Task RunOrOpen()
{
if (_currentSelectedItem?.Value is IContainerViewModel)
{
await OpenSelected();
}
else if (_currentSelectedItem?.Value is IElementViewModel
{Element: {NativePath: not null, Provider: ILocalContentProvider} localFile}
)
{
Process.Start(new ProcessStartInfo(localFile.NativePath!.Path) {UseShellExecute = true});
if (_viewMode == ViewMode.RapidTravel)
{
await ExitRapidTravel();
}
}
}
private Task OpenCommandPalette()
{
_commandPaletteService.OpenCommandPalette();
@@ -232,10 +253,10 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
var relevantItems = _currentSelectedItem?.Value is null
? items.Reverse().ToList()
: items.TakeWhile(i => !i.EqualsTo(_currentSelectedItem?.Value)).Reverse().ToList();
var fallBackItems = relevantItems.Take(PageSize).Reverse();
var preferredItems = relevantItems.Skip(PageSize);
return preferredItems.Concat(fallBackItems).FirstOrDefault();
});