LANCommander/LANCommander.Launcher/Views/InstallOptionsOverlay.axaml.cs
Pat Hartl b183e4b18c Remove old launcher, rename Avalonia launcher
Also adds ARM builds for Linux + Windows launcher
2026-06-06 05:49:24 -05:00

84 lines
2.6 KiB
C#

using System;
using System.ComponentModel;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Interactivity;
using LANCommander.Launcher.ViewModels;
namespace LANCommander.Launcher.Views;
public partial class InstallOptionsOverlay : UserControl
{
public event EventHandler<bool?>? DialogClosed;
public InstallOptionsOverlay()
{
InitializeComponent();
DataContextChanged += OnDataContextChanged;
}
private void OnDataContextChanged(object? sender, EventArgs e)
{
if (DataContext is InstallOptionsViewModel vm)
{
foreach (var addon in vm.Addons)
addon.PropertyChanged += OnSelectionChanged;
foreach (var tool in vm.Tools)
tool.PropertyChanged += OnSelectionChanged;
}
}
private void OnSelectionChanged(object? sender, PropertyChangedEventArgs e)
{
if ((e.PropertyName == nameof(InstallAddonItemViewModel.IsSelected)
|| e.PropertyName == nameof(InstallToolItemViewModel.IsSelected))
&& DataContext is InstallOptionsViewModel vm)
vm.RefreshSizes();
}
private void Confirm_Click(object? sender, RoutedEventArgs e) => Close(true);
private void Cancel_Click(object? sender, RoutedEventArgs e) => Close(false);
private void Close(bool? result)
{
if (DataContext is InstallOptionsViewModel vm)
{
foreach (var addon in vm.Addons)
addon.PropertyChanged -= OnSelectionChanged;
foreach (var tool in vm.Tools)
tool.PropertyChanged -= OnSelectionChanged;
}
var layer = OverlayLayer.GetOverlayLayer(this);
DialogClosed?.Invoke(this, result);
layer?.Children.Remove(this);
}
private void SelectAllAddons_Click(object? sender, RoutedEventArgs e)
{
if (DataContext is InstallOptionsViewModel vm)
foreach (var addon in vm.Addons)
addon.IsSelected = true;
}
private void DeselectAllAddons_Click(object? sender, RoutedEventArgs e)
{
if (DataContext is InstallOptionsViewModel vm)
foreach (var addon in vm.Addons)
addon.IsSelected = false;
}
private void SelectAllTools_Click(object? sender, RoutedEventArgs e)
{
if (DataContext is InstallOptionsViewModel vm)
foreach (var tool in vm.Tools)
tool.IsSelected = true;
}
private void DeselectAllTools_Click(object? sender, RoutedEventArgs e)
{
if (DataContext is InstallOptionsViewModel vm)
foreach (var tool in vm.Tools)
tool.IsSelected = false;
}
}