InkForge/app/InkForge.Desktop/Managers/DocumentManager.cs

49 lines
1.2 KiB
C#
Raw Normal View History

2024-03-17 22:27:01 +01:00
using Avalonia;
using Dock.Model.Core;
using InkForge.Desktop.Models;
using InkForge.Desktop.ViewModels.Documents;
using Microsoft.Extensions.DependencyInjection;
using ReactiveUI;
2024-02-26 18:08:18 +01:00
namespace InkForge.Desktop.Managers;
public class DocumentManager
{
2024-03-17 22:27:01 +01:00
private readonly IDock _documents;
private readonly InkForgeFactory _factory;
private readonly WelcomePageDocumentViewModel _welcomePage;
2024-02-26 18:08:18 +01:00
private readonly WorkspaceManager _workspaceManager;
2024-03-17 22:27:01 +01:00
public DocumentManager(WorkspaceManager workspaceManager, InkForgeFactory factory)
2024-02-26 18:08:18 +01:00
{
_workspaceManager = workspaceManager;
2024-03-17 22:27:01 +01:00
_factory = factory;
_documents = factory.GetDockable<IDock>("Documents")!;
_welcomePage = CreateWelcomePageDocumentViewModel();
workspaceManager.WhenAnyValue(v => v.Workspace).Subscribe(OnWorkspaceChanged);
}
private void OnWorkspaceChanged(Workspace? workspace)
{
if (workspace is null)
{
_factory.AddDockable(_documents, _welcomePage);
}
else
{
_factory.RemoveDockable(_welcomePage, false);
}
}
private static WelcomePageDocumentViewModel CreateWelcomePageDocumentViewModel()
{
return ActivatorUtilities.CreateInstance<WelcomePageDocumentViewModel>(
Application.Current!.GetValue(App.ServiceProviderProperty)
);
2024-02-26 18:08:18 +01:00
}
}