From 3cc0631079b3702e843b028dcbe62c9db0d35f87 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Thu, 30 May 2024 20:02:34 +0100 Subject: [PATCH] Ensure a locker is selected in first load --- Bitvault.Avalonia/CreateItemActionView.axaml | 2 +- .../EmptyItemCollectionView.axaml | 2 +- Bitvault.Avalonia/ItemNavigationView.axaml | 8 +++--- Bitvault.Avalonia/ItemView.axaml | 4 +-- Bitvault.Avalonia/LockerNavigationView.axaml | 27 ++++++++++++++++--- Bitvault.Avalonia/MainView.axaml | 4 ++- Bitvault/AggerateMainViewModelHandler.cs | 5 +++- Bitvault/ItemViewModel.cs | 7 ++--- Bitvault/LockerNavigationViewModel.cs | 7 +++-- 9 files changed, 49 insertions(+), 17 deletions(-) diff --git a/Bitvault.Avalonia/CreateItemActionView.axaml b/Bitvault.Avalonia/CreateItemActionView.axaml index 1dc01b5..80f8182 100644 --- a/Bitvault.Avalonia/CreateItemActionView.axaml +++ b/Bitvault.Avalonia/CreateItemActionView.axaml @@ -36,7 +36,7 @@ Region="{Binding Named, StringFormat='{}{0}:Content'}" Route="Item" Scope="self"> - + diff --git a/Bitvault.Avalonia/EmptyItemCollectionView.axaml b/Bitvault.Avalonia/EmptyItemCollectionView.axaml index 86ab3e2..57cca31 100644 --- a/Bitvault.Avalonia/EmptyItemCollectionView.axaml +++ b/Bitvault.Avalonia/EmptyItemCollectionView.axaml @@ -20,7 +20,7 @@ Region="{Binding Named, StringFormat='{}{0}:Content'}" Route="Item" Scope="self"> - + diff --git a/Bitvault.Avalonia/ItemNavigationView.axaml b/Bitvault.Avalonia/ItemNavigationView.axaml index c5beef6..f7436db 100644 --- a/Bitvault.Avalonia/ItemNavigationView.axaml +++ b/Bitvault.Avalonia/ItemNavigationView.axaml @@ -19,10 +19,11 @@ Region="{Binding Named, StringFormat='{}{0}:Content'}" Route="Item" Scope="self"> + - + @@ -31,10 +32,11 @@ Region="{Binding Named, StringFormat='{}{0}:Content'}" Route="Item" Scope="self"> + - - + + diff --git a/Bitvault.Avalonia/ItemView.axaml b/Bitvault.Avalonia/ItemView.axaml index 0a8b2ae..fe7871a 100644 --- a/Bitvault.Avalonia/ItemView.axaml +++ b/Bitvault.Avalonia/ItemView.axaml @@ -18,7 +18,7 @@ - + @@ -32,7 +32,7 @@ Region="{Binding Named, StringFormat='{}{0}:Content'}" Route="Item" Scope="self"> - + diff --git a/Bitvault.Avalonia/LockerNavigationView.axaml b/Bitvault.Avalonia/LockerNavigationView.axaml index 18a4b1f..3389571 100644 --- a/Bitvault.Avalonia/LockerNavigationView.axaml +++ b/Bitvault.Avalonia/LockerNavigationView.axaml @@ -7,7 +7,6 @@ x:DataType="vm:LockerNavigationViewModel" Content="{Binding Name}" IsExpanded="{Binding Expanded}" - IsSelected="{Binding Selected}" MenuItemsSource="{Binding}" NavigationViewItemExtension.IsItemClickEnabled="True" SelectsOnInvoked="True"> @@ -16,7 +15,7 @@ - + @@ -32,7 +31,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Bitvault.Avalonia/MainView.axaml b/Bitvault.Avalonia/MainView.axaml index 414079c..fa4e6aa 100644 --- a/Bitvault.Avalonia/MainView.axaml +++ b/Bitvault.Avalonia/MainView.axaml @@ -7,7 +7,9 @@ + MenuItemsSource="{Binding}" + SelectedItem="{Binding SelectedItem}" + SelectionFollowsFocus="True"> 0 1,0,0,0 diff --git a/Bitvault/AggerateMainViewModelHandler.cs b/Bitvault/AggerateMainViewModelHandler.cs index b0cee6c..1a45410 100644 --- a/Bitvault/AggerateMainViewModelHandler.cs +++ b/Bitvault/AggerateMainViewModelHandler.cs @@ -9,6 +9,7 @@ public class AggerateMainViewModelHandler(IPublisher publisher, { public Task Handle(AggerateEventArgs args) { + bool selected = true; foreach (IComponentHost locker in lockers.OrderBy(x => x.Services.GetRequiredService>() is IConfigurationDescriptor descriptor ? descriptor.Name : null)) { @@ -16,10 +17,12 @@ public class AggerateMainViewModelHandler(IPublisher publisher, { if (locker.Services.GetRequiredService() is IServiceFactory factory) { - if (factory.Create(descriptor.Name) is LockerNavigationViewModel viewModel) + if (factory.Create(descriptor.Name, selected) is LockerNavigationViewModel viewModel) { publisher.Publish(Create.As(viewModel), nameof(MainViewModel)); + + selected = false; } } } diff --git a/Bitvault/ItemViewModel.cs b/Bitvault/ItemViewModel.cs index d5968fc..1a74c6f 100644 --- a/Bitvault/ItemViewModel.cs +++ b/Bitvault/ItemViewModel.cs @@ -26,7 +26,8 @@ public partial class ItemViewModel : private string name; [ObservableProperty] - private bool test; + private bool fromCategory; + public ItemViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, @@ -36,12 +37,12 @@ public partial class ItemViewModel : IContentTemplate template, NamedComponent named, ItemState state = ItemState.Read, - bool test = false, + bool fromCategory = false, string name = "", bool favourite = false, bool archived = false) : base(provider, factory, mediator, publisher, subscriber, disposer) { - Test = test; + FromCategory = fromCategory; Named = $"{named}"; Template = template; State = state; diff --git a/Bitvault/LockerNavigationViewModel.cs b/Bitvault/LockerNavigationViewModel.cs index 0b2fb79..bb19ce8 100644 --- a/Bitvault/LockerNavigationViewModel.cs +++ b/Bitvault/LockerNavigationViewModel.cs @@ -9,7 +9,8 @@ public partial class LockerNavigationViewModel : INotificationHandler>, INotificationHandler>, INotificationHandler>, - INotificationHandler> + INotificationHandler>, + ISelectable { [ObservableProperty] private bool activated; @@ -33,10 +34,12 @@ public partial class LockerNavigationViewModel : ISubscription subscriber, IDisposer disposer, IContentTemplate template, - string name) : base(provider, factory, mediator, publisher, subscriber, disposer) + string name, + bool selected) : base(provider, factory, mediator, publisher, subscriber, disposer) { Template = template; Name = name; + Selected = selected; } public IContentTemplate Template { get; set; }