|
|
@@ -4,12 +4,15 @@ using System.Diagnostics.CodeAnalysis;
|
|
|
using System.Linq;
|
|
|
using System.Threading;
|
|
|
using System.Threading.Tasks;
|
|
|
+using Avalonia.Threading;
|
|
|
+
|
|
|
// using Avalonia.Svg.Skia;
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
using CommunityToolkit.Mvvm.Input;
|
|
|
using DialogHostAvalonia;
|
|
|
using InABox.Avalonia;
|
|
|
using InABox.Avalonia.Components;
|
|
|
+using InABox.Avalonia.Dialogs;
|
|
|
using InABox.Configuration;
|
|
|
|
|
|
namespace PRS.Avalonia;
|
|
|
@@ -124,6 +127,58 @@ public abstract partial class ViewModelBase : ObservableValidator, IViewModelBas
|
|
|
{
|
|
|
return true;
|
|
|
}
|
|
|
+
|
|
|
+ private enum ConfirmChangesResult
|
|
|
+ {
|
|
|
+ Cancel,
|
|
|
+ Save,
|
|
|
+ KeepEditing
|
|
|
+ }
|
|
|
+ protected bool ConfirmChanges(IShell item)
|
|
|
+ {
|
|
|
+ if (item.IsChanged())
|
|
|
+ {
|
|
|
+ var result = ConfirmChangesResult.Cancel;
|
|
|
+ new MessageDialogViewModel()
|
|
|
+ .Message("Confirm Cancel?")
|
|
|
+ .AddButton(new("Yes, Cancel", (window, button) =>
|
|
|
+ {
|
|
|
+ result = ConfirmChangesResult.Cancel;
|
|
|
+ window.Close(MessageDialogResult.None);
|
|
|
+ }, MessageDialogButtonPosition.Right))
|
|
|
+ .AddButton(new("Keep Editing", (window, button) =>
|
|
|
+ {
|
|
|
+ result = ConfirmChangesResult.KeepEditing;
|
|
|
+ window.Close(MessageDialogResult.None);
|
|
|
+ }, MessageDialogButtonPosition.Right))
|
|
|
+ .AddButton(new("Save Changes", (window, button) =>
|
|
|
+ {
|
|
|
+ result = ConfirmChangesResult.Save;
|
|
|
+ window.Close(MessageDialogResult.None);
|
|
|
+ }, MessageDialogButtonPosition.Right))
|
|
|
+ .Display()
|
|
|
+ .ContinueWith(task =>
|
|
|
+ {
|
|
|
+ switch (result)
|
|
|
+ {
|
|
|
+ case ConfirmChangesResult.Cancel:
|
|
|
+ item.Cancel();
|
|
|
+ break;
|
|
|
+ case ConfirmChangesResult.Save:
|
|
|
+ item.Save("Saved on Mobile Device");
|
|
|
+ break;
|
|
|
+ case ConfirmChangesResult.KeepEditing:
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Navigation.Back();
|
|
|
+ });
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
public async Task Activate()
|
|
|
{
|