84 lines
2.6 KiB
C#
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;
|
|
}
|
|
}
|