예제 #1
0
 private void SuggestionHide()
 {
     SuggestionMessenger.Raise(new SuggestionNotification {
         SuggestWords = null, IsOpen = false
     });
 }
예제 #2
0
        private void SuggestionCheck()
        {
            if (_tokens == null)
            {
                SuggestionMessenger.Raise(new SuggestionNotification {
                    SuggestWords = null, IsOpen = false
                });
                return;
            }

            try
            {
                var token = SuggestionService.GetTokenFromPosition(_tokens, _selectionStart);
                var words = new List <string>();

                switch (token.Type)
                {
                case SuggestionService.SuggestionToken.SuggestionTokenId.HashTag:
                    foreach (var userId in Connecter.Instance.TweetCollecter.Keys)
                    {
                        lock (Connecter.Instance.TweetCollecter[userId].EntitiesObjectsLock)
                        {
                            words.AddRange(Connecter.Instance.TweetCollecter[userId]
                                           .HashTagObjects.Where(x => x.StartsWith(token.Value))
                                           .OrderBy(x => x));
                        }
                    }
                    break;

                case SuggestionService.SuggestionToken.SuggestionTokenId.ScreenName:
                    if (!string.IsNullOrEmpty(token.Value))
                    {
                        foreach (var userId in Connecter.Instance.TweetCollecter.Keys)
                        {
                            lock (Connecter.Instance.TweetCollecter[userId].EntitiesObjectsLock)
                            {
                                words.AddRange(Connecter.Instance.TweetCollecter[userId]
                                               .ScreenNameObjects.Where(x => x.StartsWith(token.Value))
                                               .OrderBy(x => x));
                            }
                        }
                    }
                    break;

                case SuggestionService.SuggestionToken.SuggestionTokenId.Emoji:
                    if (!string.IsNullOrEmpty(token.Value))
                    {
                        words.AddRange(EmojiPatterns.EmojiDictionary
                                       .Where(x => x.Key.StartsWith(token.Value))
                                       .OrderBy(x => x.Key)
                                       .Select(x => x.Value + "\t" + x.Key));
                    }
                    break;
                }

                SuggestionMessenger.Raise(
                    new SuggestionNotification {
                    SuggestWords = words, IsOpen = words.Count > 0
                });
            }
            catch
            {
                SuggestionMessenger.Raise(new SuggestionNotification {
                    SuggestWords = null, IsOpen = false
                });
            }
        }