From d80083f2f522d2614b43a0fb08bf78d9a559d4f4 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 11 Apr 2019 00:09:50 +0100 Subject: [PATCH] further progress on notifications ui --- samples/ControlCatalog/MainWindow.xaml | 5 +- samples/ControlCatalog/MainWindow.xaml.cs | 25 ++++++ .../Notifications/Notification.cs | 38 ++++++-- .../Notifications/NotificationArea.cs | 24 +++-- .../Notifications/NotificationContent.cs | 21 +++++ .../Notifications/NotificationManager.cs | 2 +- .../Properties/AssemblyInfo.cs | 3 +- .../Avalonia.Themes.Default.csproj | 14 ++- src/Avalonia.Themes.Default/DefaultTheme.xaml | 1 + .../NotificationArea.xaml | 87 +++++++++++++++++++ 10 files changed, 202 insertions(+), 18 deletions(-) create mode 100644 src/Avalonia.Controls/Notifications/NotificationContent.cs create mode 100644 src/Avalonia.Themes.Default/NotificationArea.xaml diff --git a/samples/ControlCatalog/MainWindow.xaml b/samples/ControlCatalog/MainWindow.xaml index 4bae60b2a6..ae9574189a 100644 --- a/samples/ControlCatalog/MainWindow.xaml +++ b/samples/ControlCatalog/MainWindow.xaml @@ -4,5 +4,8 @@ xmlns:local="clr-namespace:ControlCatalog" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" x:Class="ControlCatalog.MainWindow"> - + + + + diff --git a/samples/ControlCatalog/MainWindow.xaml.cs b/samples/ControlCatalog/MainWindow.xaml.cs index e620a77e52..4057af59ff 100644 --- a/samples/ControlCatalog/MainWindow.xaml.cs +++ b/samples/ControlCatalog/MainWindow.xaml.cs @@ -1,18 +1,43 @@ using Avalonia; using Avalonia.Controls; +using Avalonia.Controls.Notifications; using Avalonia.Markup.Xaml; +using Avalonia.Threading; using System; +using System.Threading.Tasks; namespace ControlCatalog { public class MainWindow : Window { + private readonly NotificationManager _notificationManager = new NotificationManager(); + public MainWindow() { this.InitializeComponent(); this.AttachDevTools(); //Renderer.DrawFps = true; //Renderer.DrawDirtyRects = Renderer.DrawFps = true; + + Dispatcher.UIThread.InvokeAsync(async () => + { + await Task.Delay(5000); + + _notificationManager.Show(new NotificationContent { Message = "Test1", Type = NotificationType.Information }, "Main"); + + await Task.Delay(500); + _notificationManager.Show(new NotificationContent { Message = "Test2", Type = NotificationType.Error }, "Main"); + + await Task.Delay(500); + _notificationManager.Show(new NotificationContent { Message = "Test3", Type = NotificationType.Warning }, "Main"); + + await Task.Delay(500); + _notificationManager.Show(new NotificationContent { Message = "Test4", Type = NotificationType.Success }, "Main"); + + await Task.Delay(500); + _notificationManager.Show("Test5", "Main"); + + }); } private void InitializeComponent() diff --git a/src/Avalonia.Controls/Notifications/Notification.cs b/src/Avalonia.Controls/Notifications/Notification.cs index 690dbfaac9..c7cd176513 100644 --- a/src/Avalonia.Controls/Notifications/Notification.cs +++ b/src/Avalonia.Controls/Notifications/Notification.cs @@ -1,4 +1,5 @@ using System; +using System.Reactive.Linq; using System.Threading.Tasks; using Avalonia.Controls.Primitives; using Avalonia.Interactivity; @@ -11,7 +12,34 @@ namespace Avalonia.Controls.Notifications static Notification() { - CloseOnClickProperty.Changed.AddClassHandler