-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathServiceCollectionExtensions.cs
More file actions
95 lines (76 loc) · 3.39 KB
/
ServiceCollectionExtensions.cs
File metadata and controls
95 lines (76 loc) · 3.39 KB
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
using LoupixDeck.Controllers;
using LoupixDeck.Models;
using LoupixDeck.Services;
using LoupixDeck.Utils;
using LoupixDeck.ViewModels;
using LoupixDeck.Views;
using Microsoft.Extensions.DependencyInjection;
namespace LoupixDeck;
public static class ServiceCollectionExtensions
{
public static void AddCommonServices(this IServiceCollection collection)
{
collection.AddSingleton(provider =>
{
var configService = provider.GetRequiredService<IConfigService>();
var configPath = FileDialogHelper.GetConfigPath("config.json");
var config = configService.LoadConfig<LoupedeckConfig>(configPath);
return config ?? new LoupedeckConfig();
});
collection.AddSingleton<IConfigService, ConfigService>();
collection.AddSingleton<ICommandService, CommandService>();
collection.AddSingleton<IDeviceService, LoupedeckDeviceService>();
collection.AddSingleton<IPageManager, PageManager>();
var elgatoDevices = ElgatoDevices.LoadFromFile();
if (elgatoDevices != null)
{
collection.AddSingleton(elgatoDevices);
}
else
{
collection.AddSingleton<ElgatoDevices>();
}
collection.AddSingleton<ICommandBuilder, CommandBuilder>();
collection.AddSingleton<ISysCommandService, SysCommandService>();
// UInputKeyboard is only available on Linux
if (OperatingSystem.IsLinux())
{
collection.AddSingleton<IUInputKeyboard, UInputKeyboard>();
}
else
{
collection.AddSingleton<IUInputKeyboard, WindowsUInputKeyboard>();
}
collection.AddSingleton<IObsController, ObsController>();
collection.AddSingleton<IDBusController, DBusController>();
collection.AddSingleton<ICommandRunner, CommandRunner>();
collection.AddSingleton<IElgatoController, ElgatoController>();
collection.AddSingleton<ICoolerControlApiController, CoolerControlApiController>();
collection.AddSingleton<LoupedeckLiveSController>();
collection.AddTransient<MainWindowViewModel>();
InitDialogs(collection);
}
private static void InitDialogs(IServiceCollection collection)
{
collection.AddTransient<SimpleButtonSettings>();
collection.AddTransient<SimpleButtonSettingsViewModel>();
collection.AddTransient<RotaryButtonSettings>();
collection.AddTransient<RotaryButtonSettingsViewModel>();
collection.AddTransient<TouchButtonSettings>();
collection.AddTransient<TouchButtonSettingsViewModel>();
collection.AddTransient<Settings>();
collection.AddTransient<SettingsViewModel>();
collection.AddTransient<About>();
collection.AddTransient<AboutViewModel>();
collection.AddSingleton<IDialogService, DialogService>();
}
public static void PostInit(this IServiceProvider services)
{
var dialogService = services.GetRequiredService<IDialogService>();
dialogService.Register<SimpleButtonSettingsViewModel, SimpleButtonSettings>();
dialogService.Register<RotaryButtonSettingsViewModel, RotaryButtonSettings>();
dialogService.Register<TouchButtonSettingsViewModel, TouchButtonSettings>();
dialogService.Register<SettingsViewModel, Settings>();
dialogService.Register<AboutViewModel, About>();
}
}