Pārlūkot izejas kodu

Fixed slight inconvenience with multi signature pad on desktop

Kenric Nugteren 1 nedēļu atpakaļ
vecāks
revīzija
fa9fa43da1

+ 14 - 7
inabox.wpf/DigitalForms/Designer/Controls/Fields/DFMultiSignatureControl.cs

@@ -9,6 +9,7 @@ using System.Windows.Media.Imaging;
 using System.Windows.Media;
 using System.Windows;
 using InABox.WPF;
+using InABox.Wpf;
 
 namespace InABox.DynamicGrid
 {
@@ -125,23 +126,29 @@ namespace InABox.DynamicGrid
         private void MultiSignatureAdd_Click(object sender, RoutedEventArgs e)
         {
             var window = new SignaturePadWindow(null, true);
-
-            if (window.ShowDialog() == true)
+            window.ValidateName += sigName =>
             {
-                var sigName = window.SignatureName.ToUpper().Trim();
+                sigName = sigName.ToUpper().Trim();
                 if (string.IsNullOrWhiteSpace(sigName))
                 {
-                    MessageBox.Show("Name cannot be empty!");
+                    MessageWindow.ShowMessage("Name cannot be empty!", "Invalid Name");
+                    return false;
                 }
                 else if (Images.Children.Cast<UIElement>().Any(x => x is Label lbl && (string)lbl.Content == sigName))
                 {
-                    MessageBox.Show("A signature with that name already exists!");
+                    MessageWindow.ShowMessage("A signature with that name already exists!", "Invalid Name");
+                    return false;
                 }
                 else
                 {
-                    AddMultiSignature(window.Image, window.SignatureName);
-                    ChangeField();
+                    return true;
                 }
+            };
+
+            if (window.ShowDialog() == true)
+            {
+                AddMultiSignature(window.Image, window.SignatureName);
+                ChangeField();
             }
         }
         private void MultiSignatureRemove_Click(Image image)

+ 7 - 0
inabox.wpf/DigitalForms/Designer/SignaturePadWindow.xaml.cs

@@ -19,6 +19,7 @@ using System.Windows.Media.Imaging;
 using System.Windows.Shapes;
 using Color = System.Windows.Media.Color;
 using Image = System.Windows.Controls.Image;
+using System;
 
 namespace InABox.DynamicGrid
 {
@@ -27,6 +28,8 @@ namespace InABox.DynamicGrid
     /// </summary>
     public partial class SignaturePadWindow : ThemableWindow
     {
+        public event Func<string, bool>? ValidateName;
+
         public SignaturePadWindow(ImageSource? source, bool hasName = false)
         {
             InitializeComponent();
@@ -52,6 +55,10 @@ namespace InABox.DynamicGrid
 
         private void OK_Click(object sender, RoutedEventArgs e)
         {
+            if(ValidateName?.Invoke(SignatureName) == false)
+            {
+                return;
+            }
             if (IsEmpty)
             {
                 Image = null;