using Avalonia.Controls; using Avalonia.Interactivity; using Avalonia.Platform.Storage; using JdeScoping.SecureStoreManager.Constants; using JdeScoping.SecureStoreManager.ViewModels; using MsBox.Avalonia; using MsBox.Avalonia.Enums; namespace JdeScoping.SecureStoreManager.Views; public partial class NewStoreDialog : Window { /// /// Gets the view model for this dialog. /// public NewStoreDialogViewModel ViewModel => (NewStoreDialogViewModel)DataContext!; /// /// Initializes a new instance of the NewStoreDialog. /// public NewStoreDialog() { InitializeComponent(); DataContext = new NewStoreDialogViewModel(); Loaded += NewStoreDialog_Loaded; } private void NewStoreDialog_Loaded(object? sender, RoutedEventArgs e) { ViewModel.OnShowSaveFileDialog += ShowSaveFileDialogAsync; } private async Task ShowSaveFileDialogAsync(string title, string fileTypeName, string pattern, string defaultExtension) { var file = await StorageProvider.SaveFilePickerAsync(new FilePickerSaveOptions { Title = title, DefaultExtension = defaultExtension, FileTypeChoices = new[] { new FilePickerFileType(fileTypeName) { Patterns = new[] { pattern } }, new FilePickerFileType(FileExtensions.AllFilesTypeName) { Patterns = new[] { FileExtensions.AllFilesPattern } } } }); return file?.Path.LocalPath; } private async void CreateButton_Click(object? sender, RoutedEventArgs e) { if (!ViewModel.IsValid) { var box = MessageBoxManager .GetMessageBoxStandard( DialogStrings.ValidationErrorTitle, ViewModel.ValidationError ?? DialogStrings.DefaultValidationError, ButtonEnum.Ok, MsBox.Avalonia.Enums.Icon.Warning); await box.ShowWindowDialogAsync(this); return; } Close(true); } private void CancelButton_Click(object? sender, RoutedEventArgs e) { Close(false); } }