diff --git a/Bitvault.Avalonia/AllNavigationView.axaml b/Bitvault.Avalonia/AllNavigationView.axaml index 3ad6c08..b534f07 100644 --- a/Bitvault.Avalonia/AllNavigationView.axaml +++ b/Bitvault.Avalonia/AllNavigationView.axaml @@ -27,6 +27,7 @@ + diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs index e57e8b2..9148021 100644 --- a/Bitvault.Avalonia/App.axaml.cs +++ b/Bitvault.Avalonia/App.axaml.cs @@ -105,10 +105,11 @@ public partial class App : Application services.AddTemplate("ContentItemCollection"); services.AddHandler(); - services.AddTemplate(); services.AddTemplate("LockerHeader"); - + services.AddTemplate(); services.AddTemplate(); + services.AddTemplate(); + services.AddTemplate("LockerItemCategoryCollection"); services.AddTemplate(); @@ -116,6 +117,7 @@ public partial class App : Application services.AddTemplate(); services.AddTemplate("Item"); + services.AddHandler(); services.AddTemplate("ItemCommandHeader"); diff --git a/Bitvault.Avalonia/ArchiveNavigationView.axaml b/Bitvault.Avalonia/ArchiveNavigationView.axaml index 2670afb..2d922f0 100644 --- a/Bitvault.Avalonia/ArchiveNavigationView.axaml +++ b/Bitvault.Avalonia/ArchiveNavigationView.axaml @@ -27,6 +27,7 @@ + diff --git a/Bitvault.Avalonia/BackActionView.axaml b/Bitvault.Avalonia/BackActionView.axaml new file mode 100644 index 0000000..a6ab3e6 --- /dev/null +++ b/Bitvault.Avalonia/BackActionView.axaml @@ -0,0 +1,42 @@ + + + + 40 + 36 + + + + 0 + + + + + + + + + + + + diff --git a/Bitvault.Avalonia/BackActionView.axaml.cs b/Bitvault.Avalonia/BackActionView.axaml.cs new file mode 100644 index 0000000..0441f4d --- /dev/null +++ b/Bitvault.Avalonia/BackActionView.axaml.cs @@ -0,0 +1,9 @@ +using Avalonia.Controls; + +namespace Bitvault.Avalonia; + +public partial class BackActionView : UserControl +{ + public BackActionView() => + InitializeComponent(); +} diff --git a/Bitvault.Avalonia/CreateItemActionView.axaml b/Bitvault.Avalonia/CreateItemActionView.axaml index c8740f6..0ed4660 100644 --- a/Bitvault.Avalonia/CreateItemActionView.axaml +++ b/Bitvault.Avalonia/CreateItemActionView.axaml @@ -30,6 +30,7 @@ + diff --git a/Bitvault.Avalonia/ItemCategoryNavigationView.axaml b/Bitvault.Avalonia/ItemCategoryNavigationView.axaml index 397e0cd..581458f 100644 --- a/Bitvault.Avalonia/ItemCategoryNavigationView.axaml +++ b/Bitvault.Avalonia/ItemCategoryNavigationView.axaml @@ -4,4 +4,31 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="using:Bitvault" x:DataType="vm:ItemCategoryNavigationViewModel" - Content="{Binding Name}" /> + Content="{Binding Name}" + IsSelected="{Binding Selected, Mode=TwoWay}"> + + + + + + + + + + + + + + + + + + + + diff --git a/Bitvault.Avalonia/ItemCategoryNavigationView.axaml.cs b/Bitvault.Avalonia/ItemCategoryNavigationView.axaml.cs index 20aace9..90e45b8 100644 --- a/Bitvault.Avalonia/ItemCategoryNavigationView.axaml.cs +++ b/Bitvault.Avalonia/ItemCategoryNavigationView.axaml.cs @@ -2,7 +2,7 @@ using Avalonia.Controls; namespace Bitvault.Avalonia; -public partial class ItemCategoryNavigationView : UserControl +public partial class ItemCategoryNavigationView : ListBoxItem { public ItemCategoryNavigationView() => InitializeComponent(); diff --git a/Bitvault.Avalonia/LockerView.axaml b/Bitvault.Avalonia/LockerView.axaml index 9660115..e62c6c6 100644 --- a/Bitvault.Avalonia/LockerView.axaml +++ b/Bitvault.Avalonia/LockerView.axaml @@ -13,7 +13,7 @@ Grid.Row="0" Grid.ColumnSpan="3" Height="44" - Margin="8,0,0,0"> + Margin="4,2,0,0"> diff --git a/Bitvault.Avalonia/StarredNavigationView.axaml b/Bitvault.Avalonia/StarredNavigationView.axaml index c4e6e4b..e4ecb63 100644 --- a/Bitvault.Avalonia/StarredNavigationView.axaml +++ b/Bitvault.Avalonia/StarredNavigationView.axaml @@ -27,6 +27,7 @@ + diff --git a/Bitvault/BackActionViewModel.cs b/Bitvault/BackActionViewModel.cs new file mode 100644 index 0000000..4ff4030 --- /dev/null +++ b/Bitvault/BackActionViewModel.cs @@ -0,0 +1,20 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using CommunityToolkit.Mvvm.Input; +using Toolkit.Foundation; + +namespace Bitvault; + +public partial class BackActionViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscription subscriber, + IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) +{ + [ObservableProperty] + private int index = 0; + + [RelayCommand] + public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), + nameof(ItemCollectionViewModel)); +} \ No newline at end of file diff --git a/Bitvault/ItemCategoryCollectionViewModel.cs b/Bitvault/ItemCategoryCollectionViewModel.cs index 1ae47c3..60b8289 100644 --- a/Bitvault/ItemCategoryCollectionViewModel.cs +++ b/Bitvault/ItemCategoryCollectionViewModel.cs @@ -19,7 +19,7 @@ public partial class ItemCategoryCollectionViewModel(IServiceProvider provider, { Publisher.Publish(Notify.As(Factory.Create(new List { - + Factory.Create(), }))); return base.OnActivated(); diff --git a/Bitvault/ItemCategoryNavigationViewModel.cs b/Bitvault/ItemCategoryNavigationViewModel.cs index e40ebec..5040f2d 100644 --- a/Bitvault/ItemCategoryNavigationViewModel.cs +++ b/Bitvault/ItemCategoryNavigationViewModel.cs @@ -9,9 +9,20 @@ public partial class ItemCategoryNavigationViewModel(IServiceProvider provider, IPublisher publisher, ISubscription subscriber, IDisposer disposer, - string name) : - Observable(provider, factory, mediator, publisher, subscriber, disposer) + NamedComponent named, + string name, + bool selected = false) : + Observable(provider, factory, mediator, publisher, subscriber, disposer), + ISelectable, + IRemovable { [ObservableProperty] private string name = name; + + [ObservableProperty] + private string named = $"{named}"; + + [ObservableProperty] + private bool selected = selected; + } diff --git a/Bitvault/ItemCollectionViewModel.cs b/Bitvault/ItemCollectionViewModel.cs index 04e9d28..d6cb474 100644 --- a/Bitvault/ItemCollectionViewModel.cs +++ b/Bitvault/ItemCollectionViewModel.cs @@ -6,7 +6,8 @@ namespace Bitvault; public partial class ItemCollectionViewModel : ObservableCollection, INotificationHandler>, - INotificationHandler> + INotificationHandler>, + IBackStack { private LockerViewModelConfiguration configuration; diff --git a/Bitvault/SearchLockerActionViewModel.cs b/Bitvault/SearchLockerActionViewModel.cs index 67a29f9..de8785b 100644 --- a/Bitvault/SearchLockerActionViewModel.cs +++ b/Bitvault/SearchLockerActionViewModel.cs @@ -14,21 +14,6 @@ public partial class SearchLockerActionViewModel(IServiceProvider provider, [ObservableProperty] private int index = 2; - [RelayCommand] - public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), - nameof(ItemCollectionViewModel)); -} - -public partial class BackContainerActionViewModel(IServiceProvider provider, - IServiceFactory factory, - IMediator mediator, - IPublisher publisher, - ISubscription subscriber, - IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer) -{ - [ObservableProperty] - private int index = 2; - [RelayCommand] public void Invoke() => Publisher.Publish(Notify.As(new Search(Value)), nameof(ItemCollectionViewModel));