From ccd7d02042f4737cb25a8f97d668e23aeaab4ec8 Mon Sep 17 00:00:00 2001 From: Gareth Date: Thu, 26 Jan 2017 15:02:04 +0000 Subject: [PATCH 1/7] Ignore Visual Studio Options --- .gitignore | 1 + .../.vs/WPFNotification/v14/.suo | Bin 226304 -> 242688 bytes 2 files changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 6712648..ab80d34 100644 --- a/.gitignore +++ b/.gitignore @@ -52,3 +52,4 @@ $RECYCLE.BIN/ Network Trash Folder Temporary Items .apdisk +*.suo diff --git a/1.0/WPFNotification/.vs/WPFNotification/v14/.suo b/1.0/WPFNotification/.vs/WPFNotification/v14/.suo index 1e57ec3f84503211140583c4c194c2872af1a471..fbad6d6d29f3674b6d6c68db22072dea7186aec8 100644 GIT binary patch delta 28968 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 From c43ed598e406241a983790f204eeb6bd4ebacdac Mon Sep 17 00:00:00 2001 From: Gareth Date: Thu, 26 Jan 2017 15:02:25 +0000 Subject: [PATCH 2/7] Bump framework to 4.6 --- .../WPFNotificationDemo/WPFNotificationDemo.csproj | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1.0/WPFNotification/WPFNotificationDemo/WPFNotificationDemo.csproj b/1.0/WPFNotification/WPFNotificationDemo/WPFNotificationDemo.csproj index b778488..af42fb0 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/WPFNotificationDemo.csproj +++ b/1.0/WPFNotification/WPFNotificationDemo/WPFNotificationDemo.csproj @@ -1,5 +1,5 @@  - + Debug AnyCPU @@ -10,7 +10,7 @@ Properties WPFNotificationDemo WPFNotificationDemo - v4.5 + v4.6 512 From 02db9e137391d19e1d7e03a168294a7e032fa2d9 Mon Sep 17 00:00:00 2001 From: Gareth Date: Thu, 26 Jan 2017 15:04:06 +0000 Subject: [PATCH 3/7] Various namespace, spelling, .NET 4.6 tidy ups --- .../WPFNotification/App.config | 2 +- .../Converters/EmptyStringConverter.cs | 3 - .../NotificationFlowDirection.cs | 8 +- .../Core/Interactivity/FadeBehavior.cs | 84 +++++++++--------- .../Core/Interactivity/SlideBehavior.cs | 88 +++++++++---------- .../WPFNotification/Core/NotifyBox.cs | 74 ++++++++-------- .../WPFNotification/Model/Notification.cs | 2 +- .../Properties/Settings.Designer.cs | 2 +- .../Services/NotificationDialogService.cs | 3 +- .../WPFNotification/WPFNotification.csproj | 2 +- .../WPFNotificationDemo/App.xaml.cs | 8 +- .../Assets/MailNotificationUI.xaml | 8 +- .../WPFNotificationDemo/Core/Constants.cs | 8 +- .../WPFNotificationDemo/MainWindow.xaml.cs | 14 --- .../Model/MailNotification.cs | 3 +- .../ViewModel/MainViewModel.cs | 12 +-- .../WPFNotificationDemo/app.config | 2 +- 17 files changed, 137 insertions(+), 186 deletions(-) diff --git a/1.0/WPFNotification/WPFNotification/App.config b/1.0/WPFNotification/WPFNotification/App.config index 1751f05..2eca9e5 100644 --- a/1.0/WPFNotification/WPFNotification/App.config +++ b/1.0/WPFNotification/WPFNotification/App.config @@ -1,7 +1,7 @@ - + diff --git a/1.0/WPFNotification/WPFNotification/Converters/EmptyStringConverter.cs b/1.0/WPFNotification/WPFNotification/Converters/EmptyStringConverter.cs index b733c2d..7072810 100644 --- a/1.0/WPFNotification/WPFNotification/Converters/EmptyStringConverter.cs +++ b/1.0/WPFNotification/WPFNotification/Converters/EmptyStringConverter.cs @@ -6,8 +6,6 @@ namespace WPFNotification.Converters { public class EmptyStringConverter : BaseConverter, IValueConverter { - public EmptyStringConverter() - { } public object Convert(object value, Type targetType, object parameter, CultureInfo culture) { @@ -19,6 +17,5 @@ public object ConvertBack(object value, Type targetType, { throw new NotImplementedException(); } - } } diff --git a/1.0/WPFNotification/WPFNotification/Core/Configuration/NotificationFlowDirection.cs b/1.0/WPFNotification/WPFNotification/Core/Configuration/NotificationFlowDirection.cs index 9ab69db..92b42c3 100644 --- a/1.0/WPFNotification/WPFNotification/Core/Configuration/NotificationFlowDirection.cs +++ b/1.0/WPFNotification/WPFNotification/Core/Configuration/NotificationFlowDirection.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WPFNotification.Core.Configuration +namespace WPFNotification.Core.Configuration { /// /// Enum that represent the notification window Directions diff --git a/1.0/WPFNotification/WPFNotification/Core/Interactivity/FadeBehavior.cs b/1.0/WPFNotification/WPFNotification/Core/Interactivity/FadeBehavior.cs index f2b363f..8bc7542 100644 --- a/1.0/WPFNotification/WPFNotification/Core/Interactivity/FadeBehavior.cs +++ b/1.0/WPFNotification/WPFNotification/Core/Interactivity/FadeBehavior.cs @@ -59,8 +59,8 @@ public sealed class FadeBehavior : Behavior /// public TimeSpan BeginTime { - get { return (TimeSpan)this.GetValue(BeginTimeProperty); } - set { this.SetValue(BeginTimeProperty, value); } + get { return (TimeSpan)GetValue(BeginTimeProperty); } + set { SetValue(BeginTimeProperty, value); } } /// @@ -68,8 +68,8 @@ public TimeSpan BeginTime /// public TimeSpan Duration { - get { return (TimeSpan)this.GetValue(DurationProperty); } - set { this.SetValue(DurationProperty, value); } + get { return (TimeSpan)GetValue(DurationProperty); } + set { SetValue(DurationProperty, value); } } /// @@ -77,8 +77,8 @@ public TimeSpan Duration /// public bool IsAnimatingOnIsVisibleChanged { - get { return (bool)this.GetValue(IsAnimatingOnIsVisibleChangedProperty); } - set { this.SetValue(IsAnimatingOnIsVisibleChangedProperty, value); } + get { return (bool)GetValue(IsAnimatingOnIsVisibleChangedProperty); } + set { SetValue(IsAnimatingOnIsVisibleChangedProperty, value); } } /// @@ -86,8 +86,8 @@ public bool IsAnimatingOnIsVisibleChanged /// public bool IsAnimatingOnLoaded { - get { return (bool)this.GetValue(IsAnimatingOnLoadedProperty); } - set { this.SetValue(IsAnimatingOnLoadedProperty, value); } + get { return (bool)GetValue(IsAnimatingOnLoadedProperty); } + set { SetValue(IsAnimatingOnLoadedProperty, value); } } #endregion @@ -99,15 +99,15 @@ public bool IsAnimatingOnLoaded /// public void FadeIn() { - Storyboard storyboard = GetFadeInStoryboard(this.BeginTime, this.Duration); + Storyboard storyboard = GetFadeInStoryboard(BeginTime, Duration); EventHandler eventHandler = null; eventHandler = (sender, e) => { storyboard.Completed -= eventHandler; - this.OnFadeInCompleted(this, EventArgs.Empty); + OnFadeInCompleted(this, EventArgs.Empty); }; storyboard.Completed += eventHandler; - storyboard.Begin(this.AssociatedObject); + storyboard.Begin(AssociatedObject); } /// @@ -115,15 +115,15 @@ public void FadeIn() /// public void FadeOut() { - Storyboard storyboard = GetFadeOutStoryboard(this.BeginTime, this.Duration); + Storyboard storyboard = GetFadeOutStoryboard(BeginTime, Duration); EventHandler eventHandler = null; eventHandler = (sender, e) => { storyboard.Completed -= eventHandler; - this.OnFadeOutCompleted(this, EventArgs.Empty); + OnFadeOutCompleted(this, EventArgs.Empty); }; storyboard.Completed += eventHandler; - storyboard.Begin(this.AssociatedObject); + storyboard.Begin(AssociatedObject); } #endregion @@ -137,8 +137,8 @@ protected override void OnAttached() { base.OnAttached(); - this.AssociatedObject.IsVisibleChanged += this.OnIsVisibleChanged; - this.AssociatedObject.Loaded += this.OnLoaded; + AssociatedObject.IsVisibleChanged += OnIsVisibleChanged; + AssociatedObject.Loaded += OnLoaded; } /// @@ -148,8 +148,8 @@ protected override void OnDetaching() { base.OnDetaching(); - this.AssociatedObject.IsVisibleChanged -= this.OnIsVisibleChanged; - this.AssociatedObject.Loaded -= this.OnLoaded; + AssociatedObject.IsVisibleChanged -= OnIsVisibleChanged; + AssociatedObject.Loaded -= OnLoaded; } #endregion @@ -164,22 +164,24 @@ protected override void OnDetaching() /// The . private static Storyboard GetFadeInStoryboard(TimeSpan beginTime, TimeSpan duration) { - DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames(); - animation.FillBehavior = FillBehavior.HoldEnd; + DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames + { + FillBehavior = FillBehavior.HoldEnd + }; animation.KeyFrames.Add( - new SplineDoubleKeyFrame() + new SplineDoubleKeyFrame { KeyTime = KeyTime.FromTimeSpan(new TimeSpan()), Value = 0 }); animation.KeyFrames.Add( - new SplineDoubleKeyFrame() + new SplineDoubleKeyFrame { KeyTime = KeyTime.FromTimeSpan(beginTime), Value = 0 }); animation.KeyFrames.Add( - new SplineDoubleKeyFrame() + new SplineDoubleKeyFrame { KeyTime = KeyTime.FromTimeSpan(beginTime + duration), Value = 1 @@ -200,16 +202,18 @@ private static Storyboard GetFadeInStoryboard(TimeSpan beginTime, TimeSpan durat /// The . private static Storyboard GetFadeOutStoryboard(TimeSpan beginTime, TimeSpan duration) { - DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames(); - animation.FillBehavior = FillBehavior.HoldEnd; + DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames + { + FillBehavior = FillBehavior.HoldEnd + }; animation.KeyFrames.Add( - new SplineDoubleKeyFrame() + new SplineDoubleKeyFrame { KeyTime = KeyTime.FromTimeSpan(beginTime), Value = 1 }); animation.KeyFrames.Add( - new SplineDoubleKeyFrame() + new SplineDoubleKeyFrame { KeySpline = new KeySpline(0.5, 0, 1, 0.75), KeyTime = KeyTime.FromTimeSpan(beginTime + duration), @@ -234,12 +238,8 @@ private static Storyboard GetFadeOutStoryboard(TimeSpan beginTime, TimeSpan dura /// The e. private void OnFadeInCompleted(object sender, EventArgs e) { - EventHandler eventHandler = this.FadeInCompleted; - - if (eventHandler != null) - { - eventHandler(sender, e); - } + EventHandler eventHandler = FadeInCompleted; + eventHandler?.Invoke(sender, e); } /// @@ -249,12 +249,8 @@ private void OnFadeInCompleted(object sender, EventArgs e) /// The e. private void OnFadeOutCompleted(object sender, EventArgs e) { - EventHandler eventHandler = this.FadeOutCompleted; - - if (eventHandler != null) - { - eventHandler(sender, e); - } + EventHandler eventHandler = FadeOutCompleted; + eventHandler?.Invoke(sender, e); } /// @@ -264,11 +260,11 @@ private void OnFadeOutCompleted(object sender, EventArgs e) /// The e. private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { - if (this.IsAnimatingOnIsVisibleChanged) + if (IsAnimatingOnIsVisibleChanged) { - if (this.AssociatedObject.Visibility == Visibility.Visible) + if (AssociatedObject.Visibility == Visibility.Visible) { - this.FadeIn(); + FadeIn(); } // this.FadeOut(); @@ -282,9 +278,9 @@ private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArg /// The e. private void OnLoaded(object sender, RoutedEventArgs e) { - if (this.IsAnimatingOnLoaded) + if (IsAnimatingOnLoaded) { - this.FadeIn(); + FadeIn(); } } diff --git a/1.0/WPFNotification/WPFNotification/Core/Interactivity/SlideBehavior.cs b/1.0/WPFNotification/WPFNotification/Core/Interactivity/SlideBehavior.cs index cae4c0f..f572af5 100644 --- a/1.0/WPFNotification/WPFNotification/Core/Interactivity/SlideBehavior.cs +++ b/1.0/WPFNotification/WPFNotification/Core/Interactivity/SlideBehavior.cs @@ -66,8 +66,8 @@ public sealed class SlideBehavior : Behavior /// public TimeSpan BeginTime { - get { return (TimeSpan)this.GetValue(BeginTimeProperty); } - set { this.SetValue(BeginTimeProperty, value); } + get { return (TimeSpan)GetValue(BeginTimeProperty); } + set { SetValue(BeginTimeProperty, value); } } /// @@ -75,8 +75,8 @@ public TimeSpan BeginTime /// public TimeSpan Duration { - get { return (TimeSpan)this.GetValue(DurationProperty); } - set { this.SetValue(DurationProperty, value); } + get { return (TimeSpan)GetValue(DurationProperty); } + set { SetValue(DurationProperty, value); } } /// @@ -84,8 +84,8 @@ public TimeSpan Duration /// public bool IsAnimatingOnIsVisibleChanged { - get { return (bool)this.GetValue(IsAnimatingOnIsVisibleChangedProperty); } - set { this.SetValue(IsAnimatingOnIsVisibleChangedProperty, value); } + get { return (bool)GetValue(IsAnimatingOnIsVisibleChangedProperty); } + set { SetValue(IsAnimatingOnIsVisibleChangedProperty, value); } } /// @@ -93,8 +93,8 @@ public bool IsAnimatingOnIsVisibleChanged /// public bool IsAnimatingOnLoaded { - get { return (bool)this.GetValue(IsAnimatingOnLoadedProperty); } - set { this.SetValue(IsAnimatingOnLoadedProperty, value); } + get { return (bool)GetValue(IsAnimatingOnLoadedProperty); } + set { SetValue(IsAnimatingOnLoadedProperty, value); } } /// @@ -102,8 +102,8 @@ public bool IsAnimatingOnLoaded /// public double Offset { - get { return (double)this.GetValue(OffsetProperty); } - set { this.SetValue(OffsetProperty, value); } + get { return (double)GetValue(OffsetProperty); } + set { SetValue(OffsetProperty, value); } } #endregion @@ -115,19 +115,19 @@ public double Offset /// public void SlideIn() { - this.AssociatedObject.IsHitTestVisible = false; - this.AssociatedObject.RenderTransform = new TranslateTransform(0, 0); + AssociatedObject.IsHitTestVisible = false; + AssociatedObject.RenderTransform = new TranslateTransform(0, 0); - Storyboard storyboard = GetSlideInStoryboard(this.BeginTime, this.Duration, this.Offset); + Storyboard storyboard = GetSlideInStoryboard(BeginTime, Duration, Offset); EventHandler eventHandler = null; eventHandler = (sender, e) => { storyboard.Completed -= eventHandler; - this.AssociatedObject.IsHitTestVisible = true; - this.OnSlideInCompleted(this, EventArgs.Empty); + AssociatedObject.IsHitTestVisible = true; + OnSlideInCompleted(this, EventArgs.Empty); }; storyboard.Completed += eventHandler; - storyboard.Begin(this.AssociatedObject); + storyboard.Begin(AssociatedObject); } /// @@ -135,19 +135,19 @@ public void SlideIn() /// public void SlideOut() { - this.AssociatedObject.IsHitTestVisible = false; - this.AssociatedObject.RenderTransform = new TranslateTransform(0, 0); + AssociatedObject.IsHitTestVisible = false; + AssociatedObject.RenderTransform = new TranslateTransform(0, 0); - Storyboard storyboard = GetSlideOutStoryboard(this.BeginTime, this.Duration, this.Offset); + Storyboard storyboard = GetSlideOutStoryboard(BeginTime, Duration, Offset); EventHandler eventHandler = null; eventHandler = (sender, e) => { storyboard.Completed -= eventHandler; - this.AssociatedObject.IsHitTestVisible = true; - this.OnSlideOutCompleted(this, EventArgs.Empty); + AssociatedObject.IsHitTestVisible = true; + OnSlideOutCompleted(this, EventArgs.Empty); }; storyboard.Completed += eventHandler; - storyboard.Begin(this.AssociatedObject); + storyboard.Begin(AssociatedObject); } #endregion @@ -161,8 +161,8 @@ protected override void OnAttached() { base.OnAttached(); - this.AssociatedObject.IsVisibleChanged += this.OnIsVisibleChanged; - this.AssociatedObject.Loaded += this.OnLoaded; + AssociatedObject.IsVisibleChanged += OnIsVisibleChanged; + AssociatedObject.Loaded += OnLoaded; } /// @@ -172,8 +172,8 @@ protected override void OnDetaching() { base.OnDetaching(); - this.AssociatedObject.IsVisibleChanged -= this.OnIsVisibleChanged; - this.AssociatedObject.Loaded -= this.OnLoaded; + AssociatedObject.IsVisibleChanged -= OnIsVisibleChanged; + AssociatedObject.Loaded -= OnLoaded; } #endregion @@ -192,16 +192,18 @@ private static Storyboard GetSlideInStoryboard( TimeSpan duration, double offset) { - DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames(); - animation.FillBehavior = FillBehavior.HoldEnd; + DoubleAnimationUsingKeyFrames animation = new DoubleAnimationUsingKeyFrames + { + FillBehavior = FillBehavior.HoldEnd + }; animation.KeyFrames.Add( - new SplineDoubleKeyFrame() + new SplineDoubleKeyFrame { KeyTime = KeyTime.FromTimeSpan(beginTime), Value = offset }); animation.KeyFrames.Add( - new SplineDoubleKeyFrame() + new SplineDoubleKeyFrame { KeySpline = new KeySpline(0, 0.5, 0.5, 1), KeyTime = KeyTime.FromTimeSpan(beginTime + duration), @@ -260,12 +262,8 @@ private static Storyboard GetSlideOutStoryboard( /// The e. private void OnSlideInCompleted(object sender, EventArgs e) { - EventHandler eventHandler = this.SlideInCompleted; - - if (eventHandler != null) - { - eventHandler(sender, e); - } + EventHandler eventHandler = SlideInCompleted; + eventHandler?.Invoke(sender, e); } /// @@ -275,12 +273,8 @@ private void OnSlideInCompleted(object sender, EventArgs e) /// The e. private void OnSlideOutCompleted(object sender, EventArgs e) { - EventHandler eventHandler = this.SlideOutCompleted; - - if (eventHandler != null) - { - eventHandler(sender, e); - } + EventHandler eventHandler = SlideOutCompleted; + eventHandler?.Invoke(sender, e); } /// @@ -290,11 +284,11 @@ private void OnSlideOutCompleted(object sender, EventArgs e) /// The e. private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArgs e) { - if (this.IsAnimatingOnIsVisibleChanged) + if (IsAnimatingOnIsVisibleChanged) { - if (this.AssociatedObject.Visibility == Visibility.Visible) + if (AssociatedObject.Visibility == Visibility.Visible) { - this.SlideIn(); + SlideIn(); } // this.SlideOut(); @@ -308,9 +302,9 @@ private void OnIsVisibleChanged(object sender, DependencyPropertyChangedEventArg /// The e. private void OnLoaded(object sender, RoutedEventArgs e) { - if (this.IsAnimatingOnLoaded) + if (IsAnimatingOnLoaded) { - this.SlideIn(); + SlideIn(); } } diff --git a/1.0/WPFNotification/WPFNotification/Core/NotifyBox.cs b/1.0/WPFNotification/WPFNotification/Core/NotifyBox.cs index 3b1ad0c..1e17a9d 100644 --- a/1.0/WPFNotification/WPFNotification/Core/NotifyBox.cs +++ b/1.0/WPFNotification/WPFNotification/Core/NotifyBox.cs @@ -21,7 +21,7 @@ public static class NotifyBox /// /// Number of notification windows /// - private static int notificationWindowsCount; + private static int _notificationWindowsCount; /// /// The margin between notification windows. @@ -31,12 +31,12 @@ public static class NotifyBox /// /// list of notifications window. /// - private static List notificationWindows; + private static readonly List NotificationWindows; /// /// buffer list of notifications window. /// - private static List notificationsBuffer; + private static readonly List NotificationsBuffer; #endregion @@ -47,9 +47,9 @@ public static class NotifyBox /// static NotifyBox() { - notificationWindows = new List(); - notificationsBuffer = new List(); - notificationWindowsCount = 0; + NotificationWindows = new List(); + NotificationsBuffer = new List(); + _notificationWindowsCount = 0; } #endregion @@ -63,7 +63,7 @@ static NotifyBox() public static void Show(object content, NotificationConfiguration configuration) { DataTemplate notificationTemplate = (DataTemplate)Application.Current.Resources[configuration.TemplateName]; - Window window = new Window() + Window window = new Window { Title = "", Width = configuration.Width.Value, @@ -95,23 +95,24 @@ public static void Show(object content) /// /// The window. /// The display duration. + /// Flow direction public static void Show(Window window, TimeSpan displayDuration, NotificationFlowDirection notificationFlowDirection) { BehaviorCollection behaviors = Interaction.GetBehaviors(window); behaviors.Add(new FadeBehavior()); behaviors.Add(new SlideBehavior()); SetWindowDirection(window, notificationFlowDirection); - notificationWindowsCount += 1; + _notificationWindowsCount += 1; WindowInfo windowInfo = new WindowInfo() { - ID = notificationWindowsCount, + Id = _notificationWindowsCount, DisplayDuration = displayDuration, Window = window }; windowInfo.Window.Closed += Window_Closed; - if (notificationWindows.Count + 1 > MAX_NOTIFICATIONS) + if (NotificationWindows.Count + 1 > MAX_NOTIFICATIONS) { - notificationsBuffer.Add(windowInfo); + NotificationsBuffer.Add(windowInfo); } else { @@ -119,7 +120,7 @@ public static void Show(Window window, TimeSpan displayDuration, NotificationFlo .Timer(displayDuration) .ObserveOnDispatcher() .Subscribe(x => OnTimerElapsed(windowInfo)); - notificationWindows.Add(windowInfo); + NotificationWindows.Add(windowInfo); window.Show(); } } @@ -129,10 +130,10 @@ public static void Show(Window window, TimeSpan displayDuration, NotificationFlo /// public static void ClearNotifications() { - notificationWindows.Clear(); - notificationsBuffer.Clear(); + NotificationWindows.Clear(); + NotificationsBuffer.Clear(); - notificationWindowsCount = 0; + _notificationWindowsCount = 0; } @@ -143,15 +144,12 @@ public static void ClearNotifications() /// /// Called when the timer has elapsed. Removes any stale notifications. /// - /// The sender. - /// The instance containing the event data. private static void OnTimerElapsed(WindowInfo windowInfo) { - if (notificationWindows.Count > 0 && !notificationWindows.Any(i => i.ID == windowInfo.ID)) + if (NotificationWindows.Count > 0 && NotificationWindows.All(i => i.Id != windowInfo.Id)) { return; } - DateTime now = DateTime.Now; if (windowInfo.Window.IsMouseOver) { @@ -173,19 +171,19 @@ private static void OnTimerElapsed(WindowInfo windowInfo) eventHandler = (sender2, e2) => { fadeBehavior.FadeOutCompleted -= eventHandler; - notificationWindows.Remove(windowInfo); + NotificationWindows.Remove(windowInfo); windowInfo.Window.Close(); - if (notificationsBuffer != null && notificationsBuffer.Count > 0) + if (NotificationsBuffer != null && NotificationsBuffer.Count > 0) { - var BufferWindowInfo = notificationsBuffer.First(); + var bufferWindowInfo = NotificationsBuffer.First(); Observable - .Timer(BufferWindowInfo.DisplayDuration) + .Timer(bufferWindowInfo.DisplayDuration) .ObserveOnDispatcher() - .Subscribe(x => OnTimerElapsed(BufferWindowInfo)); - notificationWindows.Add(BufferWindowInfo); - BufferWindowInfo.Window.Show(); - notificationsBuffer.Remove(BufferWindowInfo); + .Subscribe(x => OnTimerElapsed(bufferWindowInfo)); + NotificationWindows.Add(bufferWindowInfo); + bufferWindowInfo.Window.Show(); + NotificationsBuffer.Remove(bufferWindowInfo); } }; fadeBehavior.FadeOutCompleted += eventHandler; @@ -200,20 +198,20 @@ private static void OnTimerElapsed(WindowInfo windowInfo) static void Window_Closed(object sender, EventArgs e) { var window = (Window)sender; - if (notificationWindows.Count > 0 && notificationWindows.First().Window == window) + if (NotificationWindows.Count > 0 && NotificationWindows.First().Window == window) { - WindowInfo windowInfo = notificationWindows.First(); - notificationWindows.Remove(windowInfo); - if (notificationsBuffer != null && notificationsBuffer.Count > 0) + WindowInfo windowInfo = NotificationWindows.First(); + NotificationWindows.Remove(windowInfo); + if (NotificationsBuffer != null && NotificationsBuffer.Count > 0) { - var BufferWindowInfo = notificationsBuffer.First(); + var bufferWindowInfo = NotificationsBuffer.First(); Observable - .Timer(BufferWindowInfo.DisplayDuration) + .Timer(bufferWindowInfo.DisplayDuration) .ObserveOnDispatcher() - .Subscribe(x => OnTimerElapsed(BufferWindowInfo)); - notificationWindows.Add(BufferWindowInfo); - BufferWindowInfo.Window.Show(); - notificationsBuffer.Remove(BufferWindowInfo); + .Subscribe(x => OnTimerElapsed(bufferWindowInfo)); + NotificationWindows.Add(bufferWindowInfo); + bufferWindowInfo.Window.Show(); + NotificationsBuffer.Remove(bufferWindowInfo); } } } @@ -263,7 +261,7 @@ private static void SetWindowDirection(Window window, NotificationFlowDirection /// private sealed class WindowInfo { - public int ID { get; set; } + public int Id { get; set; } /// /// Gets or sets the display duration. /// diff --git a/1.0/WPFNotification/WPFNotification/Model/Notification.cs b/1.0/WPFNotification/WPFNotification/Model/Notification.cs index 20bbbd5..9188599 100644 --- a/1.0/WPFNotification/WPFNotification/Model/Notification.cs +++ b/1.0/WPFNotification/WPFNotification/Model/Notification.cs @@ -5,6 +5,6 @@ public class Notification { public string Title { get; set; } public string Message { get; set; } - public string ImgURL { get; set; } + public string ImgUrl { get; set; } } } diff --git a/1.0/WPFNotification/WPFNotification/Properties/Settings.Designer.cs b/1.0/WPFNotification/WPFNotification/Properties/Settings.Designer.cs index 729dc09..c73f998 100644 --- a/1.0/WPFNotification/WPFNotification/Properties/Settings.Designer.cs +++ b/1.0/WPFNotification/WPFNotification/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace WPFNotification.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "12.0.0.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/1.0/WPFNotification/WPFNotification/Services/NotificationDialogService.cs b/1.0/WPFNotification/WPFNotification/Services/NotificationDialogService.cs index d371cd9..d7ec3db 100644 --- a/1.0/WPFNotification/WPFNotification/Services/NotificationDialogService.cs +++ b/1.0/WPFNotification/WPFNotification/Services/NotificationDialogService.cs @@ -1,5 +1,4 @@ -using System; -using WPFNotification.Core; +using WPFNotification.Core; using WPFNotification.Core.Configuration; namespace WPFNotification.Services diff --git a/1.0/WPFNotification/WPFNotification/WPFNotification.csproj b/1.0/WPFNotification/WPFNotification/WPFNotification.csproj index 1031ea2..c22f269 100644 --- a/1.0/WPFNotification/WPFNotification/WPFNotification.csproj +++ b/1.0/WPFNotification/WPFNotification/WPFNotification.csproj @@ -9,7 +9,7 @@ Properties WPFNotification WPFNotification - v4.5 + v4.6 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 diff --git a/1.0/WPFNotification/WPFNotificationDemo/App.xaml.cs b/1.0/WPFNotification/WPFNotificationDemo/App.xaml.cs index bd21ed5..968048e 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/App.xaml.cs +++ b/1.0/WPFNotification/WPFNotificationDemo/App.xaml.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Configuration; -using System.Data; -using System.Linq; -using System.Threading.Tasks; -using System.Windows; +using System.Windows; namespace WPFNotificationDemo { diff --git a/1.0/WPFNotification/WPFNotificationDemo/Assets/MailNotificationUI.xaml b/1.0/WPFNotification/WPFNotificationDemo/Assets/MailNotificationUI.xaml index ea8f4d4..ce484f9 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/Assets/MailNotificationUI.xaml +++ b/1.0/WPFNotification/WPFNotificationDemo/Assets/MailNotificationUI.xaml @@ -1,10 +1,10 @@  + xmlns:model="clr-namespace:WPFNotificationDemo.Model" + xmlns:notificationView="clr-namespace:WPFNotificationDemo.Assets"> - - + + \ No newline at end of file diff --git a/1.0/WPFNotification/WPFNotificationDemo/Core/Constants.cs b/1.0/WPFNotification/WPFNotificationDemo/Core/Constants.cs index ebac636..abe907b 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/Core/Constants.cs +++ b/1.0/WPFNotification/WPFNotificationDemo/Core/Constants.cs @@ -1,10 +1,4 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace WPFNotificationDemo.Core +namespace WPFNotificationDemo.Core { public static class Constants { diff --git a/1.0/WPFNotification/WPFNotificationDemo/MainWindow.xaml.cs b/1.0/WPFNotification/WPFNotificationDemo/MainWindow.xaml.cs index f6a5869..21d6068 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/MainWindow.xaml.cs +++ b/1.0/WPFNotification/WPFNotificationDemo/MainWindow.xaml.cs @@ -1,18 +1,4 @@ using FirstFloor.ModernUI.Windows.Controls; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; -using System.Windows; -using System.Windows.Controls; -using System.Windows.Data; -using System.Windows.Documents; -using System.Windows.Input; -using System.Windows.Media; -using System.Windows.Media.Imaging; -using System.Windows.Navigation; -using System.Windows.Shapes; using WPFNotificationDemo.ViewModel; namespace WPFNotificationDemo diff --git a/1.0/WPFNotification/WPFNotificationDemo/Model/MailNotification.cs b/1.0/WPFNotification/WPFNotificationDemo/Model/MailNotification.cs index 8909974..900f049 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/Model/MailNotification.cs +++ b/1.0/WPFNotification/WPFNotificationDemo/Model/MailNotification.cs @@ -1,5 +1,4 @@ - -namespace WPFNotificationDemo.Model +namespace WPFNotificationDemo.Model { public class MailNotification { diff --git a/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs b/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs index b99d47f..66c1ff7 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs +++ b/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs @@ -22,16 +22,16 @@ namespace WPFNotificationDemo.ViewModel /// public class MainViewModel : ViewModelBase { - private readonly INotificationDialogService _dailogService; + private readonly INotificationDialogService _dialogService; /// /// Initializes a new instance of the MainViewModel class. /// /// The NotificationDialogService object - public MainViewModel(INotificationDialogService dailogService) + public MainViewModel(INotificationDialogService dialogService) { - _dailogService = dailogService; + _dialogService = dialogService; } @@ -57,7 +57,7 @@ public RelayCommand MailNotification Content = "I would like to request for vacation from 20/12/2015 to 30/12/2015 ............." }; var configuration = new NotificationConfiguration(TimeSpan.Zero, null, null, Constants.MailNotificationTemplateName, null); - _dailogService.ShowNotificationWindow(newNotification, configuration); + _dialogService.ShowNotificationWindow(newNotification, configuration); })); } } @@ -85,7 +85,7 @@ public RelayCommand AddNotification Message = "Test one Fail Please check your Machine Code and Try Again" // ,ImgURL = "pack://application:,,,a/Resources/Images/warning.png" }; - _dailogService.ShowNotificationWindow(newNotification, notificationConfiguration); + _dialogService.ShowNotificationWindow(newNotification, notificationConfiguration); })); } } @@ -104,7 +104,7 @@ public RelayCommand ClearNotifications ?? (_clearNotifications = new RelayCommand( () => { - _dailogService.ClearNotifications(); + _dialogService.ClearNotifications(); })); } } diff --git a/1.0/WPFNotification/WPFNotificationDemo/app.config b/1.0/WPFNotification/WPFNotificationDemo/app.config index aee928e..917c515 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/app.config +++ b/1.0/WPFNotification/WPFNotificationDemo/app.config @@ -8,4 +8,4 @@ - + From f05c1d8f8568ac06f8a486ee304d7d6cd4f7f848 Mon Sep 17 00:00:00 2001 From: Gareth Date: Thu, 26 Jan 2017 15:08:32 +0000 Subject: [PATCH 4/7] Fixed casing --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1f3f157..bacba5b 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ See some [screenshots](https://github.com/muhammad-magdy/WPFToastNotification/wi * Show one notification per time and if there are other notifications they will be placed in a queue and will be shown when the place is available * Prevent the notification from fading out when hovering on it * Allow to clear all notification from the notification list and the buffer list -* **Support windows 7 or later.** +* **Support Windows 7 or later.** ## Acknowledgements * Adapted the NotifyBox from [Elysium](https://elysiumextra.codeplex.com) From 2976b04e99663968c56632dfb70b2db8fea10a56 Mon Sep 17 00:00:00 2001 From: Gareth Date: Thu, 26 Jan 2017 15:12:06 +0000 Subject: [PATCH 5/7] Spelling and another try at removed suo file --- .gitignore | 1 + .../.vs/WPFNotification/v14/.suo | Bin 242688 -> 242688 bytes .../ViewModel/MainViewModel.cs | 2 +- 3 files changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index ab80d34..8d5dc73 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ Network Trash Folder Temporary Items .apdisk *.suo +1.0/WPFNotification/.vs/WPFNotification/v14/.suo diff --git a/1.0/WPFNotification/.vs/WPFNotification/v14/.suo b/1.0/WPFNotification/.vs/WPFNotification/v14/.suo index fbad6d6d29f3674b6d6c68db22072dea7186aec8..8e1c47cf0444c0a6c287ce8602d54ca8ff364899 100644 GIT binary patch delta 440 zcmYMvKS%;m90%}w@9xYp6BB3wg;58JqB>R$bwfh%3l3a?j35i6=HS%Y zL6aOj2+^rD&i#LJJN5vwp#+*mQ)m*I*NtP3phdKV+^7ecduDyJn8@28-ja3VH@Fb$ zL*^@L@Fb-LGXw)p8GN>8Ht#GpFo&Wa1vE`=#_h3Lalet%4u!TYs~ zBrijdT3KfQkm%FF!ekjwZA5fc$Y;xqq!mNvzyE`uTfKzIxwnSGd6AF;lzb!lQIker z=o|#o?Qp;D(M~U^PwKrsu^6x0Pu0igiSVW?s+Df3p=Bccp{Cbq8*4lJ5RX^A;Jrxw UKA&ZW4#=*NGf2*$R|YTr0JzSOasU7T delta 500 zcmY+=IZFdU6bJB~&8{XEP62Ca-Jg2x6@SOi%QQduPX z3LA@%+Qv+4WAU5K8ae1fKxKK4OLXHaiI zuLp);4?++GY_abm)zuZIh_db8I5aZ#bL!}l-B>NcNdInnMy4gr8eGnU1f!=+e(+6 gix?BX?e`u0C0) /// Initializes a new instance of the MainViewModel class. /// - /// The NotificationDialogService object + /// The NotificationDialogService object public MainViewModel(INotificationDialogService dialogService) From 18db944b07269018425607fd8becfdf629e0ed21 Mon Sep 17 00:00:00 2001 From: Gareth Date: Thu, 26 Jan 2017 15:12:53 +0000 Subject: [PATCH 6/7] Whitespace changes --- .../WPFNotificationDemo/ViewModel/MainViewModel.cs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs b/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs index 9e7c24f..5450a71 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs +++ b/1.0/WPFNotification/WPFNotificationDemo/ViewModel/MainViewModel.cs @@ -23,19 +23,17 @@ namespace WPFNotificationDemo.ViewModel public class MainViewModel : ViewModelBase { private readonly INotificationDialogService _dialogService; + /// /// Initializes a new instance of the MainViewModel class. /// /// The NotificationDialogService object - - public MainViewModel(INotificationDialogService dialogService) { _dialogService = dialogService; } - private RelayCommand _mailNotification; /// From f1286a1538992ca8cc6423d28c4b5950f0d590bd Mon Sep 17 00:00:00 2001 From: Gareth Date: Thu, 26 Jan 2017 15:33:16 +0000 Subject: [PATCH 7/7] Better spacing --- 1.0/WPFNotification/WPFNotificationDemo/App.xaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/1.0/WPFNotification/WPFNotificationDemo/App.xaml b/1.0/WPFNotification/WPFNotificationDemo/App.xaml index 12ecb43..bdf7593 100644 --- a/1.0/WPFNotification/WPFNotificationDemo/App.xaml +++ b/1.0/WPFNotification/WPFNotificationDemo/App.xaml @@ -1,4 +1,11 @@ - +