From e321da7035bf538db240fe3d73c0040c8e857c94 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Sun, 29 Sep 2024 19:15:00 +0100 Subject: [PATCH] Added SelectFilesHandler --- .../IServiceCollectionExtensions.cs | 2 ++ Toolkit.Foundation/SelectFilesHandler.cs | 20 +++++++++++++++++++ Toolkit.Foundation/SelectFoldersHandler.cs | 1 + 3 files changed, 23 insertions(+) create mode 100644 Toolkit.Foundation/SelectFilesHandler.cs diff --git a/Toolkit.Avalonia/IServiceCollectionExtensions.cs b/Toolkit.Avalonia/IServiceCollectionExtensions.cs index d02fe22..df36924 100644 --- a/Toolkit.Avalonia/IServiceCollectionExtensions.cs +++ b/Toolkit.Avalonia/IServiceCollectionExtensions.cs @@ -141,6 +141,7 @@ public static class IServiceCollectionExtensions services.AddHandler(); services.AddHandler(); + services.AddHandler(); services.AddHandler(nameof(IClassicDesktopStyleApplicationLifetime)); services.AddHandler(nameof(ISingleViewApplicationLifetime)); @@ -174,6 +175,7 @@ public static class IServiceCollectionExtensions services.AddHandler(); services.AddHandler(); + services.AddHandler(); services.AddHandler(nameof(ContentControl)); services.AddHandler(nameof(Frame)); diff --git a/Toolkit.Foundation/SelectFilesHandler.cs b/Toolkit.Foundation/SelectFilesHandler.cs new file mode 100644 index 0000000..d45cca0 --- /dev/null +++ b/Toolkit.Foundation/SelectFilesHandler.cs @@ -0,0 +1,20 @@ +namespace Toolkit.Foundation; + +public class SelectFilesHandler(IFileProvider fileProvider) : + IHandler, IReadOnlyCollection?> +{ + public async Task?> Handle(SelectionEventArgs args, + CancellationToken cancellationToken) + { + if (args.Sender is FileFilter filter) + { + if (await fileProvider.SelectFiles(filter) + is { Count: > 0 } files) + { + return files; + } + } + + return default; + } +} diff --git a/Toolkit.Foundation/SelectFoldersHandler.cs b/Toolkit.Foundation/SelectFoldersHandler.cs index 33ee5ea..34d415f 100644 --- a/Toolkit.Foundation/SelectFoldersHandler.cs +++ b/Toolkit.Foundation/SelectFoldersHandler.cs @@ -1,5 +1,6 @@ namespace Toolkit.Foundation; + public class SelectFoldersHandler(IFolderProvider folderProvider) : IHandler, IReadOnlyCollection?> {