diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs index 36e8649..38f6669 100644 --- a/Bitvault.Avalonia/App.axaml.cs +++ b/Bitvault.Avalonia/App.axaml.cs @@ -93,7 +93,7 @@ public partial class App : Application services.AddTemplate(); services.AddTemplate(); - services.AddTemplate("OpenLocker"); + services.AddTemplate("OpenLocker"); services.AddScoped(); @@ -106,7 +106,7 @@ public partial class App : Application services.AddTemplate(); services.AddTemplate(); - services.AddTemplate("LockerItemCategoryCollection"); + services.AddTemplate("ItemCategoryCollection"); services.AddTemplate(); services.AddHandler(); @@ -126,6 +126,7 @@ public partial class App : Application services.AddTemplate(); services.AddTemplate(); + services.AddTemplate("EmptyItemCollection"); services.AddTemplate(); services.AddTemplate(); services.AddTemplate(); diff --git a/Bitvault.Avalonia/Bitvault.Avalonia.csproj b/Bitvault.Avalonia/Bitvault.Avalonia.csproj index 9329463..c57ae07 100644 --- a/Bitvault.Avalonia/Bitvault.Avalonia.csproj +++ b/Bitvault.Avalonia/Bitvault.Avalonia.csproj @@ -76,8 +76,8 @@ ItemContentView.axaml - - OpenView.axaml + + OpenLockerView.axaml ManageNavigationView.axaml diff --git a/Bitvault.Avalonia/CreateItemActionView.axaml b/Bitvault.Avalonia/CreateItemActionView.axaml index 88045ee..1dc01b5 100644 --- a/Bitvault.Avalonia/CreateItemActionView.axaml +++ b/Bitvault.Avalonia/CreateItemActionView.axaml @@ -28,7 +28,7 @@ - + diff --git a/Bitvault.Avalonia/EmptyItemCollectionView.axaml b/Bitvault.Avalonia/EmptyItemCollectionView.axaml new file mode 100644 index 0000000..86ab3e2 --- /dev/null +++ b/Bitvault.Avalonia/EmptyItemCollectionView.axaml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Bitvault.Avalonia/EmptyItemCollectionView.axaml.cs b/Bitvault.Avalonia/EmptyItemCollectionView.axaml.cs new file mode 100644 index 0000000..6519bc0 --- /dev/null +++ b/Bitvault.Avalonia/EmptyItemCollectionView.axaml.cs @@ -0,0 +1,10 @@ +using Avalonia.Controls; + +namespace Bitvault.Avalonia; + +public partial class EmptyItemCollectionView : + UserControl +{ + public EmptyItemCollectionView() => + InitializeComponent(); +} diff --git a/Bitvault.Avalonia/ItemCollectionView.axaml b/Bitvault.Avalonia/ItemCollectionView.axaml index 4536710..6afd77e 100644 --- a/Bitvault.Avalonia/ItemCollectionView.axaml +++ b/Bitvault.Avalonia/ItemCollectionView.axaml @@ -4,11 +4,32 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="using:Bitvault" x:DataType="vm:ItemCollectionViewModel"> + + + + + + + + + + + + + + + diff --git a/Bitvault.Avalonia/ItemHeaderView.axaml b/Bitvault.Avalonia/ItemHeaderView.axaml index 2eb2c8f..d1b28aa 100644 --- a/Bitvault.Avalonia/ItemHeaderView.axaml +++ b/Bitvault.Avalonia/ItemHeaderView.axaml @@ -4,10 +4,10 @@ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:vm="using:Bitvault" x:DataType="vm:ItemHeaderViewModel"> - + + + + + + + diff --git a/Bitvault.Avalonia/LockerNavigationView.axaml b/Bitvault.Avalonia/LockerNavigationView.axaml index ef80b85..18a4b1f 100644 --- a/Bitvault.Avalonia/LockerNavigationView.axaml +++ b/Bitvault.Avalonia/LockerNavigationView.axaml @@ -19,7 +19,9 @@ - + + + - + + + diff --git a/Bitvault.Avalonia/OpenView.axaml b/Bitvault.Avalonia/OpenLockerView.axaml similarity index 56% rename from Bitvault.Avalonia/OpenView.axaml rename to Bitvault.Avalonia/OpenLockerView.axaml index 0cb027a..38b64f5 100644 --- a/Bitvault.Avalonia/OpenView.axaml +++ b/Bitvault.Avalonia/OpenLockerView.axaml @@ -1,12 +1,24 @@ - + + + diff --git a/Bitvault.Avalonia/OpenLockerView.axaml.cs b/Bitvault.Avalonia/OpenLockerView.axaml.cs new file mode 100644 index 0000000..da24bf9 --- /dev/null +++ b/Bitvault.Avalonia/OpenLockerView.axaml.cs @@ -0,0 +1,9 @@ +using Avalonia.Controls; + +namespace Bitvault.Avalonia; + +public partial class OpenLockerView : UserControl +{ + public OpenLockerView() => + InitializeComponent(); +} \ No newline at end of file diff --git a/Bitvault.Avalonia/OpenView.axaml.cs b/Bitvault.Avalonia/OpenView.axaml.cs deleted file mode 100644 index 11adcbf..0000000 --- a/Bitvault.Avalonia/OpenView.axaml.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Avalonia.Controls; - -namespace Bitvault.Avalonia; - -public partial class OpenView : UserControl -{ - public OpenView() => InitializeComponent(); -} \ No newline at end of file diff --git a/Bitvault/EmptyItemCollectionViewModel.cs b/Bitvault/EmptyItemCollectionViewModel.cs new file mode 100644 index 0000000..005c023 --- /dev/null +++ b/Bitvault/EmptyItemCollectionViewModel.cs @@ -0,0 +1,16 @@ +using CommunityToolkit.Mvvm.ComponentModel; +using Toolkit.Foundation; + +namespace Bitvault; + +public partial class EmptyItemCollectionViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscription subscriber, + IDisposer disposer, + NamedComponent named) : Observable(provider, factory, mediator, publisher, subscriber, disposer) +{ + [ObservableProperty] + private string named = $"{named}"; +} diff --git a/Bitvault/ItemCollectionViewModel.cs b/Bitvault/ItemCollectionViewModel.cs index b4c65f6..67bdc63 100644 --- a/Bitvault/ItemCollectionViewModel.cs +++ b/Bitvault/ItemCollectionViewModel.cs @@ -10,6 +10,9 @@ public partial class ItemCollectionViewModel : INotificationHandler>, IBackStack { + [ObservableProperty] + public string? named; + private LockerViewModelConfiguration configuration; public ItemCollectionViewModel(IServiceProvider provider, @@ -19,20 +22,18 @@ public partial class ItemCollectionViewModel : ISubscription subscriber, IDisposer disposer, IContentTemplate template, + NamedComponent named, LockerViewModelConfiguration configuration, string? filter = null) : base(provider, factory, mediator, publisher, subscriber, disposer) { Template = template; + Named = $"{named}"; + this.configuration = configuration with { Filter = filter }; } public IContentTemplate Template { get; set; } - public override Task OnDeactivated() - { - return base.OnDeactivated(); - } - public Task Handle(NotifyEventArgs args) { if (args.Value is Filter filter) @@ -66,6 +67,10 @@ public partial class ItemCollectionViewModel : return base.OnActivated(); } + public override Task OnDeactivated() + { + return base.OnDeactivated(); + } protected override IAggerate OnAggerate(object? key) => Aggerate.With(configuration) with { Key = key }; diff --git a/Bitvault/ItemViewModel.cs b/Bitvault/ItemViewModel.cs index ab814cd..d5968fc 100644 --- a/Bitvault/ItemViewModel.cs +++ b/Bitvault/ItemViewModel.cs @@ -67,6 +67,11 @@ public partial class ItemViewModel : return Task.CompletedTask; } + public override void Dispose() + { + Publisher.Publish(Notify.As(Factory.Create(new List()))); + base.Dispose(); + } public Task Handle(CancelEventArgs args) { Publisher.Publish(Notify.As(Factory.Create(new List diff --git a/Bitvault/OpenLockerViewModel.cs b/Bitvault/OpenLockerViewModel.cs index 125499e..ea29cdd 100644 --- a/Bitvault/OpenLockerViewModel.cs +++ b/Bitvault/OpenLockerViewModel.cs @@ -9,9 +9,13 @@ public partial class OpenLockerViewModel(IServiceProvider provider, IMediator mediator, IPublisher publisher, ISubscription subscriber, - IDisposer disposer) : + IDisposer disposer, + string name) : Observable(provider, factory, mediator, publisher, subscriber, disposer) { + [ObservableProperty] + private string? name = name; + [ObservableProperty] private string? password;