Esempio n. 1
0
 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 = "已发送";
     });
 }
Esempio n. 2
0
        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;
                    }
                }
            }
        }
Esempio n. 3
0
 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();
 }
Esempio n. 4
0
        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);
            }
        }
Esempio n. 5
0
 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;
     }
 }