Files
WCS/Cowain.Base/Helpers/FileDialogHelper.cs
2026-03-02 09:08:20 +08:00

64 lines
2.5 KiB
C#

using Avalonia.Platform.Storage;
using Cowain.Base.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Cowain.Base.Helpers;
public static class FileDialogHelper
{
public static IStorageProvider? Provider { get; set; }
public static async Task<ResultModel<IStorageFile>> OpenFileDialogAsync()
{
var files = await OpenFileDialogAsync(new List<FilePickerFileType>() { FilePickerFileTypes.All }, false);
if (!files.IsSuccess || files.Data is null || !files.Data.Any())
return ResultModel<IStorageFile>.Error(files.ErrorMessage);
return ResultModel<IStorageFile>.Success(files.Data.First());
}
public static async Task<ResultModel<IStorageFile>> OpenFileDialogAsync(List<FilePickerFileType>? fileTypes)
{
var files = await OpenFileDialogAsync(fileTypes, false);
if (!files.IsSuccess || files.Data is null || !files.Data.Any())
return ResultModel<IStorageFile>.Error(files.ErrorMessage);
return ResultModel<IStorageFile>.Success(files.Data.First());
}
public static async Task<ResultModel<IReadOnlyList<IStorageFile>>> OpenFileDialogAsync(List<FilePickerFileType>? fileTypes, bool multiple = false)
{
if (Provider is null) return ResultModel<IReadOnlyList<IStorageFile>>.Error("Provider is null");
var result = await Provider.OpenFilePickerAsync(new FilePickerOpenOptions()
{
Title = "Open File",
FileTypeFilter = fileTypes,
AllowMultiple = multiple,
});
if (result is null) return ResultModel<IReadOnlyList<IStorageFile>>.Error("file is null");
return ResultModel<IReadOnlyList<IStorageFile>>.Success(result);
}
public static async Task<ResultModel<IStorageFile>> SaveFileDialogAsync()
{
return await SaveFileDialogAsync(new List<FilePickerFileType>() { FilePickerFileTypes.All });
}
public static async Task<ResultModel<IStorageFile>> SaveFileDialogAsync(List<FilePickerFileType>? fileTypes)
{
if (Provider is null) return ResultModel<IStorageFile>.Error("Provider is null");
var result = await Provider.SaveFilePickerAsync(new FilePickerSaveOptions()
{
Title = "Save File",
FileTypeChoices = fileTypes,
});
if (result is null) return ResultModel<IStorageFile>.Error("file is null");
return ResultModel<IStorageFile>.Success(result);
}
}