コード例 #1
0
        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;
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
        }
コード例 #4
0
        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);
                }
            }
        }