Refresh command
This commit is contained in:
@@ -0,0 +1,13 @@
|
|||||||
|
namespace FileTime.App.Core.UserCommand;
|
||||||
|
|
||||||
|
public sealed class RefreshCommand : IIdentifiableUserCommand
|
||||||
|
{
|
||||||
|
public const string CommandName = "refresh";
|
||||||
|
public static RefreshCommand Instance { get; } = new RefreshCommand();
|
||||||
|
|
||||||
|
private RefreshCommand()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public string UserCommandID => CommandName;
|
||||||
|
}
|
||||||
@@ -54,10 +54,21 @@ public class NavigationUserCommandHandlerService : UserCommandHandlerServiceBase
|
|||||||
new TypeUserCommandHandler<MoveCursorUpCommand>(MoveCursorUp),
|
new TypeUserCommandHandler<MoveCursorUpCommand>(MoveCursorUp),
|
||||||
new TypeUserCommandHandler<OpenContainerCommand>(OpenContainer),
|
new TypeUserCommandHandler<OpenContainerCommand>(OpenContainer),
|
||||||
new TypeUserCommandHandler<OpenSelectedCommand>(OpenSelected),
|
new TypeUserCommandHandler<OpenSelectedCommand>(OpenSelected),
|
||||||
|
new TypeUserCommandHandler<RefreshCommand>(Refresh),
|
||||||
new TypeUserCommandHandler<SwitchToTabCommand>(SwitchToTab),
|
new TypeUserCommandHandler<SwitchToTabCommand>(SwitchToTab),
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async Task Refresh(RefreshCommand command)
|
||||||
|
{
|
||||||
|
if (_currentLocation?.FullName is null) return;
|
||||||
|
var refreshedItem = await _timelessContentProvider.GetItemByFullNameAsync(_currentLocation.FullName, PointInTime.Present);
|
||||||
|
|
||||||
|
if (refreshedItem is not IContainer refreshedContainer) return;
|
||||||
|
|
||||||
|
_selectedTab?.Tab?.ForceSetCurrentLocation(refreshedContainer);
|
||||||
|
}
|
||||||
|
|
||||||
private async Task OpenContainer(OpenContainerCommand command)
|
private async Task OpenContainer(OpenContainerCommand command)
|
||||||
{
|
{
|
||||||
var resolvedPath = await command.Path.ResolveAsync();
|
var resolvedPath = await command.Path.ResolveAsync();
|
||||||
|
|||||||
@@ -24,6 +24,8 @@ public class DefaultIdentifiableCommandHandlerRegister : IStartupHandler
|
|||||||
AddUserCommand(PasteCommand.Merge);
|
AddUserCommand(PasteCommand.Merge);
|
||||||
AddUserCommand(PasteCommand.Overwrite);
|
AddUserCommand(PasteCommand.Overwrite);
|
||||||
AddUserCommand(PasteCommand.Skip);
|
AddUserCommand(PasteCommand.Skip);
|
||||||
|
AddUserCommand(RefreshCommand.Instance);
|
||||||
|
AddUserCommand(SwitchToTabCommand.SwitchToLastTab);
|
||||||
AddUserCommand(SwitchToTabCommand.SwitchToTab1);
|
AddUserCommand(SwitchToTabCommand.SwitchToTab1);
|
||||||
AddUserCommand(SwitchToTabCommand.SwitchToTab2);
|
AddUserCommand(SwitchToTabCommand.SwitchToTab2);
|
||||||
AddUserCommand(SwitchToTabCommand.SwitchToTab3);
|
AddUserCommand(SwitchToTabCommand.SwitchToTab3);
|
||||||
@@ -32,7 +34,6 @@ public class DefaultIdentifiableCommandHandlerRegister : IStartupHandler
|
|||||||
AddUserCommand(SwitchToTabCommand.SwitchToTab6);
|
AddUserCommand(SwitchToTabCommand.SwitchToTab6);
|
||||||
AddUserCommand(SwitchToTabCommand.SwitchToTab7);
|
AddUserCommand(SwitchToTabCommand.SwitchToTab7);
|
||||||
AddUserCommand(SwitchToTabCommand.SwitchToTab8);
|
AddUserCommand(SwitchToTabCommand.SwitchToTab8);
|
||||||
AddUserCommand(SwitchToTabCommand.SwitchToLastTab);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void AddUserCommand(IIdentifiableUserCommand command)
|
private void AddUserCommand(IIdentifiableUserCommand command)
|
||||||
|
|||||||
@@ -15,4 +15,5 @@ public interface ITab : IInitable<IContainer>, IDisposable
|
|||||||
void RemoveItemFilter(ItemFilter filter);
|
void RemoveItemFilter(ItemFilter filter);
|
||||||
void RemoveItemFilter(string name);
|
void RemoveItemFilter(string name);
|
||||||
void SetSelectedItem(AbsolutePath newSelectedItem);
|
void SetSelectedItem(AbsolutePath newSelectedItem);
|
||||||
|
void ForceSetCurrentLocation(IContainer newLocation);
|
||||||
}
|
}
|
||||||
@@ -11,6 +11,7 @@ public class Tab : ITab
|
|||||||
{
|
{
|
||||||
private readonly ITimelessContentProvider _timelessContentProvider;
|
private readonly ITimelessContentProvider _timelessContentProvider;
|
||||||
private readonly BehaviorSubject<IContainer?> _currentLocation = new(null);
|
private readonly BehaviorSubject<IContainer?> _currentLocation = new(null);
|
||||||
|
private readonly BehaviorSubject<IContainer?> _currentLocationForced = new(null);
|
||||||
private readonly BehaviorSubject<AbsolutePath?> _currentSelectedItem = new(null);
|
private readonly BehaviorSubject<AbsolutePath?> _currentSelectedItem = new(null);
|
||||||
private readonly SourceList<ItemFilter> _itemFilters = new();
|
private readonly SourceList<ItemFilter> _itemFilters = new();
|
||||||
private AbsolutePath? _currentSelectedItemCached;
|
private AbsolutePath? _currentSelectedItemCached;
|
||||||
@@ -24,10 +25,15 @@ public class Tab : ITab
|
|||||||
{
|
{
|
||||||
_timelessContentProvider = timelessContentProvider;
|
_timelessContentProvider = timelessContentProvider;
|
||||||
_currentPointInTime = null!;
|
_currentPointInTime = null!;
|
||||||
|
|
||||||
_timelessContentProvider.CurrentPointInTime.Subscribe(p => _currentPointInTime = p);
|
_timelessContentProvider.CurrentPointInTime.Subscribe(p => _currentPointInTime = p);
|
||||||
|
|
||||||
CurrentLocation = _currentLocation.DistinctUntilChanged().Publish(null).RefCount();
|
CurrentLocation = _currentLocation
|
||||||
|
.DistinctUntilChanged()
|
||||||
|
.Merge(_currentLocationForced)
|
||||||
|
.Publish(null)
|
||||||
|
.RefCount();
|
||||||
|
|
||||||
CurrentItems =
|
CurrentItems =
|
||||||
Observable.Merge(
|
Observable.Merge(
|
||||||
Observable.CombineLatest(
|
Observable.CombineLatest(
|
||||||
@@ -88,6 +94,7 @@ public class Tab : ITab
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void SetCurrentLocation(IContainer newLocation) => _currentLocation.OnNext(newLocation);
|
public void SetCurrentLocation(IContainer newLocation) => _currentLocation.OnNext(newLocation);
|
||||||
|
public void ForceSetCurrentLocation(IContainer newLocation) => _currentLocationForced.OnNext(newLocation);
|
||||||
|
|
||||||
public void SetSelectedItem(AbsolutePath newSelectedItem) => _currentSelectedItem.OnNext(newSelectedItem);
|
public void SetSelectedItem(AbsolutePath newSelectedItem) => _currentSelectedItem.OnNext(newSelectedItem);
|
||||||
|
|
||||||
|
|||||||
@@ -73,7 +73,7 @@ public static class MainConfiguration
|
|||||||
//new CommandBindingConfiguration(ConfigCommand.PinFavorite, new[] { Key.F, Key.P }),
|
//new CommandBindingConfiguration(ConfigCommand.PinFavorite, new[] { Key.F, Key.P }),
|
||||||
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineBlock, Key.H ),
|
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineBlock, Key.H ),
|
||||||
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineCommand, Key.K ),
|
//new CommandBindingConfiguration(ConfigCommand.PreviousTimelineCommand, Key.K ),
|
||||||
//new CommandBindingConfiguration(ConfigCommand.Refresh, Key.R),
|
new CommandBindingConfiguration(RefreshCommand.CommandName, Key.R),
|
||||||
//new CommandBindingConfiguration(ConfigCommand.Rename, Key.F2),
|
//new CommandBindingConfiguration(ConfigCommand.Rename, Key.F2),
|
||||||
//new CommandBindingConfiguration(ConfigCommand.Rename, new[] { Key.C, Key.W }),
|
//new CommandBindingConfiguration(ConfigCommand.Rename, new[] { Key.C, Key.W }),
|
||||||
//new CommandBindingConfiguration(ConfigCommand.RunCommand, new KeyConfig(Key.D4, shift: true)),
|
//new CommandBindingConfiguration(ConfigCommand.RunCommand, new KeyConfig(Key.D4, shift: true)),
|
||||||
|
|||||||
Reference in New Issue
Block a user