From 0c21ddd20ddc826c1cb04f9b1bb9f5b794892bc9 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Thu, 1 Aug 2024 23:19:30 +0100 Subject: [PATCH] Make it possible to remove enteries --- Wallet.Avalonia/CommentEntryView.axaml | 2 +- Wallet.Avalonia/DeleteItemEntryView.axaml | 53 --- Wallet.Avalonia/DeleteItemEntryView.axaml.cs | 13 - Wallet.Avalonia/ItemEntryActionView.axaml | 389 ++++++++++-------- Wallet.Avalonia/PasswordEntryView.axaml | 2 +- Wallet.Avalonia/TextEntryView.axaml | 4 +- .../ItemContentViewModelActivationHandler.cs | 10 +- Wallet/ItemEntryViewModel.cs | 6 + 8 files changed, 234 insertions(+), 245 deletions(-) delete mode 100644 Wallet.Avalonia/DeleteItemEntryView.axaml delete mode 100644 Wallet.Avalonia/DeleteItemEntryView.axaml.cs diff --git a/Wallet.Avalonia/CommentEntryView.axaml b/Wallet.Avalonia/CommentEntryView.axaml index 1ba1106..101d66f 100644 --- a/Wallet.Avalonia/CommentEntryView.axaml +++ b/Wallet.Avalonia/CommentEntryView.axaml @@ -5,4 +5,4 @@ xmlns:vm="using:Wallet" x:DataType="vm:CommentEntryViewModel" Content="{Binding Comment}" - Description="{Binding Created}" /> + Description="{Binding Created, StringFormat=f}" /> diff --git a/Wallet.Avalonia/DeleteItemEntryView.axaml b/Wallet.Avalonia/DeleteItemEntryView.axaml deleted file mode 100644 index 7c3e8aa..0000000 --- a/Wallet.Avalonia/DeleteItemEntryView.axaml +++ /dev/null @@ -1,53 +0,0 @@ - - - 0,0,12,0 - 5,0,5,0 - 32 - 32 - - - \ No newline at end of file diff --git a/Wallet.Avalonia/DeleteItemEntryView.axaml.cs b/Wallet.Avalonia/DeleteItemEntryView.axaml.cs deleted file mode 100644 index 64dea12..0000000 --- a/Wallet.Avalonia/DeleteItemEntryView.axaml.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Avalonia; -using Avalonia.Controls; -using Avalonia.Markup.Xaml; - -namespace Wallet.Avalonia; - -public partial class DeleteItemEntryView : UserControl -{ - public DeleteItemEntryView() - { - InitializeComponent(); - } -} \ No newline at end of file diff --git a/Wallet.Avalonia/ItemEntryActionView.axaml b/Wallet.Avalonia/ItemEntryActionView.axaml index 87f0ba7..b80fa62 100644 --- a/Wallet.Avalonia/ItemEntryActionView.axaml +++ b/Wallet.Avalonia/ItemEntryActionView.axaml @@ -6,180 +6,223 @@ x:CompileBindings="False" DataContext="{Binding $parent[SettingsExpander].DataContext}"> - 12,0,0,0 - 5,0,5,0 - 32 - 32 + 12,0,0,0 + 0 + 32 + 32 - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Wallet.Avalonia/PasswordEntryView.axaml b/Wallet.Avalonia/PasswordEntryView.axaml index 04d4aab..df91145 100644 --- a/Wallet.Avalonia/PasswordEntryView.axaml +++ b/Wallet.Avalonia/PasswordEntryView.axaml @@ -21,7 +21,7 @@ 0 - 10,5,6,6 + 10,6,6,5 0 0 diff --git a/Wallet.Avalonia/TextEntryView.axaml b/Wallet.Avalonia/TextEntryView.axaml index ec5592f..de173c1 100644 --- a/Wallet.Avalonia/TextEntryView.axaml +++ b/Wallet.Avalonia/TextEntryView.axaml @@ -24,9 +24,7 @@ 0 0 - - - + diff --git a/Wallet/ItemContentViewModelActivationHandler.cs b/Wallet/ItemContentViewModelActivationHandler.cs index 6a950f4..b88d9b3 100644 --- a/Wallet/ItemContentViewModelActivationHandler.cs +++ b/Wallet/ItemContentViewModelActivationHandler.cs @@ -1,4 +1,5 @@ -using System.Reflection; +using System.Reactive.Disposables; +using System.Reflection; using Toolkit.Foundation; namespace Wallet; @@ -7,6 +8,7 @@ public class ItemContentViewModelActivationHandler(IDecoratorService itemConfigurationDecorator, IMediator mediator, IServiceFactory serviceFactory, + IDisposer disposer, IPublisher publisher) : INotificationHandler> { @@ -39,6 +41,12 @@ public class ItemContentViewModelActivationHandler(IDecoratorService(message, entryConfiguration.GetType().Name) is IItemEntryViewModel entryViewModel) { + // Should this be here? + disposer.Add(entryViewModel, Disposable.Create(() => + { + configurationSection.Entries.Remove(entryConfiguration); + })); + publisher.Publish(Create.As(entryViewModel), id); } } diff --git a/Wallet/ItemEntryViewModel.cs b/Wallet/ItemEntryViewModel.cs index 525e229..e7f1d6b 100644 --- a/Wallet/ItemEntryViewModel.cs +++ b/Wallet/ItemEntryViewModel.cs @@ -7,6 +7,7 @@ namespace Wallet; public partial class ItemEntryViewModel : Observable, IItemEntryViewModel, + IRemovable, IHandler, bool>, INotificationHandler>, INotificationHandler>, @@ -69,6 +70,8 @@ public partial class ItemEntryViewModel : return Task.CompletedTask; } + + public async Task Handle(ValidateEventArgs args, CancellationToken cancellationToken) { @@ -80,6 +83,9 @@ public partial class ItemEntryViewModel : return await Task.FromResult(true); } + [RelayCommand] + private void Remove() => Dispose(); + [RelayCommand] private void Copy() => Publisher.Publish(Write.As(new Clipboard($"{Value}")));