52 lines
1.3 KiB
C#
52 lines
1.3 KiB
C#
using Avalonia.Controls;
|
|
using Avalonia.Interactivity;
|
|
using Avalonia.Platform.Storage;
|
|
using gregExtractor.GUI.ViewModels;
|
|
|
|
namespace gregExtractor.GUI;
|
|
|
|
public partial class MainWindow : Window
|
|
{
|
|
public MainWindow()
|
|
{
|
|
InitializeComponent();
|
|
DataContextChanged += OnDataContextChanged;
|
|
WireDataContext();
|
|
}
|
|
|
|
private void OnDataContextChanged(object? sender, EventArgs eventArgs)
|
|
{
|
|
WireDataContext();
|
|
}
|
|
|
|
private void WireDataContext()
|
|
{
|
|
if (DataContext is MainViewModel viewModel)
|
|
viewModel.WireBrowseHandler(BrowseFolderAsync);
|
|
}
|
|
|
|
private async Task<string?> BrowseFolderAsync(string? target)
|
|
{
|
|
IReadOnlyList<IStorageFolder> folders = await StorageProvider.OpenFolderPickerAsync(new FolderPickerOpenOptions
|
|
{
|
|
AllowMultiple = false,
|
|
Title = string.IsNullOrWhiteSpace(target) ? "Select folder" : $"Select folder for {target}",
|
|
});
|
|
|
|
if (folders.Count == 0)
|
|
return null;
|
|
|
|
return folders[0].Path.LocalPath;
|
|
}
|
|
|
|
private void OnMinimizeClicked(object? sender, RoutedEventArgs e)
|
|
{
|
|
WindowState = WindowState.Minimized;
|
|
}
|
|
|
|
private void OnCloseClicked(object? sender, RoutedEventArgs e)
|
|
{
|
|
Close();
|
|
}
|
|
}
|