You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
74 lines
2.1 KiB
74 lines
2.1 KiB
using System.Linq; |
|
using System.Threading.Tasks; |
|
using Avalonia.Controls; |
|
using Avalonia.Controls.Primitives; |
|
using Avalonia.Interactivity; |
|
using Avalonia.Markup.Xaml; |
|
using Avalonia.Threading; |
|
using Avalonia.VisualTree; |
|
using FluentAvalonia.UI.Controls; |
|
using FluentAvalonia.UI.Navigation; |
|
using StabilityMatrix.Avalonia.Controls; |
|
using StabilityMatrix.Avalonia.Models; |
|
using StabilityMatrix.Avalonia.ViewModels; |
|
using StabilityMatrix.Core.Attributes; |
|
using StabilityMatrix.Core.Helper; |
|
using StabilityMatrix.Core.Models.Packages; |
|
|
|
namespace StabilityMatrix.Avalonia.Views; |
|
|
|
[Singleton] |
|
public partial class PackageManagerPage : UserControlBase |
|
{ |
|
public PackageManagerPage() |
|
{ |
|
InitializeComponent(); |
|
|
|
AddHandler(Frame.NavigatedToEvent, OnNavigatedTo, RoutingStrategies.Direct); |
|
EventManager.Instance.OneClickInstallFinished += OnOneClickInstallFinished; |
|
} |
|
|
|
private void OnOneClickInstallFinished(object? sender, bool skipped) |
|
{ |
|
if (skipped) |
|
return; |
|
|
|
Dispatcher.UIThread.Invoke(() => |
|
{ |
|
var target = this.FindDescendantOfType<UniformGrid>() |
|
?.GetVisualChildren() |
|
.OfType<Button>() |
|
.FirstOrDefault(x => x is { Name: "LaunchButton" }); |
|
|
|
if (target == null) |
|
return; |
|
|
|
var teachingTip = this.FindControl<TeachingTip>("LaunchTeachingTip"); |
|
if (teachingTip == null) |
|
return; |
|
|
|
teachingTip.Target = target; |
|
teachingTip.IsOpen = true; |
|
}); |
|
} |
|
|
|
private void InitializeComponent() |
|
{ |
|
AvaloniaXamlLoader.Load(this); |
|
} |
|
|
|
/// <summary> |
|
/// Handle navigation events to this page |
|
/// </summary> |
|
private void OnNavigatedTo(object? sender, NavigationEventArgs args) |
|
{ |
|
if (args.Parameter is PackageManagerNavigationOptions { OpenInstallerDialog: true } options) |
|
{ |
|
var vm = (PackageManagerViewModel)DataContext!; |
|
Dispatcher.UIThread.Invoke(() => |
|
{ |
|
vm.ShowInstallDialog(options.InstallerSelectedPackage); |
|
}); |
|
} |
|
} |
|
}
|
|
|