69 lines
2.3 KiB
C#
69 lines
2.3 KiB
C#
using Harmonia.Core.Extensions;
|
|
using Harmonia.WinUI.Caching;
|
|
using Harmonia.WinUI.Messaging;
|
|
using Harmonia.WinUI.Session;
|
|
using Harmonia.WinUI.Storage;
|
|
using Harmonia.WinUI.ViewModels;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.UI.Xaml;
|
|
using System;
|
|
|
|
namespace Harmonia.WinUI;
|
|
|
|
public partial class App : Application
|
|
{
|
|
private Window? _mainWindow;
|
|
|
|
public static IServiceProvider ServiceProvider { get; private set; }
|
|
|
|
static App()
|
|
{
|
|
ServiceCollection services = new();
|
|
|
|
services.AddSingleton<MainWindow>();
|
|
|
|
//services.AddSingleton<MainViewModel>();
|
|
services.AddSingleton<PlayerViewModel>();
|
|
services.AddSingleton<PlayingSongViewModel>();
|
|
services.AddSingleton<PlaylistsViewModel>();
|
|
services.AddSingleton<PlaylistDetailViewModel>();
|
|
|
|
services.AddSingleton<IAudioBitmapImageCache, AudioBitmapImageCache>();
|
|
services.AddSingleton<IStorageProvider, WindowsStorageProvider>();
|
|
services.AddSingleton<IMessageService, WindowsMessageService>();
|
|
|
|
services.AddSingleton<ISessionService, JsonSessionService>();
|
|
services.AddSingleton(sp => sp.GetRequiredService<ISessionService>().Session.Window);
|
|
services.AddSingleton(sp => sp.GetRequiredService<ISessionService>().Session.Player);
|
|
services.AddSingleton(sp => sp.GetRequiredService<ISessionService>().Session.Playlist);
|
|
|
|
services.AddSingleton<ISessionRestorer, SessionRestorer>();
|
|
services.AddSingleton<ISessionTracker, SessionTracker>();
|
|
|
|
services.AddHarmonia();
|
|
|
|
ServiceProvider = services.BuildServiceProvider();
|
|
}
|
|
|
|
public App()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
protected override async void OnLaunched(LaunchActivatedEventArgs args)
|
|
{
|
|
await ServiceProvider.InitializeHarmoniaAsync();
|
|
|
|
ISessionService sessionService = ServiceProvider.GetRequiredService<ISessionService>();
|
|
await sessionService.LoadAsync();
|
|
|
|
ISessionRestorer sessionRestorer = ServiceProvider.GetRequiredService<ISessionRestorer>();
|
|
sessionRestorer.Restore();
|
|
|
|
ISessionTracker sessionTracker = ServiceProvider.GetRequiredService<ISessionTracker>();
|
|
sessionTracker.Start();
|
|
|
|
_mainWindow = ServiceProvider.GetRequiredService<MainWindow>();
|
|
_mainWindow.Activate();
|
|
}
|
|
} |