LANCommander/LANCommander.Launcher/Views/InstallOptionsOverlay.axaml.cs

85 lines
2.6 KiB
C#
Raw Permalink Normal View History

using System;
2026-04-22 20:14:56 -05:00
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();
2026-04-22 20:14:56 -05:00
DataContextChanged += OnDataContextChanged;
}
private void OnDataContextChanged(object? sender, EventArgs e)
{
if (DataContext is InstallOptionsViewModel vm)
{
foreach (var addon in vm.Addons)
2026-05-14 00:28:31 -05:00
addon.PropertyChanged += OnSelectionChanged;
foreach (var tool in vm.Tools)
tool.PropertyChanged += OnSelectionChanged;
2026-04-22 20:14:56 -05:00
}
}
2026-05-14 00:28:31 -05:00
private void OnSelectionChanged(object? sender, PropertyChangedEventArgs e)
2026-04-22 20:14:56 -05:00
{
2026-05-14 00:28:31 -05:00
if ((e.PropertyName == nameof(InstallAddonItemViewModel.IsSelected)
|| e.PropertyName == nameof(InstallToolItemViewModel.IsSelected))
&& DataContext is InstallOptionsViewModel vm)
2026-04-22 20:14:56 -05:00
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)
{
2026-04-22 20:14:56 -05:00
if (DataContext is InstallOptionsViewModel vm)
{
foreach (var addon in vm.Addons)
2026-05-14 00:28:31 -05:00
addon.PropertyChanged -= OnSelectionChanged;
foreach (var tool in vm.Tools)
tool.PropertyChanged -= OnSelectionChanged;
2026-04-22 20:14:56 -05:00
}
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;
}
2026-05-14 00:28:31 -05:00
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;
}
}