From ee707cd9779c79f1b00c52a477eb85aa3056b785 Mon Sep 17 00:00:00 2001 From: rabbitism Date: Sun, 3 Nov 2024 01:19:42 +0800 Subject: [PATCH] feat: add styleClass as an option to Dialogs. --- .../ViewModels/DialogDemoViewModel.cs | 1 + src/Ursa/Controls/Dialog/Dialog.cs | 8 +++++++ .../Controls/Dialog/Options/DialogOptions.cs | 1 + .../Dialog/Options/OverlayDialogOptions.cs | 2 ++ src/Ursa/Controls/Dialog/OverlayDialog.cs | 8 +++++++ src/Ursa/Controls/Drawer/Drawer.cs | 9 ++++++++ .../Controls/Drawer/Options/DrawerOptions.cs | 2 ++ src/Ursa/Controls/MessageBox/MessageBox.cs | 21 ++++++++++++++++--- 8 files changed, 49 insertions(+), 3 deletions(-) diff --git a/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs b/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs index 59d5da6..fae0f22 100644 --- a/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs +++ b/demo/Ursa.Demo/ViewModels/DialogDemoViewModel.cs @@ -163,6 +163,7 @@ public partial class DefaultOverlayDialogDemoViewModel : ObservableObject CanDragMove = CanDragMove, IsCloseButtonVisible = IsCloseButtonVisible, CanResize = CanResize, + StyleClass = "Alert", }; string? dialogHostId = IsLocal ? DialogDemoViewModel.LocalHost : null; if (IsModal) diff --git a/src/Ursa/Controls/Dialog/Dialog.cs b/src/Ursa/Controls/Dialog/Dialog.cs index be9d516..15d7ed5 100644 --- a/src/Ursa/Controls/Dialog/Dialog.cs +++ b/src/Ursa/Controls/Dialog/Dialog.cs @@ -214,6 +214,10 @@ public static class Dialog else window.WindowStartupLocation = WindowStartupLocation.CenterOwner; } + if (!string.IsNullOrWhiteSpace(options.StyleClass)) + { + window.Classes.Add(options.StyleClass); + } } /// @@ -240,5 +244,9 @@ public static class Dialog else window.WindowStartupLocation = WindowStartupLocation.CenterOwner; } + if (!string.IsNullOrWhiteSpace(options.StyleClass)) + { + window.Classes.Add(options.StyleClass); + } } } \ No newline at end of file diff --git a/src/Ursa/Controls/Dialog/Options/DialogOptions.cs b/src/Ursa/Controls/Dialog/Options/DialogOptions.cs index 63645c4..37dce87 100644 --- a/src/Ursa/Controls/Dialog/Options/DialogOptions.cs +++ b/src/Ursa/Controls/Dialog/Options/DialogOptions.cs @@ -32,4 +32,5 @@ public class DialogOptions public bool CanDragMove { get; set; } = true; public bool CanResize { get; set; } + public string? StyleClass { get; set; } } \ No newline at end of file diff --git a/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs b/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs index 5d99014..086fc32 100644 --- a/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs +++ b/src/Ursa/Controls/Dialog/Options/OverlayDialogOptions.cs @@ -64,4 +64,6 @@ public class OverlayDialogOptions public int? TopLevelHashCode { get; set; } public bool CanResize { get; set; } + + public string? StyleClass { get; set; } } \ No newline at end of file diff --git a/src/Ursa/Controls/Dialog/OverlayDialog.cs b/src/Ursa/Controls/Dialog/OverlayDialog.cs index 2b4fe52..15bd7eb 100644 --- a/src/Ursa/Controls/Dialog/OverlayDialog.cs +++ b/src/Ursa/Controls/Dialog/OverlayDialog.cs @@ -205,6 +205,10 @@ public static class OverlayDialog control.IsCloseButtonVisible = options.IsCloseButtonVisible; control.CanLightDismiss = options.CanLightDismiss; control.CanResize = options.CanResize; + if (!string.IsNullOrWhiteSpace(options.StyleClass)) + { + control.Classes.Add(options.StyleClass); + } DialogControlBase.SetCanDragMove(control, options.CanDragMove); } @@ -231,6 +235,10 @@ public static class OverlayDialog control.CanLightDismiss = options.CanLightDismiss; control.IsCloseButtonVisible = options.IsCloseButtonVisible; control.CanResize = options.CanResize; + if (!string.IsNullOrWhiteSpace(options.StyleClass)) + { + control.Classes.Add(options.StyleClass); + } DialogControlBase.SetCanDragMove(control, options.CanDragMove); } diff --git a/src/Ursa/Controls/Drawer/Drawer.cs b/src/Ursa/Controls/Drawer/Drawer.cs index 1c38fcd..4deaeaa 100644 --- a/src/Ursa/Controls/Drawer/Drawer.cs +++ b/src/Ursa/Controls/Drawer/Drawer.cs @@ -217,6 +217,11 @@ public static class Drawer if(options.MinHeight is not null) drawer.MinHeight = options.MinHeight.Value; if(options.MaxHeight is not null) drawer.MaxHeight = options.MaxHeight.Value; } + + if (!string.IsNullOrWhiteSpace(options.StyleClass)) + { + drawer.Classes.Add(options.StyleClass!); + } } private static void ConfigureDefaultDrawer(DefaultDrawerControl drawer, DrawerOptions? options) @@ -239,5 +244,9 @@ public static class Drawer if(options.MinHeight is not null) drawer.MinHeight = options.MinHeight.Value; if(options.MaxHeight is not null) drawer.MaxHeight = options.MaxHeight.Value; } + if (!string.IsNullOrWhiteSpace(options.StyleClass)) + { + drawer.Classes.Add(options.StyleClass!); + } } } \ No newline at end of file diff --git a/src/Ursa/Controls/Drawer/Options/DrawerOptions.cs b/src/Ursa/Controls/Drawer/Options/DrawerOptions.cs index 34bdcb4..ec80da7 100644 --- a/src/Ursa/Controls/Drawer/Options/DrawerOptions.cs +++ b/src/Ursa/Controls/Drawer/Options/DrawerOptions.cs @@ -22,4 +22,6 @@ public class DrawerOptions public int? TopLevelHashCode { get; set; } public bool CanResize { get; set; } + + public string? StyleClass { get; set; } } \ No newline at end of file diff --git a/src/Ursa/Controls/MessageBox/MessageBox.cs b/src/Ursa/Controls/MessageBox/MessageBox.cs index 0e97665..86c059b 100644 --- a/src/Ursa/Controls/MessageBox/MessageBox.cs +++ b/src/Ursa/Controls/MessageBox/MessageBox.cs @@ -11,7 +11,8 @@ public static class MessageBox string message, string? title = null, MessageBoxIcon icon = MessageBoxIcon.None, - MessageBoxButton button = MessageBoxButton.OK) + MessageBoxButton button = MessageBoxButton.OK, + string? styleClass = null) { var messageWindow = new MessageBoxWindow(button) { @@ -19,6 +20,10 @@ public static class MessageBox Title = title, MessageIcon = icon }; + if (!string.IsNullOrWhiteSpace(styleClass)) + { + messageWindow.Classes.Add(styleClass!); + } var lifetime = Application.Current?.ApplicationLifetime; if (lifetime is not IClassicDesktopStyleApplicationLifetime classLifetime) return MessageBoxResult.None; var main = classLifetime.MainWindow; @@ -37,7 +42,8 @@ public static class MessageBox string message, string title, MessageBoxIcon icon = MessageBoxIcon.None, - MessageBoxButton button = MessageBoxButton.OK) + MessageBoxButton button = MessageBoxButton.OK, + string? styleClass = null) { var messageWindow = new MessageBoxWindow(button) { @@ -45,6 +51,10 @@ public static class MessageBox Title = title, MessageIcon = icon }; + if (!string.IsNullOrWhiteSpace(styleClass)) + { + messageWindow.Classes.Add(styleClass!); + } var result = await messageWindow.ShowDialog(owner); return result; } @@ -55,7 +65,8 @@ public static class MessageBox string? hostId = null, MessageBoxIcon icon = MessageBoxIcon.None, MessageBoxButton button = MessageBoxButton.OK, - int? toplevelHashCode = null) + int? toplevelHashCode = null, + string? styleClass = null) { var host = OverlayDialogManager.GetHost(hostId, toplevelHashCode); if (host is null) return MessageBoxResult.None; @@ -67,6 +78,10 @@ public static class MessageBox MessageIcon = icon, [KeyboardNavigation.TabNavigationProperty] = KeyboardNavigationMode.Cycle }; + if (!string.IsNullOrWhiteSpace(styleClass)) + { + messageControl.Classes.Add(styleClass!); + } host.AddModalDialog(messageControl); var result = await messageControl.ShowAsync(); return result;