From 592f9ae285379ed9998fe4cb7f17cd0764b7a44b Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 13 Jan 2023 01:29:53 +0800 Subject: [PATCH] feat: add notification card and notification manager --- src/Semi.Avalonia.Demo/MainWindow.axaml | 8 +- src/Semi.Avalonia.Demo/MainWindow.axaml.cs | 16 ++ .../Pages/NotificationDemo.axaml | 19 +++ .../Pages/NotificationDemo.axaml.cs | 33 ++++ .../Controls/ContentControl.axaml | 19 +++ src/Semi.Avalonia/Controls/Controls.axaml | 3 + .../Controls/NotificationCard.axaml | 154 ++++++++++++++++++ .../Controls/WindowNotificationManager.axaml | 36 ++++ src/Semi.Avalonia/Themes/Light/Light.axaml | 1 + .../Themes/Light/NotificationCard.axaml | 19 +++ 10 files changed, 307 insertions(+), 1 deletion(-) create mode 100644 src/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml create mode 100644 src/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml.cs create mode 100644 src/Semi.Avalonia/Controls/ContentControl.axaml create mode 100644 src/Semi.Avalonia/Controls/NotificationCard.axaml create mode 100644 src/Semi.Avalonia/Controls/WindowNotificationManager.axaml create mode 100644 src/Semi.Avalonia/Themes/Light/NotificationCard.axaml diff --git a/src/Semi.Avalonia.Demo/MainWindow.axaml b/src/Semi.Avalonia.Demo/MainWindow.axaml index 43eeb9e..30d415c 100644 --- a/src/Semi.Avalonia.Demo/MainWindow.axaml +++ b/src/Semi.Avalonia.Demo/MainWindow.axaml @@ -9,7 +9,10 @@ d:DesignHeight="450" d:DesignWidth="800" mc:Ignorable="d"> - + @@ -38,6 +41,9 @@ + + + diff --git a/src/Semi.Avalonia.Demo/MainWindow.axaml.cs b/src/Semi.Avalonia.Demo/MainWindow.axaml.cs index 516942c..58008a0 100644 --- a/src/Semi.Avalonia.Demo/MainWindow.axaml.cs +++ b/src/Semi.Avalonia.Demo/MainWindow.axaml.cs @@ -1,13 +1,29 @@ +using System.Diagnostics; using Avalonia.Controls; +using Avalonia.Controls.Notifications; +using Avalonia.Controls.Primitives; using Avalonia.Interactivity; +using Avalonia.Layout; +using Avalonia.VisualTree; namespace Semi.Avalonia.Demo { public partial class MainWindow : Window { + private readonly WindowNotificationManager _manager; public MainWindow() { InitializeComponent(); + _manager = new WindowNotificationManager(this) + { + Position = NotificationPosition.TopLeft, + MaxItems = 3 + }; + } + + internal void Notify(NotificationType t) + { + _manager.Show(new Notification(t.ToString(), "This is a notification message", t)); } } } \ No newline at end of file diff --git a/src/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml b/src/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml new file mode 100644 index 0000000..4b0d6bf --- /dev/null +++ b/src/Semi.Avalonia.Demo/Pages/NotificationDemo.axaml @@ -0,0 +1,19 @@ + + +