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
|
|
|
}
|
|
|
|
|
}
|