Skip to content

Commit

Permalink
fix ISaveFileDialogService
Browse files Browse the repository at this point in the history
  • Loading branch information
AigioL committed May 30, 2022
1 parent 17c4a07 commit a927b8f
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 10 deletions.
23 changes: 21 additions & 2 deletions src/Common.Essentials/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,29 @@ namespace Microsoft.Extensions.DependencyInjection;

public static class ServiceCollectionExtensions
{
public static IServiceCollection TryAddSaveFileDialogService<T>(this IServiceCollection services) where T : class, IFilePickerPlatformService.ISaveFileDialogService
/// <summary>
/// 添加保存文件框服务
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection AddSaveFileDialogService<T>(this IServiceCollection services) where T : class, IFilePickerPlatformService.ISaveFileDialogService
{
Essentials.IsSupportedSaveFileDialog = true;
services.TryAddSingleton<IFilePickerPlatformService.ISaveFileDialogService, T>();
services.AddSingleton<IFilePickerPlatformService.ISaveFileDialogService, T>();
return services;
}

/// <summary>
/// 添加保存文件框服务
/// </summary>
/// <param name="services"></param>
/// <param name="implementationFactory"></param>
/// <returns></returns>
public static IServiceCollection TryAddSaveFileDialogService(this IServiceCollection services, Func<IServiceProvider, IFilePickerPlatformService.ISaveFileDialogService> implementationFactory)
{
Essentials.IsSupportedSaveFileDialog = true;
services.TryAddSingleton(implementationFactory);
return services;
}
}
3 changes: 1 addition & 2 deletions src/ST.Client.Android/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
using System.Application;
using System.Application.Services;
using System.Application.Services.Implementation;
using System.Application.UI;
using System.Net.Http;

// ReSharper disable once CheckNamespace
Expand All @@ -22,7 +21,7 @@ public static IServiceCollection AddPlatformService(this IServiceCollection serv
services.TryAddAndroidClientHttpPlatformHelperService();
PlatformToastImpl.TryAddToast(services);
services.AddSingleton<IBiometricService, PlatformBiometricServiceImpl>();
services.AddSingleton<IFilePickerPlatformService.ISaveFileDialogService, FilePickerPlatformServiceImpl>();
services.AddSaveFileDialogService<FilePickerPlatformServiceImpl>();
#if __XAMARIN_FORMS__
services.AddSingleton<IPlatformPageRouteService, AndroidPageRouteServiceImpl>();
#endif
Expand Down
19 changes: 14 additions & 5 deletions src/ST.Client.Desktop.Avalonia/ServiceCollectionExtensions.cs
Original file line number Diff line number Diff line change
@@ -1,17 +1,15 @@
using Avalonia.Controls;
using Avalonia.Platform;
using Microsoft.Extensions.DependencyInjection.Extensions;
using System.Application.Services;
using System.Application.Services.Implementation;
using System.Application.UI;

// ReSharper disable once CheckNamespace
namespace Microsoft.Extensions.DependencyInjection
{
public static partial class ServiceCollectionExtensions
{
/// <summary>
/// 添加主线程助手类(MainThreadDesktop)服务
/// 添加主线程助手类(MainThread)服务
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
Expand All @@ -21,14 +19,25 @@ public static IServiceCollection AddMainThreadPlatformService(this IServiceColle
return services;
}

public static IServiceCollection TryAddFilePickerPlatformService(this IServiceCollection services)
/// <summary>
/// 添加 Avalonia 实现的文件选择/保存框服务
/// </summary>
/// <param name="services"></param>
/// <returns></returns>
public static IServiceCollection TryAddAvaloniaFilePickerPlatformService(this IServiceCollection services)
{
services.AddSingleton<IFilePickerPlatformService, AvaloniaFilePickerPlatformService>();
services.TryAddSingleton(s => s.GetRequiredService<IFilePickerPlatformService>().OpenFileDialogService);
services.TryAddSingleton(s => s.GetRequiredService<IFilePickerPlatformService>().SaveFileDialogService);
services.TryAddSaveFileDialogService(s => s.GetRequiredService<IFilePickerPlatformService>().SaveFileDialogService);
return services;
}

/// <summary>
/// 添加 Avalonia 实现的字体管理服务
/// </summary>
/// <param name="services"></param>
/// <param name="useGdiPlusFirst"></param>
/// <returns></returns>
public static IServiceCollection TryAddAvaloniaFontManager(this IServiceCollection services, bool useGdiPlusFirst)
{
AvaloniaFontManagerImpl.UseGdiPlusFirst = useGdiPlusFirst;
Expand Down
2 changes: 1 addition & 1 deletion src/Startup.cs
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,7 @@ static void ConfigureDemandServices(IServiceCollection services, IApplication.IS
// 添加主线程助手(MainThreadDesktop)
services.AddMainThreadPlatformService();

services.TryAddFilePickerPlatformService();
services.TryAddAvaloniaFilePickerPlatformService();
#endif
#region MessageBox

Expand Down

0 comments on commit a927b8f

Please sign in to comment.