KbtterWPF.MainWindow.StatusAction C# (CSharp) Method

StatusAction() public method

public StatusAction ( TweetSharp.TwitterUserStreamStatus p ) : void
p TweetSharp.TwitterUserStreamStatus
return void
        void StatusAction(TwitterUserStreamStatus p)
        {
            MainTimeline.Dispatcher.BeginInvoke(new Action(() =>
            {

                if (p.Status.RetweetedStatus != null)
                {
                    //自分がRTした以外のRT
                    if (p.Status.User == CurrentUser) return;
                    if (p.Status.RetweetedStatus.User == CurrentUser)
                    {
                        //自分のがRTされて飛んだきた
                        MainMention.Dispatcher.BeginInvoke(new Action(() =>
                        {
                            MainMention.Items.Insert(0, CreateRetweetedPanel(p.Status.RetweetedStatus, p.Status.User));
                        }));
                        NotifyRetweeted(p.Status.RetweetedStatus, p.Status.User);
                        foreach (var pl in RetweetPlugins) pl.OnRetweet(Service, p.Status.User, p.Status.RetweetedStatus);
                    }
                    else
                    {
                        //他人の公式RTが飛んできた
                        var rto = p.Status.RetweetedStatus;
                        MainTimeline.Items.Insert(0, CreateRetweetPanel(rto, p.Status));
                    }
                }
                else
                {
                    //普通のRT
                    MainTimeline.Items.Insert(0, CreateTweetPanel(p.Status));
                    if (p.Status.Entities.Mentions.Count != 0)
                    {

                    }
                    if (Regex.Match(p.Status.TextDecoded, "@" + CurrentUser.ScreenName).Success)
                    {
                        MainMention.Items.Insert(0, CreateTweetPanel(p.Status));
                        NotifyReplied(p.Status);
                    }
                }

                foreach (var pt in TweetPlugins)
                {
                    pt.OnTweet(Service, CurrentUser, p.Status);
                }
                if (MainTimeline.Items.Count > TimelineMax)
                {
                    MainTimeline.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        MainTimeline.Items.RemoveAt(TimelineMax);
                    }));
                }
                if (MainMention.Items.Count > MentionMax)
                {
                    MainMention.Dispatcher.BeginInvoke(new Action(() =>
                    {
                        MainMention.Items.RemoveAt(MentionMax);
                    }));
                }

            }));
        }