private void TwitterClient_Updated(object sender, UpdateEventArgs e) { if (!Settings.Default.UseUserStream) { var item = e.Item; this.Invoke(() => ((Timeline)TimelineTabControl.SelectedItem).VerticalOffset = _mainViewer.VerticalOffset); if (!item.IsMessage) { { Timelines.Update(new[] { item }); } UpdateHashtagList(new[] { (Status)item }); } else { Timelines.Update(TimelineType.Message, new[] { item }); } this.Invoke(() => _mainViewer.ScrollToVerticalOffset(((Timeline)TimelineTabControl.SelectedItem).VerticalOffset)); } else { var item = e.Item; this.Invoke(() => ((Timeline)TimelineTabControl.SelectedItem).VerticalOffset = _mainViewer.VerticalOffset); if (item.IsMessage) { Timelines.Update(TimelineType.Message, new[] { item }); } this.Invoke(() => _mainViewer.ScrollToVerticalOffset(((Timeline)TimelineTabControl.SelectedItem).VerticalOffset)); } this.Invoke(() => { UpdateButton.IsEnabled = true; In_Reply_To_Status_Id = null; In_Reply_To_Status_User_Name = null; lasttype = Controls.TweetType.Normal; _latitude = null; _longitude = null; StatusText = "已发送"; }); }
private void TweetTextBox_TextChanged(object sender, TextChangedEventArgs e) { var change = e.Changes.FirstOrDefault(); if (change == null) { return; } if (TweetTextBox.Text.Length == 0) { this.In_Reply_To_Status_Id = null; this.In_Reply_To_Status_User_Name = null; } if (RetweetStatusID.HasValue) lasttype = Controls.TweetType.Retweet; else if (this.In_Reply_To_Status_Id.HasValue) { if (TweetTextBox.Text[0] == '@') lasttype = Controls.TweetType.Reply; else lasttype = Controls.TweetType.RT; } RetweetStatusID = null; if (lasttype == Controls.TweetType.Retweet) lasttype = Controls.TweetType.RT; lasttype = TweetInfo.Update(lasttype, TweetTextBox.Text, this.In_Reply_To_Status_User_Name); if (popup.IsOpen) { _addLength += change.AddedLength; _addLength -= change.RemovedLength; if (_addLength < 0) { return; } var text = TweetTextBox.Text.Substring(_startIndex, _addLength); if (_isUser) { var filteredUsers = users.Where(p => p.ScreenName.IndexOf(text, StringComparison.OrdinalIgnoreCase) != -1).ToList(); if (filteredUsers.Count != 0) { usersListBox.ItemsSource = filteredUsers; usersListBox.SelectedIndex = 0; usersListBox.ScrollIntoView(usersListBox.SelectedItem); } else { popup.IsOpen = false; } } else { var filteredTags = hashtags.Where(p => p.IndexOf(text, StringComparison.OrdinalIgnoreCase) != -1).ToList(); if (filteredTags.Count != 0) { usersListBox.ItemsSource = filteredTags; usersListBox.SelectedIndex = 0; usersListBox.ScrollIntoView(usersListBox.SelectedItem); } else { popup.IsOpen = false; } } } else { if (change.AddedLength == 0) { return; } var text = TweetTextBox.Text.Substring(change.Offset, change.AddedLength); if (text == "@") { _addLength = 0; _startIndex = TweetTextBox.CaretIndex; if (users.Count != 0) { usersListBox.ItemsSource = users; usersListBox.SelectedIndex = 0; usersListBox.ScrollIntoView(usersListBox.SelectedItem); popup.PlacementTarget = TweetTextBox; var rect = TweetTextBox.GetRectFromCharacterIndex(TweetTextBox.CaretIndex - 1); rect.Offset(-24, 0); popup.PlacementRectangle = rect; popup.IsOpen = true; _isUser = true; } } else if (text == "#") { _addLength = 0; _startIndex = TweetTextBox.CaretIndex; if (hashtags.Count != 0) { usersListBox.ItemsSource = hashtags; usersListBox.SelectedIndex = 0; usersListBox.ScrollIntoView(usersListBox.SelectedItem); popup.PlacementTarget = TweetTextBox; var rect = TweetTextBox.GetRectFromCharacterIndex(TweetTextBox.CaretIndex - 1); rect.Offset(-4, 0); popup.PlacementRectangle = rect; popup.IsOpen = true; _isUser = false; } } } }
private void ReTweetCommand_Executed(object sender, ExecutedRoutedEventArgs e) { var item = (Status)e.Parameter ?? GetSelectedItem(); if (Settings.Default.IsRetweetWithInReplyTo) { In_Reply_To_Status_Id = item.ID; In_Reply_To_Status_User_Name = item.Sender.ScreenName; } else { In_Reply_To_Status_Id = null; In_Reply_To_Status_User_Name = null; } if (!item.Sender.Protected || item.IsReTweeted) { RetweetStatusID = item.ID; } TweetTextBox.Text = string.Format("{0} {1}{2}: {3}", Properties.Settings.Default.ReTweetPrefix, (item.IsAuthor ? "" : "@"), item.Sender.ScreenName, item.Text.Replace("@" + TClient.LoginedUser.ScreenName, TClient.LoginedUser.ScreenName)); TweetTextBox.CaretIndex = 0; if (item.Sender.Protected && !item.IsReTweeted) { TweetInfo.Type = lasttype = Controls.TweetType.RT; } else { TweetInfo.Type = Controls.TweetType.Retweet; } TweetTextBox.Focus(); ForceActivate(); }
private void SetTweetTextCommand_Executed(object sender, ExecutedRoutedEventArgs e) { if (e.Parameter == null) { TweetTextBox.Clear(); } else { var state = (MainWindowState)e.Parameter; TweetTextBox.Text = state.StatusText; this.In_Reply_To_Status_Id = state.In_Reply_To_Status_Id; this.In_Reply_To_Status_User_Name = state.In_Reply_To_Status_User_Name; this.RetweetStatusID = state.RetweetStatusID; if (In_Reply_To_Status_Id != null) { if (TweetTextBox.Text[0] == '@') lasttype = Controls.TweetType.Reply; else lasttype = Controls.TweetType.RT; } if (RetweetStatusID != null) lasttype = Controls.TweetType.Retweet; lasttype = TweetInfo.Update(lasttype, TweetTextBox.Text, this.In_Reply_To_Status_User_Name); FailStatuses.Remove(state); } }
private void MoveToReplyStatusButton_MouseUp(object sender, MouseButtonEventArgs e) { if (e.ChangedButton == MouseButton.Right) { In_Reply_To_Status_Id = null; In_Reply_To_Status_User_Name = null; RetweetStatusID = null; if (TweetInfo.Type == Controls.TweetType.Retweet) TweetInfo.Type = lasttype = Controls.TweetType.RT; } }