예제 #1
0
        private void Search_ContainerContentChanging(ListViewBase sender, ContainerContentChangingEventArgs args)
        {
            if (args.InRecycleQueue)
            {
                //var photo = content.Children[0] as ProfilePicture;
                //photo.Source = null;

                return;
            }

            var result = args.Item as SearchResult;
            var chat   = result.Chat;
            var user   = result.User ?? ViewModel.ProtoService.GetUser(chat);

            if (user == null)
            {
                return;
            }

            var content = args.ItemContainer.ContentTemplateRoot as Grid;

            if (content == null)
            {
                return;
            }

            if (args.Phase == 0)
            {
                var title = content.Children[1] as TextBlock;
                title.Text = user.GetFullName();
            }
            else if (args.Phase == 1)
            {
                var subtitle = content.Children[2] as TextBlock;
                if (result.IsPublic)
                {
                    subtitle.Text = $"@{user.Username}";
                }
                else
                {
                    subtitle.Text = LastSeenConverter.GetLabel(user, true);
                }

                if (subtitle.Text.StartsWith($"@{result.Query}", StringComparison.OrdinalIgnoreCase))
                {
                    var highligher = new TextHighlighter();
                    highligher.Foreground = new SolidColorBrush(Colors.Red);
                    highligher.Background = new SolidColorBrush(Colors.Transparent);
                    highligher.Ranges.Add(new TextRange {
                        StartIndex = 1, Length = result.Query.Length
                    });

                    subtitle.TextHighlighters.Add(highligher);
                }
                else
                {
                    subtitle.TextHighlighters.Clear();
                }
            }
            else if (args.Phase == 2)
            {
                var photo = content.Children[0] as ProfilePicture;
                photo.SetUser(ViewModel.ProtoService, user, 36);
            }

            if (args.Phase < 2)
            {
                args.RegisterUpdateCallback(Search_ContainerContentChanging);
            }

            args.Handled = true;
        }
예제 #2
0
 private void TestOutputView_Load(object sender, EventArgs e)
 {
     mOutputHighlighter = new TextHighlighter(tBOutput);
 }
예제 #3
0
        public void UpdateSearchResult(IProtoService protoService, ContainerContentChangingEventArgs args, TypedEventHandler <ListViewBase, ContainerContentChangingEventArgs> callback)
        {
            var result = args.Item as SearchResult;

            args.ItemContainer.Tag = result.Chat;

            if (args.Phase == 0)
            {
                TitleLabel.Style = BootStrapper.Current.Resources[result?.Chat?.Type is ChatTypeSecret ? "SecretBodyTextBlockStyle" : "BodyTextBlockStyle"] as Style;

                if (result.Chat != null)
                {
                    TitleLabel.Text = protoService.GetTitle(result.Chat);
                }
                else if (result.User != null)
                {
                    TitleLabel.Text = result.User.GetFullName();
                }

                var verified = false;
                var premium  = false;

                if (result.Chat != null)
                {
                    if (protoService.TryGetUser(result.Chat, out User user))
                    {
                        verified = user.IsVerified;
                        premium  = user.IsPremium && protoService.IsPremiumAvailable && user.Id != protoService.Options.MyId;
                    }
                    else if (protoService.TryGetSupergroup(result.Chat, out Supergroup supergroup))
                    {
                        verified = supergroup.IsVerified;
                        premium  = false;
                    }
                }
                else if (result.User != null)
                {
                    verified = result.User.IsVerified;
                    premium  = result.User.IsPremium && protoService.IsPremiumAvailable;
                }

                if (premium || verified)
                {
                    Premium.Glyph      = premium ? Icons.Premium16 : Icons.Verified16;
                    Premium.Visibility = Visibility.Visible;
                }
                else
                {
                    Premium.Visibility = Visibility.Collapsed;
                }
            }
            else if (args.Phase == 1)
            {
                if (result.User != null || (result.Chat != null && (result.Chat.Type is ChatTypePrivate privata || result.Chat.Type is ChatTypeSecret)))
                {
                    var user = result.User ?? protoService.GetUser(result.Chat);
                    if (result.IsPublic)
                    {
                        SubtitleLabel.Text = $"@{user.Username}";
                    }
                    else if (protoService.IsSavedMessages(user))
                    {
                        SubtitleLabel.Text = Strings.Resources.ThisIsYou;
                    }
                    else
                    {
                        SubtitleLabel.Text = LastSeenConverter.GetLabel(user, true);
                    }
                }
                else if (result.Chat != null && result.Chat.Type is ChatTypeSupergroup super)
                {
                    var supergroup = protoService.GetSupergroup(super.SupergroupId);
                    if (result.IsPublic)
                    {
                        if (supergroup.MemberCount > 0)
                        {
                            SubtitleLabel.Text = string.Format("@{0}, {1}", supergroup.Username, Locale.Declension(supergroup.IsChannel ? "Subscribers" : "Members", supergroup.MemberCount));
                        }
                        else
                        {
                            SubtitleLabel.Text = $"@{supergroup.Username}";
                        }
                    }
                    else if (supergroup.MemberCount > 0)
                    {
                        SubtitleLabel.Text = Locale.Declension(supergroup.IsChannel ? "Subscribers" : "Members", supergroup.MemberCount);
                    }
                    else
                    {
                        SubtitleLabel.Text = string.Empty;
                    }
                }
                else
                {
                    SubtitleLabel.Text = string.Empty;
                }

                if (SubtitleLabel.Text.StartsWith($"@{result.Query}", StringComparison.OrdinalIgnoreCase))
                {
                    var highligher = new TextHighlighter();
                    highligher.Foreground = new SolidColorBrush(Colors.Red);
                    highligher.Background = new SolidColorBrush(Colors.Transparent);
                    highligher.Ranges.Add(new TextRange {
                        StartIndex = 1, Length = result.Query.Length
                    });

                    SubtitleLabel.TextHighlighters.Add(highligher);
                }
                else
                {
                    SubtitleLabel.TextHighlighters.Clear();
                }
            }
예제 #4
0
 public TextEditorView(String name, TextProviderDelegate textProvider, uint maxLength = 100000, bool wordWrap = false, TextHighlighter textHighlighter = null)
     : base(name)
 {
     this.textProvider    = textProvider;
     this.MaxLength       = maxLength;
     this.WordWrap        = wordWrap;
     this.TextHighlighter = textHighlighter;
 }
 /// <summary>
 /// Perform Text Search
 /// </summary>
 /// <param name="text"></param>
 private void TextSearchImpl(string text)
 {
     mTextHighlighter = new TextHighlighter(PDFViewCtrl, text);
 }