1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
//
// MainWindowViewModel.cs
//
// Copyright (c) František Boháček. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
using System;
using System.Collections.ObjectModel;
using System.ComponentModel;
using Dock.Model.Controls;
using Dock.Model.Core;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Logging;
using NosSmooth.Comms.Local.Extensions;
using NosSmooth.Core.Extensions;
using NosSmooth.PacketSerializer.Extensions;
using NosSmooth.PacketSerializer.Packets;
using PacketLogger.Models;
using PacketLogger.Models.Packets;
namespace PacketLogger.ViewModels;
/// <inheritdoc />
public class MainWindowViewModel : ViewModelBase, INotifyPropertyChanged
{
private readonly IFactory? _factory;
/// <summary>
/// Initializes a new instance of the <see cref="MainWindowViewModel"/> class.
/// </summary>
public MainWindowViewModel()
{
var services = new ServiceCollection()
.AddLogging(b => b.ClearProviders().AddConsole())
.AddSingleton<DockFactory>()
.AddNostaleCore()
.AddStatefulInjector()
.AddStatefulEntity<CommsPacketProvider>()
.AddLocalComms()
.AddPacketResponder<PacketResponder>()
.BuildServiceProvider();
var packetTypes = services.GetRequiredService<IPacketTypesRepository>();
var result = packetTypes.AddDefaultPackets();
if (!result.IsSuccess)
{
Console.WriteLine(result.ToFullString());
}
_factory = services.GetRequiredService<DockFactory>();
Layout = _factory?.CreateLayout();
if (Layout is { })
{
_factory?.InitLayout(Layout);
if (Layout is { } root)
{
root.Navigate.Execute("Home");
}
}
}
/// <summary>
/// Gets or sets the layout.
/// </summary>
public IRootDock? Layout { get; set; }
}