Files
covenant-setup/authoring-ui/InstallerConfigDialog.xaml.cs
T

65 lines
1.9 KiB
C#

using Microsoft.UI.Xaml.Controls;
using Windows.Storage.Pickers;
using WinRT.Interop;
namespace Covenant.Setup.Authoring;
internal sealed partial class InstallerConfigDialog : ContentDialog
{
private readonly InstallerConfigViewModel _viewModel;
private readonly IntPtr _ownerWindowHandle;
public InstallerConfigDialog(InstallerConfigViewModel viewModel, IntPtr ownerWindowHandle)
{
_viewModel = viewModel;
_ownerWindowHandle = ownerWindowHandle;
InitializeComponent();
DataContext = viewModel;
}
private async void BrowseCovenantSetupButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs args)
{
var picker = new FileOpenPicker
{
SuggestedStartLocation = PickerLocationId.ComputerFolder
};
InitializeWithWindow.Initialize(picker, _ownerWindowHandle);
picker.FileTypeFilter.Add(".exe");
var file = await picker.PickSingleFileAsync();
if (file is not null)
{
_ = await _viewModel.AcceptToolPathAsync(file.Path);
}
}
private async void ChooseOutputDirectoryButton_Click(object sender, Microsoft.UI.Xaml.RoutedEventArgs args)
{
var picker = new FolderPicker
{
SuggestedStartLocation = PickerLocationId.DocumentsLibrary
};
InitializeWithWindow.Initialize(picker, _ownerWindowHandle);
picker.FileTypeFilter.Add("*");
var folder = await picker.PickSingleFolderAsync();
if (folder is not null)
{
_viewModel.OutputDirectory = folder.Path;
}
}
private async void SaveButton_Click(ContentDialog sender, ContentDialogButtonClickEventArgs args)
{
var deferral = args.GetDeferral();
try
{
args.Cancel = !await _viewModel.SaveConfigAsync();
}
finally
{
deferral.Complete();
}
}
}