InkForge/app/InkForge.Desktop/ViewModels/Tools/WorkspaceTool.cs

41 lines
1,015 B
C#
Raw Normal View History

2024-05-02 21:44:13 +02:00
using System.Reactive.Linq;
using CommunityToolkit.Mvvm.ComponentModel;
using Dock.Model.Mvvm.Controls;
using DynamicData.Binding;
2024-03-17 22:27:01 +01:00
using InkForge.Desktop.Managers;
2024-05-02 21:44:13 +02:00
using InkForge.Desktop.Models;
2024-03-17 22:27:01 +01:00
using InkForge.Desktop.ViewModels.Workspaces;
namespace InkForge.Desktop.ViewModels.Tools;
2024-05-02 21:44:13 +02:00
public partial class WorkspaceTool : Tool
2024-03-17 22:27:01 +01:00
{
2024-05-02 21:44:13 +02:00
private readonly IWorkspaceViewModelFactory _workspaceViewModelFactory;
[ObservableProperty] private WorkspaceViewModel? _workspace;
2024-03-17 22:27:01 +01:00
public WorkspaceTool(WorkspaceManager workspaceManager, IWorkspaceViewModelFactory workspaceViewModelFactory)
{
2024-05-02 21:44:13 +02:00
_workspaceViewModelFactory = workspaceViewModelFactory;
Title = "Explorer";
2024-03-17 22:27:01 +01:00
CanClose = false;
2024-05-02 21:44:13 +02:00
CanFloat = false;
CanPin = false;
2024-03-17 22:27:01 +01:00
2024-05-02 21:44:13 +02:00
workspaceManager.WhenValueChanged(v => v.Workspace).Subscribe(OnWorkspaceManagerWorkspaceChanged);
}
private void OnWorkspaceManagerWorkspaceChanged(Workspace? workspace)
{
Workspace = workspace switch
{
{ } v => _workspaceViewModelFactory.Create(v),
_ => null
};
2024-03-17 22:27:01 +01:00
}
}