Console DialogService

This commit is contained in:
2023-08-14 11:50:59 +02:00
parent 6797c26bf9
commit 1f4b938358
41 changed files with 807 additions and 269 deletions

View File

@@ -0,0 +1,11 @@
using FileTime.App.Core.ViewModels;
using FileTime.Core.Interactions;
using ObservableComputations;
namespace FileTime.App.Core.Services;
public interface IDialogServiceBase : IUserCommunicationService
{
ScalarComputing<ReadInputsViewModel?> ReadInput { get; }
ScalarComputing<MessageBoxViewModel?> LastMessageBox { get; }
}

View File

@@ -1,11 +1,11 @@
using DynamicData;
using System.Collections.ObjectModel;
using FileTime.App.Core.ViewModels;
namespace FileTime.App.Core.Services;
public interface IModalService
{
IObservable<IChangeSet<IModalViewModel>> OpenModals { get; }
ReadOnlyObservableCollection<IModalViewModel> OpenModals { get; }
void OpenModal(IModalViewModel modalToOpen);
void CloseModal(IModalViewModel modalToClose);

View File

@@ -0,0 +1,31 @@
using FileTime.Core.Interactions;
namespace FileTime.App.Core.ViewModels;
public class MessageBoxViewModel : IModalViewModel
{
private readonly Action<MessageBoxViewModel, MessageBoxResult> _handler;
public string Text { get; }
public bool ShowCancel { get; }
public string OkText { get; }
public string CancelText { get; }
public string Name => "MessageBoxViewModel";
public MessageBoxViewModel(
string text,
Action<MessageBoxViewModel, MessageBoxResult> handler,
bool showCancel = true,
string? okText = null,
string? cancelText = null)
{
_handler = handler;
Text = text;
ShowCancel = showCancel;
OkText = okText ?? "Yes";
CancelText = cancelText ?? "No";
}
public void Ok() => _handler.Invoke(this, MessageBoxResult.Ok);
public void Cancel() => _handler.Invoke(this, MessageBoxResult.Cancel);
}

View File

@@ -0,0 +1,31 @@
using System.Collections.ObjectModel;
using FileTime.Core.Interactions;
namespace FileTime.App.Core.ViewModels;
public class ReadInputsViewModel : IModalViewModel
{
public string Name => "ReadInputs";
public required List<IInputElement> Inputs { get; init; }
public required Action<ReadInputsViewModel> SuccessHandler { get; init; }
public required Action<ReadInputsViewModel>? CancelHandler { get; init; }
public ObservableCollection<IPreviewElement> Previews { get; } = new();
public ReadInputsViewModel()
{
}
public ReadInputsViewModel(
List<IInputElement> inputs,
Action<ReadInputsViewModel> successHandler,
Action<ReadInputsViewModel>? cancelHandler = null)
{
Inputs = inputs;
SuccessHandler = successHandler;
CancelHandler = cancelHandler;
}
public void Process() => SuccessHandler.Invoke(this);
public void Cancel() => CancelHandler?.Invoke(this);
}