break wallet navigation off into seperate view

This commit is contained in:
TheXamlGuy
2024-07-10 15:21:02 +01:00
parent 762c867eaa
commit bd51de3245
24 changed files with 298 additions and 236 deletions
@@ -3,8 +3,8 @@ using Toolkit.Foundation;
namespace Wallet;
[Notification(typeof(CreateEventArgs<ItemCategoryNavigationViewModel>), nameof(ItemCategoryCollectionViewModel))]
public partial class ItemCategoryCollectionViewModel(IServiceProvider provider,
[Notification(typeof(CreateEventArgs<ItemCategoryNavigationViewModel>), nameof(ItemCategoryNavigationCollectionViewModel))]
public partial class ItemCategoryNavigationCollectionViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
@@ -16,7 +16,7 @@ public class ItemCategoryViewModelActivatedHandler(IItemConfigurationCollection
configuration.Key, selected)
is ItemCategoryNavigationViewModel viewModel)
{
publisher.Publish(Create.As(viewModel), nameof(ItemCategoryCollectionViewModel));
publisher.Publish(Create.As(viewModel), nameof(ItemCategoryNavigationCollectionViewModel));
selected = false;
}
}
+1 -1
View File
@@ -29,7 +29,7 @@ public class ItemCreatedHandler(IServiceProvider serviceProvider,
decoratorService.Set(cachedItem);
publisher.Publish(Insert.As(index, viewModel),
nameof(ItemCollectionViewModel));
nameof(ItemNavigationCollectionViewModel));
}
}
+1 -1
View File
@@ -29,7 +29,7 @@ public class ItemModifiedHandler(IServiceProvider serviceProvider,
decoratorService.Set(newItem);
publisher.Publish(MoveTo.As<ItemNavigationViewModel>(oldIndex, newIndex),
nameof(ItemCollectionViewModel));
nameof(ItemNavigationCollectionViewModel));
}
}
@@ -1,6 +1,6 @@
namespace Wallet;
public record ItemCollectionConfiguration
public record ItemNavigationCollectionConfiguration
{
public string? Filter { get; set; } = "All";
@@ -3,11 +3,11 @@ using Toolkit.Foundation;
namespace Wallet;
[Notification(typeof(CreateEventArgs<ItemNavigationViewModel>), nameof(ItemCollectionViewModel))]
[Notification(typeof(InsertEventArgs<ItemNavigationViewModel>), nameof(ItemCollectionViewModel))]
[Notification(typeof(MoveToEventArgs<ItemNavigationViewModel>), nameof(ItemCollectionViewModel))]
[Notification(typeof(NotifyEventArgs<Search<string>>), nameof(ItemCollectionViewModel))]
public partial class ItemCollectionViewModel :
[Notification(typeof(CreateEventArgs<ItemNavigationViewModel>), nameof(ItemNavigationCollectionViewModel))]
[Notification(typeof(InsertEventArgs<ItemNavigationViewModel>), nameof(ItemNavigationCollectionViewModel))]
[Notification(typeof(MoveToEventArgs<ItemNavigationViewModel>), nameof(ItemNavigationCollectionViewModel))]
[Notification(typeof(NotifyEventArgs<Search<string>>), nameof(ItemNavigationCollectionViewModel))]
public partial class ItemNavigationCollectionViewModel :
ObservableCollection<ItemNavigationViewModel>,
INotificationHandler<NotifyEventArgs<Filter>>,
INotificationHandler<NotifyEventArgs<Search<string>>>,
@@ -16,9 +16,9 @@ public partial class ItemCollectionViewModel :
[ObservableProperty]
public string? named;
private ItemCollectionConfiguration configuration;
private ItemNavigationCollectionConfiguration configuration;
public ItemCollectionViewModel(IServiceProvider provider,
public ItemNavigationCollectionViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
@@ -26,7 +26,7 @@ public partial class ItemCollectionViewModel :
IDisposer disposer,
IContentTemplate template,
NamedComponent named,
ItemCollectionConfiguration configuration,
ItemNavigationCollectionConfiguration configuration,
string? filter = null) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
Template = template;
@@ -70,5 +70,5 @@ public partial class ItemCollectionViewModel :
}
protected override ActivationBuilder ActivationBuilder() =>
new(Activation.As<ItemNavigationViewModel, ItemCollectionConfiguration>(configuration));
new(Activation.As<ItemNavigationViewModel, ItemNavigationCollectionConfiguration>(configuration));
}
@@ -3,16 +3,16 @@ using Toolkit.Foundation;
namespace Wallet;
public class ItemCollectionViewModelActivatedHandler(IMediator mediator,
public class ItemNavigationCollectionViewModelActivatedHandler(IMediator mediator,
IServiceProvider serviceProvider,
ICache<Item<(Guid, string)>> cache,
IPublisher publisher) :
INotificationHandler<ActivationEventArgs<ItemNavigationViewModel, ItemCollectionConfiguration>>
INotificationHandler<ActivationEventArgs<ItemNavigationViewModel, ItemNavigationCollectionConfiguration>>
{
public async Task Handle(ActivationEventArgs<ItemNavigationViewModel,
ItemCollectionConfiguration> args)
ItemNavigationCollectionConfiguration> args)
{
if (args.Value is ItemCollectionConfiguration configuration)
if (args.Value is ItemNavigationCollectionConfiguration configuration)
{
cache.Clear();
bool selected = true;
@@ -40,7 +40,7 @@ public class ItemCollectionViewModelActivatedHandler(IMediator mediator,
decoratorService.Set(item);
cache.Add(item);
publisher.Publish(Create.As(viewModel), nameof(ItemCollectionViewModel));
publisher.Publish(Create.As(viewModel), nameof(ItemNavigationCollectionViewModel));
}
selected = false;
+13 -6
View File
@@ -1,14 +1,11 @@
using Avalonia.Xaml.Interactions.Core;
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.ComponentModel;
using Toolkit.Foundation;
namespace Wallet;
[Notification(typeof(CreateEventArgs<IMainNavigationViewModel>), nameof(MainViewModel))]
[Notification(typeof(InsertEventArgs<IMainNavigationViewModel>), nameof(MainViewModel))]
public partial class MainViewModel :
ObservableCollection<IMainNavigationViewModel>
ObservableCollection<IMainNavigationViewModel>,
INotificationHandler<SelectionEventArgs<IWalletNavigationViewModel>>
{
[ObservableProperty]
private FooterViewModel footer;
@@ -27,4 +24,14 @@ public partial class MainViewModel :
}
public IContentTemplate Template { get; set; }
public Task Handle(SelectionEventArgs<IWalletNavigationViewModel> args)
{
if (args.Sender is not null)
{
SelectedItem = null;
}
return Task.CompletedTask;
}
}
+1 -1
View File
@@ -16,5 +16,5 @@ public partial class SearchWalletActionViewModel(IServiceProvider provider,
[RelayCommand]
private void Invoke() => Publisher.Publish(Notify.As(new Search<string>(Value)),
nameof(ItemCollectionViewModel));
nameof(ItemNavigationCollectionViewModel));
}
+1 -1
View File
@@ -48,7 +48,7 @@ public class WalletActivatedHandler(IWalletHostCollection wallets,
descriptor.Name, profileImage?.Value, false)
is WalletNavigationViewModel viewModel)
{
publisher.Publish(Insert.As<IMainNavigationViewModel>(index, viewModel),
publisher.Publish(Insert.As<IWalletNavigationViewModel>(index, viewModel),
nameof(MainViewModel));
}
}
@@ -0,0 +1,33 @@
using Toolkit.Foundation;
namespace Wallet;
[Notification(typeof(CreateEventArgs<IWalletNavigationViewModel>), nameof(WalletNavigationCollectionViewModel))]
[Notification(typeof(InsertEventArgs<IWalletNavigationViewModel>), nameof(WalletNavigationCollectionViewModel))]
public partial class WalletNavigationCollectionViewModel :
ObservableCollection<IWalletNavigationViewModel>,
INotificationHandler<SelectionEventArgs<IMainNavigationViewModel>>
{
public WalletNavigationCollectionViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer,
IContentTemplate template) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
Template = template;
}
public IContentTemplate Template { get; set; }
public Task Handle(SelectionEventArgs<IMainNavigationViewModel> args)
{
if (args.Sender is not null)
{
SelectedItem = null;
}
return Task.CompletedTask;
}
}
@@ -3,11 +3,11 @@ using Toolkit.Foundation;
namespace Wallet;
public class MainViewModelActivationHandler(IPublisher publisher,
public class WalletNavigationCollectionViewModelActivationHandler(IPublisher publisher,
IWalletHostCollection Wallets) :
INotificationHandler<ActivationEventArgs<IMainNavigationViewModel>>
INotificationHandler<ActivationEventArgs<IWalletNavigationViewModel>>
{
public Task Handle(ActivationEventArgs<IMainNavigationViewModel> args)
public Task Handle(ActivationEventArgs<IWalletNavigationViewModel> args)
{
bool selected = true;
@@ -42,8 +42,8 @@ public class MainViewModelActivationHandler(IPublisher publisher,
if (factory.Create<WalletNavigationViewModel>(args => args.Initialize(), configuration.Name, profileImage?.Value ?? null, selected)
is WalletNavigationViewModel viewModel)
{
publisher.Publish(Create.As<IMainNavigationViewModel>(viewModel),
nameof(MainViewModel));
publisher.Publish(Create.As<IWalletNavigationViewModel>(viewModel),
nameof(WalletNavigationCollectionViewModel));
selected = false;
}
+6 -6
View File
@@ -6,7 +6,7 @@ namespace Wallet;
public partial class WalletNavigationViewModel :
ObservableCollection<IWalletNavigationViewModel>,
IMainNavigationViewModel,
IWalletNavigationViewModel,
INotificationHandler<OpenedEventArgs<Wallet>>,
INotificationHandler<ClosedEventArgs<Wallet>>,
INotificationHandler<ActivatedEventArgs<Wallet>>,
@@ -52,11 +52,11 @@ public partial class WalletNavigationViewModel :
public Task Handle(OpenedEventArgs<Wallet> args)
{
Add<CreateItemNavigationViewModel>();
Add<AllNavigationViewModel>("All", 0);
Add<FavouritesNavigationViewModel>("Favourites", 0);
Add<ArchiveNavigationViewModel>("Archive", 0);
Add<CategoriesNavigationViewModel>("Categories", 0);
//Add<CreateItemNavigationViewModel>();
//Add<AllNavigationViewModel>("All", 0);
//Add<FavouritesNavigationViewModel>("Favourites", 0);
//Add<ArchiveNavigationViewModel>("Archive", 0);
//Add<CategoriesNavigationViewModel>("Categories", 0);
IsOpened = true;
Publisher.Publish(Changed.As<Item>());