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); } }
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 }); }
//스트리밍에서 호출하게 될 트윗 추가 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); } }
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)); } }
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); }