Example #1
0
        //从ClientSocket接收Message信息
        public static void RefreshMessage(JObject j)
        {
            int jId = int.Parse(j["id"].ToString());

            Message m;
            if (messages.ContainsKey(jId))
            {
                m = messages[jId];
                m.RefreshMessage(j);
            }
            else
            {
                m = new Message(j);
                messages.Add(m.Id, m);
            }

            listOprating = true;
            if (gettingIdList.Contains(m.Id))
            {
                int t = gettingIdList.IndexOf(m.Id);
                int d = gettingDeepList[t];
                if (d>0) foreach (int sonsId in m.SonsId) addToList(sonsId, d - 1);
                gettingIdList.RemoveAt(t); gettingDeepList.RemoveAt(t); gettingSendedList.RemoveAt(t);
            }
            listOprating = false;
        }
Example #2
0
        private ScrollViewer getIndexTextBlock(Message msg)
        {
            ScrollViewer sv = null;
            sv = MainGrid.FindName("scrollViewerIndex" + msg.Id) as ScrollViewer;
            if (sv != null) return sv;

            sv = new ScrollViewer();
            sv.Height = msg.Size(0);
            sv.Width = msg.Size(0);
            sv.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
            sv.Margin = new Thickness(10);

            TextBlock tb = new TextBlock();
            tb.TextWrapping = TextWrapping.Wrap;
            tb.Inlines.Add(new Bold(new Run(msg.SenderName + ": ")));
            tb.Inlines.Add(new Run(msg.Content));
            tb.Background = new SolidColorBrush(msg.Color);
            tb.FontSize = msg.FontSize();
            tb.MouseUp += tb_MouseUp;

            tb.MouseEnter += tb_MouseEnter;
            tb.MouseLeave += tb_MouseLeave;

            tb.Tag = msg;

            sv.Content = tb;

            return sv;
        }
Example #3
0
        private ScrollViewer getTextBlock(Message msg, int level = 0)
        {
            ScrollViewer sv = null;
            TextBlock tb = null;

            //查找目标UI是否已存在于容器
            sv = MainGrid.FindName("scrollViewer" + msg.Id) as ScrollViewer;
            if (sv == null)
            {
                //没有找到,新建UI
                sv = new ScrollViewer();
                tb = new TextBlock();

                sv.VerticalScrollBarVisibility = ScrollBarVisibility.Auto;
                tb.TextWrapping = TextWrapping.Wrap;
                tb.Inlines.Add(new Bold(new Run(msg.SenderName + ": ")));
                tb.Inlines.Add(new Run(msg.Content));
                tb.Background = new SolidColorBrush(msg.Color);
                tb.MouseUp += tb_MouseUp;

                tb.MouseEnter += tb_MouseEnter;
                tb.MouseLeave += tb_MouseLeave;

                tb.Tag = msg;

                sv.Content = tb;
                sv.Tag = currentCenterId;
            }
            else
            {
                ////已经正常显示则不修改
                if (sv.IsVisible && (int)sv.Tag == currentCenterId) return sv;
                //否则进行微调
                tb = sv.Content as TextBlock;
            }

            sv.Height = msg.Size(level);
            sv.Width = msg.Size(level);
            sv.Tag = currentCenterId;
            tb.FontSize = msg.FontSize(level);

            if (level == 0 || level == 1)
            {
                //正常显示
                tb.Background = new SolidColorBrush(msg.Color);
                tb.Foreground = Brushes.Black;
            }
            else
            {
                //弱显示
                tb.Background = new SolidColorBrush(msg.LightColor);
                tb.Foreground = new SolidColorBrush(Message.LightFontColor);
            }

            if (!sv.IsVisible)
            {
                if (level == 0)
                {
                    //正中间
                    sv.Margin = new Thickness(0);
                }
                else if (level >= -1)
                {
                    //儿子位置正关联
                    ScrollViewer sv0 = MainGrid.FindName("scrollViewer" + msg.Father) as ScrollViewer;
                    if (sv0 != null)
                    {
                        double distance = sv0.Width + sv.Width;// -randomMove / 2 + random.Next(randomMove);
                        sv.Margin = Message.Position(msg.Place, distance, sv0.Margin);
                    }
                }
                else if (level == -2)
                {
                    //父亲位置负关联
                    ScrollViewer sv0 = MainGrid.FindName("scrollViewer" + currentCenterId) as ScrollViewer;
                    Message m0 = MessagesKeeper.Get(currentCenterId);
                    if (sv0 != null && m0 != null)
                    {
                        double distance = sv0.Width + sv.Width;// -randomMove / 2 + random.Next(randomMove);
                        sv.Margin = Message.Position(m0.Place, distance, sv0.Margin, -1);
                    }
                }
            }

            sv.Visibility = Visibility.Visible;

            return sv;
        }