using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using Avalonia.Controls.Platform; namespace Avalonia.Controls { public abstract class FileDialog : FileSystemDialog { public List Filters { get; set; } = new List(); public string InitialFileName { get; set; } } public abstract class FileSystemDialog : SystemDialog { public string InitialDirectory { get; set; } } public class SaveFileDialog : FileDialog { public string DefaultExtension { get; set; } public async Task ShowAsync(Window window = null) => ((await AvaloniaLocator.Current.GetService().ShowFileDialogAsync(this, window?.PlatformImpl)) ?? new string[0]).FirstOrDefault(); } public class OpenFileDialog : FileDialog { public bool AllowMultiple { get; set; } public Task ShowAsync(Window window = null) => AvaloniaLocator.Current.GetService().ShowFileDialogAsync(this, window?.PlatformImpl); } public class OpenFolderDialog : FileSystemDialog { public string DefaultDirectory { get; set; } public Task ShowAsync(Window window = null) => AvaloniaLocator.Current.GetService().ShowFolderDialogAsync(this, window?.PlatformImpl); } public abstract class SystemDialog { public string Title { get; set; } } public class FileDialogFilter { public string Name { get; set; } public List Extensions { get; set; } = new List(); } }