break wallet navigation off into seperate view
This commit is contained in:
+2
-2
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ public class ItemCreatedHandler(IServiceProvider serviceProvider,
|
||||
decoratorService.Set(cachedItem);
|
||||
|
||||
publisher.Publish(Insert.As(index, viewModel),
|
||||
nameof(ItemCollectionViewModel));
|
||||
nameof(ItemNavigationCollectionViewModel));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -29,7 +29,7 @@ public class ItemModifiedHandler(IServiceProvider serviceProvider,
|
||||
decoratorService.Set(newItem);
|
||||
|
||||
publisher.Publish(MoveTo.As<ItemNavigationViewModel>(oldIndex, newIndex),
|
||||
nameof(ItemCollectionViewModel));
|
||||
nameof(ItemNavigationCollectionViewModel));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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));
|
||||
}
|
||||
+5
-5
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
+5
-5
@@ -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,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>());
|
||||
|
||||
Reference in New Issue
Block a user