public void Initialize() { HorizontalAlignment horizontal = PopupDocker.GetDockHorizontal(this); VerticalAlignment vertical = PopupDocker.GetDockVertical(this); border.BorderThickness = new Thickness( (horizontal == HorizontalAlignment.Left || horizontal == HorizontalAlignment.Stretch) ? 0.0 : 5.0, (vertical == VerticalAlignment.Top || vertical == VerticalAlignment.Stretch) ? 0.0 : 5.0, (horizontal == HorizontalAlignment.Right || horizontal == HorizontalAlignment.Stretch) ? 0.0 : 5.0, (vertical == VerticalAlignment.Bottom || vertical == VerticalAlignment.Stretch) ? 0.0 : 5.0 ); border.CornerRadius = new CornerRadius( ((vertical == VerticalAlignment.Bottom || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Right || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0, ((vertical == VerticalAlignment.Bottom || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Left || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0, ((vertical == VerticalAlignment.Top || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Left || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0, ((vertical == VerticalAlignment.Top || vertical == VerticalAlignment.Center) && (horizontal == HorizontalAlignment.Right || horizontal == HorizontalAlignment.Center)) ? 10.0 : 0.0 ); var itemsSource = Notifications; if (PopupDocker.GetDockVertical(this) == VerticalAlignment.Top) { itemsSource = new ReversedObservableCollection <GrowlNotification>(Notifications); } notificationsControl.ItemsSource = itemsSource; }
protected override void BeginTimeoutAnimation(GrowlNotification notification) { if (DontCloseOnMouseOver && IsMouseOver) { _waitingNotifications.Enqueue(notification); return; } Duration timeoutDuration = new Duration(TimeSpan.FromSeconds(0.5)); if (UseFadeAnimation && (from n in Notifications where n.Status <= GrowlNotificationStatus.Opened select n).Count() < 1) { var animation = new DoubleAnimation(0, timeoutDuration); animation.Completed += delegate { EndTimeoutAnimation(notification); }; border.BeginAnimation(OpacityProperty, animation); } else { var notificationBorder = GetNotificationElement(notification); var notificationTransformation = notificationBorder.RenderTransform; AnimationTimeline animation; HorizontalAlignment horizontal = PopupDocker.GetDockHorizontal(this); if (horizontal == HorizontalAlignment.Left) { animation = new DoubleAnimation(0.0, -notificationBorder.ActualWidth, timeoutDuration); } else { animation = new DoubleAnimation(0.0, notificationBorder.ActualWidth, timeoutDuration); } animation.Completed += delegate { EndTimeoutAnimation(notification); }; notificationTransformation.BeginAnimation(TranslateTransform.XProperty, animation); } }
protected override GrowlPopup CreatePopup() { var popup = new TranslucentDarkPopup(); var settings = new TranslucentDarkSettings(SettingsCollection); popup.NotificationWidth = settings.FixedWidth; popup.IconSize = settings.IconSize; popup.TextColor = WfColorToWpfColor(settings.TextColor); popup.ContainerColor = WfColorToWpfColor(settings.ContainerColor); popup.ShowIcon = settings.ShowIcon; popup.ShowTitle = settings.ShowTitle; popup.ShowDescription = settings.ShowDescription; popup.TitleFontFamily = GetFontFamily(settings.TitleFontFamily); popup.TitleFontSize = settings.TitleFontSize; popup.DescriptionFontFamily = GetFontFamily(settings.DescriptionFontFamily); popup.DescriptionFontSize = settings.DescriptionFontSize; popup.UseFadeAnimation = settings.UseFadeAnimation; popup.DontCloseOnMouseOver = settings.DontCloseOnMouseOver; PopupDocker.SetDockHorizontal(popup, settings.HorizontalPlacement); PopupDocker.SetDockVertical(popup, settings.VerticalPlacement); PopupDocker.SetDockedScreen(popup, settings.Screen); popup.Initialize(); return(popup); }
protected override void BeginOpenAnimation(GrowlNotification notification) { var openDuration = new Duration(TimeSpan.FromSeconds(0.5)); if (UseFadeAnimation && Notifications.Count <= 1) { var animation = new DoubleAnimation(0, 1, openDuration); animation.Completed += delegate { EndOpenAnimation(notification); }; border.BeginAnimation(OpacityProperty, animation); } else { var container = GetNotificationElement(notification); VerticalAlignment vertical = PopupDocker.GetDockVertical(this); if (vertical == VerticalAlignment.Bottom || vertical == VerticalAlignment.Top) { var animation = new DoubleAnimation((vertical == VerticalAlignment.Top ? -1.0 : 1.0) * container.DesiredSize.Height + borderTranslation.Y, 0, new Duration(TimeSpan.FromSeconds(0.5))); animation.Completed += delegate { EndOpenAnimation(notification); }; borderTranslation.BeginAnimation(TranslateTransform.YProperty, animation); } } }