From e372eca4d0cc23e1ef07a04479080905881e81f5 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Fri, 10 May 2024 22:38:08 +0100 Subject: [PATCH] Prototyping --- ...=> AddVaultContentCommandHeaderView.axaml} | 4 +- .../AddVaultContentCommandHeaderView.axaml.cs | 8 ++++ .../AddVaultContentHeaderView.axaml.cs | 12 ------ Bitvault.Avalonia/AddVaultContentView.axaml | 42 ++----------------- Bitvault.Avalonia/App.axaml.cs | 5 ++- Bitvault.Avalonia/Bitvault.Avalonia.csproj | 6 +++ .../VaultContentHeaderView.axaml | 17 ++++++++ .../VaultContentHeaderView.axaml.cs | 8 ++++ Bitvault.Data/Bitvault.Data.csproj | 20 +++++++++ {Bitvault => Bitvault.Data}/Category.cs | 2 +- {Bitvault => Bitvault.Data}/Content.cs | 5 ++- {Bitvault => Bitvault.Data}/Document.cs | 2 +- {Bitvault => Bitvault.Data}/DocumentType.cs | 2 +- {Bitvault => Bitvault.Data}/Tag.cs | 2 +- {Bitvault => Bitvault.Data}/VaultDbContext.cs | 5 ++- Bitvault.sln | 6 +++ ... AddVaultContentCommandHeaderViewModel.cs} | 4 +- Bitvault/AddVaultContentViewModel.cs | 39 +++++++++++++---- Bitvault/Bitvault.csproj | 11 +---- Bitvault/IVaultContentEntryViewModel.cs | 6 +++ Bitvault/IconPickerViewModel.cs | 16 ------- Bitvault/VaultContentConfiguration.cs | 6 +++ Bitvault/VaultContentHeaderViewModel.cs | 7 +++- Bitvault/VaultStorage.cs | 3 +- 24 files changed, 139 insertions(+), 99 deletions(-) rename Bitvault.Avalonia/{AddVaultContentHeaderView.axaml => AddVaultContentCommandHeaderView.axaml} (92%) create mode 100644 Bitvault.Avalonia/AddVaultContentCommandHeaderView.axaml.cs delete mode 100644 Bitvault.Avalonia/AddVaultContentHeaderView.axaml.cs create mode 100644 Bitvault.Avalonia/VaultContentHeaderView.axaml create mode 100644 Bitvault.Avalonia/VaultContentHeaderView.axaml.cs create mode 100644 Bitvault.Data/Bitvault.Data.csproj rename {Bitvault => Bitvault.Data}/Category.cs (86%) rename {Bitvault => Bitvault.Data}/Content.cs (77%) rename {Bitvault => Bitvault.Data}/Document.cs (88%) rename {Bitvault => Bitvault.Data}/DocumentType.cs (63%) rename {Bitvault => Bitvault.Data}/Tag.cs (85%) rename {Bitvault => Bitvault.Data}/VaultDbContext.cs (87%) rename Bitvault/{AddVaultContentHeaderViewModel.cs => AddVaultContentCommandHeaderViewModel.cs} (75%) create mode 100644 Bitvault/IVaultContentEntryViewModel.cs delete mode 100644 Bitvault/IconPickerViewModel.cs create mode 100644 Bitvault/VaultContentConfiguration.cs diff --git a/Bitvault.Avalonia/AddVaultContentHeaderView.axaml b/Bitvault.Avalonia/AddVaultContentCommandHeaderView.axaml similarity index 92% rename from Bitvault.Avalonia/AddVaultContentHeaderView.axaml rename to Bitvault.Avalonia/AddVaultContentCommandHeaderView.axaml index f0f31b4..fbc9337 100644 --- a/Bitvault.Avalonia/AddVaultContentHeaderView.axaml +++ b/Bitvault.Avalonia/AddVaultContentCommandHeaderView.axaml @@ -1,9 +1,9 @@ + x:DataType="vm:AddVaultContentCommandHeaderViewModel"> 40 diff --git a/Bitvault.Avalonia/AddVaultContentCommandHeaderView.axaml.cs b/Bitvault.Avalonia/AddVaultContentCommandHeaderView.axaml.cs new file mode 100644 index 0000000..b4b7ff7 --- /dev/null +++ b/Bitvault.Avalonia/AddVaultContentCommandHeaderView.axaml.cs @@ -0,0 +1,8 @@ +using Avalonia.Controls; + +namespace Bitvault.Avalonia; + +public partial class AddVaultContentCommandHeaderView : UserControl +{ + public AddVaultContentCommandHeaderView() => InitializeComponent(); +} diff --git a/Bitvault.Avalonia/AddVaultContentHeaderView.axaml.cs b/Bitvault.Avalonia/AddVaultContentHeaderView.axaml.cs deleted file mode 100644 index 17c4603..0000000 --- a/Bitvault.Avalonia/AddVaultContentHeaderView.axaml.cs +++ /dev/null @@ -1,12 +0,0 @@ -using Avalonia.Controls; - -namespace Bitvault.Avalonia -{ - public partial class AddVaultContentHeaderView : UserControl - { - public AddVaultContentHeaderView() - { - InitializeComponent(); - } - } -} diff --git a/Bitvault.Avalonia/AddVaultContentView.axaml b/Bitvault.Avalonia/AddVaultContentView.axaml index a444076..f368040 100644 --- a/Bitvault.Avalonia/AddVaultContentView.axaml +++ b/Bitvault.Avalonia/AddVaultContentView.axaml @@ -6,44 +6,10 @@ x:DataType="vm:AddVaultContentViewModel"> - + - - - - - - - - - - - - - - - - - - - + + + diff --git a/Bitvault.Avalonia/App.axaml.cs b/Bitvault.Avalonia/App.axaml.cs index 7702ddb..60d7eaa 100644 --- a/Bitvault.Avalonia/App.axaml.cs +++ b/Bitvault.Avalonia/App.axaml.cs @@ -8,6 +8,7 @@ using Toolkit.Avalonia; using Toolkit.Foundation; using Microsoft.Extensions.DependencyInjection.Extensions; using HotAvalonia; +using Bitvault.Data; namespace Bitvault.Avalonia; @@ -80,10 +81,12 @@ public partial class App : Application services.AddTemplate("VaultContent"); services.AddTemplate("AddVaultContent"); - services.AddTemplate("AddVaultContentHeader"); + services.AddTemplate("AddVaultContentCommandHeader"); services.AddTemplate(); services.AddTemplate(); + + services.AddTemplate(); }); })!); diff --git a/Bitvault.Avalonia/Bitvault.Avalonia.csproj b/Bitvault.Avalonia/Bitvault.Avalonia.csproj index cd43c70..22d7ffd 100644 --- a/Bitvault.Avalonia/Bitvault.Avalonia.csproj +++ b/Bitvault.Avalonia/Bitvault.Avalonia.csproj @@ -43,6 +43,12 @@ AddVaultContentActionView.axaml + + AddVaultContentCommandHeaderView.axaml + + + VaultContentHeaderView.axaml + OpenView.axaml diff --git a/Bitvault.Avalonia/VaultContentHeaderView.axaml b/Bitvault.Avalonia/VaultContentHeaderView.axaml new file mode 100644 index 0000000..dce941e --- /dev/null +++ b/Bitvault.Avalonia/VaultContentHeaderView.axaml @@ -0,0 +1,17 @@ + + + + + + diff --git a/Bitvault.Avalonia/VaultContentHeaderView.axaml.cs b/Bitvault.Avalonia/VaultContentHeaderView.axaml.cs new file mode 100644 index 0000000..89e9e07 --- /dev/null +++ b/Bitvault.Avalonia/VaultContentHeaderView.axaml.cs @@ -0,0 +1,8 @@ +using Avalonia.Controls; + +namespace Bitvault.Avalonia; + +public partial class VaultContentHeaderView : UserControl +{ + public VaultContentHeaderView() => InitializeComponent(); +} diff --git a/Bitvault.Data/Bitvault.Data.csproj b/Bitvault.Data/Bitvault.Data.csproj new file mode 100644 index 0000000..a9ea45d --- /dev/null +++ b/Bitvault.Data/Bitvault.Data.csproj @@ -0,0 +1,20 @@ + + + net8.0 + enable + enable + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + \ No newline at end of file diff --git a/Bitvault/Category.cs b/Bitvault.Data/Category.cs similarity index 86% rename from Bitvault/Category.cs rename to Bitvault.Data/Category.cs index 4b77f4f..61feec8 100644 --- a/Bitvault/Category.cs +++ b/Bitvault.Data/Category.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Bitvault; +namespace Bitvault.Data; public record Category { diff --git a/Bitvault/Content.cs b/Bitvault.Data/Content.cs similarity index 77% rename from Bitvault/Content.cs rename to Bitvault.Data/Content.cs index de7eddd..9c3f8c7 100644 --- a/Bitvault/Content.cs +++ b/Bitvault.Data/Content.cs @@ -1,6 +1,7 @@ -using System.ComponentModel.DataAnnotations; +using Bitvault.Data; +using System.ComponentModel.DataAnnotations; -namespace Bitvault; +namespace Bitvault.Data; public record Content { diff --git a/Bitvault/Document.cs b/Bitvault.Data/Document.cs similarity index 88% rename from Bitvault/Document.cs rename to Bitvault.Data/Document.cs index 82426ad..cdc13de 100644 --- a/Bitvault/Document.cs +++ b/Bitvault.Data/Document.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Bitvault; +namespace Bitvault.Data; public record Document { diff --git a/Bitvault/DocumentType.cs b/Bitvault.Data/DocumentType.cs similarity index 63% rename from Bitvault/DocumentType.cs rename to Bitvault.Data/DocumentType.cs index fab272f..e5c36e8 100644 --- a/Bitvault/DocumentType.cs +++ b/Bitvault.Data/DocumentType.cs @@ -1,4 +1,4 @@ -namespace Bitvault; +namespace Bitvault.Data; public enum DocumentType { diff --git a/Bitvault/Tag.cs b/Bitvault.Data/Tag.cs similarity index 85% rename from Bitvault/Tag.cs rename to Bitvault.Data/Tag.cs index 20d84f4..0451089 100644 --- a/Bitvault/Tag.cs +++ b/Bitvault.Data/Tag.cs @@ -1,6 +1,6 @@ using System.ComponentModel.DataAnnotations; -namespace Bitvault; +namespace Bitvault.Data; public class Tag { diff --git a/Bitvault/VaultDbContext.cs b/Bitvault.Data/VaultDbContext.cs similarity index 87% rename from Bitvault/VaultDbContext.cs rename to Bitvault.Data/VaultDbContext.cs index a2e9274..24fa8ba 100644 --- a/Bitvault/VaultDbContext.cs +++ b/Bitvault.Data/VaultDbContext.cs @@ -1,6 +1,7 @@ -using Microsoft.EntityFrameworkCore; +using Bitvault.Data; +using Microsoft.EntityFrameworkCore; -namespace Bitvault; +namespace Bitvault.Data; public class VaultDbContext(DbContextOptions options) : DbContext(options) diff --git a/Bitvault.sln b/Bitvault.sln index f4bb637..ea07612 100644 --- a/Bitvault.sln +++ b/Bitvault.sln @@ -17,6 +17,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Toolkit.UI.Avalonia", "Tool EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Toolkit.UI.Controls.Avalonia", "Toolkit\Toolkit.UI.Controls.Avalonia\Toolkit.UI.Controls.Avalonia.csproj", "{716E252B-B758-4134-9D34-50FC42B414C6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bitvault.Data", "Bitvault.Data\Bitvault.Data.csproj", "{DB60A3F3-1250-4414-A861-567C79CC8CE3}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -51,6 +53,10 @@ Global {716E252B-B758-4134-9D34-50FC42B414C6}.Debug|Any CPU.Build.0 = Debug|Any CPU {716E252B-B758-4134-9D34-50FC42B414C6}.Release|Any CPU.ActiveCfg = Release|Any CPU {716E252B-B758-4134-9D34-50FC42B414C6}.Release|Any CPU.Build.0 = Release|Any CPU + {DB60A3F3-1250-4414-A861-567C79CC8CE3}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {DB60A3F3-1250-4414-A861-567C79CC8CE3}.Debug|Any CPU.Build.0 = Debug|Any CPU + {DB60A3F3-1250-4414-A861-567C79CC8CE3}.Release|Any CPU.ActiveCfg = Release|Any CPU + {DB60A3F3-1250-4414-A861-567C79CC8CE3}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Bitvault/AddVaultContentHeaderViewModel.cs b/Bitvault/AddVaultContentCommandHeaderViewModel.cs similarity index 75% rename from Bitvault/AddVaultContentHeaderViewModel.cs rename to Bitvault/AddVaultContentCommandHeaderViewModel.cs index e7136e3..3f929f5 100644 --- a/Bitvault/AddVaultContentHeaderViewModel.cs +++ b/Bitvault/AddVaultContentCommandHeaderViewModel.cs @@ -2,9 +2,9 @@ namespace Bitvault; -public partial class AddVaultContentHeaderViewModel : ObservableCollectionViewModel +public partial class AddVaultContentCommandHeaderViewModel : ObservableCollectionViewModel { - public AddVaultContentHeaderViewModel(IServiceProvider provider, + public AddVaultContentCommandHeaderViewModel(IServiceProvider provider, IServiceFactory factory, IMediator mediator, IPublisher publisher, diff --git a/Bitvault/AddVaultContentViewModel.cs b/Bitvault/AddVaultContentViewModel.cs index 82d9eea..93d29bc 100644 --- a/Bitvault/AddVaultContentViewModel.cs +++ b/Bitvault/AddVaultContentViewModel.cs @@ -3,14 +3,37 @@ using Toolkit.Foundation; namespace Bitvault; -public partial class AddVaultContentViewModel(IServiceProvider provider, - IServiceFactory factory, - IMediator mediator, - IPublisher publisher, - ISubscriber subscriber, - IDisposer disposer, - NamedComponent named) : ObservableCollectionViewModel(provider, factory, mediator, publisher, subscriber, disposer) +public partial class AddVaultContentViewModel : + ObservableCollectionViewModel { [ObservableProperty] - private string named = $"{named}"; + private string named; + + public AddVaultContentViewModel(IServiceProvider provider, + IServiceFactory factory, + IMediator mediator, + IPublisher publisher, + ISubscriber subscriber, + IDisposer disposer, + IContentTemplate template, + NamedComponent named) : base(provider, factory, mediator, publisher, subscriber, disposer) + { + Template = template; + Named = $"{named}"; + + Add(); + } + + public IContentTemplate Template { get; set; } + + public Task Confirm() + { + VaultContentConfiguration configuration = new(); + foreach (IVaultContentEntryViewModel item in this) + { + item.Invoke(configuration); + } + + return Task.FromResult(true); + } } diff --git a/Bitvault/Bitvault.csproj b/Bitvault/Bitvault.csproj index 5e64ceb..6d31932 100644 --- a/Bitvault/Bitvault.csproj +++ b/Bitvault/Bitvault.csproj @@ -7,18 +7,9 @@ - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - + \ No newline at end of file diff --git a/Bitvault/IVaultContentEntryViewModel.cs b/Bitvault/IVaultContentEntryViewModel.cs new file mode 100644 index 0000000..a962f56 --- /dev/null +++ b/Bitvault/IVaultContentEntryViewModel.cs @@ -0,0 +1,6 @@ +using Toolkit.Foundation; + +namespace Bitvault; + +public interface IVaultContentEntryViewModel : + IValueInvoker; diff --git a/Bitvault/IconPickerViewModel.cs b/Bitvault/IconPickerViewModel.cs deleted file mode 100644 index c2a473d..0000000 --- a/Bitvault/IconPickerViewModel.cs +++ /dev/null @@ -1,16 +0,0 @@ -using Toolkit.Foundation; - -namespace Bitvault; - -public partial class IconPickerViewModel : ObservableViewModel -{ - public IconPickerViewModel(IServiceProvider provider, - IServiceFactory factory, - IMediator mediator, - IPublisher publisher, - ISubscriber subscriber, - IDisposer disposer) : base(provider, factory, mediator, publisher, subscriber, disposer) - { - - } -} diff --git a/Bitvault/VaultContentConfiguration.cs b/Bitvault/VaultContentConfiguration.cs new file mode 100644 index 0000000..b824251 --- /dev/null +++ b/Bitvault/VaultContentConfiguration.cs @@ -0,0 +1,6 @@ +namespace Bitvault; + +public record VaultContentConfiguration +{ + public string? Name { get; set; } +} diff --git a/Bitvault/VaultContentHeaderViewModel.cs b/Bitvault/VaultContentHeaderViewModel.cs index aab09c9..e60b303 100644 --- a/Bitvault/VaultContentHeaderViewModel.cs +++ b/Bitvault/VaultContentHeaderViewModel.cs @@ -7,4 +7,9 @@ public partial class VaultContentHeaderViewModel(IServiceProvider provider, IMediator mediator, IPublisher publisher, ISubscriber subscriber, - IDisposer disposer) : ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer); \ No newline at end of file + IDisposer disposer) : ObservableViewModel(provider, factory, mediator, publisher, subscriber, disposer), + IVaultContentEntryViewModel +{ + public void Invoke(VaultContentConfiguration args) => + args.Name = Value; +} diff --git a/Bitvault/VaultStorage.cs b/Bitvault/VaultStorage.cs index 582b92e..8c10f12 100644 --- a/Bitvault/VaultStorage.cs +++ b/Bitvault/VaultStorage.cs @@ -1,4 +1,5 @@ -using Microsoft.EntityFrameworkCore; +using Bitvault.Data; +using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; using Toolkit.Foundation;