예제 #1
0
        private NotifyMessageItem[] ParseMessage(byte[] data)
        {
            var list   = new List <NotifyMessageItem>();
            var stream = new MemoryStream(data);

            using (var reader = new BinaryReader(stream))
            {
                while (reader.PeekChar() == 1)
                {
                    reader.ReadChar();
                    var tableName = reader.ReadString();
                    var table     = DBService.Schems.ParseTable(tableName);

                    while (reader.PeekChar() == 2)
                    {
                        reader.ReadChar();
                        var item = new NotifyMessageItem
                        {
                            Table  = table,
                            Type   = (DBLogType)reader.ReadInt32(),
                            UserId = reader.ReadInt32(),
                            ItemId = Helper.ReadBinary(reader),
                        };
                        if (table != null)
                        {
                            list.Add(item);
                        }
                    }
                }
            }
            return(list.ToArray());
        }
예제 #2
0
        /// <summary>
        /// 发布一个成就通知到通知队列中并处理队列
        /// </summary>
        /// <param name="label">通知的标题</param>
        /// <param name="detail">通知的具体内容</param>
        /// <param name="icoFilename">通知的图标</param>
        public static void Notify(string label, string detail, string icoFilename = "")
        {
            var nti = new NotifyMessageItem()
            {
                Label        = label,
                Detail       = detail,
                IconFilename = icoFilename
            };

            lock (NotificationManager.pendingMessages)
            {
                NotificationManager.pendingMessages.Enqueue(nti);
            }
            NotificationManager.HandleNotificationQueue();
        }
예제 #3
0
        /// <summary>
        /// 执行通知动画
        /// </summary>
        private static void ApplyNotificationAnimation(NotifyMessageItem nti)
        {
            Storyboard story      = new Storyboard();
            var        beginRight = Canvas.GetRight(NotificationManager.BoxUI);
            var        toRight    = NotificationManager.DeltaBoxRight;
            DoubleAnimationUsingKeyFrames daukf_translate = new DoubleAnimationUsingKeyFrames();
            EasingDoubleKeyFrame          k1_translate    = new EasingDoubleKeyFrame(toRight, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS)));
            EasingDoubleKeyFrame          k2_translate    = new EasingDoubleKeyFrame(toRight, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS + nti.PendingMs)));
            EasingDoubleKeyFrame          k3_translate    = new EasingDoubleKeyFrame(beginRight, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS * 2 + nti.PendingMs)));
            EasingDoubleKeyFrame          k4_translate    = new EasingDoubleKeyFrame(beginRight, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS * 3 + nti.PendingMs)));

            k1_translate.EasingFunction = new CubicEase()
            {
                EasingMode = EasingMode.EaseOut
            };
            k3_translate.EasingFunction = new CubicEase()
            {
                EasingMode = EasingMode.EaseIn
            };
            daukf_translate.KeyFrames.Add(k1_translate);
            daukf_translate.KeyFrames.Add(k2_translate);
            daukf_translate.KeyFrames.Add(k3_translate);
            daukf_translate.KeyFrames.Add(k4_translate);
            Storyboard.SetTarget(daukf_translate, NotificationManager.BoxUI);
            Storyboard.SetTargetProperty(daukf_translate, new PropertyPath(Canvas.RightProperty));
            DoubleAnimationUsingKeyFrames daukf_opacity = new DoubleAnimationUsingKeyFrames();
            EasingDoubleKeyFrame          k1_opacity    = new EasingDoubleKeyFrame(1.0, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS)));
            EasingDoubleKeyFrame          k2_opacity    = new EasingDoubleKeyFrame(1.0, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS + nti.PendingMs)));
            EasingDoubleKeyFrame          k3_opacity    = new EasingDoubleKeyFrame(0.0, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS * 2 + nti.PendingMs)));
            EasingDoubleKeyFrame          k4_opacity    = new EasingDoubleKeyFrame(0.0, KeyTime.FromTimeSpan(TimeSpan.FromMilliseconds(AnimationTimeMS * 3 + nti.PendingMs)));

            daukf_opacity.KeyFrames.Add(k1_opacity);
            daukf_opacity.KeyFrames.Add(k2_opacity);
            daukf_opacity.KeyFrames.Add(k3_opacity);
            daukf_opacity.KeyFrames.Add(k4_opacity);
            Storyboard.SetTarget(daukf_opacity, NotificationManager.BoxUI);
            Storyboard.SetTargetProperty(daukf_opacity, new PropertyPath(Canvas.OpacityProperty));
            story.Children.Add(daukf_translate);
            story.Children.Add(daukf_opacity);
            story.FillBehavior = FillBehavior.Stop;
            story.Completed   += delegate
            {
                NotificationManager.IsNotificating = false;
                NotificationManager.HandleNotificationQueue();
            };
            story.Begin();
        }