Essentials/Xamarin.Essentials/FilePicker/FilePicker.shared.cs

65 строки
2.1 KiB
C#

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
namespace Xamarin.Essentials
{
public static partial class FilePicker
{
public static async Task<FileResult> PickAsync(PickOptions options = null) =>
(await PlatformPickAsync(options))?.FirstOrDefault();
public static Task<IEnumerable<FileResult>> PickMultipleAsync(PickOptions options = null) =>
PlatformPickAsync(options ?? PickOptions.Default, true);
}
public partial class FilePickerFileType
{
public static readonly FilePickerFileType Images = PlatformImageFileType();
public static readonly FilePickerFileType Png = PlatformPngFileType();
public static readonly FilePickerFileType Jpeg = PlatformJpegFileType();
public static readonly FilePickerFileType Videos = PlatformVideoFileType();
public static readonly FilePickerFileType Pdf = PlatformPdfFileType();
readonly IDictionary<DevicePlatform, IEnumerable<string>> fileTypes;
protected FilePickerFileType()
{
}
public FilePickerFileType(IDictionary<DevicePlatform, IEnumerable<string>> fileTypes) =>
this.fileTypes = fileTypes;
public IEnumerable<string> Value => GetPlatformFileType(DeviceInfo.Platform);
protected virtual IEnumerable<string> GetPlatformFileType(DevicePlatform platform)
{
if (fileTypes.TryGetValue(platform, out var type))
return type;
throw new PlatformNotSupportedException("This platform does not support this file type.");
}
}
public class PickOptions
{
public static PickOptions Default =>
new PickOptions
{
FileTypes = null,
};
public static PickOptions Images =>
new PickOptions
{
FileTypes = FilePickerFileType.Images
};
public string PickerTitle { get; set; }
public FilePickerFileType FileTypes { get; set; }
}
}