Batch Update
This commit is contained in:
parent
693d12b61c
commit
4c2b5cca93
32 changed files with 483 additions and 332 deletions
|
|
@ -21,8 +21,9 @@ public class WelcomePageDocumentViewModel : Document
|
|||
|
||||
public WelcomePageDocumentViewModel(WorkspaceManager workspaceController)
|
||||
{
|
||||
CanClose = false;
|
||||
Title = "Welcome";
|
||||
|
||||
|
||||
_workspaceController = workspaceController;
|
||||
CreateNew = ReactiveCommand.CreateFromTask(OnCreateNew);
|
||||
OpenNew = ReactiveCommand.CreateFromTask(OnOpenNew);
|
||||
|
|
@ -33,7 +34,7 @@ public class WelcomePageDocumentViewModel : Document
|
|||
var storageProvider = this.GetStorageProvider()!;
|
||||
|
||||
var documents = await storageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents);
|
||||
var file = await storageProvider.SaveFilePickerAsync(new FilePickerSaveOptions()
|
||||
var file = await storageProvider.SaveFilePickerAsync(new()
|
||||
{
|
||||
DefaultExtension = ".ifdb",
|
||||
FileTypeChoices =
|
||||
|
|
@ -60,7 +61,7 @@ public class WelcomePageDocumentViewModel : Document
|
|||
var storageProvider = this.GetStorageProvider()!;
|
||||
|
||||
var documents = await storageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents);
|
||||
var files = await storageProvider.OpenFilePickerAsync(new FilePickerOpenOptions()
|
||||
var files = await storageProvider.OpenFilePickerAsync(new()
|
||||
{
|
||||
AllowMultiple = false,
|
||||
SuggestedStartLocation = documents,
|
||||
|
|
|
|||
|
|
@ -1,23 +0,0 @@
|
|||
using Dock.Model.Controls;
|
||||
|
||||
using InkForge.Desktop.Dock;
|
||||
using InkForge.Desktop.Managers;
|
||||
using InkForge.Desktop.ViewModels.Documents;
|
||||
|
||||
namespace InkForge.Desktop.ViewModels;
|
||||
|
||||
public class DocumentsViewModel
|
||||
{
|
||||
private readonly WorkspaceFactory _workspaceFactory;
|
||||
|
||||
public IRootDock Layout { get; }
|
||||
|
||||
public DocumentsViewModel(WorkspaceFactory workspaceFactory, WorkspaceManager workspaceManager)
|
||||
{
|
||||
_workspaceFactory = workspaceFactory;
|
||||
|
||||
Layout = workspaceFactory.CreateLayout();
|
||||
var documents = workspaceFactory.GetDockable<IDocumentDock>("Documents")!;
|
||||
workspaceFactory.AddDockable(documents, new WelcomePageDocumentViewModel(workspaceManager));
|
||||
}
|
||||
}
|
||||
13
app/InkForge.Desktop/ViewModels/InkForgeDocumentDock.cs
Normal file
13
app/InkForge.Desktop/ViewModels/InkForgeDocumentDock.cs
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
using Dock.Model.Core;
|
||||
using Dock.Model.ReactiveUI.Controls;
|
||||
|
||||
namespace InkForge.Desktop.ViewModels;
|
||||
|
||||
public class InkForgeDocumentDock : DocumentDock, IDock
|
||||
{
|
||||
bool IDock.IsEmpty
|
||||
{
|
||||
get => false;
|
||||
set { }
|
||||
}
|
||||
}
|
||||
32
app/InkForge.Desktop/ViewModels/MainViewModel.cs
Normal file
32
app/InkForge.Desktop/ViewModels/MainViewModel.cs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
using Avalonia;
|
||||
|
||||
using Dock.Model.Core;
|
||||
|
||||
using InkForge.Desktop.Managers;
|
||||
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
using ReactiveUI;
|
||||
|
||||
namespace InkForge.Desktop.ViewModels;
|
||||
|
||||
public class MainViewModel : ReactiveObject
|
||||
{
|
||||
private readonly DocumentManager _documentManager;
|
||||
public IDock Layout { get; }
|
||||
|
||||
public MainViewModel(InkForgeFactory factory)
|
||||
{
|
||||
Layout = factory.CreateLayout();
|
||||
factory.InitLayout(Layout);
|
||||
|
||||
_documentManager = CreateDocumentManager();
|
||||
}
|
||||
|
||||
private static DocumentManager CreateDocumentManager()
|
||||
{
|
||||
return ActivatorUtilities.CreateInstance<DocumentManager>(
|
||||
Application.Current!.GetValue(App.ServiceProviderProperty)
|
||||
);
|
||||
}
|
||||
}
|
||||
32
app/InkForge.Desktop/ViewModels/Tools/WorkspaceTool.cs
Normal file
32
app/InkForge.Desktop/ViewModels/Tools/WorkspaceTool.cs
Normal file
|
|
@ -0,0 +1,32 @@
|
|||
using Dock.Model.ReactiveUI.Controls;
|
||||
|
||||
using InkForge.Desktop.Managers;
|
||||
using InkForge.Desktop.ViewModels.Workspaces;
|
||||
|
||||
using ReactiveUI;
|
||||
|
||||
namespace InkForge.Desktop.ViewModels.Tools;
|
||||
|
||||
public class WorkspaceTool : Tool
|
||||
{
|
||||
private WorkspaceViewModel? _workspace;
|
||||
|
||||
public WorkspaceViewModel? Workspace
|
||||
{
|
||||
get => _workspace;
|
||||
private set => this.RaiseAndSetIfChanged(ref _workspace, value);
|
||||
}
|
||||
|
||||
public WorkspaceTool(WorkspaceManager workspaceManager, IWorkspaceViewModelFactory workspaceViewModelFactory)
|
||||
{
|
||||
Title = "Workspace";
|
||||
CanClose = false;
|
||||
|
||||
workspaceManager.WhenAnyValue(v => v.Workspace,
|
||||
v => v switch
|
||||
{
|
||||
{ } => workspaceViewModelFactory.Create(v),
|
||||
_ => null
|
||||
}).BindTo(this, v => v.Workspace);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,26 +1,50 @@
|
|||
using InkForge.Desktop.Models;
|
||||
|
||||
namespace InkForge.Desktop.ViewModels.Workspaces;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
public class WorkspaceViewModel(Workspace workspace)
|
||||
namespace InkForge.Desktop.ViewModels.Workspaces
|
||||
{
|
||||
// private readonly Workspace _workspace;
|
||||
// private readonly ObservableAsPropertyHelper<string> _workspaceNameProperty;
|
||||
public class WorkspaceViewModel(Workspace workspace)
|
||||
{
|
||||
// private readonly Workspace _workspace;
|
||||
// private readonly ObservableAsPropertyHelper<string> _workspaceNameProperty;
|
||||
|
||||
// public string WorkspaceName => _workspaceNameProperty.Value;
|
||||
// public string WorkspaceName => _workspaceNameProperty.Value;
|
||||
|
||||
// public ReactiveCommand<Unit, Unit> AddDocument { get; }
|
||||
// public ReactiveCommand<Unit, Unit> AddDocument { get; }
|
||||
|
||||
// public WorkspacesViewModel(Workspace workspace)
|
||||
// {
|
||||
// _workspace = workspace;
|
||||
// _workspaceNameProperty = this.WhenAnyValue(v => v._workspace.Name).ToProperty(this, nameof(WorkspaceName));
|
||||
// public WorkspacesViewModel(Workspace workspace)
|
||||
// {
|
||||
// _workspace = workspace;
|
||||
// _workspaceNameProperty = this.WhenAnyValue(v => v._workspace.Name).ToProperty(this, nameof(WorkspaceName));
|
||||
|
||||
// AddDocument = ReactiveCommand.Create(OnAddDocument);
|
||||
// }
|
||||
// AddDocument = ReactiveCommand.Create(OnAddDocument);
|
||||
// }
|
||||
|
||||
// private void OnAddDocument()
|
||||
// {
|
||||
// private void OnAddDocument()
|
||||
// {
|
||||
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
public interface IWorkspaceViewModelFactory
|
||||
{
|
||||
WorkspaceViewModel Create(Workspace workspace);
|
||||
}
|
||||
|
||||
namespace Internal
|
||||
{
|
||||
internal class WorkspaceViewModelFactory(IServiceProvider services) : IWorkspaceViewModelFactory
|
||||
{
|
||||
private static ObjectFactory<WorkspaceViewModel>? s_workspaceViewModelFactory;
|
||||
|
||||
public WorkspaceViewModel Create(Workspace workspace)
|
||||
{
|
||||
s_workspaceViewModelFactory ??= ActivatorUtilities.CreateFactory<WorkspaceViewModel>([typeof(Workspace)]);
|
||||
return s_workspaceViewModelFactory(services, [workspace]);
|
||||
}
|
||||
|
||||
WorkspaceViewModel IWorkspaceViewModelFactory.Create(Workspace workspace) => Create(workspace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,24 +0,0 @@
|
|||
using InkForge.Desktop.Managers;
|
||||
using InkForge.Desktop.ViewModels.Workspaces;
|
||||
|
||||
using ReactiveUI;
|
||||
|
||||
namespace InkForge.Desktop.ViewModels;
|
||||
|
||||
public class WorkspacesViewModel : ReactiveObject
|
||||
{
|
||||
private readonly WorkspaceManager _workspaceManager;
|
||||
private WorkspaceViewModel? _workspace;
|
||||
|
||||
public WorkspaceViewModel? Workspace
|
||||
{
|
||||
get => _workspace;
|
||||
private set => this.RaiseAndSetIfChanged(ref _workspace, value);
|
||||
}
|
||||
|
||||
public WorkspacesViewModel(WorkspaceManager workspaceManager)
|
||||
{
|
||||
_workspaceManager = workspaceManager;
|
||||
workspaceManager.WhenAnyValue(v => v.Workspace, v => v is null ? null : new WorkspaceViewModel(v)).BindTo(this, v => v.Workspace);
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue