InkForge/app/InkForge.Desktop/ViewModels/Documents/WelcomePageDocumentViewModel.cs

87 lines
1.8 KiB
C#
Raw Normal View History

2024-02-16 02:23:58 +01:00
using System.Reactive;
using Avalonia.Platform.Storage;
2024-05-02 21:44:13 +02:00
using CommunityToolkit.Mvvm.Input;
using CommunityToolkit.Mvvm.Messaging;
using Dock.Model.Mvvm.Controls;
2024-02-26 18:08:18 +01:00
using InkForge.Desktop.Managers;
2024-02-16 02:23:58 +01:00
using InkForge.Desktop.Services;
2024-02-26 18:08:18 +01:00
namespace InkForge.Desktop.ViewModels.Documents;
2024-02-16 02:23:58 +01:00
2024-05-02 21:44:13 +02:00
public partial class WelcomePageDocumentViewModel : Document
2024-02-16 02:23:58 +01:00
{
private readonly WorkspaceManager _workspaceController;
2024-02-16 02:23:58 +01:00
2024-02-26 18:08:18 +01:00
public WelcomePageDocumentViewModel(WorkspaceManager workspaceController)
2024-02-16 02:23:58 +01:00
{
2024-02-26 18:08:18 +01:00
Title = "Welcome";
2024-03-17 22:27:01 +01:00
2024-02-16 02:23:58 +01:00
_workspaceController = workspaceController;
}
2024-05-02 21:44:13 +02:00
[RelayCommand]
2024-02-16 02:23:58 +01:00
private async Task OnCreateNew()
{
var storageProvider = this.GetStorageProvider()!;
var documents = await storageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents);
2024-03-17 22:27:01 +01:00
var file = await storageProvider.SaveFilePickerAsync(new()
2024-02-16 02:23:58 +01:00
{
DefaultExtension = ".ifdb",
FileTypeChoices =
[
new FilePickerFileType("InkForge Database File")
{
Patterns = [ "*.ifdb" ],
},
],
SuggestedStartLocation = documents,
Title = "Select InkForge Database Name",
});
if (file?.TryGetLocalPath() is not { } filePath)
{
return;
}
await _workspaceController.OpenWorkspace(filePath, true);
}
2024-05-02 21:44:13 +02:00
[RelayCommand]
2024-02-16 02:23:58 +01:00
private async Task OnOpenNew()
{
var storageProvider = this.GetStorageProvider()!;
var documents = await storageProvider.TryGetWellKnownFolderAsync(WellKnownFolder.Documents);
2024-03-17 22:27:01 +01:00
var files = await storageProvider.OpenFilePickerAsync(new()
2024-02-16 02:23:58 +01:00
{
AllowMultiple = false,
SuggestedStartLocation = documents,
FileTypeFilter =
[
new FilePickerFileType("InkForge Database File")
{
Patterns = [ "*.ifdb" ]
}
],
Title = "Open InkForge Database file"
});
if (files.Count != 1)
{
return;
}
if (files[0].TryGetLocalPath() is not { } filePath)
{
return;
}
await _workspaceController.OpenWorkspace(filePath, false);
}
}