Exemple #1
0
        private void ReplyAll()
        {
            ClientTweet tweet = selectTweet;

            if (tweet == null)
            {
                return;
            }
            if (tweet.originalTweet == null || tweet.user == null)
            {
                return;
            }

            StringBuilder sb = new StringBuilder();

            sb.Append($"@{tweet.user.screen_name} ");
            if (tweet.retweeted)
            {
                sb.Append($"@{tweet.originalTweet.user.screen_name} ");
            }
            foreach (string name in tweet.hashMention)
            {
                if (DataInstence.CheckIsMe(name) == false)
                {
                    sb.Append($"@{name} ");
                }
            }
            inputTweetBox.Text           = sb.ToString();
            inputTweetBox.SelectionStart = inputTweetBox.Text.Length;
            replyTweet = tweet;
            EnterInputTweet();
        }
        private void contextClick_Retweet(object sender, RoutedEventArgs e)
        {
            if (tweet == null)
            {
                return;
            }

            if (tweet.user.Protected && DataInstence.CheckIsMe(tweet.user.id) == false &&
                DataInstence.option.isRetweetProtectUser == false)
            {
                DalsaeInstence.ShowMessageBox("잠금 계정의 트윗은 리트윗 할 수 없습니다.\r", "알림");
                return;
            }

            MessageBoxResult mr = DalsaeInstence.ShowMessageBox("선택한 트윗을 리트윗 하시겠습니까?", "리트윗 확인", MessageBoxButton.YesNo);

            if (mr != MessageBoxResult.Yes)
            {
                return;
            }

            if (tweet.user.Protected && DataInstence.CheckIsMe(tweet.user.id) == false)
            {
                DalsaeInstence.RetweetProtect(tweet);
            }
            else
            {
                DalsaeInstence.Retweet(tweet.originalTweet.id, !tweet.retweeted);
            }
        }
Exemple #3
0
        public void Retweet(ClientTweet tweet)
        {
            if (tweet.user.Protected && DataInstence.CheckIsMe(tweet.user.id) == false &&
                DataInstence.option.isRetweetProtectUser == false)
            {
                DalsaeInstence.ShowMessageBox("잠금 계정의 트윗은 리트윗 할 수 없습니다.\r", "알림");
                return;
            }

            if (tweet.originalTweet.retweeted == false)
            {
                MessageBoxResult mr = DalsaeInstence.ShowMessageBox("선택한 트윗을 리트윗 하시겠습니까?", "리트윗 확인", MessageBoxButton.YesNo);
                if (mr != MessageBoxResult.Yes)
                {
                    return;
                }
            }
            if (tweet.user.Protected && tweet.isRetweet == false && DataInstence.CheckIsMe(tweet.user.id) == false)
            {
                DalsaeInstence.RetweetProtect(tweet);
            }
            else
            {
                DalsaeInstence.Retweet(tweet.originalTweet.id, !tweet.originalTweet.retweeted);
            }
        }
 private void ResponseUSTweet(ClientTweet tweet)
 {
     tweet.Init();
     if (tweet.isRetweet && DataInstence.CheckIsMe(tweet.user.id))
     {
         tweet.originalTweet.retweeted = true;
     }
     TweetInstence.AddTweet(eTweetPanel.eHome, tweet);
     //DeleAddTweet dele = new DeleAddTweet(TweetInstence.AddTweet);
     //Application.Current.Dispatcher.BeginInvoke(dele, new object[] { eTweetPanel.eHome, tweet });
 }
Exemple #5
0
        //스트리밍에서 호출하게 될 트윗 추가
        public void AddTweet(eTweetPanel panel, ClientTweet tweet)
        {
            lock (lockObject)
            {
                tweet.Init();
                //if (DataInstence.CheckIsMe(tweet.user.id))//내트윗일 경우 작업
                //{
                //	DataInstence.UpdateMyScreenName(tweet.user.screen_name);//아이디 변경 체크
                //	DataInstence.UpdateMyProfilePicture(tweet.user.profile_image_url);//인장 변경 체크
                //}

                if (dicHashs[panel].Contains(tweet.id))
                {
                    return;                                                    //중복 트윗
                }
                if (DataInstence.isShowTweet(tweet, panel) == false)
                {
                    return;                                                                 //트윗 미표시
                }
                bool isShowTweet = true;
                if (panel == eTweetPanel.eHome)
                {
                    if (DataInstence.option.MatchHighlight(tweet.originalTweet.text) || tweet.isMention)                    //하이라이트,멘션 멘션에 추가
                    {
                        AddTweetData(eTweetPanel.eMention, tweet);
                    }
                    else if (DataInstence.CheckIsMe(tweet.originalTweet.user.id) && tweet.retweeted) //내 트윗 체크(리트윗용)
                    {
                        isShowTweet = DataInstence.option.isShowRetweet;                             //리트윗을 TL표시할경우 추가
                        if (isShowTweet && DataInstence.option.isNotiRetweet)                        //리트윗 멘션함에 오게 할 경우 추가
                        {
                            AddTweetData(eTweetPanel.eMention, tweet);
                        }
                        //if (DataInstence.CheckIsMe(tweet.user.id) && tweet.retweeted_status != null)//내가 한 리트윗
                        //	Retweet(tweet, true);
                    }
                }
                if (isShowTweet)
                {
                    AddTweetData(panel, tweet);
                }

                //if (DataInstence.CheckIsMe(tweet.user.id) && tweet.retweeted_status != null)//리트윗 갱신
                //	Retweet(tweet, true);
            }
        }
Exemple #6
0
        private void ReplyDM()
        {
            ClientDirectMessage dm = dicPanel[eTweetPanel.eDm].treeView.SelectedItem as ClientDirectMessage;

            if (dm == null)
            {
                return;
            }

            if (DataInstence.CheckIsMe(dm.sender_screen_name))
            {
                inputTweetBox.Text = $"d @{dm.recipient_screen_name} ";
            }
            else
            {
                inputTweetBox.Text = $"d @{dm.sender_screen_name} ";
            }
            inputTweetBox.SelectionStart = inputTweetBox.Text.Length;
            EnterInputTweet();
        }
        private void buttonFollow_Click(object sender, RoutedEventArgs e)
        {
            UserFollow user = gridUserTop.DataContext as UserFollow;

            if (user == null)
            {
                return;
            }
            if (DataInstence.CheckIsMe(user.id))
            {
                return;                                             //출력중인 게 본인이면 작동 x
            }
            if (buttonFollow.Content.ToString() == "언팔로우 하기")
            {
                ThreadPool.QueueUserWorkItem(UnFollow, new PacketUnFollow(user.screen_name));
            }
            else if (buttonFollow.Content.ToString() == "팔로우 하기")
            {
                ThreadPool.QueueUserWorkItem(Follow, new PacketFollow(user.screen_name));
            }
        }
Exemple #8
0
        private void SetBoolean()
        {
            if (string.IsNullOrEmpty(originalTweet.in_reply_to_status_id_str) == false)
            {
                isReply = true;
            }
            if (string.IsNullOrEmpty(originalTweet.quoted_status_id_str) == false)
            {
                isQTRetweet = true;
            }
            if (originalTweet.extended_tweet != null)
            {
                isExtendTweet = true;
            }

            if (isExtendTweet)            //확장 트윗일 경우 확장 트윗의 일반,확장 엔티티 설정
            {
                if (originalTweet.extended_tweet.extended_entities != null)
                {
                    mediaEntities = originalTweet.extended_tweet.extended_entities;
                }
                else
                {
                    mediaEntities = originalTweet.entities;
                }
                lastEntities = originalTweet.extended_tweet.entities;
            }
            else
            {
                if (originalTweet.extended_entities != null)
                {
                    mediaEntities = originalTweet.extended_entities;
                }
                else
                {
                    mediaEntities = originalTweet.entities;
                }
                lastEntities = originalTweet.entities;
            }
            if (mediaEntities?.media != null)
            {
                if (mediaEntities.media.Count > 0)
                {
                    isMedia = true;
                }
            }

            for (int i = 0; i < lastEntities.user_mentions.Count; i++)
            {
                if (DataInstence.CheckIsMe(lastEntities.user_mentions[i].id))
                {
                    isMention = true;
                }

                hashMention.Add(lastEntities.user_mentions[i].screen_name);
            }

            if (lastEntities.urls != null)
            {
                if (lastEntities.urls.Count > 0)
                {
                    isUrl = true;
                }
            }
        }
        private ContextMenu CreateContextMenu(ClientTweet tweet)
        {
            if (tweet.user == null || tweet.originalTweet == null)
            {
                return(new ContextMenu());
            }
            ContextMenu contextMenu = new ContextMenu();
            MenuItem    mi          = new MenuItem();

            mi.Header = "입력하기";
            mi.Click += contextClick_EnterInput;
            contextMenu.Items.Add(mi);

            Separator sp = new Separator();

            contextMenu.Items.Add(sp);
            //------------------미디어---------------------
            if (tweet.isMedia)
            {
                foreach (ClientMedia item in tweet.dicPhoto.Values)
                {
                    if (tweet.isPhoto)
                    {
                        MenuItem imageItem = new MenuItem();
                        imageItem.Header = item.display_url;
                        imageItem.Click += contextClick_Image;
                        contextMenu.Items.Add(imageItem);
                        break;
                    }
                }
                if (tweet.isMovie)                //동영상 추가
                {
                    MenuItem gifMi = new MenuItem();
                    gifMi.Header = "gif / 동영상";
                    MenuItem gifItem = new MenuItem();
                    gifItem.Header = tweet.tweetMovie.display_url;
                    gifItem.Click += contextClick_Video;
                    gifMi.Items.Add(gifItem);
                    contextMenu.Items.Add(gifMi);
                }

                sp = new Separator();
                contextMenu.Items.Add(sp);
            }
            //----------------------------------------------

            //------------------URL----------------------
            if (tweet.isUrl)
            {
                mi        = new MenuItem();
                mi.Header = "URL";
                for (int i = 0; i < tweet.listUrl.Count; i++)
                {
                    MenuItem url = new MenuItem();
                    url.Header = tweet.listUrl[i].display_url;
                    url.Click += contextClick_Url;
                    mi.Items.Add(url);
                    url.Tag = tweet.listUrl[i];
                }
                contextMenu.Items.Add(mi);
                sp = new Separator();
                contextMenu.Items.Add(sp);
            }
            //----------------------------------------------
            mi        = new MenuItem();
            mi.Header = "답글";
            mi.Click += contextClick_Reply;
            contextMenu.Items.Add(mi);

            mi        = new MenuItem();
            mi.Header = "모두에게 답글";
            mi.Click += contextClick_ReplyAll;
            contextMenu.Items.Add(mi);

            sp = new Separator();
            contextMenu.Items.Add(sp);
            //----------------------------------------------
            if (tweet.isReply)
            {
                mi        = new MenuItem();
                mi.Header = "대화 보기";
                mi.Click += contextClick_LoadDeahwa;
                contextMenu.Items.Add(mi);
                sp = new Separator();
                contextMenu.Items.Add(sp);
            }

            //----------------------------------------------
            //------------------사용자---------------------
            //----------------------------------------------
            mi        = new MenuItem();
            mi.Header = "사용자 기능";
            contextMenu.Items.Add(mi);

            //------------------USER----------------------
            {
                MenuItem usermi = new MenuItem();
                usermi.Header = "유저 트윗";
                HashSet <string> hashUser = new HashSet <string>();
                hashUser.Add(tweet.user.screen_name);                //리트윗 유저
                hashUser.Add(tweet.originalTweet.user.screen_name);  //리트윗 원본 작성자
                foreach (string name in tweet.hashMention)
                {
                    hashUser.Add(name);
                }
                foreach (string name in hashUser)
                {
                    MenuItem umi = new MenuItem();
                    umi.Header = name.Replace("_", "__");
                    umi.Click += contextClick_UserTweet;
                    usermi.Items.Add(umi);
                }
                mi.Items.Add(usermi);
                MenuItem usermedia = new MenuItem();
                usermedia.Header = "유저 미디어";
                foreach (string name in hashUser)
                {
                    MenuItem umi = new MenuItem();
                    umi.Header = name.Replace("_", "__");
                    umi.Click += contextClick_UserMediaTweet;
                    usermedia.Items.Add(umi);
                }
                mi.Items.Add(usermedia);

                //------------------MUTE----------------------
                MenuItem muteItem = new MenuItem();
                muteItem.Header = "유저 뮤트";
                foreach (string name in hashUser)
                {
                    MenuItem umi = new MenuItem();
                    umi.Header = name.Replace("_", "__");
                    umi.Click += contextClick_UserMute;
                    umi.Tag    = name;
                    muteItem.Items.Add(umi);
                }
                mi.Items.Add(muteItem);

                //------------------프로필----------------------
                MenuItem profileItem = new MenuItem();
                profileItem.Header = "유저 프로필 보기";
                foreach (string name in hashUser)
                {
                    MenuItem umi = new MenuItem();
                    umi.Header = name.Replace("_", "__");
                    umi.Click += contextClick_UserProfile;
                    profileItem.Items.Add(umi);
                }
                mi.Items.Add(profileItem);
                sp = new Separator();
                mi.Items.Add(sp);
            }
            //------------------------------------------------
            {
                MenuItem usermi = new MenuItem();
                if (DataInstence.hashRetweetOff.Contains(tweet.user.id))
                {
                    usermi.Header = $"{tweet.user.screen_name.Replace("_", "__")}의 리트윗 켜기";
                }
                else
                {
                    usermi.Header = $"{tweet.user.screen_name.Replace("_", "__")}의 리트윗 끄기";
                }
                usermi.Click += contextClick_UserRetweetOff;
                mi.Items.Add(usermi);

                sp = new Separator();
                mi.Items.Add(sp);

                usermi        = new MenuItem();
                usermi.Header = "클라이언트 뮤트";
                usermi.Click += contextClick_ClientMute;
                mi.Items.Add(usermi);

                usermi        = new MenuItem();
                usermi.Header = "트윗 뮤트";
                usermi.Click += contextClick_TweetMute;
                mi.Items.Add(usermi);
            }
            sp = new Separator();
            contextMenu.Items.Add(sp);

            //------------------해시태그----------------------
            if (tweet.lastEntities.hashtags.Count > 0)
            {
                mi        = new MenuItem();
                mi.Header = "해시 태그";
                for (int i = 0; i < tweet.lastEntities.hashtags.Count; i++)
                {
                    MenuItem hash = new MenuItem();
                    hash.Header = tweet.lastEntities.hashtags[i].text.Replace("_", "__");
                    hash.Click += contextClick_Hashtag;
                    mi.Items.Add(hash);
                }
                contextMenu.Items.Add(mi);
                sp = new Separator();
                contextMenu.Items.Add(sp);
            }
            //------------------------------------------------
            mi        = new MenuItem();
            mi.Header = "웹에서 보기";
            mi.Click += contextClick_ViewWeb;
            contextMenu.Items.Add(mi);

            mi        = new MenuItem();
            mi.Header = "리트윗(RT)";
            mi.Click += contextClick_Retweet;
            contextMenu.Items.Add(mi);

            mi        = new MenuItem();
            mi.Header = "인용하기(QT)";
            mi.Click += contextClick_Qt;
            contextMenu.Items.Add(mi);

            mi        = new MenuItem();
            mi.Header = "쪽지";
            mi.Click += contextClick_DM;
            contextMenu.Items.Add(mi);

            mi        = new MenuItem();
            mi.Header = "관심글";
            mi.Click += contextClick_Favorite;
            contextMenu.Items.Add(mi);

            sp = new Separator();
            contextMenu.Items.Add(sp);

            mi        = new MenuItem();
            mi.Header = "트윗 복사";
            mi.Click += contextClick_TweetCopy;
            contextMenu.Items.Add(mi);


            mi           = new MenuItem();
            mi.Header    = "삭제";
            mi.Click    += contextClick_TweetDelete;
            mi.IsEnabled = DataInstence.CheckIsMe(tweet.user.id);
            contextMenu.Items.Add(mi);

            return(contextMenu);
        }