Add KeyBindingBehavior

This commit is contained in:
TheXamlGuy
2024-04-22 22:30:57 +01:00
parent 3e0798f867
commit 79735be033
11 changed files with 82 additions and 72 deletions
@@ -7,4 +7,11 @@ public class LockViewModel(IServiceProvider serviceProvider,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer) :
ObservableViewModel(serviceProvider, serviceFactory, publisher, subscriber, disposer);
ObservableViewModel(serviceProvider, serviceFactory, publisher, subscriber, disposer),
IConfirmation
{
public Task<bool> Confirm()
{
return Task.FromResult(false);
}
}
+4 -2
View File
@@ -1,3 +1,5 @@
namespace Bitvault;
using Toolkit.Foundation;
public record Locked;
namespace Bitvault;
public record Locked : INotification;
+4 -2
View File
@@ -1,3 +1,5 @@
namespace Bitvault;
using Toolkit.Foundation;
public record Unlocked;
namespace Bitvault;
public record Unlocked : INotification;
+10 -6
View File
@@ -5,12 +5,13 @@ namespace Bitvault;
public class VaultComponentsInitializer(IServiceProvider provider,
IProxyServiceCollection<IComponentBuilder> proxy,
IEnumerable<IConfiguration<VaultConfiguration>> configurations,
IEnumerable<IConfigurationDescriptor<VaultConfiguration>> configurations,
IComponentScopeCollection scopes,
IVaultHostCollection vaults) : IInitializer
{
public Task Initialize()
public async Task Initialize()
{
foreach (IConfiguration<VaultConfiguration> configuration in configurations)
foreach (IConfigurationDescriptor<VaultConfiguration> configuration in configurations)
{
if (provider.GetRequiredService<IVaultComponent>() is IVaultComponent component)
{
@@ -36,16 +37,19 @@ public class VaultComponentsInitializer(IServiceProvider provider,
provider.GetRequiredService<IComponentScopeProvider>());
services.AddRange(proxy.Services);
services.AddSingleton(new ComponentScope(configuration.Section));
});
builder.AddConfiguration(configuration.Section, configuration.Value);
IComponentHost host = builder.Build();
host.StartAsync();
scopes.Add(new ComponentScopeDescriptor(configuration.Section,
host.Services.GetRequiredService<IServiceProvider>()));
vaults.Add(host);
await host.StartAsync();
}
}
return Task.CompletedTask;
}
}
+27 -3
View File
@@ -5,13 +5,18 @@ namespace Bitvault;
public partial class VaultNavigationViewModel :
ObservableCollectionViewModel<IMainNavigationViewModel>,
IMainNavigationViewModel
IMainNavigationViewModel,
INotificationHandler<Unlocked>,
INotificationHandler<Locked>
{
[ObservableProperty]
private bool locked;
[ObservableProperty]
private string name;
public VaultNavigationViewModel(IServiceProvider serviceProvider,
IServiceFactory serviceFactory,
IServiceFactory serviceFactory,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer,
@@ -21,11 +26,30 @@ public partial class VaultNavigationViewModel :
Template = template;
Name = name;
}
public IContentTemplate Template { get; set; }
public Task Handle(Unlocked args, CancellationToken cancellationToken = default)
{
Locked = true;
Add<AllNavigationViewModel>();
Add<StarredNavigationViewModel>();
Add<ArchiveNavigationViewModel>();
Add<CategoriesNavigationViewModel>();
return Task.CompletedTask;
}
public IContentTemplate Template { get; set; }
public Task Handle(Locked args, CancellationToken cancellationToken = default)
{
Locked = true;
Clear();
return Task.CompletedTask;
}
}