From 15203b4284d0f1d6d6fa313af796bfa3a3029d95 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sat, 3 Feb 2024 21:46:44 +0800 Subject: [PATCH] feat: fix MessageBox default position, use internal option default instance. --- src/Ursa/Controls/Dialog/Dialog.cs | 5 +---- src/Ursa/Controls/Dialog/DialogControl.cs | 6 +++--- src/Ursa/Controls/Dialog/Options/DialogOptions.cs | 2 +- .../Controls/Dialog/Options/OverlayDialogOptions.cs | 1 + src/Ursa/Controls/Dialog/OverlayDialog.cs | 2 +- src/Ursa/Controls/MessageBox/MessageBoxControl.cs | 13 +++++++++++++ 6 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/Ursa/Controls/Dialog/Dialog.cs b/src/Ursa/Controls/Dialog/Dialog.cs index 993ea7d..aa459d8 100644 --- a/src/Ursa/Controls/Dialog/Dialog.cs +++ b/src/Ursa/Controls/Dialog/Dialog.cs @@ -217,10 +217,7 @@ public static class Dialog /// private static void ConfigureDefaultDialogWindow(DefaultDialogWindow window, DialogOptions? options) { - if (options is null) - { - options = new DialogOptions(); - } + options ??= DialogOptions.Default; window.WindowStartupLocation = options.StartupLocation; window.Title = options.Title; window.Buttons = options.Button; diff --git a/src/Ursa/Controls/Dialog/DialogControl.cs b/src/Ursa/Controls/Dialog/DialogControl.cs index 386d58f..c281811 100644 --- a/src/Ursa/Controls/Dialog/DialogControl.cs +++ b/src/Ursa/Controls/Dialog/DialogControl.cs @@ -21,9 +21,9 @@ public class DialogControl: ContentControl protected internal Button? _closeButton; private Panel? _titleArea; - - internal HorizontalPosition HorizontalAnchor { get; set; } - internal VerticalPosition VerticalAnchor { get; set; } + + internal HorizontalPosition HorizontalAnchor { get; set; } = HorizontalPosition.Center; + internal VerticalPosition VerticalAnchor { get; set; } = VerticalPosition.Center; internal HorizontalPosition ActualHorizontalAnchor { get; set; } internal VerticalPosition ActualVerticalAnchor { get; set; } internal double? HorizontalOffset { get; set; } diff --git a/src/Ursa/Controls/Dialog/Options/DialogOptions.cs b/src/Ursa/Controls/Dialog/Options/DialogOptions.cs index 6c65ff5..f7c3408 100644 --- a/src/Ursa/Controls/Dialog/Options/DialogOptions.cs +++ b/src/Ursa/Controls/Dialog/Options/DialogOptions.cs @@ -5,7 +5,7 @@ namespace Ursa.Controls; public class DialogOptions { - public static DialogOptions Default { get; } = new DialogOptions(); + internal static DialogOptions Default { get; } = new DialogOptions(); /// /// The Startup Location of DialogWindow. Default is /// diff --git a/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs b/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs index f5e6139..559441c 100644 --- a/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs +++ b/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs @@ -16,6 +16,7 @@ public enum VerticalPosition public class OverlayDialogOptions { + internal static OverlayDialogOptions Default { get; } = new OverlayDialogOptions(); public bool CanClickOnMaskToClose { get; set; } = false; public HorizontalPosition HorizontalAnchor { get; set; } = HorizontalPosition.Center; public VerticalPosition VerticalAnchor { get; set; } = VerticalPosition.Center; diff --git a/src/Ursa/Controls/Dialog/OverlayDialog.cs b/src/Ursa/Controls/Dialog/OverlayDialog.cs index eda3d25..ce1f077 100644 --- a/src/Ursa/Controls/Dialog/OverlayDialog.cs +++ b/src/Ursa/Controls/Dialog/OverlayDialog.cs @@ -180,7 +180,7 @@ public static class OverlayDialog private static void ConfigureDialogControl(DialogControl control, OverlayDialogOptions? options) { - if (options is null) options = new OverlayDialogOptions(); + options ??= OverlayDialogOptions.Default; control.HorizontalAnchor = options.HorizontalAnchor; control.VerticalAnchor = options.VerticalAnchor; control.ActualHorizontalAnchor = options.HorizontalAnchor; diff --git a/src/Ursa/Controls/MessageBox/MessageBoxControl.cs b/src/Ursa/Controls/MessageBox/MessageBoxControl.cs index 88fca1e..a7a4ed6 100644 --- a/src/Ursa/Controls/MessageBox/MessageBoxControl.cs +++ b/src/Ursa/Controls/MessageBox/MessageBoxControl.cs @@ -132,4 +132,17 @@ public class MessageBoxControl: DialogControl { if (button is not null) button.IsVisible = visible; } + + internal override void CloseDialog() + { + MessageBoxResult result = Buttons switch + { + MessageBoxButton.OK => MessageBoxResult.OK, + MessageBoxButton.OKCancel => MessageBoxResult.Cancel, + MessageBoxButton.YesNo => MessageBoxResult.No, + MessageBoxButton.YesNoCancel => MessageBoxResult.Cancel, + _ => MessageBoxResult.None + }; + OnDialogControlClosing(this, result); + } } \ No newline at end of file