Added MultilineTextEntryView

This commit is contained in:
TheXamlGuy
2024-06-08 21:24:59 +01:00
parent 9a664b583b
commit f64453232b
30 changed files with 185 additions and 96 deletions
@@ -2,32 +2,32 @@
namespace Bitvault;
public partial class ItemDropdownEntryViewModel :
ItemEntryCollectionViewModel<ItemDropdownValueViewModel>
public partial class DropdownEntryViewModel :
ItemEntryCollectionViewModel<DropdownValueViewModel>
{
public ItemDropdownEntryViewModel(IServiceProvider provider,
public DropdownEntryViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
IEnumerable<ItemDropdownValueViewModel> items,
IEnumerable<DropdownValueViewModel> items,
ItemState state,
ItemEntryConfiguration configuration,
string key,
object value,
ItemDropdownValueViewModel selectedItem) : base(provider, factory, mediator, publisher, subscriber, disposer, items, state, configuration, key, value)
DropdownValueViewModel selectedItem) : base(provider, factory, mediator, publisher, subscriber, disposer, items, state, configuration, key, value)
{
SelectedItem = selectedItem;
}
public ItemDropdownEntryViewModel(IServiceProvider provider,
public DropdownEntryViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
IEnumerable<ItemDropdownValueViewModel> items,
IEnumerable<DropdownValueViewModel> items,
ItemState state,
ItemEntryConfiguration configuration,
string key,
@@ -2,7 +2,7 @@
namespace Bitvault;
public class ItemDropdownEntryViewModelHandler(IServiceFactory serviceFactory) :
public class DropdownEntryViewModelHandler(IServiceFactory serviceFactory) :
IHandler<CreateEventArgs<DropdownEntryConfiguration>, IItemEntryViewModel?>
{
public Task<IItemEntryViewModel?> Handle(CreateEventArgs<DropdownEntryConfiguration> args,
@@ -10,19 +10,19 @@ public class ItemDropdownEntryViewModelHandler(IServiceFactory serviceFactory) :
{
if (args.Value is DropdownEntryConfiguration configuration)
{
List<ItemDropdownValueViewModel> values = [];
List<DropdownValueViewModel> values = [];
foreach (string item in configuration.Values)
{
values.Add(serviceFactory.Create<ItemDropdownValueViewModel>(item));
values.Add(serviceFactory.Create<DropdownValueViewModel>(item));
}
string? label = configuration.Label;
object? value = configuration.Value;
ItemDropdownValueViewModel? selected = values.FirstOrDefault(x => x.Value is not null && x.Value.Equals($"{value}"));
DropdownValueViewModel? selected = values.FirstOrDefault(x => x.Value is not null && x.Value.Equals($"{value}"));
if (serviceFactory.Create<ItemDropdownEntryViewModel>([values, .. args.Parameters, configuration, label, value ?? "", selected])
is ItemDropdownEntryViewModel viewModel)
if (serviceFactory.Create<DropdownEntryViewModel>([values, .. args.Parameters, configuration, label, value ?? "", selected])
is DropdownEntryViewModel viewModel)
{
return Task.FromResult<IItemEntryViewModel?>(viewModel);
}
@@ -2,7 +2,7 @@
namespace Bitvault;
public partial class ItemDropdownValueViewModel(IServiceProvider provider,
public partial class DropdownValueViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
+8 -3
View File
@@ -157,7 +157,7 @@ public record ItemConfiguration
{
Entries = new List<ItemEntryConfiguration>
{
new NumberEntryConfiguration
new MultilineTextEntryConfiguration
{
Label = "Notes"
}
@@ -170,19 +170,24 @@ public record ItemConfiguration
{
Sections = new List<ItemSectionConfiguration>
{
new()
new ()
{
Entries = new List<ItemEntryConfiguration>
{
new TextEntryConfiguration
{
Label = "Description",
},
new AttachmentEntryConfiguration
{
Label = "Attachments"
Label = "Attachments",
}
}
}
}
};
public static ItemConfiguration DrivingLicence => new()
{
Sections = new List<ItemSectionConfiguration>
-1
View File
@@ -4,7 +4,6 @@ namespace Bitvault;
[JsonDerivedType(typeof(DropdownEntryConfiguration), typeDiscriminator: "Dropdown")]
[JsonDerivedType(typeof(MaskedTextEntryConfiguration), typeDiscriminator: "MaskedText")]
[JsonDerivedType(typeof(NoteEntryConfiguration), typeDiscriminator: "Note")]
[JsonDerivedType(typeof(NumberEntryConfiguration), typeDiscriminator: "Number")]
[JsonDerivedType(typeof(PasswordEntryConfiguration), typeDiscriminator: "Password")]
[JsonDerivedType(typeof(TextEntryConfiguration), typeDiscriminator: "Text")]
@@ -3,7 +3,7 @@ using Toolkit.Foundation;
namespace Bitvault;
public partial class ItemMaskedTextEntryViewModel(IServiceProvider provider,
public partial class MaskedTextEntryViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
@@ -2,7 +2,7 @@
namespace Bitvault;
public class ItemMaskedTextEntryViewModelHandler(IServiceFactory serviceFactory) :
public class MaskedTextEntryViewModelHandler(IServiceFactory serviceFactory) :
IHandler<CreateEventArgs<MaskedTextEntryConfiguration>, IItemEntryViewModel?>
{
public Task<IItemEntryViewModel?> Handle(CreateEventArgs<MaskedTextEntryConfiguration> args,
@@ -10,8 +10,8 @@ public class ItemMaskedTextEntryViewModelHandler(IServiceFactory serviceFactory)
{
if (args.Value is MaskedTextEntryConfiguration configuration)
{
if (serviceFactory.Create<ItemMaskedTextEntryViewModel>([.. args.Parameters, configuration, configuration.Pattern, configuration.Label, configuration.Value])
is ItemMaskedTextEntryViewModel viewModel)
if (serviceFactory.Create<MaskedTextEntryViewModel>([.. args.Parameters, configuration, configuration.Pattern, configuration.Label, configuration.Value])
is MaskedTextEntryViewModel viewModel)
{
return Task.FromResult<IItemEntryViewModel?>(viewModel);
}
+1 -2
View File
@@ -4,5 +4,4 @@ public record MultilineTextEntryConfiguration :
ItemEntryConfiguration
{
}
}
+15
View File
@@ -0,0 +1,15 @@
using Toolkit.Foundation;
namespace Bitvault;
public partial class MultilineTextEntryViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer,
ItemState state,
ItemEntryConfiguration configuration,
string key,
object value) : ItemEntryViewModel(provider, factory, mediator, publisher, subscriber, disposer, state, configuration, key, value);
@@ -0,0 +1,23 @@
using Toolkit.Foundation;
namespace Bitvault;
public class MultilineTextEntryViewModelHandler(IServiceFactory serviceFactory) :
IHandler<CreateEventArgs<MultilineTextEntryConfiguration>, IItemEntryViewModel?>
{
public Task<IItemEntryViewModel?> Handle(CreateEventArgs<MultilineTextEntryConfiguration> args,
CancellationToken cancellationToken)
{
if (args.Value is MultilineTextEntryConfiguration configuration)
{
if (serviceFactory.Create<MultilineTextEntryViewModel>([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is MultilineTextEntryViewModel viewModel)
{
return Task.FromResult<IItemEntryViewModel?>(viewModel);
}
}
return Task.FromResult<IItemEntryViewModel?>(default);
}
}
-7
View File
@@ -1,7 +0,0 @@
namespace Bitvault;
public record NoteEntryConfiguration :
ItemEntryConfiguration
{
}
-15
View File
@@ -1,15 +0,0 @@
using Toolkit.Foundation;
namespace Bitvault;
public partial class NoteViewModel : Observable
{
public NoteViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
}
}
@@ -2,7 +2,7 @@
namespace Bitvault;
public partial class ItemTextEntryViewModel(IServiceProvider provider,
public partial class PasswordEntryViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
@@ -2,7 +2,7 @@
namespace Bitvault;
public class ItemPasswordEntryViewModelHandler(IServiceFactory serviceFactory) :
public class PasswordEntryViewModelHandler(IServiceFactory serviceFactory) :
IHandler<CreateEventArgs<PasswordEntryConfiguration>, IItemEntryViewModel?>
{
public Task<IItemEntryViewModel?> Handle(CreateEventArgs<PasswordEntryConfiguration> args,
@@ -10,8 +10,8 @@ public class ItemPasswordEntryViewModelHandler(IServiceFactory serviceFactory) :
{
if (args.Value is PasswordEntryConfiguration configuration)
{
if (serviceFactory.Create<ItemPasswordEntryViewModel>([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is ItemPasswordEntryViewModel viewModel)
if (serviceFactory.Create<PasswordEntryViewModel>([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is PasswordEntryViewModel viewModel)
{
return Task.FromResult<IItemEntryViewModel?>(viewModel);
}
-3
View File
@@ -1,3 +0,0 @@
namespace Bitvault;
public class SystemIdleTimer;
@@ -2,7 +2,7 @@
namespace Bitvault;
public partial class ItemPasswordEntryViewModel(IServiceProvider provider,
public partial class TextEntryViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
@@ -2,7 +2,7 @@
namespace Bitvault;
public class ItemTextEntryViewModelHandler(IServiceFactory serviceFactory) :
public class TextEntryViewModelHandler(IServiceFactory serviceFactory) :
IHandler<CreateEventArgs<TextEntryConfiguration>, IItemEntryViewModel?>
{
public Task<IItemEntryViewModel?> Handle(CreateEventArgs<TextEntryConfiguration> args,
@@ -10,8 +10,8 @@ public class ItemTextEntryViewModelHandler(IServiceFactory serviceFactory) :
{
if (args.Value is TextEntryConfiguration configuration)
{
if (serviceFactory.Create<ItemTextEntryViewModel>([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is ItemTextEntryViewModel viewModel)
if (serviceFactory.Create<TextEntryViewModel>([.. args.Parameters, configuration, configuration.Label, configuration.Value ?? ""])
is TextEntryViewModel viewModel)
{
return Task.FromResult<IItemEntryViewModel?>(viewModel);
}
-15
View File
@@ -1,15 +0,0 @@
using Toolkit.Foundation;
namespace Bitvault;
public partial class TextViewModel : Observable
{
public TextViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscription subscriber,
IDisposer disposer) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
}
}