64 lines
2.5 KiB
C#
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);
|
|
}
|
|
|
|
}
|