diff --git a/Toolkit b/Toolkit index 38e2913..d87fa37 160000 --- a/Toolkit +++ b/Toolkit @@ -1 +1 @@ -Subproject commit 38e2913cabdae51844b5dad57bdeca274ffd6320 +Subproject commit d87fa37d094a7761ee828715218215500cb69b8e diff --git a/Wallet.Avalonia/CreateItemNavigationView.axaml b/Wallet.Avalonia/CreateItemNavigationView.axaml index 4b43bf6..db2674a 100644 --- a/Wallet.Avalonia/CreateItemNavigationView.axaml +++ b/Wallet.Avalonia/CreateItemNavigationView.axaml @@ -5,6 +5,7 @@ xmlns:vm="using:Wallet" x:DataType="vm:CreateItemNavigationViewModel" Content="New Item" + IsSelected="False" NavigationViewExtension.IsItemInvokedEnabled="True" SelectsOnInvoked="False"> diff --git a/Wallet.Avalonia/MainView.axaml b/Wallet.Avalonia/MainView.axaml index 3d9ff7d..363fa14 100644 --- a/Wallet.Avalonia/MainView.axaml +++ b/Wallet.Avalonia/MainView.axaml @@ -10,7 +10,27 @@ FooterMenuItemsSource="{Binding Footer}" IsSettingsVisible="False" MenuItemTemplate="{Binding Template}" + MenuItemsSource="{Binding}" SelectedItem="{Binding SelectedItem}"> + + + + + + + + + + @@ -36,48 +56,6 @@ - - diff --git a/Wallet/CreateItemNavigationViewModel.cs b/Wallet/CreateItemNavigationViewModel.cs index 280fe5f..4d52350 100644 --- a/Wallet/CreateItemNavigationViewModel.cs +++ b/Wallet/CreateItemNavigationViewModel.cs @@ -10,7 +10,7 @@ public partial class CreateItemNavigationViewModel(IServiceProvider provider, ISubscriber subscriber, IDisposer disposer, NamedComponent named) : Observable(provider, factory, mediator, publisher, subscriber, disposer), - IWalletNavigationViewModel + INavigationViewModel { [ObservableProperty] private bool isSelected; diff --git a/Wallet/CreateWalletNavigationViewModel.cs b/Wallet/CreateWalletNavigationViewModel.cs index 8709519..3bbf066 100644 --- a/Wallet/CreateWalletNavigationViewModel.cs +++ b/Wallet/CreateWalletNavigationViewModel.cs @@ -9,4 +9,4 @@ public partial class CreateWalletNavigationViewModel(IServiceProvider provider, ISubscriber subscriber, IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer), - IMainNavigationViewModel; \ No newline at end of file + INavigationViewModel; \ No newline at end of file diff --git a/Wallet/FilterNavigationViewModel.cs b/Wallet/FilterNavigationViewModel.cs index 55ff11d..21bfe1a 100644 --- a/Wallet/FilterNavigationViewModel.cs +++ b/Wallet/FilterNavigationViewModel.cs @@ -12,8 +12,8 @@ public abstract partial class FilterNavigationViewModel(IServiceProvider provide IDisposer disposer, int key, string value) : - ObservableCollection(provider, factory, mediator, publisher, subscriber, disposer, key, value), - IWalletNavigationViewModel, + ObservableCollection(provider, factory, mediator, publisher, subscriber, disposer, key, value), + INavigationViewModel, INotificationHandler>, INotificationHandler>, INotificationHandler>> @@ -38,6 +38,7 @@ public abstract partial class FilterNavigationViewModel(IServiceProvider provide { IsSelected = false; IsActivated = false; + return Task.CompletedTask; } @@ -58,11 +59,11 @@ public abstract partial class FilterNavigationViewModel(IServ int key, string value) : ObservableCollection(provider, factory, mediator, publisher, subscriber, disposer, key, value), - IWalletNavigationViewModel, + INavigationViewModel, INotificationHandler>, INotificationHandler> where TWalletNavigation : - IWalletNavigationViewModel + INavigationViewModel { [ObservableProperty] private bool isActivated; @@ -74,6 +75,7 @@ public abstract partial class FilterNavigationViewModel(IServ { IsSelected = false; IsActivated = false; + return Task.CompletedTask; } diff --git a/Wallet/FooterViewModel.cs b/Wallet/FooterViewModel.cs index b5050a3..7859170 100644 --- a/Wallet/FooterViewModel.cs +++ b/Wallet/FooterViewModel.cs @@ -3,7 +3,7 @@ namespace Wallet; public partial class FooterViewModel : - ObservableCollection + ObservableCollection { public FooterViewModel(IServiceProvider provider, IServiceFactory factory, diff --git a/Wallet/IMainNavigationViewModel.cs b/Wallet/IMainNavigationViewModel.cs deleted file mode 100644 index 2b507e2..0000000 --- a/Wallet/IMainNavigationViewModel.cs +++ /dev/null @@ -1,3 +0,0 @@ -namespace Wallet; - -public interface IMainNavigationViewModel : IDisposable; \ No newline at end of file diff --git a/Wallet/INavigationViewModel.cs b/Wallet/INavigationViewModel.cs new file mode 100644 index 0000000..3572f36 --- /dev/null +++ b/Wallet/INavigationViewModel.cs @@ -0,0 +1,4 @@ +namespace Wallet; + +public interface INavigationViewModel : + IDisposable; \ No newline at end of file diff --git a/Wallet/IWalletNavigationViewModel.cs b/Wallet/IWalletNavigationViewModel.cs index e751608..9034ce0 100644 --- a/Wallet/IWalletNavigationViewModel.cs +++ b/Wallet/IWalletNavigationViewModel.cs @@ -1,7 +1,7 @@ -using Toolkit.Foundation; +using Avalonia.Controls; namespace Wallet; public interface IWalletNavigationViewModel : ISelectable, - IDisposable; \ No newline at end of file + INavigationViewModel; \ No newline at end of file diff --git a/Wallet/ItemCommandHeaderViewModel.cs b/Wallet/ItemCommandHeaderViewModel.cs index 284c84b..33c93f4 100644 --- a/Wallet/ItemCommandHeaderViewModel.cs +++ b/Wallet/ItemCommandHeaderViewModel.cs @@ -18,7 +18,7 @@ public partial class ItemCommandHeaderViewModel(IServiceProvider provider, { if (args.Sender is ItemCommandHeaderCollection commandCollection) { - Clear(args => + Reset(args => { foreach (IDisposable command in commandCollection) { diff --git a/Wallet/MainViewModel.cs b/Wallet/MainViewModel.cs index 81c0900..9af620d 100644 --- a/Wallet/MainViewModel.cs +++ b/Wallet/MainViewModel.cs @@ -4,7 +4,7 @@ using Toolkit.Foundation; namespace Wallet; public partial class MainViewModel : - ObservableCollection, + ObservableCollection, INotificationHandler> { [ObservableProperty] @@ -27,9 +27,14 @@ public partial class MainViewModel : public Task Handle(SelectionEventArgs args) { - if (args.Sender is not null) + if (args.Sender is WalletNavigationViewModel wallet) { - SelectedItem = null; + Reset(args => args.SetSource(wallet), false); + SelectedItem = wallet; + } + else + { + Clear(false); } return Task.CompletedTask; diff --git a/Wallet/ManageNavigationViewModel.cs b/Wallet/ManageNavigationViewModel.cs index 66ed40d..01ea29d 100644 --- a/Wallet/ManageNavigationViewModel.cs +++ b/Wallet/ManageNavigationViewModel.cs @@ -10,7 +10,7 @@ public partial class ManageNavigationViewModel(IServiceProvider provider, ISubscriber subscriber, IDisposer disposer) : Observable(provider, factory, mediator, publisher, subscriber, disposer), - IMainNavigationViewModel, + INavigationViewModel, ISelectable { [ObservableProperty] diff --git a/Wallet/ManageViewModel.cs b/Wallet/ManageViewModel.cs index 7686f33..88b2479 100644 --- a/Wallet/ManageViewModel.cs +++ b/Wallet/ManageViewModel.cs @@ -4,7 +4,7 @@ namespace Wallet; public partial class ManageViewModel : ObservableCollection, - IMainNavigationViewModel + INavigationViewModel { public ManageViewModel(IServiceProvider provider, IServiceFactory factory, diff --git a/Wallet/OpenWalletViewModel.cs b/Wallet/OpenWalletViewModel.cs index 9948582..ec78db2 100644 --- a/Wallet/OpenWalletViewModel.cs +++ b/Wallet/OpenWalletViewModel.cs @@ -50,17 +50,4 @@ public partial class OpenWalletViewModel : } } } - - - //public override async Task OnActivated() - //{ - // Publisher.Publish(Activated.As()); - // await base.OnActivated(); - //} - - //public override async Task OnDeactivated() - //{ - // Publisher.Publish(Deactivated.As()); - // await base.OnDeactivated(); - //} } \ No newline at end of file diff --git a/Wallet/WalletNavigationCollectionViewModel.cs b/Wallet/WalletNavigationCollectionViewModel.cs index e5e19d4..f7ca0b3 100644 --- a/Wallet/WalletNavigationCollectionViewModel.cs +++ b/Wallet/WalletNavigationCollectionViewModel.cs @@ -6,7 +6,7 @@ namespace Wallet; [Notification(typeof(InsertEventArgs), nameof(WalletNavigationCollectionViewModel))] public partial class WalletNavigationCollectionViewModel : ObservableCollection, - INotificationHandler> + INotificationHandler> { public WalletNavigationCollectionViewModel(IServiceProvider provider, IServiceFactory factory, @@ -21,9 +21,9 @@ public partial class WalletNavigationCollectionViewModel : public IContentTemplate Template { get; set; } - public Task Handle(SelectionEventArgs args) + public Task Handle(SelectionEventArgs args) { - if (args.Sender is not null) + if (args.Sender is ManageNavigationViewModel) { SelectedItem = null; } diff --git a/Wallet/WalletNavigationViewModel.cs b/Wallet/WalletNavigationViewModel.cs index 72c6f76..50dbc78 100644 --- a/Wallet/WalletNavigationViewModel.cs +++ b/Wallet/WalletNavigationViewModel.cs @@ -5,7 +5,7 @@ using Toolkit.Foundation; namespace Wallet; public partial class WalletNavigationViewModel : - ObservableCollection, + ObservableCollection, IWalletNavigationViewModel, INotificationHandler>, INotificationHandler>, @@ -52,14 +52,13 @@ public partial class WalletNavigationViewModel : public Task Handle(OpenedEventArgs args) { - //Add(); - //Add("All", 0); - //Add("Favourites", 0); - //Add("Archive", 0); - //Add("Categories", 0); + Add(); + Add("All", 0); + Add("Favourites", 0); + Add("Archive", 0); + Add("Categories", 0); IsOpened = true; - Publisher.Publish(Changed.As()); return Task.CompletedTask; }