Console DialogService
This commit is contained in:
@@ -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; }
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
Reference in New Issue
Block a user